以下、本開示に係る情報処理装置、方法及びプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係る情報処理装置、方法及びプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施の態様に応じた具体的構成が適宜採用され、又、種々の改良や変形が行われてよい。
実施形態の説明では、本開示に係る情報処理装置、方法及びプログラムを、ユーザー端末から送信された画像データに係る帳票の帳票種別を推定し、推定結果に基づいて決定された最適なOCRエンジンを用いて文字読取を行う帳票処理システムにおいて実施した場合の実施の形態について説明する。なお、本開示に係る情報処理装置、方法及びプログラムは、帳票を読み取るための技術について広く用いることが可能であり、本開示の適用対象は、実施形態において示した例に限定されない。
<システムの構成>
図1は、本実施形態に係る帳票処理システム1のハードウェア構成を示す概略図である。本実施形態に係る帳票処理システム1は、複数の異なる拠点に設置されて互いに異なる種類の帳票を用いた業務に使用されている複数のユーザー端末90(以下、「ノード90」と称する)と、ネットワークを介してノード90と通信可能に接続されたサーバー50と、を備える。
本実施形態に係る帳票処理システム1では、ノード90から接続されるサーバー50は、インターネットや広域ネットワークを介して遠隔地において接続されたものであり、例えばASP(Application Service Provider)によって提供されるが、サーバー50は、必ずしも遠隔地に接続されたものである必要はない。例えば、サーバー50は、ノード90が存在するローカルネットワーク上に接続されていてもよい。
サーバー50は、CPU(Central Processing Unit)11、RAM(Random Access Memory)13、ROM(Read Only Memory)12、EEPROM(Electrically Erasable and Programmable Read Only Memory)やHDD(Hard Disk Drive)等の記憶装置14、NIC(Network Interface Card)15等の通信ユニット、等を備えるコンピューターである。
本実施形態に係るサーバー50は、ノード90から送信された画像データを受信し、後述する処理を実行する。サーバー50によって後述する処理が実行されることで、ノード90から送信された画像データに係る帳票の帳票種別が推定される。そして、サーバー50は、推定結果(画像データに係る帳票の帳票種別)に基づいて、当該帳票種別に最適なOCRエンジンを選択し、当該エンジンを用いて文字読取を行う。具体的には、サーバー50は、画像データに係る帳票の帳票種別が「AAA社の見積書」であると推定した場合、この推定結果に基づいて、「AAA社の見積書」を読み取った場合に最も成績の良いOCRエンジンを選択し、当該エンジンを用いて文字読取を行う。
図2は、本実施形態に係るサーバー50の機能構成の概略を示す図である。サーバー50は、記憶装置14に記録されているプログラムが、RAM13に読み出され、CPU11によって実行されて、サーバー50に備えられた各ハードウェアが制御されることで、帳票データ蓄積部21、正解データ蓄積部22、画像データ取得部23、特徴データ取得部24、帳票データ検索部25、第一の文字認識部26、第二の文字認識部27、補正部28、修正受付部29、形式/ルール更新部30、及びエンジン変更部31を備える情報処理装置として機能する。なお、本実施形態及び後述する他の実施形態では、サーバー50の備える各機能は、汎用プロセッサであるCPU11によって実行されるが、これらの機能の一部又は全部は、1又は複数の専用プロセッサによって実行されてもよい。
帳票データ蓄積部21は、帳票又は当該帳票内の項目に係る帳票データを、複数のOCRエンジン(文字認識エンジン)のうち当該帳票又は当該項目の認識に適したOCRエンジンに関連付けて蓄積する。又、帳票データ蓄積部21は、OCRエンジンと帳票種別又は帳票項目との組み合わせ毎に、当該OCRエンジンを用いて当該帳票種別又は帳票項目の画像データから文字列を読み取った場合の成績(本実施形態では、平均認識率)を蓄積し、又、第二の文字認識部27による文字認識結果に基づいて、蓄積されている成績を更新する。
正解データ蓄積部22は、第一の文字認識部26による文字認識結果のうち、正解文字列(例えば、ユーザーによる修正が受け付けられた際に得られた文字列)と、少なくとも当該正解文字列を含む文字画像とを関連付けて正解データとして蓄積する。
本実施形態では、帳票データ蓄積部21及び正解データ蓄積部22によって蓄積されるデータは、サーバー50からアクセス可能なデータベースである、帳票データバンクに蓄積される。
図3は、本実施形態において帳票データバンクに蓄積される帳票データと、帳票画像との関係を示す図である。ここで、帳票データには、帳票全体に係るデータのみならず、帳票中の各項目についてのデータが含まれるものとする。帳票画像は、記入済みの帳票を撮像等の手段を用いて電子化することによって得られた画像であり、帳票中の情報が、画像として含まれている。なお、帳票画像は、スキャナーやカメラを用いて紙媒体が撮像されることによって得られた画像に限定されない。帳票画像は、例えば、所謂タブレットのタッチパネルディスプレイ等を用いて記入された帳票の画像であってもよい。
本実施形態では、この帳票画像に対して、画像処理による一部画像の抽出、OCRエンジンによる文字読取、及びメタデータの読み取り等を行うことで、書式画像、項目画像、標章画像、全体OCR結果、項目OCR結果、帳票サイズ、等を得ることとしている。ここで、書式画像とは、帳票画像から余白及び記入情報を除いた書式に関する画像(罫線のみの画像、又は罫線の他、地紋、ロゴ、マーク等を含む画像)であり、項目画像とは、OCRの対象となる項目毎の読取領域を切り出した(クロップした)画像であり、標章画像とは、ロゴや印章、地紋等の、帳票作成元が使用する、帳票の識別に有用な画像である。又、全体OCR結果とは、帳票画像全体をOCRを用いて読み取った文字列であり、項目OCR結果とは、項目画像をOCRを用いて読み取った文字列である。又、帳票サイズとは、帳票画像から余白を除いた画像のサイズであり、書式画像のサイズと同じである。
帳票データバンクは、帳票種別データテーブル、帳票項目データテーブル、正解データテーブル、OCRエンジン評価データテーブル、類義語辞書を含む。ここで、帳票種別データテーブルは、帳票種別を特定するための情報、及び当該帳票種別に用いられるOCRエンジンを蓄積するテーブルであり、帳票項目データテーブルは、帳票種別単位で読取項目と各読取項目に用いられるOCRエンジンを蓄積するテーブルである。又、正解データテーブルは、読取元の画像データと当該画像データに含まれる正しい文字列との組み合わせを蓄積するテーブルであり、OCRエンジン評価データテーブルは、帳票種別又は帳票項目毎に、各OCRエンジンによる平均認識率を蓄積するテーブルである。又、類義語辞書は、帳票名や項目名、帳票識別キーワードの類義語を互いに関連づけて保持する辞書である。
図4は、本実施形態において用いられる、帳票データバンク中の帳票種別データテーブルの構成を示す図である。帳票種別データには、帳票種別ID、帳票名(文字列データ)、帳票識別キーワード(文字列データ)、書式画像(画像データ)、標章画像(画像データ)、帳票サイズ、OCRエンジン、及びその他の情報が含まれる。
ここで、帳票種別IDは、後述する処理において、帳票種別を識別するために用いられる。又、帳票識別キーワードとは、帳票に印刷された、帳票種別を判定する上で帳票名と組み合わせて重要なキーとなる情報であり、例えば、帳票の発行元会社名等である。なお、帳票識別キーワードについては、1の帳票種別に対して複数指定されてもよい。又、帳票種別データに設定されているOCRエンジンは、当該帳票種別に係る新規帳票(処理対象帳票)の読取に用いられるOCRエンジンを指定するものである。本実施形態に係る帳票処理システム1では、後述する処理が繰り返し実行されて、対象帳票について指定されるOCRエンジンがより適切なものに逐次更新されることにより、対象帳票の読み取り精度が向上していく。
図5は、本実施形態において用いられる、帳票データバンク中の帳票項目データテーブルの構成を示す図である。帳票項目データには、帳票種別ID、帳票名、帳票項目ID、項目名(文字列データ)、読取領域、項目形式、項目ルール、OCRエンジン、及びその他の情報が含まれる。
ここで、帳票項目IDは、後述する処理において、帳票項目を識別するために用いられる。又、読取領域は、帳票内において当該項目が記載される領域を指定する情報であり、例えば、帳票内の矩形領域であれば、座標及び距離を用いて指定することが出来る。又、項目形式は、対象項目の記載内容が守るべきフォーマット(日付の形式、使用可能な文字種、記入される情報の属性、桁数、等)を指定するものであり、正規表現等を用いて定義することが出来る。項目ルールは、対象項目の記載内容が守るべき記載ルール(値の範囲、その他の項目との関係性、等)を指定するものであり、条件式等を用いて定義することが出来る。なお、読取領域、項目形式、及び項目ルールについては、1の帳票項目に対して複数指定されてもよい。複数指定されている場合、読取領域及び項目形式は、複数のうち何れかが適用され、項目ルールは全てが適用される。
そして、帳票項目データに設定されているOCRエンジンは、当該帳票種別に係る新規帳票(処理対象帳票)中の対象項目の読取に用いられるOCRエンジンを指定するものである。即ち、本実施形態では、帳票内の項目単位で、帳票種別データに指定されたOCRエンジン以外のOCRエンジンを用いて読み取りを実行させることが可能である。例えば、ユーザーによって手書き記入される項目については手書き文字の読み取りが得意なOCRエンジンを選択し、特定の言語で記入される項目については、当該言語が得意なOCRエンジンを選択する、といった対応が可能である。
図6は、本実施形態において用いられる、帳票データバンク中の正解データテーブルの構成を示す図である。正解データには、OCRエンジン、帳票種別ID、帳票名、帳票項目ID、項目名、読取領域、帳票画像(画像データ)、OCR結果(文字列データ)、正解文字列(文字列データ)、及びその他の情報が含まれる。
ここで、OCR結果は、当該レコードの帳票項目IDに係る項目を、当該レコードに指定されたOCRエンジンを用いて読み取った場合のOCR結果(正解か誤りかを問わない)である(このため、読取領域の誤りであった場合には、OCR結果は空欄であってもよい)。又、正解文字列は、ユーザーによって入力された、当該項目に記載された正しい文字列である(このため、OCR結果が正解である場合には、正解文字列は空欄であってもよい)。
図7及び図8は、本実施形態において用いられる、帳票データバンク中のOCRエンジン評価データテーブルの構成を示す図である。本実施形態において、OCRエンジン評価データは、帳票種別毎にOCRエンジンの評価を示すOCRエンジン評価データ(帳票種別)と、帳票項目毎にOCRエンジンの評価を示すOCRエンジン評価データ(帳票項目)の2種類用意される。OCRエンジン評価データ(帳票種別)には、帳票種別ID、帳票名、書式画像、OCRエンジン、読取項目数、評価帳票数、平均認識率、及びその他の情報が含まれる。又、OCRエンジン評価データ(帳票項目)には、帳票種別ID、帳票名、帳票項目ID、項目名、項目画像、OCRエンジン、評価項目数、平均認識率、及びその他の情報が含まれる。
ここで、読取項目数とは、対象帳票に含まれる、OCRエンジンを用いた読取の対象となる項目の数である。又、平均認識率とは、OCRエンジン評価データに係る帳票種別又は帳票項目についての、対象OCRエンジンによるOCR結果の正解率(認識率)の平均値である。平均認識率は、例えば、以下に示す式を用いて算出・更新される。
総読取項目数=評価項目数×評価帳票数+今回の読取項目数
総正解数=評価項目数×評価帳票数×平均認識率+今回の正解数
平均認識率=総正解数÷総読取項目数×100
画像データ取得部23は、モバイルカメラやスキャナー等のノード90によって撮像され、サーバー50宛に送信された処理対象帳票の画像データを取得する。
特徴データ取得部24は、処理対象帳票の画像データから、処理対象帳票に係る複数種類の特徴データを取得する。具体的には、特徴データ取得部24は、処理対象帳票の特徴データとして、処理対象帳票の画像データに含まれる文字列、処理対象帳票の画像データから文字画像を除いた書式画像、ロゴ画像及び帳票サイズ等を、所定のOCRエンジンや画像処理機能を用いて取得する。
帳票データ検索部25は、帳票データ蓄積部21によって蓄積された帳票データを、特徴データを用いて検索することで、処理対象帳票に類似する帳票データを索出する。例えば、帳票データ検索部25は、帳票データ蓄積部21によって蓄積された帳票データを、特徴データ取得部24によって取得された文字列、書式画像、ロゴ画像又は帳票サイズ等を用いて検索することで、処理対象帳票に類似する帳票データを索出する。この際、帳票データ検索部25は、複数種類の特徴データ又は特徴データの組み合わせを用いて帳票データを検索することで、特徴データ又は特徴データの組み合わせ毎に検索結果を得、得られた検索結果を所定の順序で評価し、所定の条件を最初に満たした検索結果を、処理対象帳票に類似する帳票データとする。
第一の文字認識部26は、複数のOCRエンジンのうち、帳票データ検索部25によって索出された、処理対象帳票の画像データに対応する帳票種別又は帳票項目に係る帳票データに関連付けられたOCRエンジンを用いて、処理対象帳票の画像データに含まれる文字列を読み取る。
第二の文字認識部27は、複数のOCRエンジンの夫々を用いて、正解データ蓄積部22によって蓄積された文字画像に含まれる文字列を読み取る。又、第二の文字認識部27は、当該情報処理装置において利用可能な新たなOCRエンジンが追加された場合に、追加されたOCRエンジンを用いて、正解データ蓄積部22によって蓄積された文字画像に含まれる文字列を読み取る。
補正部28は、第一の文字認識部26による文字認識結果を、形式又は記載ルールに適合するように補正する。
修正受付部29は、第一の文字認識部26による文字認識結果の、ユーザーによる修正を受け付ける。
形式/ルール更新部30は、正解データ蓄積部22によって蓄積された、ユーザーによる修正によって得られた正解文字列から、同一項目についての正解文字列を抽出し、当該正解文字列が形式又は記載ルールに適合していない場合に、修正によって得られた正解文字列が当該当項目の形式/ルールに適合するように当該当項目の形式又は記載ルールを更新する。
エンジン変更部31は、帳票データ蓄積部21によって蓄積されている成績に基づいて、帳票種別又は帳票項目に関連付けられるOCRエンジンを、当該帳票種別又は当該帳票項目について最も成績の高いOCRエンジンに変更する。
<処理の流れ>
次に、本実施形態に係るサーバー50によって実行される処理の流れを説明する。なお、以下に説明する処理の具体的な内容および処理順序は、本開示を実施するための一例である。具体的な処理内容および処理順序は、本開示の実施の形態に応じて適宜選択されてよい。
図9及び図10は、本実施形態に係るエンジン選択処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、サーバー50が新たな帳票(以下、「処理対象帳票」)を受信したことを契機として実行される。
ステップS101では、帳票画像が取得される。画像データ取得部23は、モバイルカメラやスキャナー等のノード90によって撮像され、サーバー50宛に送信された処理対象帳票の画像データ(帳票画像)を取得する。その後、処理はステップS102へ進む。
ステップS102からステップS106では、帳票画像から特徴データが取得される。特徴データ取得部24は、画像データ(帳票画像)から、処理対象帳票に係る特徴データを取得する。具体的には、特徴データ取得部24は、所定のOCRエンジン(例えば、帳票処理システム1から利用可能な複数のOCRエンジンの何れか)を用いて、帳票画像に含まれる、OCR読み取り可能な全ての文字を特徴データ(全体OCR結果)として取得する(ステップS102)。ここで取得された全体OCR結果には、帳票名及び帳票識別キーワード(帳票に係る会社名等)が含まれる。
更に、特徴データ取得部24は、特徴データとして、帳票画像から文字画像を除いた書式画像を取得する(ステップS103)。本実施形態において、特徴データ取得部24は、ステップS102での文字認識の結果、OCRエンジンによって文字であると認識された1又は複数の領域を特定し、帳票画像から当該領域の画像を削除することで、書式画像を取得する。その他、罫線抽出のための具体的な方法には、様々な方法を採用可能である。例えば、帳票に係る画像データから、罫線に係る部分と罫線以外の部分(文字や記号、写真等)とを、画像解析によって峻別し、罫線のみの画像データを生成することとしてもよい。
又、特徴データ取得部24は、特徴データとして、書式画像からロゴや印章、地紋等の標章(マーク)画像を取得する(ステップS104)。具体的には、標章画像は、書式画像から、枠線及び文字の画像を除き、残った画像から、画像解析によってロゴや印章、地紋等の画像を特定し、切り出すことで、標章画像を取得する。この際、標章画像の抽出には、ロゴや印章、地紋等の学習データを用いて構築された機械学習モデルが用いられてもよい。
更に、特徴データ取得部24は、特徴データとして、書式画像から帳票サイズその他のパラメータを取得する(ステップS105及びステップS106)。その他のパラメータとは、例えば、帳票において用いられている言語や、帳票のページ数等である。これらのパラメータは、全体OCR結果や、書式画像に含まれるメタデータから取得することができる。その後、処理はステップS107へ進む。
ステップS107では、特徴データを用いて帳票データバンクが検索される。帳票データ検索部25は、帳票データバンク中の帳票種別データを、ステップS102からステップS106の処理で取得された特徴データの種類毎に検索する。ここで、帳票データ検索部25は、複数種類の特徴データのうち、高い優先度が設定された特徴データから順に特徴データを用いて帳票データを検索する。そして、特徴データ毎に検索結果を得、所定の条件を最初に満たした検索結果を、処理対象帳票に類似する帳票データとする。本実施形態における特徴データの優先度及び検索処理の一例は、優先度が高い順に以下の通りである。なお、(検索3)と(検索4)の優先度は逆でもよい。
(検索1)帳票名及び帳票識別キーワード:帳票データ検索部25は、帳票種別データに含まれる帳票名及び帳票識別キーワードを用いて、ステップS102で得られた全体OCR結果を検索することで、帳票名及び帳票識別キーワードが処理対象帳票の全体OCR結果に含まれる帳票種別データを索出する。検索に際しては、類義語辞書が併用されてもよい。
(検索2)書式画像:帳票データ検索部25は、ステップS103で取得された書式画像と、帳票種別データに含まれる書式画像との画像の類似度を算出し、類似度が閾値を超える書式画像に係る帳票種別データを索出する。
(検索3)標章画像:帳票データ検索部25は、ステップS104で取得された標章画像と、帳票種別データに含まれる標章画像との画像の類似度を算出し、類似度が閾値を超える標章画像に係る帳票種別データを索出する。
(検索4)帳票サイズ:帳票データ検索部25は、ステップS105で取得された帳票サイズと、帳票種別データに含まれる帳票サイズとを比較し、差分が閾値の範囲内の帳票サイズに係る帳票種別データを索出する。
(検索5)言語、ページ数等のその他パラメータ:帳票データ検索部25は、ステップS106で取得されたその他パラメータと、帳票種別データに含まれるその他パラメータとを比較し、一致するか、類似度が閾値を超えるか、又は差分が閾値の範囲内のその他パラメータに係る帳票種別データを索出する。
ステップS108からステップS111では、索出された帳票種別データから、最も類似するデータが絞り込まれる。帳票データ検索部25は、ステップS107における検索結果の件数を、各検索条件又は検索条件の組合せ毎に判定する。
具体的には、まず、帳票データ検索部25は、「検索1」の結果得られた帳票種別データの件数を参照し(ステップS108)、1件である場合には、処理をステップS114に進める。「検索1」の結果得られた帳票種別データの件数が1件ではなかった(0件又は複数件)場合、帳票データ検索部25は、「検索2」の結果得られた帳票種別データの件数を参照し(ステップS109)、1件である場合には、処理をステップS114に進める。「検索2」の結果得られた帳票種別データの件数が0件であった場合、処理はステップS112へ進む。「検索2」の結果得られた帳票種別データの件数が複数件であった場合、帳票データ検索部25は、「検索1」の結果と「検索2」の結果の双方に含まれる(即ち、「検索1」且つ「検索2」)帳票種別データの件数を参照し(ステップS110)、1件である場合には、処理をステップS114に進める。一方、「検索1」の結果と「検索2」の結果の双方に含まれる(即ち、「検索1」且つ「検索2」)帳票種別データの件数が0件又は複数件であった場合、帳票データ検索部25は、更に「検索3」から「検索5」の条件を優先度の高い順に加えて検索結果を絞り込み(ステップS111)、1件に絞り込まれた場合には、処理をステップS114に進める。
このようにして、検索に用いられる特徴データの優先度に従って、処理対象帳票に類似する帳票種別データを絞り込むことで、より確度の高い条件を用いて、処理対象帳票の帳票種別を判定することが出来る。
一方、ステップS111において、「検索3」から「検索5」の条件を全て加えて検索結果を絞り込んでも1件に絞り込めなかった場合、これまでの絞り込み結果は破棄され、処理はステップS112へ進む。但し、ステップS111における絞り込み結果は、次のステップS112の処理における検索結果に加味されてもよい。
ステップS112では、帳票名、項目名、項目画像及び書式画像に基づいて、適切なOCRエンジンが選択される。第一の文字認識部26は、帳票データバンク内のOCRエンジン評価データ(帳票種別)テーブルを、帳票名及び書式画像を用いて検索し、類似度が高いOCRエンジン評価データ(帳票種別)について平均認識率が蓄積されているOCRエンジンのうち、最も平均認識率が高いOCRエンジンを、処理対象帳票の処理用OCRエンジンとして決定する。
又、第一の文字認識部26は、帳票データバンク内のOCRエンジン評価データ(帳票項目)テーブルを、帳票名、項目名及び項目画像を用いて検索し、類似度が高いOCRエンジン評価データ(帳票項目)について平均認識率が蓄積されているOCRエンジンのうち、最も平均認識率が高いOCRエンジンを、処理対象帳票の当該項目の処理用OCRエンジンとして決定する。なお、OCRエンジン評価データの検索を行っても、処理用のOCRエンジンを決定できなかった場合、第一の文字認識部26は、検索結果をユーザーに提示し、処理対象帳票の処理用OCRエンジンを、ユーザーに選択させてもよい。その後、処理はステップS113へ進む。
ステップS113では、帳票種別データ及び帳票項目データが追加される。帳票データ蓄積部21は、処理対象帳票に対応する帳票種別データ及び帳票項目データを生成し、ステップS112で決定されたOCRエンジンを関連づけて帳票データバンクへ追加する。追加される帳票種別データ及び帳票項目データの帳票名は、選択されたOCRエンジン評価データ(帳票種別)に従って決定され、帳票識別キーワードは、全体OCR結果から選択される。帳票種別データ及び帳票項目データに含まれるその他の項目については、ステップS102からステップS106の処理で取得されたデータが使用される。なお、帳票データ蓄積部21は、全体OCR結果のうち、フォントが大きい文字列や、キーワードが記載される頻度が高い所定の位置又は領域にあった文字列を、帳票識別キーワードと推定することが出来る。又、帳票種別データ及び帳票項目データのうち自動的に設定された項目については、後述する処理において更新・修正することが可能である。その後、処理はステップS114へ進む。
ステップS114では、処理対象帳票の処理用OCRエンジンが決定される。第一の文字認識部26は、ステップS107からステップS111の処理で索出された帳票種別データに関連づけられているOCRエンジン、又はステップS112で決定又は選択されたOCRエンジンを、処理対象帳票の処理用OCRエンジンに決定する。その後、本フローチャートに示された処理は終了する。
図11及び図12は、本実施形態に係る帳票読取処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、上述したエンジン選択処理に続けて実行される。
ステップS201では、帳票項目データに定義された各項目の読み取りが行われる。第一の文字認識部26は、上述したエンジン選択処理のステップS114で処理対象帳票の処理用OCRエンジンに決定されたOCRエンジンを用いて、帳票項目データに定義された各項目の文字を、当該帳票項目データに設定された読取領域から読み取る。この際、帳票項目データに、対象項目のOCRエンジンとして、ステップS114で決定された処理対象帳票の処理用OCRエンジンとは異なるエンジンが指定されている場合、指定されたOCRエンジンを用いて、対象項目の文字が読み取られる。その後、処理はステップS202へ進む。
ステップS202及びステップS203では、OCR結果が補正される。補正部28は、ステップS201で読み取られた文字を、帳票項目データに定義された項目形式に従って補正する(ステップS202)。例えば、補正部28は、当該項目の帳票項目データに設定された項目形式が「日付」である場合、読み取られた文字列が日付の形式に沿ったものであるか否かを確認し、日付の形式に沿っていない場合、これを自動的に修正する。又、補正部28は、ステップS201で読み取られた文字を、帳票項目データに定義された項目ルールに従って補正する(ステップS203)例えば、補正部28は、当該項目の帳票項目データに設定された項目ルールが「発行日より未来」である場合、読み取られた文字列が、同帳票内の項目「発行日」から読み取られた日付より未来の日付を示すものであるか否かを確認し、項目ルールに沿っていない場合、これを自動的に修正する。その後、処理はステップS204へ進む。
ステップS204では、処理対象帳票内の全ての項目について読み取りが完了したか否かが判定される。第一の文字認識部26は、ステップS201からステップS203の処理を、帳票項目データに定義された、当該帳票種別に係る全ての項目について完了したか否かを確認する。全ての項目についての処理が完了していない場合、処理はステップS201へ戻る。一方、全ての項目についての処理が完了した場合、処理はステップS205へ進む。
ステップS205からステップS208では、OCR結果がユーザーによって確認され、必要に応じて修正される。修正受付部29は、ステップS101で取得された帳票画像、ステップS201で項目読み取りの際に指定された読取領域の項目画像、及びステップS201からステップS204の処理で取得された項目OCR結果を、ノード90の画面に表示させる等の方法で、ユーザーから確認可能なように出力する(ステップS205)。そして、修正受付部29は、出力されたOCR結果を確認したユーザーによって入力された確認結果を受け付ける(ステップS206)。ここで、ユーザーは、ノード90等を用いて、OCR結果に対して、項目毎に、OCR結果が正しいか否かを示す入力を行うことが出来る。OCR結果が正しい場合、処理はステップS212へ進む。一方、OCR結果が正しくない(OCRが誤認識した)項目がある場合、修正受付部29は、ノード90から、正しい文字列、及び/又は正しい読取領域の入力を受け付ける(ステップS208)。その後、処理はステップS209へ進む。
ステップS209からステップS211では、ユーザーによる修正内容に基づいて、帳票データバンクが更新される。ステップS208で修正された項目が帳票識別キーワードであった場合、帳票データ蓄積部21は、誤認識によって得られた文字列を、帳票種別データの帳票識別キーワードに追加する(ステップS209)。このようにすることで、OCRエンジンが同様の誤認識をした場合でも、帳票種別を正しく認識することが可能となる。
又、正解データ蓄積部22は、ユーザーによって入力された正解文字列を、正解データとして追加する(ステップS210)。具体的には、正解データ蓄積部22は、ステップS208で読取領域が修正された場合、ユーザーが入力した正しい読取領域(再指定された読取領域)及び帳票画像を含む正解データを生成し、帳票データバンクに追加する。又、正解データ蓄積部22は、ステップS208で項目OCR結果の文字列が修正された場合、帳票画像、修正前の誤認識された文字列であるOCR結果、及びユーザーが入力した正解文字列を含む正解データを生成し、帳票データバンクに追加する。なお、本実施形態において、正解データテーブルには、ユーザーによる修正の際に入力された正解文字列が登録されることとしているが、OCRエンジンによって正しく読み取られたOCR結果についても、正解文字列として正解データテーブルに蓄積されてもよい。
更に、ステップS208で修正された項目が帳票名や項目であった場合、帳票データ蓄積部21は、修正前の誤認識された文字列(例えば、「口口名」)を、ユーザーが入力した正しい文字列(例えば、「品名」)の類義語として、類義語辞書へ登録する(ステップS211)。その後、処理はステップS212へ進む。
ステップS212では、OCRエンジン評価データが更新される。帳票データ蓄積部21は、ステップS201で読み取られた項目の数と、ステップS206で得られたOCR結果の評価とに基づいて、OCRエンジン評価データ(帳票項目)及びOCRエンジン評価データ(帳票種別)を更新する。
具体的には、帳票データ蓄積部21は、S201で新たに読み取られた項目の数(10項目含まれる1帳票が読み取られた場合、10)を、対応する帳票種別、帳票項目及びOCRエンジンの組み合わせに係るOCRエンジン評価データ(帳票項目)中の評価項目数に加算し、新たに読み取られた項目のOCR結果の正解/誤りに基づいて、当該OCRエンジン評価データ(帳票項目)の平均認識率を更新する。例えば、20000項目読み取った時点での正解項目数が18000であった場合、平均認識率は90%となる。
又、帳票データ蓄積部21は、S201で新たに読み取られた帳票の数(例えば、1)を、対応する帳票種別及びOCRエンジンの組み合わせに係るOCRエンジン評価データ(帳票種別)中の評価帳票数に加算し、新たに読み取られた帳票のOCR結果の正解率(例えば、10項目中9項目が正解であった場合、90%)に基づいて、当該OCRエンジン評価データ(帳票種別)の平均認識率を更新する。例えば、読取項目数が10である帳票を20000帳票(即ち、200000項目)読み取った時点での正解項目数が180000であった場合、平均認識率は90%となる。
ステップS212の処理で更新されたOCRエンジン評価データ(帳票項目)及びOCRエンジン評価データ(帳票種別)の平均認識率は、後述するエンジン最適化処理において参照されることで、帳票種別又は帳票項目について用いられるOCRエンジンの最適化に貢献する。その後、本フローチャートに示された処理は終了する。
図13は、本実施形態に係るデータ分析処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、ステップS208からステップS211で説明したOCR結果の修正が行われたことが検知されると、自動的に実行される。但し、本フローチャートに示された処理が実行されるタイミングは、OCR結果の修正が行われた直後でなくてもよい。例えば、本フローチャートに示された処理は、管理者が指定したタイミングで実行されてもよいし、定期的に実行されてもよい。
ステップS301では、項目名が共通する正解データが抽出される。形式/ルール更新部30は、帳票データバンクから、同一帳票種別且つ同一項目に係る正解データを抽出する。その後、処理はステップS302へ進む。
ステップS302からステップS305では、正解データが分析され、帳票項目データ中の項目形式及び項目ルールが更新される。形式/ルール更新部30は、ステップS301で抽出された正解データ内の正解文字列群を分析し、分析結果に従って帳票項目データの項目形式及び項目ルールを追加して、OCRによる読取精度を改善する。具体的には、形式/ルール更新部30は、ステップS301で抽出された正解データ内の正解文字列群が、帳票項目データの項目形式を満たすか否かを判定し(ステップS302)、満たさないと判定された場合、帳票項目データに、新たな項目形式を登録する(ステップS303)。例えば、形式/ルール更新部30は、正解データから抽出された正解文字列が和暦日付であるが、帳票項目データに設定されている項目形式が西暦日付のみであった場合、和暦日付を項目形式に追加する。又、形式/ルール更新部30は、正解データから抽出された正解文字列に英字が含まれるが、帳票項目データに設定されている項目形式が数字のみであった場合、英字を項目形式に追加する。又、形式/ルール更新部30は、正解データから抽出された正解文字列群の内容に応じて、新しい番号体系を追加したり、正規表現パターンを追加したりすることが出来る。
又、形式/ルール更新部30は、ステップS301で抽出された正解データ内の正解文字列群が、帳票項目データの項目ルールを満たすか否かを判定し(ステップS304)、満たさないと判定された場合、帳票項目データに、新たな項目ルールを登録する(ステップS305)。例えば、形式/ルール更新部30は、正解データから抽出された正解文字列が項目ルールに設定された数値の上限、下限、桁数の範囲内でない場合、正解文字列が含まれるように、項目ルールを変更する。又、形式/ルール更新部30は、正解データから抽出された正解文字列に「¥」「,」等の文字が含まれないが、これらの文字が項目ルールに設定されている場合、これらの文字を項目ルールから除く。又、形式/ルール更新部30は、正解データから抽出された正解文字列が社名であるが、項目ルール(社名辞書)に登録のない新たな社名であった場合、項目ルール(社名辞書)に当該社名を登録する。その後、本フローチャートに示された処理は終了する。
図14は、本実施形態に係る新規エンジン評価処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、サーバー50から利用可能なOCRエンジンが帳票処理システム1に追加されたことを契機として実行される。
ステップS401からステップS404では、新たなOCRエンジンについて、正解データを用いた評価が行われる。第二の文字認識部27は、帳票データバンクに蓄積された正解データ中の項目画像を、新たなOCRエンジンを用いて読み取る(ステップS401)。そして、帳票データ蓄積部21は、新たなOCRエンジンによるOCR結果と、正解データ中の正解文字列とを比較し(ステップS402)、一致すると判定された(新たなOCRエンジンによるOCR結果が正解であった)場合、新たなOCRエンジンについてのOCRエンジン評価データ(帳票項目)を追加する(ステップS403)。具体的には、帳票データ蓄積部21は、OCRエンジン評価データ(帳票項目)中のOCRエンジンに、当該新たなOCRエンジンの識別情報(名称等)を設定し、帳票種別及び帳票項目に、評価に用いられた正解データから取得された帳票種別及び帳票項目を設定し、評価項目数に、S401で新たに読み取られた項目の数を設定し、平均認識率に、新たに読み取られた項目のOCR結果の正解/誤りに基づいて算出された値を設定する。
一方、比較の結果、新たなOCRエンジンによるOCR結果と、正解データ中の正解文字列とが一致しないと判定された(新たなOCRエンジンによるOCR結果が誤りであった)場合、正解データ蓄積部22は、当該OCR結果(誤り)と正解文字列とに基づいて、新たな正解データを登録する(ステップS404)。具体的には、正解データ蓄積部22は、新たなOCRエンジンによって誤認識された文字列であるOCR結果、及び正解文字列を含む正解データを生成し、帳票データバンクに追加する。ここで、正解文字列は、比較対象となった正解データから取得可能である。その後、処理はステップS405へ進む。
ステップS405では、所定量の正解データについて評価が完了したか否かが判定される。第二の文字認識部27は、ステップS401からステップS404の処理を、帳票データバンクに蓄積された所定量(例えば、全て)の正解データについて完了したか否かを確認する。所定量の正解データについての処理が完了していない場合、処理はステップS401へ戻る。一方、所定量の正解データについての処理が完了した場合、処理はステップS406へ進む。
ステップS406では、OCRエンジン評価データ(帳票種別)が追加される。具体的には、帳票データ蓄積部21は、OCRエンジン評価データ(帳票種別)中のOCRエンジンに、当該新たなOCRエンジンの識別情報(名称等)を設定し、帳票種別に、評価に用いられた正解データから取得された帳票種別を設定し、評価項目数に、S401で新たに読み取られた帳票の数を設定し、平均認識率に、新たに読み取られた帳票のOCR結果の正解/誤りに基づいて算出された値を設定する。その後、本フローチャートに示された処理は終了する。
本フローチャートに示された新規エンジン評価処理において、ステップS403及びステップS406の処理で更新されたOCRエンジン評価データ(帳票項目)及びOCRエンジン評価データ(帳票種別)の平均認識率は、後述するエンジン最適化処理において参照されることで、帳票種別又は帳票項目について用いられるOCRエンジンの最適化に貢献する。
図15は、本実施形態に係るエンジン最適化処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、定期的に(例えば、1日に1回)、又は管理者によって指定されたタイミングで、実行される。
ステップS501及びステップS502では、既存の各OCRエンジンについて、正解データを用いた評価が行われる。第二の文字認識部27は、帳票データバンクに蓄積された正解データ中の項目画像を、サーバー50から利用可能な全てのOCRエンジンの夫々を用いて読み取る(ステップS501)。但し、帳票処理システム1の処理負荷等を考慮して、使用される頻度の低いOCRエンジンを対象から除いてもよい。そして、帳票データ蓄積部21は、OCRエンジン毎のOCR結果と、正解データ中の正解文字列とを比較し、一致する(各OCRエンジンによるOCR結果が正解である)か、又は一致しない(各OCRエンジンによるOCR結果が誤りである)かを、OCR結果毎に記録する(ステップS502)。その後、処理はステップS503へ進む。
ステップS503では、所定量の正解データについて評価が完了したか否かが判定される。第二の文字認識部27は、ステップS501及びステップS502の処理を、帳票データバンクに蓄積された所定量(例えば、全て)の正解データについて完了したか否かを確認する。所定量の正解データについての処理が完了していない場合、処理はステップS501へ戻る。一方、所定量の正解データについての処理が完了した場合、処理はステップS504へ進む。
ステップS504及びステップS505では、OCRエンジン評価データ(帳票項目)の平均認識率及びOCRエンジン評価データ(帳票種別)の平均認識率が再計算され、更新される。具体的な更新方法は、ステップS212で説明した内容と概略同様であるため、説明を省略する。その後、処理はステップS506へ進む。
ステップS506では、帳票種別について最適なOCRエンジンが更新される。エンジン変更部31は、帳票データバンクに蓄積されたOCRエンジン評価データ(帳票種別)から、同一の帳票種別についてのOCRエンジン毎の平均認識率を取得して比較することで、当該帳票種別を読み取る際に最も平均認識率の高いOCRエンジン(最適OCRエンジン)を決定し、決定された最適OCRエンジンが、当該帳票種別について帳票種別データに現在設定されているOCRエンジンと異なる場合に、当該帳票種別データに設定されるOCRエンジンを、最適OCRエンジンに更新する。但し、ステップS501からステップS503の処理において評価の対象とした正解データに偏りがある場合、偶然に高い平均認識率が得られる可能性がある。このため、最適OCRエンジンの候補となるOCRエンジンを、統計上信頼できる評価帳票数又は評価項目数に達しているOCRエンジンに限定することとしてもよい。その後、処理はステップS507へ進む。
ステップS507では、帳票項目について最適なOCRエンジンが更新される。エンジン変更部31は、帳票データバンクに蓄積されたOCRエンジン評価データ(帳票項目)から、同一の帳票項目についてのOCRエンジン毎の平均認識率を取得して比較することで、当該帳票項目を読み取る際に最も平均認識率の高いOCRエンジン(最適OCRエンジン)を決定し、決定された最適OCRエンジンが、当該帳票項目について帳票項目データに現在設定されているOCRエンジンと異なる場合に、当該帳票項目データに設定されるOCRエンジンを、最適OCRエンジンに更新する。なお、ステップS506と同様、最適OCRエンジンの候補となるOCRエンジンは、統計上信頼できる評価帳票数又は評価項目数に達しているOCRエンジンに限定されてもよい。その後、本フローチャートに示された処理は終了する。
<効果>
上記説明した実施形態によれば、処理対象帳票の特徴を用いて、類似する帳票データを索出し、複数の文字認識エンジンのうち、索出された帳票データに関連付けられた文字認識エンジンを用いて処理対象帳票を処理することで、処理対象の帳票又は項目毎に最適な文字認識エンジンを選択することが可能となる。又、複数の文字認識エンジンの夫々を用いて同一帳票/項目についての文字認識を行い、文字認識の結果に基づいて、当該帳票/項目に適用される文字認識エンジンを変更することで、帳票毎又は帳票内の項目毎に適用される文字認識エンジンを最適化することが可能となる。