以下、図面に基づいて、本発明の好適な実施の形態について説明する。本実施の形態では、情報処理装置が処理する文書として帳票を取り扱う場合を例にして説明する。
本実施の形態における情報処理装置は、パーソナルコンピュータ(PC)等の従前から存在する汎用的なハードウェア構成で実現できる。すなわち、情報処理装置1は、CPU、ROM、RAM、ハードディスクドライブ(HDD)等の記憶手段、入力手段として設けられたマウスやキーボード及び表示手段として設けられたディスプレイ等のユーザインタフェース手段、ネットワークインタフェース等の通信手段を有する。
図1は、本発明に係る情報処理装置1の一実施の形態を示すブロック構成図である。本実施の形態における情報処理装置1は、帳票取得部2、帳票解析処理部3、帳票データベース(DB)4、キーバリュー抽出結果データベース(DB)5及び抽出結果情報記憶部6を有している。なお、本実施の形態の説明に用いない構成要素については図から省略する。
帳票取得部2は、帳票の画像データを取得する。取得した画像データは、帳票データベース4に保存されると共に、帳票解析処理部3に渡される。帳票解析処理部3は、取得した帳票の画像データを解析することによって帳票の形式を識別し、また、帳票の形式の識別に必要な情報として抽出結果情報を必要により作成して、抽出結果情報記憶部6に登録する。
ここで、「帳票の形式」というのは、端的には帳票に適用されるフォームということができる。例えば、請求書や納品書等の帳票の種別を表す「帳票の種類」においても、帳票のフォームが異なれば帳票の形式は異なる。ある種類の帳票、例えば、請求書の場合、通常、タイトルを示す「請求書」や、請求書の発行日、請求書番号、請求金額、また請求元や請求先を特定する文字が記載される。これらの記載される文字は、請求書という種別において共通し、比較対象となる請求書の両方で検出可能な文字である。但し、帳票のフォーム(つまり、形式)によって文字の記載位置が同じとは限らず、異なる場合が少なくない。従って、本実施の形態においては、2つの帳票を比較し、帳票上におけるこれらの文字の位置が同じであれば、2つの帳票の形式は同じと判別し、異なるようであれば、2つの帳票の形式は異なると判別する。
ところで、帳票に記載される上記例示した請求書の「発行日」や「請求書番号」等の特定の文字のことを、本実施の形態においては「キー」(Key)と称する。また、帳票には、通常、キーに文字が対応付けて記載される。例えば、「発行日」というキーの近傍には、発行日を示す日付の形式で表現される文字が記載されているはずであり、「請求書番号」というキーの近傍には、番号を示す形式で表現される文字が記載されているはずである。キーを項目名というならば、日付や番号は項目値ということができる。本実施の形態においては、キーに対応付けして記載される文字を「バリュー」(Value)と称する。帳票の画像データを解析することによって帳票上にキーに該当する所定の特定の文字を見つけると、そのキーの周辺近傍(例えば、横書きの場合、多くはキーの右側または下側)にバリューが存在するので、帳票からキーとバリューをセットにして抽出することが可能となる。すなわち、帳票をスキャンすることで、その帳票の読取画像(上記「画像データ」に相当)からキーとバリューを組にして自動的に抽出することができる。なお、キーだけあるいはバリューだけが抽出される場合もあるが、本実施の形態においては、この場合も含めてキーとバリューを抽出する技術は既存技術を利用する。また、本実施の形態において「文字」というのは、特に断らない限り、一文字の場合と複数の文字から成る文字列の双方を意味する。
図1に戻り、帳票解析処理部3は、キーバリュー抽出部31、帳票識別部32、抽出結果情報編集部33及び位置ずれ補正処理部34を有する。キーバリュー抽出部31は、前述したように帳票の画像データに対し文字認識処理を実施してキー及びバリューを抽出する。以降の説明では、このキーバリュー抽出処理の処理結果のことを「キーバリュー抽出結果」と称する。帳票識別部32は、キー及びバリューが抽出された帳票と抽出結果情報記憶部6に抽出結果情報が登録されている帳票との同一性を判定することで、当該帳票を識別する。つまり、帳票の形式を判別する。また、帳票識別部32は、詳細は後述するように、必要により抽出結果情報を作成して抽出結果情報記憶部6に登録する。
本実施の形態では、抽出結果情報記憶部6に登録されている抽出結果情報を使用して帳票の形式を判別するが、抽出結果情報編集部33は、その判別精度の向上等のために抽出結果情報記憶部6に登録されている抽出結果情報を編集する。抽出結果情報編集部33は、自動訂正部331、文字認識処理部332及び編集処理部333を有している。自動訂正部331は、抽出結果情報を参照して、誤っていると推測されるキー又はバリューの読取位置を自動的に訂正する。文字認識処理部332は、自動訂正部331により訂正された読取位置に対して文字認識処理を実施して正しい文字、すなわちキー又はバリューを取得する。編集処理部333は、手動によりキー又はバリューの読取位置をユーザに訂正させる。
詳細は後述するが、処理対象となる帳票の画像データ(以下、「補正帳票」ともいう)がスキャナの読取精度等の関係から補正帳票と同じ形式において基準となる帳票の画像データ(以下、「基準帳票」ともいう)からずれる場合がある。つまり、基準帳票と補正帳票それぞれに含まれている同じ文字(つまり、キー及びバリュー)の位置がずれる可能性がある。位置ずれ補正処理部34は、この位置ずれを補正するための位置ずれ補正処理を実行する。
帳票データベース4には、帳票取得部2が取得した帳票の画像データが蓄積される。キーバリュー抽出結果データベース5は、キーバリュー抽出結果の管理目的として使用され、キーバリュー抽出部31により抽出されたキー及びバリューに関する情報がキーバリュー抽出結果として登録される。抽出結果情報記憶部6には、キーバリュー抽出部31によるキーバリュー抽出結果が抽出結果情報として登録され、帳票の同一性の判定に使用される。本実施の形態では、抽出結果情報記憶部6をキーバリュー抽出結果の管理目的として使用しないので、全ての帳票のキーバリュー抽出結果が登録されるとは限らない。抽出結果情報の種類やデータ構成については後述する。
なお、説明の便宜上、本実施の形態においては、帳票データベース4及びキーバリュー抽出結果データベース5を情報処理装置1に含めるように構成したが、本実施の形態における情報処理装置1は、帳票を識別するために使用されるコンピュータであることから、各データベース4,6を保持し、また管理する必要はない。従って、各データベース4,6を外部の装置に持たせるように構成し、情報処理装置1は、必要の時に外部の装置から必要なデータを取得するようにしてもよい。
情報処理装置1における各構成要素2,3は、情報処理装置1を形成するコンピュータと、コンピュータに搭載されたCPUで動作するプログラムとの協調動作により実現される。また、情報処理装置1における各記憶手段4~6は、情報処理装置1に搭載されたHDDにて実現される。あるいは、RAM又は外部にある記憶手段をネットワーク経由で利用してもよい。
また、本実施の形態で用いるプログラムは、通信手段により提供することはもちろん、CD-ROMやUSBメモリ等のコンピュータ読み取り可能な記録媒体に格納して提供することも可能である。通信手段や記録媒体から提供されたプログラムはコンピュータにインストールされ、コンピュータのCPUがプログラムを順次実行することで各種処理が実現される。
本実施の形態では、コサイン類似度を利用して帳票の同一性を判定し、帳票を識別する。この本実施の形態における帳票識別処理について図2に示すフローチャートを用いて説明する。なお、この時点では、抽出結果情報記憶部6には、まだ抽出結果情報が登録されていないものとする。
まず、帳票取得部2は、1つの帳票の画像データを取得する(ステップ101)。帳票の画像データは、例えばスキャン機能を有する画像形成装置に帳票を読み取らせることによって生成される帳票の読取画像を画像データとして、画像形成装置から直接又は間接的に取得する。帳票取得部2は、取得した帳票の画像データを帳票データベース4に登録すると共に帳票解析処理部3に渡す。なお、以下の説明では、便宜的に以降の処理において処理対象とされる帳票の画像データ、つまりステップ101において取得した帳票の画像データを単に「帳票」と称して説明する。
帳票取得部2から帳票を取得すると、帳票解析処理部3におけるキーバリュー抽出部31は、前述したように帳票を解析してキー及び当該キーに対応するバリューを、既存技術を利用して自動的に抽出するキーバリュー抽出処理を実施して(ステップ102)、そのキーバリュー抽出結果をキーバリュー抽出結果データベース5に登録する。より詳細には、帳票に対して文字認識処理を実施し、その処理結果から検出された所定の複数の文字(すなわち、キー及びバリュー)の帳票上における位置情報を取得する。取得した帳票が請求書の場合の請求書の形式の一例を図3に示す。
図3に示す請求書の例のように、請求書には、「発行日」21a、「請求書番号」21b、「様」21cなどのように、バリュー“2020/03/03”22a、“J012345”22b、“山田太郎”22cをそれぞれ抽出するための特定の文字、すなわちキーが帳票に含まれている。なお、図3の説明において、キーとなる特定の文字を相互に区別する必要はない場合は「キー21」と総称する。同様に、各キー21a,21b,21に紐付くバリューとなる文字を相互に区別する必要はない場合は「バリュー22」と総称する。また、キー21の中には、「請求書」21dのように、紐付くバリュー22が存在しないキー21が存在する。また、図3では例示していないが、その逆に対応するキー21が存在しないバリュー22が存在する。
図4は、キーバリュー抽出部31が帳票から抽出したキーバリュー抽出結果のデータ構成の一例を示す図である。なお、図4では、データ構成の一例を示しており、データ値が正しいとは限らない。図4には、キーとバリューの各組毎に通し番号(No.)が付けられて管理される。キー及びバリューは、共にキー又はバリューを示す文字に座標と幅と高さが対応付けして設定される。なお、ここでの説明では、キーとバリューとを分けて説明する必要がないので、特に断らない限り、キー及びバリューを「文字」と総称して説明する。
文字は、当該文字を囲む矩形の領域にて帳票上において当該文字が存在する領域(つまり、文字の位置)が特定される。座標(X)と座標(Y)は、当該文字の位置を示す座標情報である。本実施の形態においては、帳票の中心を中心座標とした場合、中心座標からキーバリュー抽出処理により検出された文字(すなわち、キー及びバリュー)を囲む矩形領域の左上の位置を示す相対座標により表される。幅は、矩形領域の幅(つまり、図面横方向に相当するX軸方向の大きさ)である。高さは、矩形領域の高さ(つまり、図面縦方向に相当するY軸方向の大きさ)である。文字の位置情報は、矩形領域の大きさと矩形領域の左上の座標情報によって構成される。なお、図4においては、No.1のようにバリューの位置情報が空白で示されるレコードのキーには、対応するバリューが存在していないことを示している。
ところで、矩形領域の大きさは、帳票から文字を抽出する範囲を特定するために必要な情報であるが、文字の位置を特定するには特に必要でない。文字の位置は、座標情報によって特定可能なので、狭義には、座標情報が文字の位置を特定する位置情報となる。
続いて、帳票識別部32は、ステップ102において取得した帳票のキーバリュー抽出結果と、抽出結果情報記憶部6に登録されている抽出結果情報を参照して、帳票と過去に取得済みの帳票との同一性を判定する(ステップ103)。ただ、前述したように、この段階では、抽出結果情報記憶部6に抽出結果情報がまだ登録されていない。従って、この場合は、帳票と同一形式の帳票はまだ存在しないと判断して(ステップ104でN)、帳票識別部32は、ステップ102において取得したキーバリュー抽出結果を抽出結果情報として抽出結果情報記憶部6に登録する(ステップ105)。なお、以降の説明では、ステップ102において取得したキーバリュー抽出結果を「訂正前抽出結果情報」と称する場合もある。
続いて、抽出結果情報編集部33における編集処理部333は、帳票に含まれている文字の位置情報を編集可能に表示させる。画面表示される帳票には、自動抽出されたキーとバリューの組がわかるように表示される。例えば、キーとバリューの位置情報から特定される範囲(つまり、矩形領域)を枠で囲んで表示させる場合、キーとバリューで異なる線種で枠を表示させ、同じ組には同じ線の色で枠を表示すれば、キーとバリューの組及びキーとバリューの種別が一目瞭然に把握できる。これは、一例であって、矩形領域内を塗りつぶしなど他の表示形態で表示させるようにしてもよい。
帳票が請求書の場合、ステップ102におけるキーバリュー抽出処理では、「請求書番号」というキーの下側に正しい請求書番号(つまり、バリュー)が記載されているところを、そのキーの右側にある文字をバリューとして自動抽出してしまう可能性がある。この場合、ユーザは、所定の操作手順に従い、例えばキーの右側にある文字を囲む枠を正しいバリューである文字を囲むように移動させる。また、他の操作によって正しいバリューを指定させるようにしてもよい。編集処理部333は、このユーザによるバリューの位置の訂正操作に応じて、図4に示すバリューの座標情報(すなわち、座標(X)と座標(Y))を更新する。また、文字の長さが異なる場合、ユーザは、所定の操作によって枠の大きさを変更させてもよい。編集処理部333は、このユーザによる枠の大きさを変更する操作に応じて、図4に示すバリューの矩形領域の大きさ(すなわち、幅と高さの少なくとも一方)を更新する。ここでは、バリューの位置を例にして説明したが、キーの位置も同様に訂正させることができる。
以上のようにして、ユーザにより文字の位置が必要により訂正されると(ステップ108)、編集処理部333は、訂正が反映された抽出結果情報を「訂正後抽出結果情報」として、訂正前抽出結果情報と組にして抽出結果情報記憶部6に登録する(ステップ109)。また、訂正後抽出結果情報でキーバリュー抽出結果データベース5に登録しているキーバリュー抽出結果を更新する。なお、以降の説明では省略するが、キーバリュー抽出結果データベース5に登録されるキーバリュー抽出結果は、最新の抽出結果情報によって更新される。
なお、ユーザが抽出結果情報を訂正しなかった場合は、訂正後抽出結果情報は生成されないので、ステップ105において登録された訂正前抽出結果情報が単独で保存された状態になる。
以上のように、過去に抽出結果情報が抽出結果情報記憶部6に登録されていない形式の帳票が読み取られると、抽出結果情報が生成されて抽出結果情報記憶部6に登録される。
続いて、他の帳票が読み取られることで図2に示す帳票識別処理が開始されるが、キーバリュー抽出処理(ステップ102)が実施される処理までは、上記と同じである。帳票識別部32は、ステップ102において取得した帳票のキーバリュー抽出結果と、抽出結果情報記憶部6に登録されている抽出結果情報を参照して、帳票と過去に取得済みの帳票との同一性を判定する(ステップ103)。ここで、帳票と同一と判定される帳票が存在する場合の処理については後述するが、帳票と同一と判定される帳票が存在しない場合(ステップ104でN)、前述した処理を実施する(ステップ105,108,109)。
処理対象の他の帳票が、帳票取得部2が取得した2枚目の帳票の場合、2形式目の帳票の抽出結果情報が抽出結果情報記憶部6に登録されることになる。帳票の形式が同一と識別されないことで以上の処理が繰り返され、これにより、抽出結果情報記憶部6には、多種類の形式の帳票に対応する抽出結果情報が登録されていく。ステップ108において抽出結果情報が訂正された場合には、訂正前抽出結果情報と訂正後抽出結果情報とが組にして登録される。
図5では、上記帳票識別処理が繰り返されることによって帳票B,C,D,Eの抽出結果情報が抽出結果情報記憶部6に登録されており、帳票Aがステップ101において新たに取得されている場合を示している。なお、帳票B,C,D,Eのそれぞれは、前述したように文字認識処理が実施されて得られた処理結果から検出された所定の複数の文字(すなわち、キー及びバリュー)の帳票上における位置情報を取得することでキーバリュー抽出結果が取得され、抽出結果情報として抽出結果情報記憶部6に登録されている。また、必要により訂正後抽出結果情報が登録されている。なお、ステップ108において訂正されていない抽出結果情報は、訂正後抽出結果情報が存在しないことから単独で抽出結果情報記憶部6に登録されるが、単独で登録されている抽出結果情報は、訂正されていないことから、説明の便宜上、訂正前抽出結果情報に相当するものとして説明する。
以下、この図を用いて、ステップ103における本実施の形態の特徴的な帳票の同一性の判定処理について説明する。
本実施の形態における同一性判定処理では、コサイン類似度を利用する。コサイン類似度では、n個の要素をもつデータをn次のベクトル空間に落とし込み、それらがどれだけ類似しているかを示すことができる。コサイン類似度は、-1~+1の値をとり、+1に近いほど類似度が高い。
例えば、図5に例示するように5つの帳票(ここでの例では、請求書)があり、それぞれのキー及びバリューを入力としてコサイン類似度を算出する。全てのキー及びバリューに基づきコサイン類似度を算出してもよいが、ここでは、説明の便宜上、帳票には、6つのキーが設定され、この6つのキーをコサイン類似度の計算に用いるものとする。この場合、帳票Aのキーバリュー抽出結果と、帳票B~Eそれぞれの訂正前抽出結果情報を参照して、6つのキーの位置をそれぞれ表す座標(X)と座標(Y)の12次元でコサイン類似度を計算する。
例えば、帳票Bを第1文書とし、帳票Aを第2文書とし、帳票Aに対するキーバリュー抽出結果と帳票Bに対するキーバリュー抽出結果(すなわち、訂正前抽出結果情報)それぞれに含まれている6つのキーの位置情報に基づきコサイン類似度を計算する。また、帳票Cを第1文書とし、帳票Aを第2文書としてコサイン類似度を計算する。帳票D,Eに対しても同様にそれぞれを第1文書としてコサイン類似度を計算する。
図5では、この計算結果を表形式にて示している。比較対象の帳票が同一形式の場合、類似度は1若しくは1に極めて近い値となる。図5の表に示す計算結果の数値例によると、帳票Aは、帳票Cとのコサイン類似度が0.913と最も高い数値となる。本実施の形態では、コサイン類似度が所定の閾値(例えば、0.8)以上の場合、同じ形式の帳票と判定する。換言すると、コサイン類似度が所定の閾値に満たない場合は異なる形式の帳票と判定する。このため、図5に示す数値例では、帳票Cが帳票Aと同じ形式の帳票であると判定される(ステップ103)。なお、以降の説明では、ステップ101において取得した処理対象の帳票を「帳票A」、抽出結果情報が抽出結果情報記憶部6に登録されている、帳票Aと同一と判定された帳票を「帳票C」として説明する。
帳票Aと同一形式の帳票Cが存在する場合(ステップ104でY)、必要により位置ずれ補正処理を実施する(ステップ110)。
ステップ103における帳票の同一性判定処理において、帳票Aは、帳票Cと同一形式と判定されている。従って、本来であれば、抽出結果情報記憶部6に登録されている帳票Cに対応する抽出結果情報を当該帳票の形式において基準となるキーバリュー抽出結果とした場合、帳票Aにおける文字(つまり、キー及びバリュー)は、その基準となるキーバリュー抽出結果を用いて抽出することができるはずである。しかしながら、帳票の識別ができた場合でもスキャナの読取精度等の関係から帳票A及び帳票Cそれぞれに形成されている同じ文字の位置にずれが生じている場合がある。この場合、帳票Aにおける文字は、帳票Cに対応する抽出結果情報、つまり帳票Cの位置情報を利用しても正しく抽出することができなくなる。そこで、本実施の形態においては、同一形式における帳票間の位置ずれを補正できるようにした。
以下、本実施の形態における位置ずれ補正処理を図6に示すフローチャートを用いて説明する。
まず、位置ずれ補正処理においては、帳票Aが第1文書であって前述した補正帳票に相当し、帳票Cが第2文書であって前述した基準帳票に相当する。位置ずれ補正処理の説明では、「基準帳票」及び「補正帳票」を使用して説明する。また、基準帳票に対応するキーバリュー抽出結果を「基準キーバリュー抽出結果」と称し、補正帳票に対応するキーバリュー抽出結果を「補正キーバリュー抽出結果」と称することにする。相互に区別する必要がない場合は、単に「キーバリュー抽出結果」と称する。また、前述したように、文字(つまり、キー及びバリュー)の帳票上における位置は、キーバリュー抽出結果に含まれる座標情報を参照することで特定できるので、位置ずれ補正処理で用いる位置情報というのは、狭義の位置情報を意味している。つまり、座標情報に等しい。
基準帳票及び補正帳票の関係のように同じ形式の帳票の場合、キーは同じ文字となる。ただ、バリューは、同じ文字になるとは限らない。例えば、「請求金額」というキーに対して、実際の額面を示すバリューの文字は、同じ文字になるとは限らない。しかしながら、バリューに対応する矩形領域の左上の座標情報は、基準帳票と補正帳票とで一致するはずなので、バリューを示す文字は異なっても、バリューを示す文字の位置は同じはずである。従って、位置ずれ補正処理においては、バリューのように同じ位置となる文字の組は、基準帳票と補正帳票の両方で検出される文字に該当する。
前述したように、補正帳票の位置ずれは、スキャナによる帳票の読み取りによって発生しうるが、文字の形成位置がずれる原因として、基準帳票に対し、補正帳票を形成する画像データ全体が拡縮によりずれる場合と補正帳票を形成する画像データ全体がいずれかの方向に平行移動する場合とが考えられる。本実施の形態では、この2種類の文字の形成位置のずれに対処している。
位置ずれ補正処理部34は、基準帳票及び補正帳票それぞれに対応するキーバリュー抽出結果を取得する(ステップ111)。基準帳票のキーバリュー抽出結果は、キーバリュー抽出結果データベース5から取得してもよいし、抽出結果情報記憶部6に登録されている抽出結果情報を取得してもよい。
続いて、位置ずれ補正処理部34は、基準帳票及び補正帳票それぞれに対応するキーバリュー抽出結果を参照して、基準帳票及び補正帳票それぞれに含まれている同じ文字を抽出し、抽出した各文字の位置情報からコサイン類似度を計算する(ステップ112)。このように、位置ずれ補正処理部34は、同じ文字毎にコサイン類似度を計算する。
続いて、位置ずれ補正処理部34は、算出した各文字のコサイン類似度を所定の閾値(例えば、0.95)と比較する。比較した結果、全てのコサイン類似度が閾値以上の場合(ステップ113でY)、補正帳票は基準帳票に対して拡縮されていることによって文字の位置ずれが生じていると判断し、拡縮に伴うずれに対応する補正方法によって補正帳票に含まれる所定の複数の文字(すなわち、キー及びバリュー)の位置情報を補正する。
図7は、基準帳票と補正帳票を概略的に示す図であり、補正帳票が基準帳票に対して拡縮されている場合において、どのように補正するのかについての説明に用いる図である。図7には、特に補正帳票が拡大されている場合の例が示されている。そして、図7では、3つの文字を便宜的に黒丸にて示しているが、基準帳票の文字A,B,Cと補正帳票の文字A´,B´,C´は、それぞれ同じ文字である。なお、各文字の組(AとA´、BとB´、CとC´)を示す場合には、文字a,b,cと小文字にて記載する。
ここでは、コサイン類似度を“Cos(n,n´)”という関数で表すことにする。但し、nは基準帳票における文字の位置情報であり、n´は補正帳票における文字の位置情報である。
例えば、コサイン類似度が
Cos(A,A´)=1.00
Cos(B,B´)=1.00
Cos(C,C´)=1.00
であったとする。この場合、全ての文字のコサイン類似度が閾値以上となることから、補正帳票は拡縮されたと判断されることになる。拡縮されている場合、文字A´,B´,C´の位置は、文字A,B,Cの位置とずれていることから、補正帳票上の文字A´,B´,C´は、基準帳票と同じ形式であると識別されていても基準キーバリュー抽出結果を用いて補正帳票上から文字A´,B´,C´を抽出することはできない。
そこで、各文字a,b,cの中からコサイン類似度が最大値となる文字を特定する。ここでは、全ての文字a,b,cともコサイン類似度は1.00と最大値であることから、どの文字に特定してもよい。ここでは、文字cに特定したものとして説明する。
位置ずれ補正処理部34は、基準帳票において文字Cの中心座標からの大きさ(つまり、ベクトル長)L及び補正帳票において文字C´の中心座標からの大きさL´を取得する。つまり、大きさLは、基準帳票における中心位置(つまり、中心座標(0,0))と文字Cの位置の間の距離を示す。同様に、大きさL´は、補正帳票における中心位置(つまり、中心座標(0,0))と文字C´の位置の間の距離を示す。そして、位置ずれ補正処理部34は、拡縮率(L´/L)を算出する(ステップ114)。つまり、補正帳票は、基準帳票に対して(L´/L)倍拡縮されていることになる。従って、補正帳票の文字C´の位置情報(座標(X)、座標(Y))をそれぞれ逆数倍(L/L´)、すなわちX*(L/L´)、Y*(L/L´)と計算することで、補正帳票の文字C´の位置情報を補正する。他の文字A´,B´においても同様に補正する(ステップ115)。
このように、位置ずれ補正処理部34は、コサイン類似度を利用して特定した文字cに基づき算出した拡縮率を用いて、補正帳票の文字A´,B´,C´の位置情報を補正する。これにより、基準キーバリュー抽出結果に含まれる位置情報を用いて補正帳票上の文字A´,B´,C´を抽出することができるようになる。
一方、位置ずれ補正処理部34は、算出した各文字のコサイン類似度を所定の閾値と比較した結果、全てのコサイン類似度が閾値以上でない場合(ステップ113でN)、補正帳票は基準帳票に対して画像データが平行移動されて文字の位置ずれが生じていると判断し、帳票への形成位置のずれに対応する補正方法によって補正帳票に含まれる所定の複数の文字の位置情報を補正する。
図8は、基準帳票と補正帳票を概略的に示す図であり、補正帳票が基準帳票に対して位置がずれている場合において、どのように補正するのかについての説明に用いる図である。図8には、特に補正帳票が基準帳票に対して図面右側(X軸方向)にずれている場合の例が示されている。そして、図8では、図7と同様に3つの文字を黒丸にて示しており、基準帳票の文字A,B,Cと補正帳票の文字A´,B´,C´は、同じ文字である。
例えば、コサイン類似度が
Cos(A,A´)=0.85
Cos(B,B´)=0.83
Cos(C,C´)=1.00
であったとする。この場合、全ての文字のコサイン類似度が閾値以上でないことから、補正帳票は基準帳票に対して位置がずれていると判断されたことになる。位置ずれが生じている場合、文字A´,B´,C´の位置は、文字A,B,Cの位置とずれていることから、補正帳票上の文字A´,B´,C´は、基準帳票と同じ形式であると識別されていても基準キーバリュー抽出結果を用いて補正帳票上から文字A´,B´,C´を抽出することはできない。
そこで、位置ずれ補正処理部34は、コサイン類似度が閾値以上であってコサイン類似度が最大となる文字を特定する。ここでは、文字cだけが閾値以上であるから、コサイン類似度が最大値となる文字は、文字cと選定する(ステップ116)。
続いて、位置ずれ補正処理部34は、文字Cと文字C´のずれ量を算出する(ステップ117)。ここで、ずれ量の詳細について図9を用いて説明する。
図9において、文字Dの位置は、X軸からの角度、すなわち向きがθ1で、大きさ、すなわち長さがLのベクトルで表される。大きさLは、基準帳票における中心位置(つまり、中心座標(0,0))と文字Dの位置の間の距離を示す。基準キーバリュー抽出結果における座標情報は(x1,y1)である。一方、文字D´の位置は、X軸からの角度、すなわち向きがθ2で、大きさ、すなわち長さがL´のベクトルで表される。大きさL´は、補正帳票における中心位置(つまり、中心座標(0,0))と文字D´の位置の間の距離を示す。補正帳票に対応するキーバリュー抽出結果における座標情報は(x2,y2)である。
なお、図9において、|θ2-θ1|がコサイン類似度となる。従って、Cosθ=コサイン類似度を解くことによって文字Dと文字D´とのずれた角度θが算出できる。この場合、ずれた方向(図9におけるu方向又はd方向)は、特定できないが、文字D及び文字D´の座標情報を対比することで特定できる。
ここで、ずれた大きさは(L-L´)という中心座標からの大きさの差分で表されるが、これは、X成分(x1-x2)とY成分(y1-y2)という差分にそれぞれ分解できる。すなわち、文字D´の座標(X)は、ずれ量(x1-x2)を加算することで(x2+(x1-x2))と補正し、文字D´の座標(Y)は、ずれ量(y1-y2)を加算することで(y2+(y1-y2)と補正することで、文字D´における座標情報を補正することができる。
文字の位置ずれは、帳票の形成位置全体の平行移動に伴うずれであることから、他の文字においても上記のようにして求めたずれ量より補正する。すなわち、他の文字の座標(X)に(x1-x2)を加算し、座標(Y)に(y1-y2)を加算することによって、他の文字における座標情報を補正する。図8の場合、文字A´,B´,C´を、文字a,b,cそれぞれの組の座標情報によって別個に求めたずれ量によって各文字A´,B´,C´の座標情報を補正してもよいが、同じずれ量によって補正することにより、補正帳票を歪ませることなく補正することが可能となる。
図8において、本来、文字cのベクトル長は、Lであるはずのところが、位置ずれによってL´となっていることから、文字C´の位置のずれた大きさは、前述したように(L-L´)と差をとることで算出できる。ところで、基準帳票の基準キーバリュー抽出結果及び補正帳票のキーバリュー抽出結果を参照すると、各文字C,C´の位置情報における座標(Y)は共に0であることから、各文字C,C´は共に図8に示すようにX軸上に存在するとする。つまり、中心位置からの文字C´の方向は、中心位置からの文字Cの方向と同じであってY軸方向にずれていない。従って、文字A´,B´,C´の各座標(X)に対しては、(L-L´)を加算することによって補正する。文字A´,B´,C´の各座標(Y)に対しては、ずれていないことから補正をする必要はない。このようにして、文字A´,B´,C´における座標情報を補正することができる。
なお、位置ずれ補正処理においては、基準帳票及び補正帳票それぞれに含まれている同じ文字の位置情報からコサイン類似度を算出するが、算出したコサイン類似度が所定の閾値に満たない場合、当該文字の位置情報を参照しないようにしてもよい。
以上のようにして、必要により位置ずれ補正処理を実施すると、続いて、自動訂正部331は、必要により自動訂正を行う。ここでは、図5に示す例に戻り、ステップ101において取得した処理対象の帳票を「帳票A」、抽出結果情報が抽出結果情報記憶部6に登録されている、帳票Aと同一と判定された帳票を「帳票C」として説明する。
帳票Cの訂正後抽出結果情報が抽出結果情報記憶部6に登録されていなければ、自動訂正処理を実施する必要はないが、帳票Cの訂正後抽出結果情報が登録されている場合、抽出結果情報編集部33における自動訂正部331は、第1文書としての帳票Cの訂正後抽出結果情報を取得し、その訂正後抽出結果情報に従って第3文書としての帳票Aのキーバリュー抽出結果を訂正する(ステップ106)。
帳票Cに対するキーバリュー抽出処理(ステップ102)で自動抽出した文字の位置が正しくない場合に、その文字の位置がステップ108においてユーザにより手動にて訂正されている。つまり、帳票Aに対して実施されたキーバリュー抽出処理(ステップ102)において自動抽出された文字であって帳票Cにおいて正しくないため位置が訂正された文字と同じ文字は、ステップ108においてユーザにより手動にて訂正される対象となるはずである。
そこで、本実施の形態においては、キーバリュー抽出処理に基づく訂正前抽出結果情報とユーザによる訂正に基づく訂正後抽出結果情報とを対応付けして記憶しておき、ステップ108においてユーザに訂正させるのではなく、ステップ106において訂正後抽出結果情報により帳票Aのキーバリュー抽出結果を自動的に訂正するようにした。これにより、ユーザによる文字の位置の訂正の手間を省くことができる。
自動訂正をした後、自動訂正部331は、帳票Aにおいて訂正前の文字の位置情報と、訂正後の文字の位置情報とからコサイン類似度を計算してみる。そして、算出したコサイン類似度が所定の閾値以上の場合、自動訂正部331は、帳票Aにおける文字の位置の自動訂正を取り消す。訂正前後の位置が同一と判定されたため、あえて訂正する必要がないからである。むしろ、文字の位置を誤って訂正される可能性があるからである。
自動訂正部331が帳票Cの訂正後抽出結果情報に基づき帳票Aの文字の位置を有効に訂正すると、文字認識処理部332は、帳票Aの訂正後抽出結果情報から特定されるキー及びバリューの位置、すなわちキー及びバリューが存在する正しい位置に文字認識処理を実施することでキー及びバリューを正しく抽出する(ステップ107)。
基本的には、以上の処理により帳票Aに対しては、正しいキーバリュー抽出結果が得られると推測されるが、例えば、バリューの位置は正しくても、矩形領域が小さいと文字を正しく抽出できない可能性が生じてくる。例えば、住所というキーに対応するバリューの場合、住所の表記が長くて住所を構成する全ての文字を抽出結果情報で設定された矩形領域では抽出できなくなる可能性がある。そこで、本実施の形態では、編集処理部333に、帳票Aに含まれている文字の位置情報を編集可能に表示させ、手動による訂正を可能にする(ステップ108)。ここで、ユーザにより編集された場合、この編集結果に基づき訂正後抽出結果情報を更新する。そして、編集処理部333は、この訂正後抽出結果情報と、帳票Aのキーバリュー抽出結果を訂正前抽出結果情報とを対応付けて抽出結果情報記憶部6に登録する(ステップ109)。
このように、はじめて取得される形式の帳票の抽出結果情報は、単独で抽出結果情報記憶部6に登録されうるが、上記例示した帳票Aのように、はじめてでない形式の帳票の抽出結果情報は、訂正前抽出結果情報と訂正後抽出結果情報とが組にして登録される。
この場合、同一形式の帳票の抽出結果情報が抽出結果情報記憶部6に登録されることになる。そして、新たに帳票識別処理の対象となる帳票(例えば、帳票F)の形式が、帳票A,Cと同じ場合、ステップ103においては、算出したコサイン類似度が所定の閾値以上となる帳票として帳票A及び帳票Cの双方が帳票Fの形式と同一であると判定されることになる。ただ、この場合は、いずれか一方の帳票の抽出結果情報を用いてステップ106以降の処理を実施すればよい。例えば、コサイン類似度が最大となる帳票に対応する抽出結果情報を用いるようにしてもよい。
以上説明したように、本実施の形態においては、キーバリュー抽出結果を参照し、コサイン類似度を利用して帳票の同一性を判定し、また、キーバリュー抽出結果を必要により訂正できるようにして同一性の識別精度を向上できるようにした。
ところで、キーバリュー抽出処理(ステップ102)において、全てのキー及びバリューが正確に抽出できていても、更にキー又はバリューと誤認して不要な文字をも抽出している可能性がある。そこで、帳票識別部32は、前述した同一性の判定のためにコサイン類似度を算出する前に、帳票(上記帳票A)のキーバリュー抽出部31によるキーバリュー抽出結果及び帳票Aと比較される帳票(上記帳票B~E)の訂正前抽出結果情報それぞれに含まれている同じ文字を抽出し、抽出した各文字の位置情報からコサイン類似度を計算する。そして、算出したコサイン類似度が所定の閾値に満たない場合、帳票識別部32は、当該文字の位置情報を同一性の判定に用いるコサイン類似度の算出に使用しない。つまり、算出したコサイン類似度が所定の閾値に満たない文字の位置情報を除外してコサイン類似度を計算し、その算出結果に基づき比較対象の帳票の同一性を判定する(ステップ103)。
この場合、帳票識別部32は、比較する帳票から抽出した文字、すなわち同じ文字の位置情報から算出したコサイン類似度の算出結果が所定の閾値に満たない文字の位置を編集可能に表示させる。これにより、キー又はバリューと誤認されて抽出された文字の位置を訂正させたり、キー又はバリューとしての文字から除外させたりするなどの修正をユーザに行わせることができる。
以上説明したように、本実施の形態によれば、帳票上にロゴマーク類がなくても帳票の形式の同一性を判定することができ、これにより帳票を識別することができる。また、比較する帳票の一方に位置ずれがあったとしても、その位置ずれを補正することでキー及びバリューを正しく抽出することができるようになる。
上記実施の形態において、プロセッサとは広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU:Central Processing Unit等)や、専用のプロセッサ(例えばGPU:Graphics Processing Unit、ASIC:Application Specific Integrated Circuit、FPGA:Field Programmable Gate Array、プログラマブル論理デバイス等)を含むものである。
また上記実施の形態におけるプロセッサの動作は、1つのプロセッサによって成すのみでなく、物理的に離れた位置に存在する複数のプロセッサが協働して成すものであってもよい。また、プロセッサの各動作の順序は上記各実施の形態において記載した順序のみに限定されるものではなく、適宜変更してもよい。