以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付した。
図3Aから図3Cは、帳票1の一部分が浮きあがった状態で撮像された画像2に文字認識処理を実行する例を示す図である。図3Aは、帳票1の一部分が浮き上がった状態で撮像された画像2を例示する図である。例えば、スキャナなどを用いて撮像を行う際に帳票1が部分的に浮き上がってしまうことがある。特に、帳票1とカメラ等の撮像装置とが非接触な状態でスキャンを行う非接触型のスキャナを用いる場合には帳票1が部分的に浮き上がってしまうことが起こり易い。そして、帳票1の一部が浮き上がった状態で撮像が行われた場合、その浮き上がりに起因して撮像された画像2において帳票画像10の一部分が傾いてしまう(図3Aの点線枠5)。このような撮像された画像2中の帳票画像10の部分的な傾きは、その後の文字認識に悪影響を与える可能性がある。
図3Bは、帳票1の一部が浮きあがった状態で撮像された画像2中の帳票画像10に定義体3を配置した状態を例示している。図示されるように、帳票画像10において、浮き上がりにより傾いてしまっている部分(例えば、図3Bの「金額」の欄)では、認識すべき領域が傾いており、それによって、認識すべき文字列の一部分が定義領域4から外れていたり、或いは、定義領域4内に帳票1の罫線の像が含まれてしまっている。例えば、この様な状態で、文字認識を実行した場合、定義領域4から外れてしまっている文字列は正しく認識できない。或いは、文字認識処理により文字認識すべき対象ではない罫線の像等が定義領域4に含まれてしまった状態で文字認識を実行すると、その罫線の像等を文字認識すべき文字列の一部として認識してしまうため、正しく文字を認識できない。図3Bには、文字認識処理の結果、文字として認識された領域を示す文字認識結果領域6が示されており、帳票画像10の左側の浮き上っていない状態で撮像されている領域では、帳票1に記入されている文字は1文字ごとに文字認識結果領域6として認識されている。しかしながら、帳票画像10の右側の浮き上った状態で撮像されている領域では、文字認識結果領域6に複数の文字列が含まれていたり、罫線の像が含まれていたりし、帳票1に記入されている文字列を正しく認識できていない。
図3Cは、図3Bにおいて文字認識処理を実行した結果を例示する図である。図3Bにおいて、例えば、「受取人名」の欄は、帳票画像10において帳票1の浮き上がりに起因して定義領域4内に罫線の像7が含まれてしまっている(図3B)。そのため、定義領域4内の罫線の像7が、文字列として認識されており文字認識結果領域6で囲われている。その結果、文字認識処理では、定義領域4内に含まれてしまった罫線の像7に対応する文字列を認識できず、文字認識できなかったことを示す「?」が図3Cの「受取人名」の欄に格納されている。また、図3Bの「金額」の欄では、文字認識すべき文字列が定義領域4からはみ出していたり、及び、罫線の像7が定義領域4に含まれてしまっている。その結果、文字認識処理では、文字認識結果領域6に複数の文字列や罫線の像7が含まれており、文字を正しく認識できていない。結果として、図3Cの「金額」の欄には、文字認識できなかったことを示す「?」が格納されている。
この様に、帳票1の浮き上がりにより一部分が傾いてしまっている帳票画像10に対して文字認識処理を実行する場合、文字認識に失敗してしまうことがある。或いは、帳票1の浮き上がりにより一部分が傾いてしまっている帳票画像10では、予め定義した定義体3から外れるため文字認識が行われずリジェクトされてしまうことがある。そして、文字認識に失敗した場合又は文字認識が実行されずにリジェクトされる場合には、認識されなかった文字列は、ユーザが帳票1の記入欄を見ながら手入力しなければならず、そのため、ユーザに負荷がかかっている。
そこで、本発明に係るいくつかの実施形態では、帳票1の浮き上がりにより、一部分が傾いてしまっている帳票画像10の文字認識の際に、定義体3の定義領域4を補正する。図4Aは、一部分が傾いている帳票画像10に対して実行される従来の文字認識処理を例示している。一方、図4Bは、いくつかの実施形態にかかる定義体3の定義領域4の補正を用いた文字認識処理を例示する図である。図4Aの従来の文字認識処理では、定義体3の定義領域4から認識対象の文字列である「100,000,000」の末尾が定義領域4からはみだしており(図4の部分8)、また、定義領域4内に罫線の像7が含まれてしまっている。そのため、図4Aに示す例では、文字認識処理の結果、1つの文字として認識された領域を示す文字認識結果領域6に罫線の像7と、認識対象の文字列の末尾の「,000」が含まれており、1つの文字列として認識されてしまっている。そのため、認識対象の文字列を正しく認識できない。
一方、図4Bのいくつかの実施形態に係る定義体3の定義領域4の補正を用いた文字認識処理では、定義領域4の位置及び形状が、帳票画像10の部分的な傾きに応じて補正されている。そのため、定義領域4内に認識対象の文字列である「100,000,000」がすべて収まっており、また、文字認識処理に悪影響を及ぼす罫線の像7等の不要な領域が定義領域4に含まれていない。そのため、図4Bに示す例では、文字認識処理により認識対象の文字列のそれぞれの文字が文字認識結果領域6により囲まれており、認識対象の文字列が正しく認識できている。この様に、いくつかの実施形態によれば、帳票1の部分的な浮き上がりに起因して、帳票画像10の一部分が傾いてしまったとしても、定義体3の定義領域4が補正されるため文字認識率を向上させることができる。
図5は、いくつかの実施形態に係る定義体3の定義領域4の補正を用いて文字認識処理を実行する文字認識装置100の機能ブロック構成を例示する図である。文字認識装置100は、例えば、制御部500及び記憶部510を含んでいる。制御部500は、例えば取得部511、配置部512、判定部513、特定部514、算出部515、補正部516、及び文字認識処理部517などの機能部501を含んでいる。文字認識装置100の記憶部510は、例えば、プログラム520、並びに定義体3、及び罫線選択情報800,1100,1400などの情報530を記憶している。文字認識装置100の制御部500は、プログラム520を読み出して実行することで例えば取得部511、配置部512、判定部513、特定部514、算出部515、補正部516、及び文字認識処理部517などの機能部501として機能する。これらの各機能部501の詳細及び記憶部510に格納されている情報530の詳細については後述する。
以下、図6A〜K並びに図7A〜Bを参照して、第1の実施形態に係る定義領域4の補正を用いた文字認識処理を説明する。第1の実施形態では、帳票1に縦に折れ目が入り、一部分が浮いてしまった状態で撮像された画像2の帳票画像10の文字認識において、定義体3の定義領域4の補正を行う例を説明する。
図6Aから図6Kは、第1の実施形態に係る定義領域4の補正を用いた文字認識処理を説明する図である。図6Aは、帳票1をスキャナなどで読み取って得られた画像2を例示する図である。図6Aに例示すように、帳票1に縦に折れ目が入り、一部分が浮いてしまった状態で画像2は撮像されており、帳票画像10の右端が傾いている。例えば、図6Aに示されるような一部分が傾いた帳票画像10に対し、文字認識装置100の制御部500は文字認識処理を実行する。まず、制御部500は、帳票1の罫線に当たる罫線の像7を帳票画像10から抽出する。この罫線の像7の抽出は、例えば、既知の手法を用いて実行することが可能である。一実施形態においては、罫線の像7の抽出は、画像2から黒色のドットが連続している所定の長さの線を抽出し、その線が、抽出された別な線と繋がる場合に、罫線の像7とすることで抽出されてもよい。図6Bは、図6Aの帳票画像10における罫線の像7の抽出を例示する図であり、太線は罫線の像7として抽出された線を示している。
続いて、第1の実施形態では制御部500は、抽出された罫線の像7に合わせて定義体3の例えばサイズ及び向きなどを調整し、帳票画像10に定義体3を配置する。図6Cは、罫線の像7に基づいて、帳票画像10に定義体3の定義領域4を配置した状態を例示する図である。図示されるように、第1の実施形態では、帳票画像10の右側の領域は傾いているため、定義領域4の位置にズレが生じている。なお、図6Cに示す例では、例示のためにいくつかの定義領域4を配置する例を示したが、定義領域4は実際にはより多い数、例えば全ての記入欄毎に配置されていてもよい。或いは、より少ない数の定義領域4が帳票画像10に配置されてもよい。
続いて、第1の実施形態では制御部500は、帳票画像10の外周9を抽出する。図6Dは、帳票画像10の外周9の抽出を例示する図である。図6Dの例では、抽出された外周9が示されている。なお、帳票画像10の外周9の抽出は、例えば、スキャンの際に帳票1を乗せる台の色を黒等にし、白色の紙に印字された帳票1をスキャンするというように、例えばスキャン対象と背景となる台等との間の色差が大きくなるように構成し、スキャンされた画像2の淵から内側へ向かって黒色から白色へと変化する境界のドットを抽出することで行われてもよい。或いは、帳票画像10の外周9は、その他の既知の手法により抽出されてもよい。
帳票画像10の外周9を抽出後、制御部500は、帳票画像10の上辺及び下辺に折れ曲がり11があるか否かを判定し、折れ曲がり11が有る場合には、帳票画像10の上辺及び下辺での折れ曲がり11の位置を特定する。折れ曲がり11の位置の特定は、例えば、帳票画像10の上辺及び下辺上で直線性が失われる点の位置を特定することで行われてもよい。折れ曲がり11の位置を特定すると、制御部500は帳票画像10の上辺及び下辺の2つの折れ曲がり11の位置を結ぶ線分12を特定する。図6Eは、帳票画像10の上辺及び下辺における折れ曲がり11の特定と、折れ曲がり11を結ぶ線分12の特定を例示する図である。図示されるように、線分12を境に帳票画像10の右側の領域は傾いている。
続いて、制御部500は、帳票1における定義領域4の位置に応じて、定義領域4に近接する(例えば隣り合う)横方向の罫線の像7を選択する。そして、定義体3の横方向(図6Fの矢印15)に対して、選択した罫線の像7が成す角度13を算出する。なお、定義体3の縦方向及び横方向とは、定義体3を帳票1に合わせた際の帳票1の縦及び横方向とそれぞれ一致する方向であってよい。例えば、定義体3の縦方向及び横方向は、定義体3に位置情報が定義されている帳票1の縦及び横の罫線の向きとそれぞれ一致する方向であってもよい。或いは、定義体3の縦及び横方向は、定義体3に位置情報が定義されている定義領域4の縦及び横方向の辺とそれぞれ一致する方向であってもよい。また、制御部500は、選択した罫線の像7と、線分12との交点14をその罫線の像7の折れ曲がり位置として特定する。図6Fは、定義領域4の補正のための交点14及び角度13の特定を説明する図である。図6Fは、図6Aから図6Eにおいて例示した帳票画像10の「金額」の欄の周辺を拡大しており、定義領域4の直近上側の罫線の像7と、線分12との交点14が例示されている。また、定義体3の横方向(図6Fの矢印15)に対して、定義領域4の直近上側の罫線の像7が成す角度13を例示している。
続いて、図6Gに示すように、制御部500は、交点14を中心として、角度13で定義領域4を回転させて補正する。そして、図6Hに示すように、回転した定義領域4の縦方向の辺の向きを、最も近い縦方向の罫線の像7の向きと同じ方向になるように補正する。続いて、制御部500は、補正後の定義領域4内の領域を、画像2から切り出し(図6I)、切り出した画像を2値化した後(図6J)、2値化した画像に対して文字認識処理を実行する(図6K)。そのため、図6Kに例示するように、帳票画像10の右側の傾いている領域においても文字認識処理で正しく文字を認識することができる。
以上で述べたように、第1の実施形態によれば、帳票1に縦に折れ目が入り帳票画像10の一部分が傾いてしまっている場合においても、その傾きに起因する定義領域4のズレが補正される。そのため、定義領域4内に例えば罫線の像7などの文字認識に悪影響を及ぼす領域を含まずに文字認識を実行することができる。従って、文字認識の精度を向上させることができる。
以上の図6A〜図6Kを参照して述べた処理の動作フローを、図7A〜Bを参照して説明する。図7A〜Bは、第1の実施形態に係る帳票1に縦に折れ目が入り、帳票1の一部分が浮いてしまった状態で撮像された画像2の文字認識の際に定義領域4の補正を行う文字認識処理の動作フローを例示する図である。図7A〜Bの動作フローは、例えば、文字認識装置100の制御部500が記憶部510に格納されているプログラム520を読み出して実行することで実施される。一実施形態においては、文字認識装置100に文字認識処理の実行指示が入力されると図7A〜Bの動作フローは開始する。
ステップS701において、文字認識装置100の制御部500は、帳票1を撮像した画像2を取得する。ステップS702において、文字認識装置100の制御部500は、画像2内の帳票画像10から罫線の像7を抽出する。ステップS703において、制御部500は罫線の像7に合わせて、定義体3の例えばサイズ及び向きなどを調整し、帳票画像10に定義体3を配置する。続いてステップS704において、制御部500は帳票画像10の外周9を抽出する。
ステップS705において、制御部500は、抽出された外周9の形状に基づいて、帳票画像10の各辺において直線性がなくなる箇所を折れ曲がり11として特定し、特定された折れ曲がり11を結ぶ線分12を特定する。ステップS706において、制御部500は、折れ曲がり11が帳票画像10の上辺及び下辺の両方に存在するか否かを判定する。上述したように第1の実施形態では、帳票1の縦に折れ目が入り、帳票1の一部が浮いてしまった場合の定義領域4の補正を例示している。そのため、ステップS706において、帳票画像10の上辺及び下辺の両方に折れ曲がり11が存在しない場合には(ステップS706がNo)、本動作フローは終了する。一方、帳票画像10の上辺及び下辺の両方に折れ曲がり11が存在する場合には(ステップS706がYes)、フローはステップS707へと進む。
ステップS707からステップS715までの処理は帳票1に対する定義体3に含まれる定義領域4毎に繰り返される繰り返し処理である。ステップS707において、繰り返しの度に、制御部500は、定義体3のうちから定義領域4を一つずつ選択し、選択された定義領域4に対してステップS708からステップS715までの処理を実行する。ステップS708において、制御部500は、選択された定義領域4に近接する(例えば隣り合う)横方向の罫線の像7を選択する。一実施形態においては、制御部500は、選択された定義領域4の帳票1における位置に基づいて、罫線の像7を選択してもよい。図8A及び図8Bは、第1の実施形態に係る帳票1の縦方向に折れ目が入った場合における帳票1内での定義領域4の位置と、選択される罫線の像7との関係を例示する図である。
図8Aは、帳票1内での領域を表しており、帳票1は、左上の領域(図8Aの(1))、右上の領域(図8Aの(2))、左下の領域(図8Aの(3))、及び右下の領域(図8Aの(4))の4つの領域に区切られている。また、図8Bは、帳票1内で定義領域4が図8Aのいずれの領域に配置されているかと、それに応じた選択する罫線の像7との関係を示す罫線選択情報800を例示する図である。なお、罫線選択情報800は、例えば文字認識装置100の記憶部510に格納されている。図8A及び図8Bに示す例では、定義領域4が帳票1の左上の領域(図8Aの(1))及びに右上の領域(図8Aの(2))に配置されている場合には、定義領域4の直近上側にある罫線の像7を選択する。一方、定義領域4が帳票1の左下の領域(図8Aの(3))及びに右下の領域(図8Aの(4))に配置されている場合には、定義領域4の直近下側にある罫線の像7を選択する。
続いて、制御部500は、ステップS709において、選択した罫線の像7と、線分12との交点14を罫線の像7の折れ曲がりの位置として特定する。ステップS710において、制御部500は、ステップS703において帳票画像10に配置した定義体3の横方向に対して、選択した罫線の像7が成す角度13を算出する。例えば、角度13は、定義体3に位置情報が含まれている帳票1の横方向の罫線と、選択した罫線の像7とが成す角度13として算出されてもよい。或いは、この角度は、定義体3に位置情報が含まれている定義領域4の横方向の辺と、選択した罫線の像7とが成す角度13として算出されてもよい。
制御部500は、ステップS711において、算出した角度13で、交点14を中心として、ステップS707で選択した定義領域4を回転させ補正する。ステップS712において、制御部500は、定義領域4に直近の縦方向の罫線の像7の向きに、定義領域4の縦の辺の向きを合わせるように補正する。ステップS713において、制御部500は、補正後の定義領域4の枠内を画像2から切り出して2値化し、ステップS714において、切り出して2値化した領域に対して文字認識処理を実行する。ステップS715において、制御部500は、帳票1に対して定義されている定義体3に含まれる全ての定義領域4について、ステップS707〜ステップS715の処理が完了しているか否かを判定し、完了していない場合には、フローはステップS707へと戻る。一方、帳票1に対して定義されている定義体3内の全ての定義領域4について、ステップS707〜ステップS715の処理が完了している場合には、本動作フローは終了する。
以上で述べた、図7A〜Bの動作フローにより、帳票1に縦方向に折れ目が入った状態でスキャナ等により読み取りが行われて得られた画像2において文字認識を行う対象の帳票画像10の一部分が傾いていたとする。この場合にも、定義領域4を補正して文字認識処理を行うため、正しく文字を認識することができる。なお、帳票1に縦方向に折れ目が入る場合、帳票1の折れ目の影響による帳票画像10の傾きは、例えば、図6Aに示されるように、縦方向の罫線の像7よりも、横方向の罫線の像7をより大きな角度で傾かせやすい。そのため、第1の実施形態では、先に横方向の罫線の像7の傾きに合わせて定義領域4を補正するように構成している。
以上の図7A〜Bの動作フローにおいて、ステップS701の処理では、文字認識装置100の制御部500は取得部511として機能する。ステップS702からステップS703までの処理では、文字認識装置100の制御部500は配置部512として機能する。ステップS704からステップS706までの処理では、文字認識装置100の制御部500は判定部513として機能する。ステップS707からステップS709までの処理では、文字認識装置100の制御部500は、特定部514として機能する。ステップS710の処理において、文字認識装置100の制御部500は算出部515として機能する。ステップS711からステップS712までの処理において、文字認識装置100の制御部500は、補正部516として機能する。ステップS713からステップS714までの処理において、文字認識装置100の制御部500は、文字認識処理部517として機能する。
続いて、図9から図11を参照して、第2の実施形態に係る定義領域4の補正を用いた文字認識処理を説明する。第2の実施形態では、帳票1に横に折れ目が入り、一部分が浮いてしまった状態で撮像された画像2の帳票画像10の文字認識において、定義体3の定義領域4の補正を行う例を説明する。
図9Aから図9Dは、第2の実施形態に係る定義領域4の補正を説明する図である。図9Aは、帳票1をスキャナなどで読み取って得られた画像2の帳票画像10から折れ曲がり11の位置を特定し、折れ曲がり11を結ぶ線分12を特定した状態を示している。折れ曲がり11の位置を特定及び線分12の特定は、第1の実施形態で述べたのと類似する手法を用いて実施されてもよい。即ち、画像2から帳票画像10の外周9を抽出し、帳票画像10の左辺及び右辺に折れ曲がり11があるか否かを判定する。そして、折れ曲がり11が有る場合には、帳票画像10の折れ曲がり11の位置を特定する。折れ曲がり11の位置の特定は、例えば、帳票画像10の各辺で直線性が失われる点の位置を特定することで行われてもよい。例えば、この様にして折れ曲がり11の位置を特定すると、制御部500は、特定した折れ曲がり11を結ぶ線分12を特定する。なお、第2の実施形態においては、帳票1に横に折れ目が入る場合を例示しているため、図9Aに示されるように、折れ曲がり11の位置は帳票画像10の左辺及び右辺に存在している。
続いて、制御部500は、線分12を特定したあと、帳票1における定義領域4の位置に応じて、近傍にある(例えば隣り合う)縦方向の罫線の像7を選択する。そして、定義体3の縦方向(図9Bの矢印20)に対して、選択した罫線の像7が成す角度13を算出する。なお、定義体3の縦方向及び横方向とは、定義体3を帳票1に合わせた際の帳票1の縦及び横方向とそれぞれ一致する方向であってよい。例えば、定義体3の縦方向及び横方向は、定義体3に位置情報が定義されている帳票1の縦及び横の罫線の向きとそれぞれ一致する方向であってもよい。或いは、定義体3の縦及び横方向は、定義体3に位置情報が定義されている定義領域4の縦及び横方向の辺とそれぞれ一致する方向であってもよい。また、制御部500は選択した罫線の像7と、線分12との交点14をその罫線の像7の折れ曲がり位置として特定する。図9Bは、定義領域4の補正のための交点14及び角度13の特定を説明する図である。図9Bでは、図9Aにおいて例示した帳票画像10の「金額」の欄の線分12直下周辺を拡大しており、定義領域4の直近右側の罫線の像7と、線分12との交点14が例示されている。また、定義体3によって位置情報が示されている罫線の縦方向(図9Bの矢印20)に対して、定義領域4の直近右側の罫線の像7が成す角度13が例示されている。
続いて、図9Cに示すように、制御部500は、交点14を中心として、角度13で定義領域4を回転させて補正する。そして、図9Dに示すように、回転した定義領域4の横方向の辺の向きを、最も近い横方向の罫線の像7の向きと同じ方向になるように補正する。なお、図9C及び図9Dでは、補正前の定義領域4の位置を点線の矩形枠17で示す。図9C及び図9Dで述べた補正により、帳票1に横の折れ目が入り帳票画像10の一部分が傾いてしまっている場合においても、その傾きに起因する定義領域4のズレが補正される。そのため、定義領域4内に例えば罫線の像7などの文字認識に悪影響を及ぼす領域を含まずに文字認識を実行することができる。従って、文字認識の精度を向上させることができる。
以上の図9A〜図9Dを参照して述べた補正処理を含む第2の実施形態に係る文字認識処理の動作フローを、図10A〜Bを参照して説明する。図10A〜Bは、第2の実施形態に係る帳票1に横に折れ目が入り、帳票1の一部分が浮いてしまった状態で撮像された画像2の文字認識の際に定義領域4の補正を行う文字認識処理の動作フローを例示する図である。図10A〜Bの動作フローは、例えば、文字認識装置100の制御部500が記憶部510に格納されているプログラム520を読み出して実行することで実施される。一実施形態においては、文字認識装置100に文字認識処理の実行指示が入力されると図10A〜Bの動作フローは開始する。
ステップS1001において、文字認識装置100の制御部500は、帳票1を撮像した画像2を取得する。ステップS1002において、文字認識装置100の制御部500は、画像2内の帳票画像10から罫線の像7を抽出する。ステップS1003において、制御部500は罫線の像7に合わせて定義体3の例えばサイズ及び向きなどを調整し、帳票画像10に定義体3を配置する。続いてステップS1004において、制御部500は帳票画像10の外周9を抽出する。
ステップS1005において、制御部500は、抽出された外周9の形状に基づいて、帳票画像10の各辺において直線性がなくなる箇所を折れ曲がり11の位置として特定し、特定された折れ曲がり11を結ぶ線分12を特定する。ステップS1006において、制御部500は、折れ曲がり11が帳票画像10の左辺及び右辺の両方に存在するか否かを判定する。上述したように第2の実施形態では、帳票1の横方向に折れ目が入り、帳票1の一部が浮いてしまった場合の定義領域4の補正を例示している。そのため、ステップS1006において、帳票画像10の左辺及び右辺の両方に折れ曲がり11が存在しない場合には(ステップS1006がNo)、本動作フローは終了する。一方、帳票画像10の左辺及び右辺の両方に折れ曲がり11が存在する場合には(ステップS1006がYes)、フローはステップS1007へと進む。
ステップS1007からステップS1015までの処理は帳票1に対する定義体3に含まれる定義領域4毎に繰り返される繰り返し処理である。ステップS1007において、繰り返しの度に、制御部500は、定義体3のうちから定義領域4を一つずつ選択し、選択された定義領域4に対してステップS1008からステップS1015までの処理を実行する。ステップS1008において、制御部500は、選択された定義領域4の近接する(例えば隣り合う)縦方向の罫線の像7を選択する。一実施形態においては、制御部500は、選択された定義領域4の帳票1における位置に基づいて、罫線の像7を選択してもよい。図11A及び図11Bは、第2の実施形態に係る帳票1の縦方向に折れ目が入った場合における帳票1内での定義領域4の位置と、選択される罫線の像7との関係を例示する図である。
図11Aは、帳票1内での領域を表しており、帳票1は、左上の領域(図11Aの(1))、右上の領域(図11Aの(2))、左下の領域(図11Aの(3))、及び右下の領域(図11Aの(4))の4つの領域に区切られている。また、図11Bは、帳票1内で定義領域4が図11Aのいずれの領域に配置されているかと、それに応じた選択する罫線の像7との関係を示す罫線選択情報1100を例示する図である。なお、罫線選択情報1100は、例えば文字認識装置100の記憶部510に格納されている。図11A及び図11Bに示す例では、定義領域4が帳票1の左上の領域(図11Aの(1))及びに左下の領域(図11Aの(3))に配置されている場合には、定義領域4の直近左側にある罫線の像7を選択する(図11B)。一方、定義領域4が帳票1の右上の領域(図11Aの(2))及びに右下の領域(図11Aの(4))に配置されている場合には、定義領域4の直近右側にある罫線の像7を選択する(図11B)。
続いて、制御部500は、ステップS1009において、選択した罫線の像7と、線分12との交点14を罫線の像7の折れ曲がりの位置として特定する。ステップS1010において、制御部500は、ステップS1003で帳票画像10に配置した定義体3の縦方向に対して、選択した罫線の像7が成す角度13を算出する。例えば、角度13は、定義体3に示される帳票1の縦方向の罫線と、選択した罫線の像7とが成す角度13として算出されてもよい。或いは、この角度は、定義体3に示される定義領域4の縦方向の辺と、選択した罫線の像7とが成す角度13として算出されてもよい。
制御部500は、ステップS1011において、算出した角度13で、交点14を中心として、ステップS1007で選択した定義領域4を回転させ補正する。ステップS1012において、制御部500は、定義領域4に直近の横方向の罫線の像7の向きに、定義領域4の横の辺の向きを合わせて補正する。ステップS1013において、制御部500は、補正後の定義領域4の枠内を画像2から切り出して2値化し、ステップS1014において、切り出して2値化した領域に対して文字認識処理を実行する。ステップS1015において、制御部500は、帳票1に対して定義されている定義体3に含まれる全ての定義領域4について、ステップS1007〜ステップS1015の処理が完了しているか否かを判定し、完了していない場合には、フローはステップS1007へと戻る。一方、帳票1に対して定義されている定義体3内の全ての定義領域4について、ステップS1007〜ステップS1015の処理が完了している場合には、本動作フローは終了する。
以上で述べた、図11の動作フローにより、帳票1に横方向に折れ目が入った状態でスキャナ等により読み取りが行われ、得られた文字認識を行う対象の画像2において帳票画像10の一部分が傾いていたとする。この場合にも、定義領域4を補正して文字認識処理を行うため、正しく文字を認識することができる。なお、第2の実施形態において例示したように帳票1に横方向に折れ目が入る場合、帳票1の折れ目の影響による帳票画像10の傾きは、例えば、図9Aに例示されるように、横方向の罫線の像7よりも、縦方向の罫線の像7をより大きな角度で傾かせやすい。そのため、第2の実施形態では、先に縦方向の罫線の像7の傾きに合わせて定義領域4を補正するように構成している。
以上の図11の動作フローにおいて、ステップS1001の処理では、文字認識装置100の制御部500は取得部511として機能する。ステップS1002からステップS1003の処理では、文字認識装置100の制御部500は配置部512として機能する。ステップS1004からステップS1006までの処理では、文字認識装置100の制御部500は判定部513として機能する。ステップS1007からステップS1009までの処理では、文字認識装置100の制御部500は、特定部514として機能する。ステップS1010の処理において、文字認識装置100の制御部500は算出部515として機能する。ステップS1011からステップS1012までの処理において、文字認識装置100の制御部500は、補正部516として機能する。ステップS1013からステップS1014までの処理において、文字認識装置100の制御部500は、文字認識処理部517として機能する。
続いて、図12から図14を参照して、第3の実施形態に係る定義領域4の補正を用いた文字認識処理を説明する。第3の実施形態では、帳票1に斜めに折れ目が入り、一部分が浮いてしまった状態で撮像された画像2の帳票画像10の文字認識において、定義体3の定義領域4の補正を行う例を説明する。
図12Aから図12Eは、第3の実施形態に係る定義領域4の補正を説明する図である。図12Aは、帳票1をスキャナなどで読み取って得られた画像2の帳票画像10から折れ曲がり11の位置を特定し、折れ曲がり11を結ぶ線分12を特定した状態を示している。折れ曲がり11の位置の特定及び線分12の特定は、第1及び第2の実施形態で述べたのと類似する手法を用いて実施されてもよい。即ち、画像2から帳票画像10の外周9を抽出し、帳票画像10の上辺及び下辺のいずれか一方並びに左辺及び右辺のいずれか一方に折れ曲がり11が有る場合に、その帳票画像10の折れ曲がり11の位置を特定する。折れ曲がり11の位置の特定は、例えば、帳票画像10の各辺上で直線性が失われる点の位置を特定することで行われてもよい。例えば、この様にして折れ曲がり11の位置を特定すると、制御部500は、特定した折れ曲がり11を結ぶ線分12を特定する。なお、第3の実施形態においては、帳票1に斜めに折れ目が入る場合を例示しているため、折れ曲がり11は帳票画像10の上辺及び下辺のいずれか一方並びに左辺及び右辺のいずれか一方に存在する。図12Aの例では、帳票画像10の上辺と右辺に折れ曲がり11がある場合を例示している。
続いて、制御部500は、線分12を特定したあと、帳票1における定義領域4の近傍の縦方向の罫線の像7及び横方向の罫線の像7をそれぞれ選択する。図12Bは、図12Aにおいて例示した帳票画像10の「金額」の欄の周辺を拡大している。制御部500は、選択した縦方向の罫線の像7と、線分12との第1の交点30をその縦方向の罫線の像7の折れ曲がり位置として特定する。一方、選択した横方向の罫線の像7と、線分12との第2の交点32をその横方向の罫線の像7の折れ曲がり位置として特定する。そして、制御部500は、第1の交点30を中心として、定義体3の縦方向(図12Bの矢印20)に対して、選択した縦方向の罫線の像7が成す第1の角度31を算出する。また、第2の交点32を中心として、定義体3の横方向(図12Bの矢印15)に対して、選択した横方向の罫線の像7が成す第2の角度33を算出する。そして、算出した第1の角度31と第2の角度33とを比較し、より大きい角度を成した罫線の像7の軸を選択し、その軸方向の定義領域4の辺を先に補正する。即ち、例えば図12Bでは、第1の角度31の方が第2の角度33よりも大きな角度を有するため、罫線の像7の縦方向の軸を選択し、罫線の像7の縦方向の軸と対応する定義領域4の縦の辺に対して先に補正を行う。
制御部500は、図12Cに示すように、選択した縦方向の罫線の像7の交点である第1の交点30を中心として、第1の角度31で定義領域4を回転させて定義領域4の縦の辺のうち縦方向の罫線の像7に近い側の辺を補正する。続いて、図12Dに示すように、帳票画像10上の罫線の像7の横幅に合うように回転後の定義領域4の横幅を小さくし、定義領域4の縦の辺のうち選択した縦方向の罫線の像7に遠い側の辺を補正する。その後、図12Eに示すように、回転した定義領域4の横方向の辺の向きを、最も近い横方向の罫線の像7の方向と同じ方向になるように補正することで、選択しなかった罫線の像7の軸方向の定義領域4の辺の補正を行う。なお、図12Bから図12Eにおいては、補正前の定義領域4の位置を点線の矩形枠17で示している。図12Bから図12Eで述べた補正により、帳票1に斜めに折れ目が入り帳票画像10の一部分が傾いてしまっている場合においても、その傾きに起因する定義領域4のズレが補正される。そのため、定義領域4内に例えば罫線の像7などの文字認識に悪影響を及ぼす領域を含まずに、文字認識を実行することができる。従って、文字認識の精度を向上させることができる。
以上の図12A〜図12Eを参照して述べた補正処理を含む第3の実施形態に係る動作フローを、図13A〜Bを参照して説明する。図13A〜Bは、第3の実施形態に係る帳票1に斜めに折れ目が入り、帳票1の一部分が浮いてしまった状態で撮像された画像2の文字認識の際に定義領域4の補正を行う文字認識処理の動作フローを例示する図である。図13A〜Bの動作フローは、例えば、文字認識装置100の制御部500が記憶部510に格納されているプログラム520を読み出して実行することで実施される。一実施形態においては、文字認識装置100に文字認識処理の実行指示が入力されると図13A〜Bの動作フローは開始する。
ステップS1301において、文字認識装置100の制御部500は、帳票1を撮像した画像2を取得する。ステップS1302において、制御部500は、画像2内の帳票画像10から罫線の像7を抽出する。ステップS1303において、制御部500は罫線の像7に合わせて定義体3の例えばサイズ及び向きなどを調整し、帳票画像10に定義体3を配置する。続いてステップS1304において、制御部500は帳票画像10の外周9を抽出する。
ステップS1305において、制御部500は、抽出された外周9の形状に基づいて、帳票画像10の各辺において直線性がなくなる箇所を折れ曲がり11の位置として特定し、特定された折れ曲がり11を結ぶ線分12を特定する。ステップS1306において、制御部500は帳票画像10の折れ曲がり11が上辺又は下辺のいずれか一方、並びに左辺又は右辺のいずれか一方に存在するか否かを判定する。上述したように第3の実施形態では、帳票1の斜め方向に折れ目が入り、帳票1の一部が浮いてしまった場合の定義領域4の補正を例示している。そのため、ステップS1306において、帳票画像10の上辺又は下辺のいずれか一方、並びに左辺又は右辺のいずれか一方に折れ曲がり11が存在しない場合には(ステップS1306がNo)、本動作フローは終了する。一方、帳票画像10の上辺又は下辺のいずれか一方、並びに左辺又は右辺のいずれか一方に折れ曲がり11が存在する場合には(ステップS1306がYes)、フローはステップS1307へと進む。
ステップS1307からステップS1316までの処理は帳票1に対する定義体3に含まれる定義領域4毎に繰り返される繰り返し処理である。ステップS1307において、繰り返しの度に、制御部500は、定義体3のうちから定義領域4を一つずつ選択し、選択された定義領域4に対してステップS1308からステップS1316までの処理を実行する。ステップS1308において、制御部500は、選択された定義領域4に近接する(例えば隣り合う)縦方向と横方向の2つの罫線の像7を選択する。一実施形態においては、制御部500は、選択された定義領域4の帳票1における位置に基づいて、定義領域4と隣り合う縦方向と横方向の2つの罫線の像7を選択してもよい。図14A及び図14Bは、第3の実施形態に係る帳票1の斜め方向に折れ目が入った場合における、帳票1内での定義領域4の位置と、選択される縦方向と横方向の2つの罫線の像7との関係を例示する図である。
図14Aは、帳票1内での領域を表しており、帳票1は、左上の領域(図14Aの(1))、右上の領域(図14Aの(2))、左下の領域(図14Aの(3))、及び右下の領域(図14Aの(4))の4つの領域に区切られている。また、図14Bは、帳票1内で定義領域4が図14Aのいずれの領域に配置されているかと、それに応じた選択する縦方向と横方向の2つの罫線の像7との関係を示す罫線選択情報1400を例示する図である。なお、罫線選択情報1400は、例えば文字認識装置100の記憶部510に格納されている。図14A及び図14Bに示す例では、定義領域4が帳票1の左上の領域(図11Aの(1))に配置されている場合には、定義領域4の直近上側にある横方向の罫線の像7と、定義領域4の直近右側にある縦方向の罫線の像7とを選択する(図14B)。定義領域4が帳票1の右上の領域(図14Aの(2))に配置されている場合には、定義領域4の直近上側にある横方向の罫線の像7と、定義領域4の直近左側にある縦方向の罫線の像7とを選択する(図14B)。定義領域4が帳票1の左下の領域(図11Aの(3))に配置されている場合には、定義領域4の直近下側にある横方向の罫線の像7と、定義領域4の直近右側にある縦方向の罫線の像7とを選択する(図14B)。定義領域4が帳票1の右下の領域(図11Aの(4))に配置されている場合には、定義領域4の直近下側にある横方向の罫線の像7と、定義領域4の直近左側にある縦方向の罫線の像7とを選択する(図14B)。
続いて、制御部500は、ステップS1309において、選択した2つの罫線の像7と線分12との2つの交点を特定する。即ち、ステップS1308で選択した縦方向の罫線の像7と、線分12との第1の交点30と、ステップS1308で選択した横方向の罫線の像7と線分12との第2の交点32とを罫線の像7の折れ曲がりの位置としてそれぞれ特定する。ステップS1310において、制御部500は、ステップS1303で帳票画像10に配置した定義体3の縦方向に対して、縦方向の罫線の像7が成す第1の角度31と、定義体3の横方向に対して、横方向の罫線の像7が成す第2の角度33と、をそれぞれ算出する。なお、例えば、定義体3の縦方向及び横方向とは、例えば、定義体3を帳票1に合わせた際の帳票1の縦及び横方向とそれぞれ一致する方向であってもよい。例えば、定義体3の縦方向及び横方向は、定義体3に位置情報が定義されている帳票1の縦及び横の罫線の向きとそれぞれ一致する方向であってもよい。或いは、定義体3の縦及び横方向は、定義体3に位置情報が定義されている定義領域4の縦及び横方向の辺とそれぞれ一致する方向であってもよい。
続いて、ステップS1311において、制御部500は、算出した第1の角度31と第2の角度33とを比較し、より大きい角度を有する罫線の像7の軸を選択し、選択した罫線の像7の軸と対応する定義領域4の辺に対して先に補正を行う。即ち、例えば図12Bに示す例では、第1の角度31の方が第2の角度33よりも大きな角度を有するため、縦方向の罫線の像7の軸を選択し、縦方向の罫線の像7の軸と対応する定義領域4の縦の辺に対して先に補正を行う。なお、第2の角度33の方が第1の角度31よりも大きな角度を有する場合には、横方向の罫線の像7の軸と対応する定義領域4の横の辺に対して先に補正を行う。続いて、制御部500は、選択した罫線の像7の軸に存在する交点(例えば、図12Bの例では第1の交点30)を中心として、より大きい値を有した角度(例えば、図12Bの例では第1の角度31)で定義領域4を回転させて補正する。続いて、ステップS1312において、制御部500は、図12Dを参照して述べたように、定義領域4の辺のうちで、ステップS1312で回転し補正した辺と対をなす対向辺を、帳票画像10上の罫線の像7の幅に合わせて小さくするように補正する。ステップS1313において、制御部500は、ステップS1312及びステップS1313で補正した辺以外の定義領域4の残りの辺の向きを、直近の罫線の像7の向きに合わせて補正する。なお、定義領域4の残りの辺が定義領域4の横の辺である場合には、直近の横の罫線の像7の向きに合わせて補正を行い、一方、定義領域4の残りの辺が定義領域4の縦の辺である場合には、直近の縦の罫線の像7の向きに合わせて補正を行う。
続いて、ステップS1314において、制御部500は、補正後の定義領域4の枠内を画像2から切り出して2値化し、ステップS1315において、2値化した領域に対して文字認識処理を実行する。続いて、ステップS1316において、制御部500は、帳票1に対して定義されている定義体3内の全ての定義領域4について、ステップS1307〜ステップS1316の処理が完了しているか否かを判定し、完了していない場合には、フローはステップS1307へと戻る。一方、帳票1に対して定義されている定義体3内の全ての定義領域4について、ステップS1307〜ステップS1316の処理が完了している場合には、本動作フローは終了する。
以上で述べた、図13A〜Bの動作フローにより、帳票1に斜め方向に折れ目が入った状態でスキャナ等により読み取りが行われ、文字認識対象の画像2において帳票画像10の一部分が傾いていたとしても、定義領域4を補正して文字認識処理を行うことができるため、正しく文字を認識することができる。
以上の図13A〜Bの動作フローにおいて、ステップS1301の処理では、文字認識装置100の制御部500は取得部511として機能する。ステップS1302からステップS1303までの処理では、文字認識装置100の制御部500は配置部512として機能する。ステップS1304からステップS1306までの処理では、文字認識装置100の制御部500は判定部513として機能する。ステップS1307からステップS1309までの処理では、文字認識装置100の制御部500は、特定部514として機能する。ステップS1310の処理において、文字認識装置100の制御部500は算出部515として機能する。ステップS1311からステップS1313までの処理において、文字認識装置100の制御部500は、補正部516として機能する。ステップS1313からステップS1314までの処理において、文字認識装置100の制御部500は、文字認識処理部517として機能する。
以上の第1から第3の実施形態で例示したように、いくつかの実施形態によれば、画像2において帳票画像10の一部分が傾いてしまった場合にも、定義領域4を補正して文字認識を行うため、正しい文字を認識することができる。そのため、帳票1の文字認識率を向上させることができる。また、定義領域4を補正するため、画像2中の帳票画像10に補正を行う必要はない。
なお、以上で述べた第1から第3の実施形態では、文字認識を実行する対象として帳票1を撮像した画像2を例に説明を行った。しかしながら、本発明に係る実施形態はこれに限定されるものではなく、文字認識を実行する対象に罫線が含まれていれば、帳票1以外のその他のものに対してもいくつかの実施形態を適用することができる。
また、上述の動作フローにおいて、例えば図7A〜BのステップS714、図10A〜BのステップS1014、図13A〜BのステップS1315で実行される文字認識処理の結果が悪い場合に、定義領域4を切り出し2値化した(図7A〜BのステップS713、図10A〜BのステップS1013、図13A〜BのステップS1314)画像を更に補正して、文字認識を行なうように構成してもよい。図15A及び図15Bは、文字認識を行なう前の追加の補正処理を例示する図である。例えば、図15Aに示すように、切り出し2値化した画像を回転し補正してもよい。或いは、帳票1の折れ曲がりの角度により、帳票画像10上の文字が縮んでしまうため、2値化した画像を伸張により補正してから文字認識を行なってもよい。図15Bは、切り出し2値化した画像を縦方向に伸張して補正する例を示している。
図16は、いくつかの実施形態に係る、文字認識装置100を実現するためのコンピュータ1600のハードウェア構成を例示する図である。図16の文字認識装置100を実現するためのハードウェア構成は、例えば、プロセッサ1601、メモリ1602、記憶装置1603、読取装置1604、通信インタフェース1606、及び入出力インタフェース1607を備える。なお、プロセッサ1601、メモリ1602、記憶装置1603、読取装置1604、通信インタフェース1606、入出力インタフェース1607は、例えば、バス1608を介して互いに接続されている。
プロセッサ1601は、メモリ1602を利用して上述の動作フローの手順を記述したプログラム520を実行することにより、上述した各機能部の一部または全部の機能を提供する。例えば、文字認識装置100の制御部500は、プロセッサ1601であり、また、記憶部510は、例えばメモリ1602、記憶装置1603、及び着脱可能記憶媒体1605を含んでいる。文字認識装置100のプロセッサ1601は、例えば、記憶装置1603に格納されているプログラム520を読み出して実行することで、取得部511、配置部512、判定部513、特定部514、算出部515、補正部516、及び文字認識処理部517として機能する。
文字認識装置100の記憶装置1603には、例えば、プログラム520、定義体3、罫線選択情報800,1100,及び1400が格納されている。メモリ1602は、例えば半導体メモリであり、RAM領域及びROM領域を含んで構成される。記憶装置1603は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、又は外部記録装置である。
読取装置1604は、プロセッサ1601の指示に従って着脱可能記憶媒体1605にアクセスする。着脱可能記憶媒体1605は、例えば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD−ROM、DVD等)などにより実現される。通信インタフェース1606は、プロセッサ1601の指示に従ってネットワーク1610を介してデータを送受信する。入出力インタフェース1607は、例えば、ユーザからの指示を受け付けるキーボード及びマウスなどの入力装置、並びにディスプレーなどの表示装置、スピーカなどの音声装置などの出力装置との間のインタフェースに相当する。入出力インタフェース1607は、スキャナなどの画像形成装置とのインタフェースを含んでよく、撮像された画像2を画像形成装置から受信してもよい。
実施形態に係る各プログラム520は、例えば、下記の形態で文字認識装置100に提供される。
(1)記憶装置1603に予めインストールされている。
(2)着脱可能記憶媒体1605により提供される。
(3)プログラムサーバなどのサーバ1609から提供される。
図17は、いくつかの実施形態に係る文字認識装置100が運用されるシステム構成1700を例示する図である。システム構成1700は、例えば、文字認識装置100、画像形成装置1701、及び情報処理装置1702を含んでいる。画像形成装置1701は、例えばスキャナ、複合機などの帳票1等を撮像して画像化する装置を含む。情報処理装置1702は、例えば、文字認識装置100へと画像2のデータを送信し、文字認識処理を依頼するクライアントコンピュータ、又は文字認識装置100へと画像2を提供するサーバ等を含む。なお、情報処理装置1702のハードウェア構成は、例えば、図16に例示したコンピュータ1600と同様の構成であってもよい。
実施形態に係る文字認識処理が実行される画像2のデータは、例えば、下記の形態で文字認識装置100に提供される。
(1)記憶装置1603に記憶されている。
(2)着脱可能記憶媒体1605により提供される。
(3)スキャナ等の画像形成装置1701、並びにクライアントPC及びサーバコンピュータなどの情報処理装置1702からネットワーク1610を介して或いは入出力インタフェース1607を介して提供される。
文字認識装置100は、例えば、クライアントPCから画像2のデータを受信し、受信した画像2に対して文字認識処理を実行した結果をクライアントPCへと返信するというように、クラウドで文字認識処理を実行するサーバとして機能してもよい。
以上において、いくつかの実施形態について説明した。しかしながら、本発明に係る実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態及び代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨及び範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、本発明に係る種々の実施形態を成すことができることが理解されよう。或いは、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して本発明に係る種々の実施形態が実施され得ることが当業者には理解されよう。