(57)【要約】【課題】伝票や帳票から認識されるデータの認識率を向上させると共に、誤認識フィールドの修正を行うことにより精度良く伝票や帳票に記載されたデータを認識することができるデータ認識装置を提供する。【解決手段】伝票の画像データを認識させ、認識された明細行に含まれる演算関係を予め定義ツール１２により定義する。そして、明細行の各フィールドの認識結果に、定義された演算を施し、認識結果と演算結果を比較することにより、誤認識が発生しているフィールドを特定する。また、正しく認識されたと推測されるフィールドの認識結果に定義されている演算を施し、誤認識のあったと推測されるフィールドの正しい値を算出する。そして、誤認識のあったと推測されるフィールドの値を算出された正しい値として修正する。【選択図】図１
2005128865.tif 000002
【特許請求の範囲】
【請求項１】
帳票に記入された情報を画像情報として読み取り、当該画像情報の文字認識を行うデータ認識装置であって、
前記画像情報に含まれるフィールドを定義するための設定情報を記憶する定義ファイルと、
前記設定情報に基づいて前記画像情報に含まれるフィールドを認識する認識手段と、
前記認識されたフィールド間における演算関係を入力する入力手段と、
前記演算関係に基づいて認識されたフィールド間の演算を行い、フィールドの認識結果と演算結果を比較して、誤認識があるか否かを判別する判別手段と、
フィールドの認識結果に誤認識があると判別された場合に、誤認識がないと判別されたフィールドの認識結果に基づいて、当該誤認識があると判別されたフィールドの値を算出する演算手段と、
を備えることを特徴とするデータ認識装置。
【請求項２】
前記定義ファイルは、前記入力手段により入力されたフィールド間における演算関係を演算情報として記憶することを特徴とする請求項１記載のデータ認識装置。
【請求項３】
前記フィールドの認識結果と演算結果との比較結果に基づいて、認識結果と演算結果とが異なるフィールド及び認識の確からしさを記憶する記憶手段を備え、
前記判別手段は、前記記憶手段に記憶された認識結果と演算結果とが異なるフィールドの認識の確からしさを比較して、認識されたフィールドに誤認識があるか否かを判別することを特徴とする請求項１記載のデータ認識装置。
【請求項４】
コンピュータに、
前記画像情報に含まれるフィールドを定義するための設定情報を記憶する機能と、
前記設定情報に基づいて前記画像情報に含まれるフィールドを認識する機能と、
前記認識されたフィールド間における演算関係を入力する機能と、
前記演算関係に基づいて認識されたフィールド間の演算を行い、フィールドの認識結果と演算結果とを比較して、誤認識があるか否かを判別する機能と、
フィールドの認識結果に誤認識があると判別された場合に、誤認識がないと判別されたフィールドの認識結果に基づいて、当該誤認識があると判別されたフィールドの値を算出する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、照射した光の反射光から文字、数字及び記号を読み取り、演算式に含まれる数値の修正作業を行うデータ認識装置及びプログラムに関する。
【背景技術】
【０００２】
近年、紙に書かれた文字を文字コードとしてコンピュータに取り込む技術が飛躍的に進歩している。一般的には、イメージスキャナによって紙に書かれた文字や図形を読み込み、読み込んだイメージデータの中の文字部分を専用のソフトウェアによって文字コードに変換するという方法がとられている。この専用ソフトウェアはＯＣＲソフトと呼ばれ、ビジネスユース、パーソナルユースに広く使われている。このＯＣＲソフトの良し悪しを決定するのが認識率である。
【０００３】
ＯＣＲソフトの認識率を向上させる方法として、大きく２通りのアプローチが行われている。一つは「１文字１文字の認識率を向上させる」方法であり、もう一つは「前後の文脈やフィールド属性から、より確からしい認識候補を導き出す」方法である。後者の代表的な例として住所の認識が挙げられる。例えば、図２４に示すように、予め得意先データベースや商品データベースを保持させておき、認識した文字列と該データベースを比較しながらより確からしい結果を導き出すというものである。
【０００４】
さらに、複数のフィールドの関連から認識率を上げる方法がある。具体的には、電話番号のフィールドの認識結果と住所フィールドの認識結果の確からしさを比較して、より確からしいフィールドの認識結果を元に他方を修正するという方法である。これにより、ＯＣＲソフトの認識率を向上させることができる。
【０００５】
また、伝票の明細行の誤認識を検出する為に相互に演算関係にある認識フィールド同士を演算し、演算結果と認識結果を比較することにより誤認識を検出する方法も知られている（例えば、特許文献１参照）。この方法は、図２５に示すように、相互に演算関係にある数量×単価の演算を実行し、演算結果と、認識された金額のフィールドとを比較して、誤認識を検出する。また、金額フィールドの演算を行い、認識された合計金額と比較を行うことにより誤認識を検出し、検出結果に基づいて誤認識されたフィールドを判別する。具体的には、パイナップルの行において、”２（数量）×３００（単価）≠５００”を検出する。また、合計金額において、”５００＋１００＋５００＋２０００＋６０００≠９２００”を検出する。そして、この検出結果に基づいて、誤認識された可能性の高いフィールドが「パイナップルの金額」であると判別する。これにより、より確からしいフィールドの認識結果と、誤認識された可能性の高いフィールドの認識結果を正確に導き出すことができる。
【特許文献１】特開２００２−５６３５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来の光学的文字読取装置（例えば、特許文献１）においては、誤認識の検出は可能であるが誤認識フィールドの修正までは行えなかった。したがって、光学的文字読取装置により誤認識が検出された場合、オペレータによる修正作業を行う必要があった。ここで、修正箇所が多数ある場合、作業が煩雑であるという問題があり、オペレータ等の人的要因により誤修正が施される場合も少なくなかった。
【０００７】
本発明の課題は、伝票や帳票から認識されるデータの認識率を向上させると共に、誤認識フィールドの修正を行うことにより精度良く伝票や帳票に記載されたデータを認識することができるデータ認識装置及びプログラムを提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１記載の発明は、
帳票に記入された情報を画像情報として読み取り、当該画像情報の文字認識を行うデータ認識装置であって、
前記画像情報に含まれるフィールドを定義するための設定情報を記憶する定義ファイルと、
前記設定情報に基づいて前記画像情報に含まれるフィールドを認識する認識手段と、
前記認識されたフィールド間における演算関係を入力する入力手段と、
前記演算関係に基づいて認識されたフィールド間の演算を行い、フィールドの認識結果と演算結果を比較して、誤認識があるか否かを判別する判別手段と、
フィールドの認識結果に誤認識があると判別された場合に、誤認識がないと判別されたフィールドの認識結果に基づいて、当該誤認識があると判別されたフィールドの値を算出する演算手段と、
を備えることを特徴としている。
【発明の効果】
【０００９】
請求項１又は４記載の発明によれば、帳票に記入された情報を画像情報として読み取り、設定情報に基づいて画像情報に含まれるフィールドを認識し、認識されたフィールド間における演算関係を入力させ、入力された演算関係に基づいて、認識されたフィールド間の演算を行い、認識結果と演算結果に基づいて、各フィールドの認識結果に誤認識があるかを判別する。そして、誤認識があると判別されたフィールドに付いては、誤認識がないと判別されたフィールドの認識結果に基づいて演算を行い、正しい演算結果を取得することができる。これにより、誤認識として検出されたフィールドの修正作業を容易かつ正確に行うことができる。
【００１０】
請求項２記載の発明によれば、入力された演算関係を演算情報として記憶手段に記憶するため、形式が同じ帳票については、過去に定義された演算関係に基づいて、帳票の認識を行うことができる。これにより、業務効率を大幅に向上させることができる。
【００１１】
請求項３記載の発明によれば、認識結果と演算結果とが異なるフィールド及び認識の確からしさを記憶し、当該認識の確からしさに基づいて、認識されたフィールドに誤認識があるか否かを判別するため、誤認識のないフィールドと誤認識されたフィールドを精度よく判別することができる。これにより、データ認識装置の認識率を向上させると共に、誤認識されたフィールドついて正確な値を算出することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図を参照して本発明を実施するための最良の形態を詳細に説明する。ただし、発明の範囲は、図示例に限定されない。
【００１３】
まず、本実施の形態の構成を説明する。
図１は、本実施の形態におけるデータ認識装置１の概略構成を示す図である。図１に示すように、データ認識装置１は、読取装置１１、定義ツール１２、定義ファイル１３、ＯＣＲ認識エンジン１４、業務アプリ１５、記憶装置１６、入力装置１７、表示装置１８等を備えて構成される。
【００１４】
読取装置１１は、伝票や帳票を画像データとして取得し、取得した画像データを定義ツール１２及びＯＣＲ認識エンジン１４に出力する。図２に、読取装置１１の構成ブロック図を示す。図２に示すように、読取装置１１は、読取部１１ａ、イメージ処理部１１ｂ、メモリ部１１ｃ、スキャナ制御部１１ｄ、インターフェース部１１ｅを備えて構成される。
【００１５】
読取部１１ａは、伝票に光を照射する光源部１１１と、伝票から反射された光を読み取るＣＣＤ（Charge Coupled Device）１１２と、ＣＣＤ１１２が読み取る画像信号をアナログ／デジタル変換するＡ／Ｄ変換部１１３とを備えている。この読取部１１ａは、光源部１１１からの光を伝票に対して照射し、その反射光をＣＣＤ１１２で検出することにより伝票の画像データを取得する。
【００１６】
イメージ処理部１１ｂは、読取部１１ａで読み取った画像データに二値化、スムージング、ノイズ除去等の画像処理を施す。メモリ部１１ｃは、イメージ処理部１１ｂにおいて画像処理が施された伝票の画像データを格納する。
【００１７】
スキャナ制御部１１ｄは、記憶装置１６に格納されている各種制御プログラムを読み出してＲＡＭ内に展開し、それらの制御プログラムに従って、読取装置１０の各部を制御する。インターフェース部１１ｆは、スキャナ制御部１１ｄの制御に応じて、メモリ部１１ｃに格納された伝票の画像データを定義ツール１２、ＯＣＲ認識エンジン１４、表示装置１８に出力する。
【００１８】
図１に戻り、定義ツール１２は、読み込まれた伝票の画像データ上に点在する認識フィールドの位置、認識フィールドの文字数や文字種、認識フィールド間における演算関係等の設定情報を定義するための役割を担うツールである。具体的に、定義ツール１２は、記憶装置１６から各種処理プログラムを読み出して、後述するメイン処理、イメージ読込処理、フィールド設定処理、演算設定処理を実行する。なお、各処理の詳細は後述する。
【００１９】
以下、図３〜図４を参照して、定義ツール１２により、定義される情報について説明する。図３（ａ）は、読み取られた伝票から認識フィールドの位置、認識フィールドの文字数及び文字種を設定する設定画面１８１を示す図である。図３（ａ）に示すように、例えば、設定画面１８１の上段には、得意先名を入力するフィールド１８１ａ、住所を入力するフィールド１８１ｂ、電話番号を入力するフィールド１８１ｃが設けられている。ここで、入力装置１７に備えるマウス等により、各フィールドの範囲（例えば、矩形領域）が指定されると、定義ツール１２により、指定された矩形領域の位置情報（例えば、左上座標及び右下座標）が取得され、指定された矩形領域が認識フィールドとして設定される。
【００２０】
また、フィールドの矩形領域が指定されると、図３（ｂ）に示す設定画面１８２が表示され、この設定画面１８２において、対応する認識フィールドの文字数及び文字種が設定される。すなわち、設定画面１８２において入力された文字数及び文字種が指定されたフィールドの範囲と対応付けて取得され、定義ファイル１３に設定情報として格納される。
【００２１】
また、設定画面１８１の下段には、商品名を入力するフィールド１８１ｄ、数量を入力するフィールド１８１ｅ、単価を入力するフィールド１８１ｆ、金額を入力するフィールド１８１ｇ、合計金額を入力するフィールド１８１ｈが設けられている。フィールド１８１ｄ〜１８１ｈにおいても、認識フィールドの位置、認識フィールドの文字数及び文字種が同様に設定画面１８１及び１８２において設定される。
【００２２】
さらに、設定画面１８１の下段に示されるフィールド１８１ｄ〜１８１ｈにおいては、演算関係が成立するため、これらの演算関係が定義ツール１２により定義される。図４を参照して、定義ツール１２により定義される演算関係について説明する。
【００２３】
図４（ａ）は、２通りの演算関係が存在する伝票のデータ構成例を示す図である。まず、第１の演算関係として、図４（ｂ）に示す通り、
金額フィールドｆ（４）＝数量フィールドｆ（２）×単価フィールドｆ（３）
の演算関係が成立している。この演算関係は、"f(4)・1=f(2)・1xf(3)・1"を定義する演算情報として、定義ファイル１３に格納可能なデータ形式に変換され、後述する定義ファイル１３に格納される。例えば、上述した演算情報は、図５（ｂ）のデータ１８１ｉに示すように、逆ポーランド記法を用いてスタック形式に変換される。なお、データ形式はこれに限定されない。
【００２４】
次に、第２の演算関係として、図４（ｃ）に示すとおり、
合計フィールドｓｕｍ（１）＝合計フィールドｆ（４）・１＋合計フィールドｆ（４）・２＋合計フィールドｆ（４）・３＋合計フィールドｆ（４）・４＋合計フィールドｆ（４）・５
の演算関係が成立している。この演算関係は、"sum(1)=f(4)・1+f(4)・2+f(4)・3+f(4)・4+f(4)・5"を定義する演算情報として、定義ファイル１３に格納可能なデータ形式に変換され、後述する定義ファイル１３に格納される。
【００２５】
定義ファイル１３は、上述した定義ツール１２により定義された設定情報、演算情報を格納する。図５〜図６を参照して、定義ツール１２により定義された各情報のデータ構成例について説明する。図５〜図６に示すように、定義ファイル１３は、階層構造的に接続された構造体を構築し、当該構造体の中に各情報に格納している。
【００２６】
図５に示すように、最上位の構造体として、伝票情報構造体１２ａが構築される。この伝票情報構造体１２ａには、基本情報、ヘッダ情報、明細情報が格納される。また、基本情報の下層には、基本情報構造体１２ｂが構築され、読み取られた伝票の伝票サイズ（横）、伝票サイズ（縦）が格納される。
【００２７】
ヘッダ情報の下層には、ヘッダ情報構造体１２ｃが構築され、ヘッダ情報構造体１２ｃには、発行元会社コード、発行元会社コード表示情報、発行元会社名、表示情報、発行元ＴＥＬ番号、発行元ＴＥＬ番号表示情報、発行元ＦＡＸ番号、発行元ＦＡＸ番号表示情報が格納される。
【００２８】
また、図６に示すように、ヘッダ情報構造体１２ｃの項目の下層には、対応する表示表示情報構造体１２ｉ〜１２ｌが構築されされている。そして、表示情報構造体１２ｉ〜１２ｌには、対応するフィールドを表示画面に表示する位置を示す情報として、左下座標（横）、左下座標（縦）、右下座標（横）、右下座標（縦）が格納される。
【００２９】
図５に戻り、明細情報の下層には、明細情報構造体１２ｄが構築され、明細情報構造体１２ｄには、明細行数、フィールド数、フィールド情報、フィールド演算情報、合計フィールド数、合計フィールド情報、合計フィールド演算情報が格納される。
【００３０】
また、明細情報構造体１２ｄの下層には、フィールド情報に対応してフィールド情報構造体１２ｍ（図６）、フィールド演算情報に対応してフィールド演算情報構造体１２ｅ（図５）、合計フィールド情報に対応して合計フィールド情報構造体１２ｑ（図６）、合計フィールド演算情報に対応して合計フィールド演算情報構造体１２ｇ（図６）がそれぞれ構築されている。
【００３１】
図６に示すように、フィールド情報構造体１２ｍには、文字数、文字種、フィールド表示情報、認識の確からしさ、認識候補、認識結果、次のフィールド情報が格納されている。また、フィールド表示情報の下層には、表示情報構造体１２ｎが構築され、次のフィールド情報の下層には、フィールド情報構造体１２ｏが構築されている。
【００３２】
同様に、合計フィールド情報構造体１２ｑには、文字数、文字種、フィールド表示情報、認識の確からしさ、認識候補、認識結果、次の合計フィールド情報が格納されている。また、フィールド表示情報の下層には、表示情報構造体１２ｒが構築され、次のフィールド情報の下層には、合計フィールド情報構造体１２ｓが構築されている。
【００３３】
また、図５に示すように、フィールド演算情報構造体１２ｅには、演算情報、次の演算情報が格納されており、合計フィールド演算情報構造体１２ｇには、合計演算情報、次の合計演算情報が格納されている。
【００３４】
図１に戻り、ＯＣＲ認識エンジン１４は、データ処理部１４ａ、データ管理部１４ｂ等を備えて構成され、定義ツール１２により定義された各情報を定義ファイル１３から取得し、読取装置１１から入力される伝票の画像データの各種認識処理を行うと共に、処理された情報を管理する。
【００３５】
データ処理部１４ａは、読取装置１１から伝票の画像データを取得し、取得した画像データから定義ツール１２により定義された情報に基づいてフィールドを認識し、認識したフィールドをデータ管理部１４ｂに格納する。そして、データ処理部１４ａは、記憶装置１６から各種プログラムを取得し、データ管理部１４ｂに格納される情報に対して、後述するメイン処理、検算処理、誤認識フィールド検出処理、誤認識フィールド修正処理を実行する。なお、各処理の詳細については後述する。
【００３６】
データ管理部１４ｂは、データ処理部１４ａにより認識されたフィールドをフィールド情報構造体に分類して格納すると共に、上述したデータ処理部１４ａにより実行された各処理において生成された情報を各構造体に格納して、管理する。図７〜図８を参照して、データ管理部１４ｂに格納される情報のデータ構成例について説明する。図７〜図８に示すように、データ管理部１４ｂは、各情報を階層構造的に接続された構造体に格納する。
【００３７】
図７は、伝票の画像データから認識されたフィールドに関する情報のデータ構成例を示す図である。図７に示すように、最上位の構造体として、伝票情報構造体１４ｃが構築され、伝票情報構造体１４ｃには、基本情報、ヘッダ情報、明細情報が格納される。また、伝票情報構造体１４ｃの下層には、明細情報に対応して明細情報構造体１４ｄが構築される。明細情報構造体１４ｄには、明細行数、フィールド数、フィールド情報、フィールド演算情報、合計フィールド数、合計フィールド情報、合計フィールド演算情報が格納される。
【００３８】
また、明細情報構造体１４ｄの下層には、フィールド情報に対応してフィールド情報構造体１４ｅが構築され、フィールド情報構造体１４ｅには、文字数、文字種、フィールド表示情報、認識の確からしさ、認識候補、認識結果、次のフィールド情報が格納される。フィールド演算情報に対応して、フィールド演算情報構造体１４ｈが構築され、フィールド演算情報構造体１４ｈには、演算情報、次の演算情報が格納される。
【００３９】
また、図８は、認識されたフィールドのうち誤認識フィールドを特定するためのデータ管理情報のデータ構成例を示す図である。最上位の構造体には、検算管理情報１４ｊが構築され、検算管理情報１４ｊの下層には、検算管理構造体１４ｋが構築されている。この検算管理構造体１４ｋには、異常フィールド情報、正常フィールド情報が格納される。
【００４０】
また、検算管理構造体１４ｋの下層には、異常フィールド情報に対応して異常フィールド管理構造体１４ｌが構築され、異常フィールド管理構造体１４ｌには、不正フィールド情報と次の管理構造体が格納される。そして、後述する検算処理の結果、異常フィールド管理構造体１４ｌに不正フィールド情報が格納された場合、検算結果が異常であったフィールドのフィールド情報構造体（図７）がポイントされる。
【００４１】
また、検算管理構造体１４ｋの下層には、正常フィールド情報に対応して正常フィールド管理構造体１４ｈが構築され、正常フィールド管理構造体１４ｈには、正常フィールド情報と次の管理構造体が格納される。そして、後述する検算処理の結果、正常フィールド管理構造体１４ｈに正常フィールド情報が格納された場合、検算結果が正常であったフィールドのフィールド情報構造体（図７）がポイントされる。
【００４２】
図１に戻り、業務アプリ１５は、ＯＣＲ認識エンジン１４において、処理されたデータを用いて各種業務処理を行うアプリケーションである。
【００４３】
記憶装置１６は、プログラムやデータ等があらかじめ記憶されている記録媒体（図示せず）を有しており、この記録媒体は磁気的、光学的記録媒体、若しくは半導体メモリで構成されている。この記録媒体は記録装置１６に固定的に設けられるもの、若しくは着脱自在に装着するものであり、この記録媒体には、前記システムプログラム及び当該システムに対応する各種アプリケーションプログラム、及び各種処理プログラムで処理されたデータ等を記憶する。
【００４４】
また、記録媒体に記憶するプログラム、データ等は、その一部若しくは全部をサーバやクライアント等の他の機器からＷＡＮ（Wide Area Netwrok）、ＬＡＮ（Local Area Network）等のネットワーク回線の伝送媒体を介して伝送制御部１４から受信して記憶する構成にしてもよく、さらに、記録媒体はネットワーク上に構築されたサーバの記録媒体であってもよい。さらに、前記プログラムをネットワーク回線等の伝送媒体を介してサーバやクライアントへ伝送してこれらの機器にインストールするように構成してもよい。
【００４５】
入力装置１７は、カーソルキー、数字入力キー、及び各種機能キーを備えたキーボードを含み、このキーボードで押下されたキーに対応する押下信号を読取装置１１、定義ツール１２又はデータ処理部１４ａに出力する。なお、入力装置１７は、必要に応じてマウス、タッチパネル等のポインティングデバイスや、その他の入力装置を備えるものとしてもよい。
【００４６】
表示装置１８は、ＣＲＴ（Cathode Ray Tube）やＬＣＤ（Liquid Crystal Display）等によってなる表示画面を備え、読取装置１１から読み取られた画像データや入力装置１７から入力された入力指示等の表示情報を画面上に表示する。
【００４７】
次に、本実施の形態の動作を説明する。
後述する各フローチャートに記述されている各機能を実現するためのプログラムは読み取り可能なプログラムコードの形態でデータ認識装置１の記憶装置１６に格納されており、定義ツール１２又はデータ処理部１４ａは、該プログラムコードに従った動作を逐次実行する。
【００４８】
まず、図９〜図１８を参照して、定義ツール１２により実行される処理について説明する。図９は、定義ツール１２により実行されるメイン処理を示すフローチャートである。図９に示すように、入力装置１７を介して実行する処理が選択されると（ステップＳ１）、定義ツール１２により、終了選択であるか否かを判別され、終了選択でない場合（ステップＳ２；ＮＯ）、イメージ読込処理が選択されたか否かが判別される（ステップＳ３）。ここで、イメージ読込処理が選択された場合（ステップＳ３；ＹＥＳ）、定義ツール１２により、記憶装置１６からイメージ読込処理プログラムが読み出され、後述するイメージ読込処理（図１０）が実行される（ステップＳ６）。図１０を参照してイメージ読込処理について説明する。
【００４９】
図１０は、メイン処理の一部として実行されるイメージ読込処理を示すフローチャートである。図１０に示すように、読取装置１１から伝票の画像データ（イメージ）が読み込まれると（ステップＳ１１）、定義ツール１２により、読み込まれた画像データが記憶装置１６（主記憶装置）の所定のアドレスに格納される（ステップＳ１２）。さらに、読み込まれた画像データが表示装置１８に表示され（ステップＳ１３）、本イメージ読込処理終了後、メイン処理に移行する。
【００５０】
図９に戻り、ステップＳ１においてフィールド設定の処理が選択された場合（ステップＳ４；ＹＥＳ）、定義ツール１２により、記憶装置１６からフィールド設定処理プログラムが読み出され、後述するフィールド設定処理（図１１）が実行される。図１１を参照して、フィールド設定処理について説明する。
【００５１】
図１１は、メイン処理の一部として実行されるフィールド設定処理を示すフローチャートである。図１１に示すように、フィールド設定処理を実行するにあたり、初期化処理（図１２）が実行される。図１２を参照して初期化処理について説明する。
【００５２】
図１２に示すように、レジスタの初期化が行われ、「CNT=0，SX=0，SY=0，EX=0，ET=0，CN=0，CK=0」としてセットされる（ステップＳ４１）。次に、フィールド情報構造体が確保され、アドレスが「Mlinep→Fieldp」及びレジスタＦＰにセットされる（ステップＳ４２）。さらに、表示情報構造体が確保され、アドレスが「Mlinep→Fieldp→FieldDispp」及びレジスタFDPにセットされる（ステップＳ４３）。そして、本初期化処理終了後、フィールド設定処理に移行する。
【００５３】
図１１に戻り、入力装置１７を介して実行する処理が選択されると（ステップＳ２２）、定義ツール１２により、終了選択であるか否かを判別され、終了選択でない場合（ステップＳ２３；ＮＯ）、位置・大きさ設定の指示が選択されたか否かが判別される（ステップＳ２４）。
【００５４】
ここで、位置大きさ設定の指示が入力された場合（ステップＳ２４；ＹＥＳ）、すなわち、上述した図３（ａ）に示す設定画面１８１において、マウス等により、矩形領域が指定された場合、指定された矩形領域の左上座標（SX，SY）及び右下座標（EX，EY）を取得する（ステップＳ２５）。次に、指定された矩形領域の最大文字数及び文字種を設定するための設定画面１８２（図３（ｂ））を表示装置１８に表示させ（ステップＳ２６）、設定画面１８２において入力された最大文字数（CN）及び文字種（CK）を取得する（ステップＳ２７、Ｓ２８）。
【００５５】
そして、取得した各情報が所定のアドレスに格納される（ステップＳ２８）。すなわち、フィールド情報構造体（FP）の文字数（Chanum）に取得された文字種（CN）が格納され、フィールド情報構造体（FP）の文字種（Charkind）に取得された文字種（CK）が格納される。また、表示構造情報体（FDP）の左上座標横（SX）、左上座標縦（SY）、右下座標横（EX）、右下座標縦（EY）に、取得された左上座標（SX，SY）、右下座標（EX，EY）がそれぞれ格納される。
【００５６】
次いで、次のフィールドを定義するため、領域確保・レジスタ更新処理が実行される（ステップＳ３０）。図１３は、フィールド設定処理の一部として実行フィールド情報構造体を確保され（ステップＳ４５）、アドレスが「FP→Nextp」にセットされる（ステップＳ４５）。次いで、「FP」を「FP→Nextp」とする（ステップＳ４６）。また、表示情報構造体が確保され、アドレスが「FP→FieldDispp」にセットされる（ステップＳ４７）。次いで、「FDP」を「FP→FieldDispp」とする（ステップＳ４６）。そして、領域確保・レジスタ更新処理終了後、フィールド設定処理に移行する。
【００５７】
図１１に戻り、レジスタのカウンタがインクリメント（＋１）されて（ステップＳ３１）、ステップＳ２２に移行し、次の処理が選択されると（ステップＳ２２）、ステップＳ２４〜Ｓ３１の処理が繰り返して実行される。一方、終了処理が選択された場合（ステップＳ２３；ＹＥＳ）、フィールド設定処理を終了するための後処理が実行される（ステップＳ３２）。図１４を参照して後処理について説明する。
【００５８】
図１４に示すように、まず、カウンタが０であるか否かが判別され、カウンタが０である場合（ステップＳ５１；ＹＥＳ）、「Mlinp→Fieldp→FieldDispp」でポイントされたメモリが解放される（ステップＳ５２）。次いで、「Mlinp→Feildp」でポイントされたメモリが解放され（ステップＳ５３）、フィールド設定処理が終了される。
【００５９】
続いて、図９に戻り、ステップＳ１において、演算設定の処理が選択されると（ステップＳ５；ＹＥＳ）、定義ツール１２により、記憶装置１６から演算設定処理プログラムを読み出して、後述する演算設定処理を実行させる（ステップＳ８）。図１５を参照して演算設定処理について説明する。
【００６０】
図１５は、メイン処理の一部として実行される演算設定処理を示すフローチャートである。図１５に示すように、演算設定処理を実行するにあたり、初期化処理（図１６）が実行される（ステップＳ６１）。図１６を参照して初期化処理について説明する。
【００６１】
図１６は、演算設定処理の一部として実行される初期化処理を示すフローチャートである。図１６に示すように、レジスタの初期化が行われ、カウンタが０にセットされる（ステップＳ７１）。次いで、フィールド情報構造体が確保され、アドレスが「Mlinep→FieldCulp」及びレジスタFCPにセットされる（ステップＳ７２）。さらに、表示情報構造体が確保され、アドレスが「FCP→FieldCulp」及びレジスタFCPにセットされる（ステップＳ７３）。そして、本初期化処理終了後、演算設定処理に移行する。
【００６２】
図１５に戻り、入力装置１７を介して実行する処理が選択されると（ステップＳ６２）、定義ツール１２により、終了選択であるか否かを判別され、終了選択でない場合（ステップＳ６３；ＮＯ）、認識フィールドが選択されたか否かが判別される（ステップＳ６４）。
【００６３】
認識フィールドが選択された場合（ステップＳ６４；ＹＥＳ）、選択されたフィールドのフィールド情報構造体が特定される（ステップＳ６５）。次いで、FCPスタックに「FP」が追加され（ステップＳ６６）、FCPスタックに「=」が追加される（ステップＳ６７）。続いて、定義ツール１２により、記憶装置１６から演算情報のセット処理プログラムが読み出され、演算情報のセット処理が実行される（ステップＳ６８）。図１７を参照して、演算情報のセット処理について説明する。
【００６４】
図１７は、演算設定処理の一部として実行される演算情報のセット処理を示すフローチャートである。図１７に示すように、入力装置１７を介して認識フィールドが選択される（ステップＳ８２；ＹＥＳ）、選択された認識フィールドのフィールド情報構造体（ＦＰ）が特定され（ステップＳ８３）、FCPスタックに「FP」が追加される（ステップＳ８４）。
【００６５】
次いで、演算子が入力されたか否かが判別され（ステップＳ８５）、演算子が入力された場合（ステップＳ８５；ＹＥＳ）、FCPスタックに入力された演算子が追加される（ステップＳ８６）。続いて、終了指示が選択されたか否かが判別され、終了指示が入力されない場合（ステップＳ８１；ＮＯ）、ステップＳ８２〜Ｓ８６の処理が繰り返して実行される。終了指示が選択された場合（ステップＳ８１；ＹＥＳ）、本演算情報のセット処理を終了して、演算設定処理に移行する。
【００６６】
図１５に戻り、演算情報のセット処理が終了されると（ステップＳ６８）、レジスタのカウンタがインクリメントされ（ステップＳ６９）、ステップＳ６２に移行して、次の処理が選択される（ステップＳ６２）。ここで、次の認識フィールドが選択されると、ステップＳ６５〜Ｓ６９の処理が繰り返して実行される。一方、終了処理が選択されると（ステップＳ６３；ＹＥＳ）、演算設定処理を終了するための後処理を実行される（ステップＳ７０）。図１８を参照して、後処理について説明する。
【００６７】
図１８に示すように、まず、カウンタが０であるか否かが判別され、カウンタが０である場合（ステップＳ８７；ＹＥＳ）、「Mlinp→FieldCulp→Culinfop」でポイントされたメモリが解放される（ステップＳ８８）。次いで、「Mlinp→FeildCulp」でポイントされたメモリが解放され（ステップＳ８９）、演算設定処理が終了される。
【００６８】
図９に戻り、イメージ読込処理（図１０）、フィールド設定処理（図１１）、演算設定処理（図１８）等の各処理が終了すると、ステップＳ１に移行して、次の処理を選択させる。ここで、終了処理が選択されると（ステップＳ２）、定義ツール１２により実行されるメイン処理が終了する。
【００６９】
次に、図１９〜図２３を参照してデータ処理部１４ａにより実行される各処理について説明する。図１９は、データ処理部１４ａにより実行されるメイン処理を示すフローチャートである。図１９に示すように、「FCP」を「Mlinep→FieldCulp」とする（ステップＳ９１）。次いで、データ処理部１４ａにより、正常フィールド管理構造体領域を確保させ、アドレスが「KMNP→rightp」及びレジスタrightpにセットされる（ステップＳ９２）。
【００７０】
また、異常フィールド管理構造体領域が確保され、アドレスが「KMNP→badp」及びレジスタBadpにセットされる（ステップＳ９２）。次いで、FCPが０であるか否かを判別され（ステップＳ９４）、FCPが０でない場合（ステップＳ９４；ＮＯ）、記憶装置１６から検算処理プログラムが読み出され、後述する検算処理（図２０）が実行される。図２０を参照して検算処理について説明する。
【００７１】
図２０は、メイン処理の一部として実行される検算処理を示すフローチャートである。図２０に示すように、「SP」を「FCP->Culinfop」とする（ステップＳ１１１）。次いで、SPでポイントされたスタックに、例えば、逆ポーランド記法によりスタックされた演算を実行する（ステップＳ１１２）。そして、演算結果が正しいか否かが判別される（ステップＳ１１３）。
【００７２】
演算結果が正しい場合（ステップＳ１１３；ＹＥＳ）、引数を「Rightp」として、フィールド管理構造体の構築が行われる（ステップＳ１１４）。一方、演算結果が誤っている場合（ステップＳ１１３；ＮＯ）、引数を「Badp」として、フィールド管理構造体の構築が行われる（ステップＳ１１４）。図２１を参照して、フィールド管理構造体の構築処理について説明する。
【００７３】
図２１は、検算処理の一部として実行されるフィールド管理構造体の構築処理を示すフローチャートである、図２１に示すように、データ処理部１４ａにより、スタックポインタSPが抜き出され、レジスタの「RR」に格納される（ステップＳ１２１）。次いで、「RR」が「=」であるか否かどうかが判別され（ステップＳ１２２）、「RR」が「=」でない場合（ステップＳ１２２；ＮＯ）、「RR」が演算子であるか否かが判別される（ステップＳ１２３）。「RR」が演算子である場合（ステップＳ１２３；ＹＥＳ）、ステップＳ１２１に移行する。
【００７４】
一方、「RR」が演算子でない場合（ステップＳ１２３；ＮＯ）、「PP→fp」を「RR」とする（ステップＳ１２４）。そして、フィールド管理構造体が確保され、アドレスが「PP→Nextp」及び「PP」にセットされる（ステップＳ１２４）。そして、スタックポイントSPが抜き出され、「RR」が「=」であるか否かどうかが判別される（ステップＳ１２２）。ここで、「RR」が「=」である場合（ステップＳ１２２）、本フィールド管理構造体の構築処理が終了される。
【００７５】
上述した本フィールド管理構造体の構築処理においては、検算処理において演算結果が正解であった場合、その演算結果を構成するフィールドのフィールド情報構造体のアドレスが正常フィールド管理構造体に記憶される。また、検算処理において演算結果に誤りがあった場合、その演算結果を構成するフィールドのフィールド情報構造体のアドレスが異常構造フィールド管理構造体に格納される。
【００７６】
したがって、フィールド管理構造体の構築処理により、正常フィールド管理構造体にリストされるフィールドには、誤認識フィールドは含まれないが、異常フィールド管理構造体にリストされるフィールドには、正しく認識されているフィールドも含まれることとなる。
【００７７】
次いで、図１９に戻り、検算処理が終了すると、「FCP」を「FCP→FieldNextp」とし、ステップＳ９４に移行する。ステップＳ９４において、FCPが０であると判別された場合（ステップＳ９４；ＹＥＳ）、「FCP」を「Mlinep→FieldCulp」とする（ステップＳ９７）。次いで、「KMNP→badp」が０であるか否かが判別され（ステップＳ９８）、「KMNP→badp」が０の場合（ステップＳ９８；ＹＥＳ）、メイン処理が終了される。
【００７８】
一方、「KMNP→badp」が０でない場合（ステップＳ９８；ＮＯ）、データ処理部１４ａにより、記憶装置１６から誤認識フィールド検出処理プログラムが読みだされ、後述する誤認識フィールド検出処理（ステップＳ９９）が実行される。この誤認識フィールド検出処理は、上述したフィールド管理構造体の構築処理において、異常フィールド構造体にリストされたフィールドの中から、正しく認識されたフィールドを取り除く処理である。図２２を参照して誤認識フィールド検出処理を説明する。
【００７９】
図２２は、メイン処理の一部として実行される誤認識フィールド検出処理を示すフローチャートである。図２２に示すように、「Rightp」を「KMNP→rightp」、「Badp」を「KMNP→badp」、レジスタの「B」を「Badp」、レジスタの「R」を「Rightp」とする（ステップＳ１３１〜Ｓ１３４）。次いで、「R」が０であるか否かが判別され（ステップＳ１３５）、「R」が０の場合（ステップＳ１３５；ＹＥＳ）、「B」が「B→Nextp」とされて、ステップＳ１３４に移行する。
【００８０】
一方、「R」が０でない場合（ステップＳ１３５；ＮＯ）、「B」が０であるか否かが判別され（ステップＳ１３７）、「B」が０である場合（ステップＳ１３７；ＹＥＳ）、本誤認識フィールド検出処理を終了する。また、「B」が０でない場合（ステップＳ１３７；ＮＯ）、「R→fp」と「B→fp」が等しいかどうかが判別される（ステップＳ１３８）。
【００８１】
「R→fp」と「B→fp」が等しい場合（ステップＳ１３８；ＹＥＳ）、「B→fp」を０とする（ステップＳ１３９）。一方、「R→fp」と「B→fp」が等しくない場合（ステップＳ１３８；ＮＯ）、「R」を「R→Nextp」とする（ステップＳ１４０）。そして、ステップＳ１３５に移行して、「B」が０となるまで、上述した処理を繰り返して実行する。
【００８２】
図１９に戻り、誤認識フィールド検出処理が終了すると（ステップＳ９９）、異常フィールド管理構造体の再チェーン化が行われる（ステップＳ１００）。具体的には、「KMNP→badp→fp→RecLebel」に記憶されている認識の確からしさの低い順に「KMNP→badp」でチェーンされている異常フィールド管理構造体がソートされて再チェーン化が行われる。
【００８３】
次いで、再チェーン化が行われると、データ処理部１４ａにより、記憶装置１６から誤認識フィールド修正処理プログラムが読み出され、後述する誤認識フィールド修正処理（図２３）が実行される。図２３を参照して誤認識フィールド修正処理について説明する。
【００８４】
図２３は、メイン処理の一部として実行される誤認識フィールド修正処理を示すフローチャートである、図２３に示すように、「Ilp」を「KMNP→FieldCulp」、「Badp」を「KMNP→badp」、レジスタの「I」を「Ilp」、レジスタの「B」を「Badp」とする（ステップＳ１４１〜Ｓ１４４）。次いで、「B」が０であるか否かが判別され（ステップＳ１４５）、「B」が０の場合（ステップＳ１４５；ＹＥＳ）、「I」が「I→FieldNextp」とされて（ステップＳ１４６）、ステップＳ１４４に移行する。
【００８５】
一方、「B」が０でない場合（ステップＳ１４５；ＮＯ）、「I」が０であるか否かが判別され（ステップＳ１４７）、「I」が０である場合（ステップＳ１４７；ＹＥＳ）、本誤認識フィールド修正処理を終了する。また、「I」が０でない場合（ステップＳ１４７；ＮＯ）、「R→fp」と同じアドレスが「I→Colinfop」のポイントするスタックに存在するか否かが判別される（ステップＳ１４８）。
【００８６】
「R→fp」と同じアドレスが「I→Colinfop」のポイントするスタックに存在する場合（ステップＳ１４８；ＹＥＳ）、「I→Culinfop」スタックの「B→fp」で管理する入力フィールドの正しい値をスタックの計算式から求めて「B→fp→RecReslt」に格納する（ステップＳ１４９）。すなわち、スタックに記憶している計算式により、最も確からしさの低いフィールドの演算結果を他のフィールドの認識結果を用いて算出する。
【００８７】
また、「R→fp」と同じアドレスが「I→Culinfop」のポイントするスタックに存在しない場合（ステップＳ１４８；ＮＯ）、「B」を「B→Nextp」として（ステップＳ１５０）、ステップＳ１４５に移行する。そして、「I」が０となるまで、上述した処理が繰り返して実行される。
【００８８】
図１９に戻り、誤認識フィールド認識処理が終了すると（ステップＳ１０１）、ステップＳ９１に移行して、ステップＳ９１〜Ｓ１０１の処理が繰り返して実行され、「KMNP→badp」が０になった場合（ステップＳ９８；ＹＥＳ）、本メイン処理が終了される。
【００８９】
以上のように、伝票の画像データを認識させ、認識された明細行に含まれる演算関係を予め定義ツール１２により定義する。そして、明細行の各フィールドの認識結果に、定義された演算を施し、認識結果と演算結果を比較することにより、誤認識が発生しているフィールドを特定する。また、正しく認識されたと推測されるフィールドの認識結果に定義されている演算を施し、誤認識のあったと推測されるフィールドの正しい値を算出する。そして、誤認識のあったと推測されるフィールドの値を算出された正しい値として修正する。
【００９０】
これにより、画像データから認識された認識結果から誤認識を検出するだけでなく、正しく認識されたと推測されるフィールドの認識結果に基づいて、誤認識されたと推測されるフィールドの正しい値を算出することができる。したがって、誤認識されたフィールドの修正作業を容易かつ正確に行うことができ、データ認識装置１における認識率を向上させることができる。
【００９１】
また、複数の演算関係に基づいて、認識されたフィールドの確からしさを記憶し、正しく認識された推測されるフィールドの認識結果に基づいて、誤認識のあったと推測されるフィールドの値を算出するため、より正確な値に基づいて、誤認識のあったと推測されるフィールドの値を修正することができ、データ認識装置１の認識率を向上させることができる。
【００９２】
また、定義ツール１２により、取得した伝票の画像データからフィールドを認識して、フィールド間の演算関係をそれぞれ定義することができるため、種々の演算関係を含む伝票や帳票等に本発明を適用することが可能であり、汎用性の高いデータ認識装置１を提供することができる。
【００９３】
なお、本実施の形態における記述は、本発明に係る好適なデータ認識装置１の一例であり、これに限定されるものではない。例えば、本実施の形態において、データ認識装置１は伝票の画像データを読み取り、伝票に記入された情報を認識処理する場合を例として説明を行ったが、その他の帳票、見積書、設計書等を用いるものでもよい。
【００９４】
また、定義ファイル１３又はデータ管理部１４ｂに格納されるデータの構成例は一例であり、上述した例に限定されない。例えば、演算情報は、逆ポーランド記法を用いてスタック記憶する方法を用いて説明を行ったがこれに限らない。また、本実施の形態においては、合計フィールドをフィールド演算情報の１つとして処理したが、合計フィールドとフィールド演算情報を区別して扱ってもよい。
【００９５】
その他、本実施の形態におけるデータ認識装置１の細部構成及び詳細動作に関しては、本発明の趣旨を逸脱しない範囲で適宜変更可能であることはもちろんである。
【図面の簡単な説明】
【００９６】
【図１】本発明を適用した実施の形態におけるデータ認識装置１の機能的構成を示すブロック図である。
【図２】図１に示す読取装置１１の機能的構成を示すブロック図である。
【図３】（ａ）図１の表示装置１８に表示される設定画面１８１の一例を示す図である。（ｂ）図１の表示装置１８に表示される設定画面１８１の一例を示す図である。
【図４】定義ツール１２により演算関係を定義する方法を説明する図である。
【図５】定義ファイル１３に格納される一部のデータ構成例を示す図である。
【図６】定義ファイル１３に格納される一部のデータ構成例を示す図である。
【図７】データ管理部１４ｂにより管理される一部のデータ構成例を示す図である。
【図８】データ管理部１４ｂにより管理される一部のデータ構成例を示す図である。
【図９】定義ツール１２により実行されるメイン処理を示すフローチャートである。
【図１０】定義ツール１２により実行されるイメージ読込処理を示すフローチャートである。
【図１１】定義ツール１２により実行されるフィールド設定処理を示すフローチャートである。
【図１２】定義ツール１２により実行される初期化処理を示すフローチャートである。
【図１３】定義ツール１２により実行される領域確保・レジスタ更新処理を示すフローチャートである。
【図１４】定義ツール１２により実行される後処理を示すフローチャートである。
【図１５】定義ツール１２により実行される演算設定処理を示すフローチャートである。
【図１６】定義ツール１２により実行される初期化処理を示すフローチャートである。
【図１７】定義ツール１２により実行される演算情報のセット処理を示すフローチャートである。
【図１８】定義ツール１２により実行される後処理を示すフローチャートである。
【図１９】データ処理部１４ａにより実行されるメイン処理を示すフローチャートである。
【図２０】データ処理部１４ａにより実行される検算処理を示すフローチャートである。
【図２１】データ処理部１４ａにより実行されるフィールド管理構造体の構築処理を示すフローチャートである。
【図２２】データ処理部１４ａにより実行される誤認識フィールド検出処理を示すフローチャートである。
【図２３】データ処理部１４ａにより実行される誤認識フィールド修正処理を示すフローチャートである。
【図２４】従来のデータ認識装置においてデータベースを参照して認識率を向上させる方法を説明する図である。
【図２５】従来のデータ認識装置において認識結果に演算を施して認識率を向上させる方法を説明する図である。
【符号の説明】
【００９７】
１  データ認識装置
１１  読取装置
１２  定義ツール
１３  定義ファイル
１４  ＯＣＲ認識エンジン
１４ａ  データ処理部
１４ｂ  データ管理部
１５  業務アプリ
１６  記憶装置
１７  入力装置
１８  表示装置
【図１】
2005128865.tif 000003
【図２】
2005128865.tif 000004
【図３】
2005128865.tif 000005
【図４】
2005128865.tif 000006
【図５】
2005128865.tif 000007
【図６】
2005128865.tif 000008
【図７】
2005128865.tif 000009
【図８】
2005128865.tif 000010
【図９】
2005128865.tif 000011
【図１０】
2005128865.tif 000012
【図１１】
2005128865.tif 000013
【図１２】
2005128865.tif 000014
【図１３】
2005128865.tif 000015
【図１４】
2005128865.tif 000016
【図１５】
2005128865.tif 000017
【図１６】
2005128865.tif 000018
【図１７】
2005128865.tif 000019
【図１８】
2005128865.tif 000020
【図１９】
2005128865.tif 000021
【図２０】
2005128865.tif 000022
【図２１】
2005128865.tif 000023
【図２２】
2005128865.tif 000024
【図２３】
2005128865.tif 000025
【図２４】
2005128865.tif 000026
【図２５】
2005128865.tif 000027