(57)【要約】【課題】より効率的な文字列検索を可能とする技術を提供する。【解決手段】文字列から所与の辞書に含まれる特定用語を検索する情報処理装置は、ｎ−ｇｒａｍ方式を利用して所与の辞書に対して文字列の部分文字列の検索を行い、所与の辞書から文字列に含まれる１以上の特定用語候補を抽出する抽出手段と、１以上の特定用語候補の各々に対して、ＤＰマッチング方式を利用して特定用語候補と当該特定用語候補に対応する文字列内の部分文字列との編集距離を導出する導出手段と、編集距離が所定の閾値より短い前記１以上の特定用語候補に対応する前記文字列内の部分文字列を出力する出力手段と、を有する。【選択図】図２
2018081451.tif 000002
【特許請求の範囲】
【請求項１】
文字列から所与の辞書に含まれる特定用語を検索する情報処理装置であって、
ｎ−ｇｒａｍ方式を利用して前記所与の辞書に対して前記文字列の部分文字列の検索を行い、前記所与の辞書から該文字列に含まれる１以上の特定用語候補を抽出する抽出手段と、
前記１以上の特定用語候補の各々に対して、ＤＰマッチング方式を利用して特定用語候補と該特定用語候補に対応する前記文字列内の部分文字列との編集距離を導出する導出手段と、
前記編集距離が所定の閾値より短い前記１以上の特定用語候補に対応する前記文字列内の部分文字列を出力する出力手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記抽出手段は、前記文字列を構成する１以上の文字の位置に関する情報に基づいて、前記ｎ−ｇｒａｍ方式による前記文字列における検索対象の範囲を制限する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記導出手段は、前記ｎ−ｇｒａｍ方式による検索における前記部分文字列の前記文字列における位置に関する情報に基づいて、前記ＤＰマッチング方式における計算テーブルを縮小する
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記文字列は、光学文字認識（ＯＣＲ）処理により得られた文字列であり、
前記ＯＣＲ処理で発生し得る誤認識パタンを記憶する記憶手段を更に有し、
前記導出手段は、前記誤認識パタンに基づいて前記編集距離を修正する
ことを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記誤認識パタンに基づいて前記文字列を修正する修正手段を更に有する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記文字列と該文字列を構成する１以上の文字それぞれの位置に関する情報とを含む文書データを入力する入力手段を更に有する
ことを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記文書データは、ＸＭＬ形式のデータである
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
紙文書を読み取り文書画像を生成する画像読取部から該文書画像を取得する画像取得手段と、
前記文書画像に対してＯＣＲ処理を行い前記文書データを生成するデータ生成手段と、を更に有する
ことを特徴とする請求項６又は７に記載の情報処理装置。
【請求項９】
文字列から所与の辞書に含まれる特定用語を検索する情報処理装置の制御方法であって、
ｎ−ｇｒａｍ方式を利用して前記所与の辞書に対して前記文字列の部分文字列の検索を行い、前記所与の辞書から該文字列に含まれる１以上の特定用語候補を抽出する抽出工程と、
前記１以上の特定用語候補の各々に対して、ＤＰマッチング方式を利用して特定用語候補と該特定用語候補に対応する前記文字列内の部分文字列との編集距離を導出する導出工程と、
前記編集距離が所定の閾値より短い前記１以上の特定用語候補に対応する前記文字列内の部分文字列を出力する出力工程と、
を含むことを特徴とする情報処理装置の制御方法。
【請求項１０】
コンピュータを、請求項１乃至８の何れか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子文書の文字列検索技術に関するものである。
【背景技術】
【０００２】
オフィス環境において電子化（ペーパーレス化）が進んでいるが、他社とのやり取りなどにおいては紙文書も相変わらず使用されていることが多い。例えば、医療分野で使用されるお薬手帳では、レシート形式あるいは帳票形式で記載された紙文書が利用されている。そのため、お薬手帳を提示された医療機関は、当該お薬手帳の内容を電子カルテなどに改めて記載する必要が生じている。一方、スキャナ装置により帳票やレシートの紙文書を光学的に読み取り電子画像化することが容易になってきている。また、その紙文書の電子画像中の文字画像から、記載内容をテキストデータ化する文字認識の技術の精度も向上し、よく利用されている。
【０００３】
ところで、文字認識したテキストデータ内を検索するにあたっては、文字認識の誤り、漢字の送り仮名、カタカナ記載等の表記ゆれを考慮した検索が必要になる。特許文献１には、スペルミスを含んでいる単語を正しいスペルの単語に修正する手法が開示されている。具体的には、入力単語から部分文字列を抽出し、当該部分文字列をキーに複数の単語候補を得て、最大の出現回数となる単語候補を選択している。また、特許文献２には、ＤＰマッチング方式を利用して文字認識を可能とする方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２５９４６８号公報
【特許文献２】特開２０１３−０９７５９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、大量の用語が登録される辞書データを用いる場合、文字認識したテキストデータ内に当該辞書データ内のどの用語が出現したかを検索する処理は一般に処理コストが大きい。また、辞書データ内の用語に類似したものが多い場合、あるいは、文字認識の誤りや、漢字の送り仮名、カタカナ記載等の表記ゆれが存在する場合には、更に処理コストが大きなものとなり処理速度の低下が問題となる。
【０００６】
本発明はこのような問題を鑑みてなされたものであり、より効率的な文字列検索を可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述の問題点を解決するため、本発明に係る情報処理装置は以下の構成を備える。すなわち、文字列から所与の辞書に含まれる特定用語を検索する情報処理装置は、ｎ−ｇｒａｍ方式を利用して前記所与の辞書に対して前記文字列の部分文字列の検索を行い、前記所与の辞書から該文字列に含まれる１以上の特定用語候補を抽出する抽出手段と、前記１以上の特定用語候補の各々に対して、ＤＰマッチング方式を利用して特定用語候補と該特定用語候補に対応する前記文字列内の部分文字列との編集距離を導出する導出手段と、前記編集距離が所定の閾値より短い前記１以上の特定用語候補に対応する前記文字列内の部分文字列を出力する出力手段と、を有する。
【発明の効果】
【０００８】
本発明によれば、より効率的な文字列検索を可能とする技術を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係る情報処理システムのハードウェア構成を示す図である。
【図２】第１実施形態に係る情報処理システムの機能構成を示す図である。
【図３】処理の対象となる紙文書の例を示す図である。
【図４】図３に示す紙文書をＯＣＲ処理した処理結果を例示的に示す図である。
【図５】図４に示す処理結果から特定情報を抽出する抽出処理を説明する図である。
【図６】図４に示す処理結果に対して修正処理を施した結果を例示的に示す図である。
【図７】第１実施形態における検出処理のフローチャートである。
【図８】検出処理において使用される各種データの例を示す図である。
【図９】検出処理における各ステップでの処理結果の例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【００１１】
（第１実施形態）
本発明に係る情報処理装置の第１実施形態として、紙文書のスキャン画像を光学文字認識（ＯＣＲ）処理して得られるテキストデータを処理する情報処理システムを例に挙げて以下に説明する。なお、本明細書及び添付の図面において記載される薬剤名である、バレリン（登録商標）、アバプロ（登録商標）、プロノン（登録商標）、セパミット（登録商標）、レミカット（登録商標）はそれぞれ登録商標である。
【００１２】
＜概要＞
第１実施形態では、テキストデータ（後述の処理結果データ２０３）から、特定の情報を抽出する例について説明する。ここでは、お薬手帳をスキャンしＯＣＲ処理により得られたテキストデータを想定している。お薬手帳においては、記載内容や情報の種類は比較的限定されているが記載フォーマットは統一されていない。そのため、抽出したい情報（薬剤名や金額等）の記載部分の特定は困難である。また、薬剤の種類は膨大でありかつ類似した名前の薬剤も多いため、薬剤名を登録する辞書データには数万から数百万程度の用語が登録され得る。更に、ＯＣＲにおいては誤認識が発生し得るほか、送り仮名やカタカナ表記による表記ゆれも混入し得る。そのため、これらを考慮した検索処理が必要になり処理速度の低下が問題となる。
【００１３】
そこで第１実施形態では、ｎ−ｇｒａｍ方式とＤＰマッチング方式とを併用する。特に、ｎ−ｇｒａｍ方式を利用して辞書内の文字列候補の絞り込みを行い、絞り込まれた候補に対してＤＰマッチング方式を利用してキーワードの出現検出とその出現位置を求める計算を行う方式を用いる形態について説明する。とりわけ、キーワードの出現に係る計算結果を利用して、厳密な比較を行うための編集距離を少ない計算で実現する。これにより、文字列の誤りや表記ゆれを含むテキストデータに対する検索の高速化を実現する。
【００１４】
＜前提技術＞
まず、ｎ−ｇｒａｍ方式、ＤＰマッチング方式、編集距離について簡単に説明する。
【００１５】
・ｎ−ｇｒａｍ方式
通常は、検索対象の文章等に文章ＩＤを付加しておき、テキスト内のｎ文字の部分文字列を取り出し、これに文章ＩＤを対応づけた検索用のインデックスを事前に作成しておく。そして、検索時に利用者が入力された内容であるクエリ文字列からもｎ文字の部分文字列を取り出し、検索インデックスを調べて、そのｎ文字の部分文字列を保有する文章ＩＤを得る。これにより、利用者が入力したクエリ文字列を含む文章候補を得るものである。
【００１６】
なお、以下の実施形態では、辞書内の用語が検索対象の文章等のテキスト内で出現したことを検出する場合を想定している。そのため、検索対象の辞書内の用語に識別用のＩＤ（以下、用語ＩＤ）を付加しておき、辞書内の用語辞書内の用語ＩＤを対応づけた検索用のインデックスを事前に作成しておく。そして検索対象の文章からもｎ文字の部分文字列を取り出し、検索インデックスを調べて、そのｎ文字の部分文字列を保有する用語ＩＤを得る。これにより、検索対象の文章内に出現した、辞書内の用語の候補を得るために使用する。
【００１７】
このｎ−ｇｒａｍ方式は、事前にインデックスを作成して検索用に準備しておく必要があるが、その検索処理自体は、そのインデックスを利用した高速な検索ができることが特徴である。かつ、部分文字列検索であるため、検索対象の用語の文字数に対して、文字認識などの誤りが十分少ない程度であれば、その混入した場合への耐性があり、曖昧性を持った検索が可能な方式である。
【００１８】
・動的計画法（ＤＰ）マッチング方式
ＤＰマッチング方式は、比較する両者の異なっている部分に対しそれぞれペナルティである減点を適用し、比較する対象全体で積み上げた合計のペナルティを両者の距離とするものである（距離が小さいほど似ていることを示している）。
【００１９】
このＤＰマッチング方式においては、比較する両者の異なっている部分は、両者のどこの部分を比較するかで、結果が変わってくる。そのため、その合計ペナルティが最小となる部分の組合せを見つける必要があり、そのために動的計画法を用いた計算法を用いる。例えば、比較する両者をそれぞれ縦横の軸にした計算表（以下、計算テーブル）を作成することで行う。そのため、編集距離のような類似度や相違度を算出するのには適しているが、計算テーブルの作成処理に時間がかかる。
【００２０】
・編集距離（レーベンシュタイン距離は編集距離の一種である）
二つの文字列がどの程度異なっているかを示す距離の一種である。具体的には、１文字の挿入・削除・置換によって、一方の文字列をもう一方の文字列に変形するのに必要な手順の最小回数として定義される。
【００２１】
＜装置構成＞
図１は、第１実施形態に係る情報処理システムのハードウェア構成を示す図である。
【００２２】
ＣＰＵ（Central Processing Unit）１０１は、ＲＯＭ１０２やＲＡＭ１０３上のプログラムを実行することにより各種制御を実現する機能部である。また、ＣＰＵ１０１は、複数のプログラムを並列に動作させることもできる。ＲＯＭ１０２は、ＣＰＵ１０１により利用されるプログラムやデータを格納する。ＲＡＭ１０３は、ＣＰＵ１０１が処理するためのプログラムを格納するとともに、ＣＰＵ１０１が各種制御を実行する際の様々なデータのワークメモリを提供する。
【００２３】
入力装置１０４は、ユーザによる各種入力操作を受け付けるキーボードやマウスである。もちろん、ユーザからの入力操作を受付可能なものであれば、タッチパネル、スタイラスペン等、何でもよい。また、音声認識やジェスチャー操作に基づく入力でもよい。バス１０５は、各部分に接続されているアドレスバス、データバスなどであり、各部分間の情報交換・通信機能を提供する。これにより、各部分が連携して動作できるようにする。
【００２４】
外部記憶装置１０６は、さまざまなデータ等を記憶するための外部記憶装置である。例えば、記憶媒体と当該記憶媒体を読み書きするためのドライブ装置などで構成される。記憶媒体としては、ハードディスク、フロッピーディスク、光ディスク、磁気ディスク、磁気テープ、不揮発性のメモリカード等がある。記憶媒体に記憶されたプログラムやデータの一部又は全部は、キーボード等の指示や、プログラムの指示により、必要な時にＲＡＭ１０３上に呼び出される。
【００２５】
ＮＣＵ（Network Control Unit）１０７は、他のコンピュータ装置等と通信を行うための機能部である。ＮＣＵ１０７は、ネットワーク（ＬＡＮ）等を介して、不図示の外部装置と通信しプログラムやデータを共有する。なお、ＮＣＵ１０７には、任意の通信規格のものを使用することが出来る。例えば、ＲＳ２３２Ｃ、ＵＳＢ、ＩＥＥＥ１３９４、Ｐ１２８４、ＳＣＳＩ、モデム、Ｅｔｈｅｒｎｅｔ（登録商標）などの有線通信が利用可能である。また、Ｂｌｕｅｔｏｏｔｈ（登録商標）、赤外線通信、ＩＥＥＥ８０２．１１ａ／ｂ／ｎ等の無線通信が利用可能である。
【００２６】
ＧＰＵ（Graphics Processing Unit）１０８は、バス１０５を経由してＣＰＵ１０１などから与えられた表示指示や計算指示に従い計算を行い、その計算結果を表示装置１０９へ送信する機能部である。例えば、表示指示や計算指示に従い表示内容の画像の作成や表示位置などの計算を行い表示装置１０９に計算結果を描画させる。または、バス１０５を経由して、計算結果をＣＰＵ１０１に戻すことで、ＣＰＵ１０１と連携した計算処理を行う場合もある。
【００２７】
表示装置１０９は、液晶ディスプレイなどで構成され、各種入力操作の状態やそれに応じた計算結果などをユーザに対して表示する機能部である。ＳＣＮＵ（Scanning Unit）１１０は、原稿（紙文書）を光学的に読取り画像データを生成する画像読取部であり、例えば、オーバーヘッド型のスキャナである。ＳＣＮＵ１１０は、ＮＣＵ１０７の通信機能を介して接続してもよいし、それ以外の独自の外部Ｉ／Ｆを介して接続する形態でも良い。
【００２８】
以上述べてきた内部構成は、あくまでも一例であり、これに限定されるものでない。また、内部構成やその構成する各部分は、いわゆるハードウェアである制限はなく、ソフトウェアで作り出された仮想マシン上のものでも構わない。また、上述の内部構成を単体の装置で構成してもよいし、複数の装置で構成してもよい。
【００２９】
図２は、第１実施形態に係る情報処理システムの機能構成を示す図である。なお、各機能部は、基本的には、ＣＰＵ１０１やＧＰＵ１０８がプログラムを実行することにより実現されることを想定する。ただし、一部または全部をＡＳＩＣなどのハードウェアにより実現してもよい。また、文書画像処理部２０２と特定情報抽出部２０４とは、一体の装置として構成してもよいしそれぞれを別体の装置として構成してもよい
文書画像２０１は、紙文書をＳＣＮＵ１１０で光学的にスキャンすることにより得られる画像である。文書画像処理部２０２は、文書画像２０１を画像取得して処理を行い、その結果として処理結果データ２０３を出力する。特定情報抽出部２０４は、処理結果データ２０３を入力として処理を行い、抽出情報２０５を得る。抽出情報２０５は、利用者が抽出したい情報である。すなわち、抽出情報２０５は、紙文書に記載されていた情報である。
【００３０】
文書画像処理部２０２は、文書画像２０１を取得し、画像処理や文書内の解析、文字認識などを行う。そして、その結果として、特定情報抽出部２０４により処理される文書データとしての処理結果データ２０３を出力する（データ生成する）。文書画像処理部２０２は、補正処理部２０６、画像分類部２０７、領域抽出部２０８、文字認識部２０９、文書構造推定部２１０、文字認識辞書２１１を含む。
【００３１】
補正処理部２０６は、文書画像２０１に対する画像補正を行う。例えば、文書画像２０１は、スキャン時の紙文書の状態（斜めに配置、丸まっているなど）や、紙文書に対する撮影方向などによる幾何学的関係から生じる画像の歪みを補正する。そのため、例えば、文書画像２０１における紙文書画像（四辺・領域など）の状態を推定し形状を補正する。
【００３２】
画像分類部２０７は、補正処理部２０６が画像補正した結果画像に対して、元の紙文書の種類を分類する。この分類結果によって、抽出される情報や、抽出するための方法などが変わってくることになる。ここでは、紙文書の種類が帳票やレシートであり、その情報を元に文書画像２０１から情報抽出することを想定している。
【００３３】
領域抽出部２０８は、補正処理部２０６が画像補正した結果画像と、画像分類部２０７による分類結果とに基づいて、文書画像２０１内の画像領域、テキスト領域などを検出する。例えば、結果画像における画像特徴量などに基づいて画像領域、テキスト領域などを検出する。検出した結果として、それぞれの領域の配置位置（座標）及び分類（画像領域、テキスト領域、表領域など）を出力する。
【００３４】
文字認識部２０９は、画像に含まれる文字を認識する文字認識を行う。ここでは、文書画像２０１内のテキスト領域や表領域等の文字を含む領域に対して、補正処理部２０６が画像補正した結果画像における対応領域を対象に文字認識を行うことを想定する。文字認識辞書２１１は、文字認識部２０９が文字認識するために使用する辞書であり、各文字の特徴量情報が格納されている。
【００３５】
文書構造推定部２１０は、領域抽出部２０８から得られた各領域について、配置位置や大きさなどから、「構造」や「関係」を推定する。構造とは、例えば、表領域内のテキストデータの配置である。関係とは、例えば、文書内の画像領域と、当該画像領域に関連するテキスト領域（図番号やタイトル等のキャプション）の関係である。
【００３６】
特定情報抽出部２０４は、上述の処理により文書画像処理部２０２が出力した処理結果データ２０３を入力として処理を行い、抽出情報２０５を得る。特定情報抽出部２０４は、領域分類部２１２、検出部２１３、出力部２１４、抽出規則２１５、特定情報辞書２１６、検索インデックス２１７、文字認識の誤認識パタン２１８を含む。
【００３７】
抽出規則２１５は、利用者が抽出したい特定情報を抽出するための規則を格納したものである。特定情報抽出部２０４は抽出規則２１５に従い動作する。特定情報辞書２１６は、検出部２１３での検出処理において抽出規則２１５と共に使用される多数の特定用語を記憶する所与の辞書である。例えば、商品、サービス、薬剤等の名前や、会社名等の特定用語が入っている。一般的に、この特定用語は、非常に大量であり、常に最新であるのが好ましいため、最新版の情報が提供され、特定情報辞書２１６内の特定用語を更新することが行われることが多い。また、適時、利用者によって特定用語の追加等が行われることもある。
【００３８】
検索インデックス２１７は、特定情報辞書２１６内の多数の特定用語を高速に検索するための検索インデックスが格納されている。これを利用することで、特定情報辞書２１６内の特定用語の中から所望のものを高速に得ることができる。特定情報辞書２１６の内容が更新されると、それに伴い検索インデックスも更新され、常に正確な検索ができるように保たれる。
【００３９】
誤認識パタン２１８は、文字訂正・誤り訂正用の情報である。具体的には、文字認識部２０９が誤認識しやすい文字に対してその誤認識パタンを格納する。誤認識パタン２１８は、特定情報辞書２１６内の多数の特定用語を高速に検索する際に、誤認識文字の混入を配慮するようにするものである。以下では、文字認識の誤認識パタンを利用する例について説明するが、表記ゆれなどについても同様に適用することができる。例えば、漢字の旧字の違い、漢字の送り仮名、カタカナ記載時の「サーバー」と「サーバ」、「バイオリン」と「ヴァイオリン」などの表記ゆれがある。
【００４０】
領域分類部２１２は、抽出規則２１５が適用されるべき画像内の領域を推定し分類する。ここでは、帳票やレシートの場合を想定しており、商品やサービス、薬剤、その数や料金などを記載した部分が対象となる。そのため、これらに該当する画像内の領域を推定し、対象領域かどうか分類する。あるいは、帳票やレシート内の決まった位置に出現する発行元の店舗や会社情報等を推定し分類する。
【００４１】
検出部２１３は、抽出規則２１５に基づいて、領域分類部２１２が対象領域とした表領域やテキスト領域に対して、「特定情報」の文字列の出現を検出するものである。特定情報の文字列とは、例えば、正規表現等を利用した文字列パタンに合う文字列、特定情報辞書２１６に登録された特定用語である。特定情報辞書２１６に登録された特定用語を高速に検出するために、検索インデックス２１７を使用する。なお、文字認識部２０９の結果には、誤認識した文字が含まれ得る。そのため、特定情報辞書２１６に登録された特定用語や正規表現等を利用した文字列パタンに従って、文字認識結果を修正する。
【００４２】
出力部２１４は、検出された特定情報を出力する際に、抽出規則２１５に基づいて出力形式を決定し整形する。たとえば、出力する特定情報が日付の場合、西暦と和暦の何れで出力するかを決定する。あるいは、数値の単位が特定の単位になるように数値を変換する。また、出力する特定情報間の関係や構造といったものがある場合、抽出規則２１５に基づいた形式で整形する。
【００４３】
＜処理対象のデータ例＞
図３は、処理の対象となる紙文書の例を示す図である。ここれは、お薬手帳と呼ばれる紙文書３００を示している。紙文書３００は、一般的な商品やサービス等の商品レシートに非常に類似した記載形式である。そのため、お薬手帳は、商品レシートにおける「個数」や「金額」が、「薬剤の量」や「効能」などに置換されたものとみなすこともできる。
【００４４】
文字列３０１は、薬剤を得るための処方箋を提出し薬剤を購入した利用者の人名の文字列である。文字列３０２は、処方・調剤した日付の文字列である。文字列３０３は、処方箋を発行した病院などの医療機関の名前の文字列である。文字列３０８は、薬剤を販売した薬局等の医療機関の名前と電話番号の文字列である。文字列３０４〜３０７は、それぞれ、購入した薬剤の名称、薬剤の効能、飲み方・使用法の説明を含む文字列である。
【００４５】
図４は、図３に示す紙文書をＯＣＲ処理した処理結果を例示的に示す図である。具体的には、文書画像処理部２０２が文書画像２０１（図３に示す紙文書のスキャン画像）を入力として処理を実行した結果の処理結果データ２０３の例がデータ４００である。データ４００は、ＸＭＬ形式を使って記載されている。なお、以下に詳細説明する部分以外にも処理結果の記載があるが、行４０３、行４０９、行４１７、行４２０の記法にて途中の記載を省略している。
【００４６】
行４０１と行４２２は、それぞれ１つの文書に対する情報の開始宣言と終了宣言である。この文書は行４０１に、識別情報”１２３”、光学スキャンして作成された日付”２０１６／４／２”の情報を持っている。行４０２と行４２１は、それぞれ文書内のページに対する情報の開始宣言と終了宣言である。このページは、行４０２に番号”１”、大きさとして横（幅）”２００”、縦（高さ）”１５０”の情報を持っている。
【００４７】
行４０４と行４１１は、それぞれ、このページ（紙文書３００）内のテキスト領域（文字列３０４の１行目）に対する情報の開始宣言と終了宣言である。行４０４と行４１１との間には、文字列３０４の１行目の記載に関する部分の情報が入っている。このテキスト領域は、行４０４に、その位置として、左上の座標情報（ｘ、ｙ）＝（４，４０）と、領域の横”９０”、縦”８”の情報を持っている。
【００４８】
また、行４０５と行４０７は、それぞれ、このテキスト領域内に対する文字認識結果の情報の開始宣言と終了宣言である。文字認識結果として、行４０６に”バ１レプロ酸Ｎａシロツプ５％  １日１５０ｍＬ”の情報を持っている。また、行４０８と行４１０に、テキスト領域内に対する文字認識結果の情報の１文字ごとの情報の開始宣言と終了宣言である。行４０８と行４１０との間に、文字認識の結果を１文字単位に分けた状態の情報が入っている。行４０８には、最初の文字の”バ”の位置として、左上の座標情報（ｘ、ｙ）＝（４，４０）と、領域の横”５”、縦”８”の情報を持っている。同様に、行４１０は、最後の文字”Ｌ”に関するものである。
【００４９】
行４１２〜行４１９も同様に、このページ（紙文書３００）内のテキスト領域（文字列３０７の１行目）に対する情報で、文字列３０７の１行目の記載に関する部分の情報が入っている。
【００５０】
図５は、特定情報を抽出する抽出処理を説明する図である。具体的には、処理結果データ２０３を、抽出規則２１５に従い、特定情報抽出部２０４で処理を行う例を示す図である。
【００５１】
データ５００ａは、抽出規則２１５の具体例である。データ５００ａは、ＸＭＬ形式を使って記載されており、長くなるため、一部省略されており、行５０２及び行５１９は、その省略部分である。行５０１と行５２０は、抽出規則２１５の複数の規則に対する情報の開始宣言と終了宣言である。
【００５２】
行５０３と行５１８は、抽出規則２１５内のある１つの規則に対する情報の開始宣言と終了宣言である。この規則は行５０３に、識別情報として”５”の情報を持っている。また、タイプとして、”ｓｅａｒｃｈ：ｅｘｔｒａｃｔ”を持ち、この規則が、検索を用いた検出指示と抽出の出力形式の指定を含んでいることを示している。行５０４と行５１２は、この規則の中の検索を用いた検出指示に対する情報の開始宣言と終了宣言である。
【００５３】
行５０５と行５０７は、この検出指示に対する文字列検索（テキスト検索）情報の開始宣言と終了宣言である。行５０５には、検索タイプが”ｄｉｃ”とあり、辞書に対する検索であるとの情報を持っている。また、検出結果を”ｄｒｕｇ−ｎａｍｅ”という名前で示すようにするという指示を持っている。行５０６は、この文字列検索情報の内容であり、対象となる辞書名が”ｄｒｕｇＮａｍｅＬｉｓｔ”であるという情報を持っている。
【００５４】
行５０８と行５１１は、この検出指示に対する次の文字列検索（テキスト検索）情報の開始宣言と終了宣言である。行５０８に、検索タイプが”ｐｏｓｉｔｉｏｎ：ｒｅ”とあり、検索は位置に関するものと、文字列の正規表現との比較であるとの情報を持っている。また、行５０８は、行５０９と行５１０の検索指示を満たすものを、検出結果を”ｄｒｕｇ−ａｍｏｕｎｔ”という名前で示すようにするという指示を持っている。
【００５５】
行５０９と行５１０は、この文字列検索の内容である。行５０９は、位置による検索で、行５０５〜行５０８で得られた検出結果（名前は、”ｄｒｕｇ−ｎａｍｅ”）を起点（”ｏｒｉｇｉｎ”）、右側”ｒｉｇｈｔ”にあるテキストデータを対象にするという情報を持っている。行５１０は、正規表現による文字マッチングで、”／［１−９］［日週月回］．＊［１−９］（錠｜Ｔ｜Ｃ｜ｍＬ）／”という情報をもっている。
【００５６】
これは、１〜９の数字のあとに、「日」か「週」か「月」があり、何らかの文字列が０文字以上続いて、その後に１〜９の数字のあとに「錠」か「Ｔ」か「Ｃ」か「ｍＬ」がある文字列であることという条件を示している。この条件に合致するものとして、文字列３０４の中の「１日１５０ｍｌ」とか、文字列３０７の中の「１回１Ｃ」等の文字列などがあり、この部分を検索結果として抽出するための条件となっている。
【００５７】
行５１３と行５１７は、この検出結果の出力に関する情報の開始宣言と終了宣言である。行５１４と行５１６は、この検出結果の出力形式に関する情報の開始宣言と終了宣言であり、出力形式の指定が行５１５で行われている。行５１５では、検出結果の”ｄｒｕｇ−ｎａｍｅ”と名付けられたものを先頭データ、”ｄｒｕｇ−ａｍｏｕｎｔ”と名付けられたものを２番目のデータとして対（ペア）にして出力するという情報を持っている。
【００５８】
このような抽出規則２１５に従い、検出部２１３は、該当する文字列の検索を、処理結果データ２０３に対して行う。より詳細には、抽出規則２１５内の、行５０４〜行５１１の検索指示情報に従い、検索インデックス２１７を利用して、特定情報辞書２１６の中の”ｄｒｕｇＮａｍｅＬｉｓｔ”という名前の辞書の中の特定情報の検索を行う。なお、”ｄｒｕｇＮａｍｅＬｉｓｔ”は大量の薬剤名の辞書である。また、指定された正規表現に該当する文字列部分も併せて検索する。
【００５９】
また、検索結果を基に、処理結果データ２０３の修正を行う。すなわち、特定情報辞書２１６内の特定情報の検索を行う際に、文字認識の誤りを配慮した検索を行う。そして、該当する特定情報が得られれば、その特定情報に基づいて文字認識結果の文字列を修正・追加する。また、その検出結果に従ってテキスト領域の情報も修正する。
【００６０】
この例では、”ｄｒｕｇＮａｍｅＬｉｓｔ”内で該当する薬剤名の検索する際に、文字認識の誤りを配慮した検索を行い、該当する薬剤名を修正・追加するとともに、その検出結果に従ってテキスト領域の情報も修正する。そして、得られた結果を、出力部２１４は、抽出規則２１５内の行５１３〜行５１７の出力指示情報に従い、指定された出力形式で結果を出力する。
【００６１】
文字列５００ｂは、データ４００の中の行４０６と行４１４を合わせた文字列であり、検索対象となる文字列の例である。これは、紙文書３００における文字列３０４の１行目と文字列３０７の１行目に相当する内容で作り出された文字列である。これは、上述の検索を行う際に、テキスト候補として、ページ内の座標位置の関係から１行として認識される可能性を配慮したものである。
【００６２】
文字列５００ｂの中には以下の４つの文字認識の誤りが存在している。
・”バ１レプロ酸Ｎａ”：「ル」（カタカナの”ル”）を「１レ」（数字の”１”とカタカナの”レ”）と誤って認識。
・”シロツプ”：「ッ」（カタカナ”ツ”小文字）を「ツ」（カタカナ”ツ”大文字）と誤って認識。
・”セバミット”：「パ」を「バ」と誤って認識。
・”ｌ０  ｌ０ｍｇ”：「１０」（数字の”１０”）を「ｌ０」（アルファベット”Ｌ”小文字と数字の”０”）を誤って認識。
【００６３】
一方、文字列５００ｃは、文字列５００ｂに文字認識の誤りがなかった場合の文字列であり、文字列３０４の１行目と文字列３０７の１行目とを組み合わせた文字列である。
【００６４】
文字列５００ｂに対して前述の検索を行うことで、”バ１レプロ酸Ｎａシロツプ５％”に対して”ｄｒｕｇＮａｍｅＬｉｓｔ”内で該当する薬剤名として、”バルプロ酸Ｎａシロップ５％”が得られたとする。また、”セバミット−Ｒカプセル  ｌ０  ｌ０ｍｇ”に対して”セパミット−Ｒカプセル  １０  １０ｍｇ”が得られたとする。これにより、それぞれ該当する文字列５００ｂ中の該当部分をこの結果で訂正すると、文字列５００ｃと同じ結果になる。
【００６５】
これを、データ４００全体に対して修正を行ったものが図６のデータ６００であり、この修正結果に基づいて、最終的な出力結果である図２の抽出情報２０５の例がテーブル５００ｄである。
【００６６】
テーブル５００ｄは、特定情報抽出部２０４の処理結果の抽出情報２０５の例である。抽出規則２１５の行５１４〜行５１７の抽出形式の指示に従い、対（ペア）の形で、抽出内容が作成されている。この抽出内容においても、前述の文字認識の誤りが修正されており、”ｄｒｕｇ−ｎａｍｅ”に対する文字列が”バルプロ酸Ｎａシロップ５％”に訂正されている。またこの抽出内容は、抽出情報の識別ＩＤが”３”になっており、使用した抽出規則ＩＤが”５”（行５０３〜行５１８）であるという情報も持っている。
【００６７】
図６は、図４に示す処理結果に対して修正処理を施した結果を例示的に示す図である。データ６００は、上述したように、データ４００に対して、前述の処理結果を反映したものである。前述の処理結果を利用して、テキスト領域の分割などと、そのテキスト領域内に、検索結果の情報を加えている。この情報追加や修正により、文字認識の誤りがない薬剤名となるなど、より利用しやすいものとなっている。
【００６８】
データ６００は、データ４００と同様にＸＭＬ形式で記載されており、以下に詳細説明する部分以外にも処理結果の記載があるが、行６０３、行６０９、行６２０、行６２８、行６３４の記法にて記載を省略している。以下では、データ４００に対して修正された部分を詳細に説明する。
【００６９】
まず、行４０４〜行４１１に対応するテキスト領域が、行６０４〜行６１４と行６１５〜行６２２の２つのテキスト領域に分割されている。同様に、行４１２〜行４１９も、行６２３以降で２つに分割されている（分割された前の１つが行６２３〜行６３２に対応するが、それ以降は省略されている）。
【００７０】
行６０４〜行６１４のテキスト領域は、文字認識結果として”バ１レプロ酸Ｎａシロツプ５％”（行６０５〜行６０７）、検索した結果として”バルプロ酸Ｎａシロップ５％”（行６１１〜行６１３）を持つ。また、”バルプロ酸Ｎａシロップ５％”が辞書”ｄｒｕｇＮａｍｅＬｉｓｔ”内の特定情報識別ＩＤ”１００２０”であるという情報を持っている。
【００７１】
この記載により、文字認識結果を残しつつ、テキスト領域の値として”バルプロ酸Ｎａシロップ５％”が利用できるようになる。また、薬剤名の特定情報識別ＩＤも得られているため、当該薬剤名が出現したことが容易に探せるようになっている。これは、データ５００ａの行５０３〜行５０７の検索で行われた修正である。行５０８〜行５１１の検索が続けて行われると、行６１５〜行６２２のテキスト領域の”１日１５０ｍＬ”が該当することが分かることになる。なお、行６２３〜行６３３も同様になっている。
【００７２】
前述したように、文字列５００ｂに対して前述の検索を行うことで、”バ１レプロ酸Ｎａシロツプ５％”に対して、”ｄｒｕｇＮａｍｅＬｉｓｔ”内で該当する薬剤名として”バルプロ酸Ｎａシロップ５％”が得られる。”セバミット−Ｒカプセル  ｌ０  ｌ０ｍｇ”に対して”セパミット−Ｒカプセル  １０  １０ｍｇ”が得られる。以下に、この検索処理の内容について、詳細な説明を行う。
【００７３】
この検索処理は、データ５００ａの行５０５〜行５０６で、”ｄｒｕｇＮａｍｅＬｉｓｔ”という辞書の中の特定情報（大量の薬剤名）に対して検索を行うように指示が発生した場合に検出部２１３が行う。以下では、文字列５００ｂに対して”ｄｒｕｇＮａｍｅＬｉｓｔ”内の薬剤名の出現を検出し、検出された部分（文字列内の開始位置と終了位置）を求める検索処理を例として説明を行う。
【００７４】
＜システムの動作＞
図７は、第１実施形態における検出処理のフローチャートである。図８は、検出処理において使用される各種データの例を示す図である。図９は、検出処理における各ステップでの処理結果の例を示す図である。
【００７５】
説明の前提として、ここでは、文字列５００ｂが検出対象の文字列であり、辞書”ｄｒｕｇＮａｍｅＬｉｓｔ”内の薬剤名の検出を検知するための検索になっている。テーブル８００ａは、辞書”ｄｒｕｇＮａｍｅＬｉｓｔ”の例がある。テーブル８００ａには、辞書項目としての薬剤名が登録されており、それぞれの薬剤名に対して識別用の辞書項目ＩＤが付与されている。テーブル８００ｂは、Ｎ−ｇｒａｍ方式の検索を行うための検索インデックス２１７の例である。テーブル８００ｂは、Ｎ−ｇｒａｍ方式（Ｎ＝２）の検索インデックスを持っている。具体的には、インデックスとしてテーブル８００ａの辞書項目である薬剤名に含まれる「連続する２文字」を有し、当該連続する２文字を保有する辞書項目ＩＤを有している。なお、同一の「連続する２文字」を持つ辞書項目は複数ある場合、テーブル８００ｂの辞書項目ＩＤの個数も複数となる。また、テーブル８００ｂは、各辞書項目の辞書項目ＩＤと辞書項目名の中の連続する２文字のデータの転置データになっている。これは検索用のインデックス特有のデータとなっている。
【００７６】
Ｓ７０１では、特定情報抽出部２０４は、Ｎグラム法を利用して辞書内の特定用語検索を行う。これは、特定用語候補を絞り込み、検出対象文字列内の位置情報を得るための処理である。具体的には、テーブル８００ｂの例で示される検索インデックス２１７を使用して検索を実行する。これにより、特定用語候補である辞書項目を絞り込み、その辞書項目ＩＤを得ることが出来る。また、辞書項目ごとに、検出対象の文字列５００ｂ内でインデックスがヒットした「連続する２文字」の位置情報を検出対象文字列５００ｂ内の位置情報として得ることが出来る。
【００７７】
この検索は、「連続する２文字」をインデックス化した２−ｇｒａｍ検索であるため、文字認識の誤りが混入している場合であっても誤りが分散している場合はその影響が生じる部分が限定的となり。
【００７８】
Ｓ７０２では、Ｓ７０１の処理の結果、特定用語候補である辞書項目が得られた場合はＳ７０３へ進み、得られなかった場合は、終了となる。
【００７９】
Ｓ７０３では、特定情報抽出部２０４は、ヒットした検出対象文字列内の位置情報から、詳細比較対象とする検出対象文字列である文字列５００ｂの中の部分文字列を決定する。この処理を、Ｓ７０１で得られた特定用語候補である辞書項目のそれぞれについて行う。
【００８０】
特定用語候補である辞書項目の各辞書項目について、この処理を行った結果がテーブル９００ａである。テーブル９００ａには、辞書項目ＩＤ、辞書項目名、辞書項目名の文字数である辞書項目名長、検出対象文字列内の位置情報、詳細比較時の対応、比較グループが含まれる。以下、テーブル９００ａに対する処理結果が作成される工程について詳細に説明する。
【００８１】
Ｓ７０１で得られた特定用語候補である辞書項目の情報として、テーブル９００ａの事象項目ＩＤ、辞書項目名が得られている。そして辞書項目名の文字数を基に”辞書項目名長”を算出して、テーブル９００ａの辞書項目名長として格納する。ここでは辞書項目長を辞書項目名の文字数にしているが、これは文字認識の精度が高いと想定した場合である。文字認識の誤りの混入具合や高い精度が期待できない場合には、辞書項目長を辞書項目名の文字数の２倍以下程度に拡大してもよい。
【００８２】
テーブル９００ａの”検出対象文字列内の位置情報”には、Ｓ７０１で得られた検出対象の文字列５００ｂ内でインデックスがヒットした連続する２文字の検索対象の位置情報を計算し格納する。ここでは、簡単に、ヒットした連続する２文字の位置の検索対象のもっとも前方のものと後方のものの区間を格納している。しかし、特定用語候補の文字列長が長い場合には、連続する２文字自体が多くなり多数ヒットする可能性が高いため、代わりにその中でヒットが連続するあるいはヒットの密度の高い区間を用いてもよい。
【００８３】
テーブル９００ａの”辞書項目名長”と”検出対象文字列内の位置情報”を基に、詳細比較時の対象とする検出対象の部分文字列の範囲を決定する。テーブル９００ａの”検出対象文字列内の位置情報”の範囲内に検索結果となるべき辞書項目の辞書項目名が含まれる可能性が高いとして、辞書項目ごとに”辞書項目名長”を基に、詳細比較を行う際の部分文字列を計算する。
【００８４】
この際に、”辞書項目長”の半分より”検出対象文字列内の位置情報”の範囲の文字数が少ない場合は、比較範囲が狭すぎて、所望の候補としては適切でないとして足きりする。すなわち、詳細比較時の対象としない。次に、”検出対象文字列内の位置情報”の範囲の最も後方から”辞書項目名長”分だけ前から、”検出対象文字列内の位置情報”の範囲の最も前方から”辞書項目名長”分だけ後を範囲として、詳細比較時の対象とする。この結果を、テーブル９００ａの”詳細比較時の対応”として格納する。検出対象の文字列の長さは、辞書項目長と同じか、それ以上になる。
【００８５】
最後に、詳細比較した結果である編集距離を比べる際の、”比較グループ”が決められる。これは、検出対象の文字列である文字列５００ｂ内に、複数の辞書項目名が出現する可能性があるため、検出対象文字列内の位置情報で重なるものを同一グループとして設定するためである。この結果を、テーブル９００ａの”比較グループ”に格納する。これにより、テーブル９００ａの比較グループでは、”Ａ”と”Ｂ”の２つのグループに分かれている。
【００８６】
Ｓ７０４では、特定情報抽出部２０４は、各特定用語候補について、詳細比較として編集距離を導出するために、ＤＰマッチングの計算テーブルを作成し、編集距離が相対的に短い候補に絞る処理を行う。例えば所定の閾値より短い編集距離の特定用語候補に絞る。
【００８７】
ＤＰマッチングの計算テーブルの例をテーブル８００ｃに示す。これは動的計画法（ＤＰ）で、文字列内の文字とその出現位置を比較し、最小ペナルティとなる値を求めるものである。この最小ペナルティが編集距離となる。編集距離は小さいほど比較した文字列の類似性は高いことになる。この計算テーブルにおいて、縦軸、横軸にそれぞれ比較する文字列を置き、編集距離なので文字追加のペナルティを”１”、文字削除のペナルティを”１”、文字の置き換えを文字の追加と削除の合計でペナルティを”２”として計算テーブル内の値を埋めていく。なお、”−”が入っているところは計算しない。
【００８８】
最初に、横に並ぶ文字の直下と縦に並ぶ文字の左側は、それぞれの文字の文字列位置を設定する。それ以降は、残る各値について、その縦軸の文字と横軸の文字が一致すると追加ペナルティが０（なし）とする。一致しないと追加ペナルティが”１”として、その左側、上側、左上側の値の中で最も小さいものに追加ペナルティを加えたものを、その値とする。これを計算テーブル内の左上側から計算していくのである。これにより、比較する文字列内の全ても文字の組合せを比較した場合の結果であるペナルティをつみあげていく。最終的に、計算テーブルが埋まったら、最も右下の値が、最小ペナルティとなり、文字列の編集距離を求めたことになる。
【００８９】
編集距離計算においても、文字列内の各文字と位置の比較を行うため、文字認識の文字誤りがあれば、編集距離が増大する。ただし、その誤り部分だけに影響を与えるため、ある程度の誤り耐性のある比較方法となっている。なお、テーブル８００ｃでは、計算テーブルを小さくするために、”バ１レプロ酸”と”バルプロ酸”の部分だけを比較した例になっている。
【００９０】
編集距離計算を行うにあたって、ＤＰマッチングの計算テーブルを作成し、その中身を全部計算することで編集距離を求める処理は、計算負担が大きく処理時間がかかってしまう。特に、毎回、検出対象の文字列全体と比較するようなことを行うと処理時間が大きくなってしまう。この速度を向上させるには、ＤＰマッチングの計算テーブルが小さいできることが好ましい。
【００９１】
そこで、第１実施形態では、Ｓ７０１のＮ−ｇｒａｍ方式の検索結果である”検出対象の文字列内の位置情報”を利用して比較対象の部分文字列を決定することで、ＤＰマッチングの計算テーブルを縮小している。これがテーブル９００ａの”詳細比較時の対応”を決めている部分である。また、”比較グループ”を設定し、複数の辞書項目の出現時の場合でも、処理できるようにしている。また、編集距離計算の回数そのものを減らすことも、処理時間短縮になるので、Ｓ７０１の絞り込み結果に対して、”検出対象の文字列内の位置情報”を利用した足切りも行っている。
【００９２】
テーブル９００ｂは、編集距離計算が終了した結果の例である。テーブル９００ａで編集距離計算対象とした、辞書項目について、その比較グループに分けて、編集距離が記されている。テーブル９００ｂの中の、比較グループ、辞書項目ＩＤ、辞書項目名は、テーブル９００ａと同じである。ただし辞書項目ＩＤの”７８９”と”１９４５６”の辞書項目は足切されたため、テーブル９００ｂにはない。テーブル９００ｂの編集距離計算対象は、テーブル９００ａの”検出対象文字列内の位置情報”で該当する検出対象の部分文字列の内容そのものになっている。そしてテーブル９００ｂの編集距離が、計算された編集距離である。
【００９３】
これにより、比較グループＡでは、辞書項目ＩＤ”１００２０”、辞書項目名”バルプロ酸Ｎａシロップ５％”の辞書項目の編集距離が小さいので、これが検索結果と選ばれることになる。しかし、グループＢでは、辞書項目ＩＤ”５０２１”と”５０２２”の２つの辞書項目の編集距離が小さいため、まだ候補となって残ることになる。辞書項目名を商品やサービス、薬剤等の名前と想定した場合、比較的似ている名前が多く、同じ文字列の名前の最後に、サイズや量、色等の情報部分が異なるようなものが多い。そのため、編集距離の比較だけだと、差が付きにくいことが生じやすい。さらに、文字認識の誤認識の影響があるため、その可能性を増大させてしまう可能性が生じてしまう。
【００９４】
Ｓ７０５は、Ｓ７０４の処理の結果、編集距離計算の候補である辞書項目が残らなかった場合はＳ７０６へ進み、得られなかった場合は、終了となる。
【００９５】
Ｓ７０６では、特定情報抽出部２０４は、各特定用語候補の最小距離となる部分から、検出対象文字列内の該当部分を求めながら、文字認識の誤認識パタンを基に相違度を算出する。ここで、相違度とは、編集距離を詳細にした類似性の度合いを意味し、編集距離と同様に値が小さいほど類似性が高い。まず、Ｓ７０４で作成したＤＰマッチングの計算テーブルについて、ペナルティ値が最も少なくなるように、左下から右上まで進む移動経路を求める。
【００９６】
テーブル８００ｅは、テーブル８００ｃのＤＰマッチングの計算テーブルで移動経路を求めた結果を示したものである。この移動経路は、動的計画法（ＤＰ）が求めた最小ペナルティとなるための文字比較パタンとなっている。編集距離計算では、この移動経路を求めることで、検出対象である文字列５００ｂ内で、特定情報の辞書項目の辞書項目名に最も合致する検出対象の文字列の部分文字列の位置を知ることになる。
【００９７】
この移動経路を探す際に、検出対象の部分文字列は、必ず、特定用語候補より長い。そのため、特定情報の辞書項目の辞書項目名に最も合致する検出対象の文字列の部分文字列の位置の部分以外からペナルティが検出されることがある。これは、移動経路の最初の部分か最後の部分に現れる。このペナルティの分はノイズなので、この影響を排除すべきである。そのため、移動経路のこの部分だけペナルティは無視し、後述する相違度計算の際に反映しないようにするとよい。
【００９８】
また、この移動経路を探す際に、誤認識パタン２１８を使用して、文字認識の誤認識を配慮した文字列の比較と、誤認識パタン２１８の例を、テーブル８００ｄに示す。テーブル８００ｄにおいて、”誤認識パタン”は文字認識が誤認識した場合に発生する文字列であり、”正解パタン”は誤認識された文字列に対応する正しい文字列である。”修正距離”はこの誤認識の発生度合を基に、編集距離１以下の値になるように正規化等の調整を施した値である。誤認識パタン２１８を用いて、移動距離中の文字または文字列の比較を行う。すなわち、誤認識パタンと正解パタンに合致する場合には、その部分のペナルティを該当する編集距離で置き換えていく。これにより、この誤認識パタンと正解パタンに合致するものがある場合には、テーブル９００ｂで算出された編集距離より、最小ペナルティは減少することになり、この値を相違度とする。
【００９９】
誤認識パタン２１８の検出対象の文字への適用を行うと、常に、Ｎ−ｇｒａｍ方式の検索や編集距離計算を行うことになり、処理速度が遅くなってしまう。そこで、第１実施形態では、編集距離計算以後の限定された候補についてのみ、誤認識パタン２１８を配慮した処理を行う。ただし、通常の検索では、検索結果として結果候補を得れば検索処理が終了することが多い。一方、第１実施形態では、文字認識の誤りの修正等に利用するため、特定情報の辞書項目の辞書項目名に最も合致する検出対象の部分文字列の位置を求める必要がある。そのため、ＤＰマッチングの計算テーブルの最小距離となる移動経路を計算するが、この際に、誤認識パタン２１８を利用することで処理速度低下を抑える。また、誤認識パタン２１８も配慮した相違度を算出することで、差が付かない編集距離をもつ辞書項目が残った場合でも、差をつけることを可能にしている。
【０１００】
テーブル９００ｃが、この処理を行った結果である。テーブル９００ｂに対して、相違度の部分が追加されている。一方、辞書項目ＩＤ”１８５５５”と”１８５５６”は候補から外されたので無くなっている。それ以外は、テーブル９００ｂと同じである。テーブル９００ｃの相違度に、辞書項目ＩＤ”５０２１”と”５０２２”の相違度の値が算出されている。これは、ＤＰマッチングの計算テーブルの最小距離となる移動経路を計算時に、誤認識パタン２１８を利用して計算された相違度である。なお、辞書項目ＩＤ”１００００”の辞書項目名”バルプロ酸Ｎａシロップ５％”の辞書項目は、編集距離で選ばれたので、相違度の計算は行われていない。
【０１０１】
Ｓ７０７では、特定情報抽出部２０４は、検出対象文字列内の該当部分ごとに、編集距離が小さく・相違度が小さい特定用語結果を選出する。また、特定用語結果に該当する検出対象内の部分文字列の位置を得る。Ｓ７０６で得られたテーブル９００ｃの結果から、辞書項目ＩＤ”１００００”と”５０２１”が得られ、それぞれの検出対象の文字列の該当部分（編集距離計算対象）が得られることになる。
【０１０２】
Ｓ７０８では、特定情報抽出部２０４は、Ｓ７０７の結果に基づき、検出対象文字列内の該当部分に対して記録を行う。また、スキャン結果文字列内の該当部分の抽出結果として、特定用語結果を使用できるようにする。これを行うことで、図６で行った修正や、抽出情報２０５の例であるテーブル５００ｄのような出力を可能にする。
【０１０３】
以上説明したとおり第１実施形態によれば、ｎ−ｇｒａｍ方式とＤＰマッチング方式とを併用した検索を行う。特に、ｎ−ｇｒａｍ方式を利用して辞書内の文字列候補の絞り込みを行い、絞り込まれた候補に対してＤＰマッチング方式を利用して文字列の厳密な比較を行うための編集距離を算出する。これにより、文字列の誤りや表記ゆれを含むテキストデータに対する検索の高速化を実現することが可能となる。
【０１０４】
なお、上述の説明においては、薬剤名の辞書やお薬手帳の例で示したが、他の紙文書に対しても適用可能である。特に、商品やサービス等のレシートや、レシート調の帳票については、類似性が高く容易に適用可能である。
【０１０５】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１０６】
２０２  文書画像処理部；  ２０４  特定情報抽出部；  ２１２  領域分類部；  ２１３  検出部；  ２１４  出力部；  ２１５  抽出規則；  ２１６  特定情報辞書；  ２１７  検索インデックス；  ２１８  誤認識パタン
【図１】
2018081451.tif 000003
【図２】
2018081451.tif 000004
【図３】
2018081451.tif 000005
【図４】
2018081451.tif 000006
【図５】
2018081451.tif 000007
【図６】
2018081451.tif 000008
【図７】
2018081451.tif 000009
【図８】
2018081451.tif 000010
【図９】
2018081451.tif 000011