(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図1は、本実施の形態における帳票処理装置を備えるシステム構成図である。
【0017】
図1において、帳票処理システム1は、画像読取装置10、画像読取装置10と接続された帳票処理装置20を備える。ここで、本実施の形態の帳票処理システム1は、例えば金融機関や公共機関等における帳票処理に用いられている。
【0018】
画像読取装置10は、例えば、イメージスキャナであり、帳票を光学的に読み取り、帳票処理装置20に送出する。
【0019】
帳票処理装置20は、例えば、ワークステーション、サーバ、パーソナルコンピュータ等のコンピュータの機能を備えており、後述する帳票処理を実行する。
【0020】
図2は、本実施の形態における帳票処理装置の機能ブロック図である。
図2において、帳票処理装置20は、罫線抽出部21、罫線レイアウト照合部22、文字認識項目照合部23、文字認識項目補正部24及び文字認識部25を備え、定義帳票情報データベース(DB)30とアクセス可能に接続する。
【0021】
罫線抽出部21は、画像読取装置10で読み込んだ帳票画像から罫線レイアウトを抽出する。
【0022】
罫線レイアウト照合部22は、前記罫線抽出部21によって抽出された罫線レイアウトに基づいて、複数の帳票レイアウトが格納された定義帳票情報データベース30を参照し、所定範囲内で前記罫線レイアウトと一致する帳票レイアウトを照合する。
【0023】
文字認識項目照合部23は、前記罫線レイアウト照合部によって照合された罫線レイアウトと帳票レイアウトについて、対応する文字認識項目を照合する。
【0024】
文字認識項目補正部24は、前記文字認識項目照合部23によって照合された前記帳票レイアウトの文字認識項目を前記罫線レイアウトの文字認識項目と一致するように補正する。
【0025】
文字認識部25は、前記文字認識項目補正部24によって補正された帳票レイアウトに従って、前記罫線レイアウト内の文字を認識する。
【0026】
図3は、本実施の形態における帳票処理装置のハードウェア構成図である。
図3において、帳票処理装置20は、CPU(Central Processing Unit)201、入力装置202、出力装置203、ROM(Read Only Memory)204、RAM(Random Access Memory)205、インターフェース(I/F)206がバス207に接続されて構成されている。入力装置202は、例えば、キーボード、ジョイスティック、ライトペン、マウス、タッチパッド、タッチパネル、トラックボール等、各種のデータや信号等を入力する。出力装置203は、例えば、LCD(Liquid Crystal Display)等の各種ディスプレイ、プリンタ等、画像やその他の情報を出力する。ROM204は、帳票処理装置20において実行する帳票処理を実行するプログラムの他、帳票処理装置20の各機能を制御し実行するための制御プログラム及びテーブルデータなどを収納する。RAM205は、出力装置203用のフレームバッファや一部のアプリケーションプログラム等を格納する。インターフェース206は、USB(Universal Serial Bus)等のシリアルインターフェースやイーサネット(登録商標)等のパラレルインターフェース等、外部機器と接続するためのユニットである。CPU201は、これらの各部を制御している。
【0027】
本実施の形態における帳票処理は、上述した帳票処理装置20によって実行される。帳票処理装置20によって実行される帳票処理は、まず、予め登録した定義体から、帳票の画像データにおける第1の罫線レイアウトとの一致度が高い第2の罫線レイアウトを有する定義体を抽出する。第1の罫線レイアウトと第2の罫線レイアウトとの間に相違があり、かつその相違箇所に文字認識項目が含まれている場合、第2の罫線レイアウトの相違箇所を第1の罫線レイアウトにおける文字認識項目が含まれるよう補正した定義体を作成する。そして、この補正した定義体を使用して帳票の画像データに対する文字認識を行う。これにより、帳票の一部分が異なる複数種類の類似帳票に対する文字認識を、1つの共通の定義体に基づいて行うことが可能となる。また、本実施の形態における帳票処理によれば、作成する定義体の数を減らすことができ、作成作業の負荷を軽減できる。
【0028】
次に、
図4乃至
図26を用いて、本実施の形態を詳細に説明する。
図4及び
図9は、本実施の形態において実行される帳票処理の流れを示すフローチャートである。
図5は、帳票イメージの例を示す図である。
図6は、帳票イメージから抽出した罫線レイアウトの例を示す図である。
図7は、罫線レイアウトから抽出した横罫線情報の例を示す図である。
図8は、罫線レイアウトから抽出した縦罫線情報の例を示す図である。
図10は、定義体に登録されている帳票イメージの例を示す図である。
図11は、定義体に登録されている罫線レイアウトの例を示す図である。
図12は、定義体に登録されている横罫線情報の例を示す図である。
図13は、定義体に登録されている縦罫線情報の例を示す図である。
図14及び
図16は、サブルーチン「罫線レイアウト照合処理」の流れを示すフローチャートである。
図15は、横罫線情報の照合の例を示す図である。
図17は、サブルーチン「文字認識項目照合/補正処理」の流れを示すフローチャートである。
図18は、サブルーチン「文字項目罫線照合処理」の流れを示すフローチャートである。
図19は、定義体に登録されている項目定義情報の例を示す図である。
図20は、帳票と定義体の認識項目の比較を示す図である。
図21は、項目情報の横罫線の比較を示す図である。
図22は、項目情報の縦罫線の比較を示す図である。
図23及び
図26は、サブルーチン「文字項目定義補正処理」の流れを示すフローチャートである。
図24は、項目情報の横罫線の補正を示す図である。
図25は、定義体の補正を示す図である。
【0029】
まず、帳票処理装置20は、
図4のステップS401において、オペレータからの指示として、帳票に対するイメージ読み取りの指示、及び読み取った帳票のOCR処理の指示を受け取る。
【0030】
ステップS402において、ステップS401で受け取った指示に基づいて、イメージスキャナを用いて帳票を走査し、
図5に示すような帳票イメージ(認識対象イメージ)を取得する。
【0031】
ステップS403において、ステップS402で取得した帳票イメージから、
図6に示すように、同一色の画素が縦、または横方向に連続して並んでいる箇所を罫線として検出する。そして、検出した罫線に関する罫線レイアウト情報を作成する。ここで、罫線レイアウト情報は、開始座標情報、終了座標情報、及び太さ情報を含む。また、ここで作成される罫線レイアウト情報は、所定の長さを超える罫線を対象にしており、例えば、金額欄の縦の罫線は対象外である。
【0032】
ステップS404において、ステップS403で作成した罫線レイアウト情報から、帳票照合用に横罫線情報と縦罫線情報を取出し、それぞれに番号を付す。例えば、
図7に示すように、取り出された9本の横罫線701乃至709に順に番号を付す。また、
図8に示すように、取り出された4本の縦罫線801乃至804に順に番号を付す。
【0033】
次に、帳票処理装置20は、定義帳票情報データベース30に格納された帳票について、
図9のステップS901乃至S905のループ処理を実行する。
【0034】
まず、ステップS901において、定義帳票情報データベース30から、
図10に示すような帳票の定義体を順に取り出す。
図10に示すような帳票の定義体は、
図11に示すような罫線レイアウト、
図12に示すような横罫線情報、及び
図13に示すような縦罫線情報を含む。
図12に示すような定義体の横罫線情報には、9本の横罫線1201乃至1209に番号が順に付されている。また、
図13に示すような定義体の縦罫線情報には、4本の縦罫線1301乃至1304に番号が順に付されている。
【0035】
そして、帳票処理装置20は、ステップS902において、サブルーチン「罫線レイアウト照合処理」を実行し、イメージスキャナを用いて取得した帳票の罫線レイアウトと、ステップS901で定義帳票情報データベース30から取り出した定義体の罫線レイアウトとを比較する。
【0036】
サブルーチン「罫線レイアウト照合処理」について、
図14、
図15及び
図16を用いて説明する。
【0037】
まず、定義体及び帳票の基準横罫線の組み合わせについて、
図14のステップS1401乃至S1405のループ処理を実行する。定義体をベースにして基準横罫線を変更しながら、一致率の高い横罫線を探索する。例えば、定義体の横罫線1201と帳票の横罫線701、定義体の横罫線1201と帳票の横罫線702、定義体の横罫線1201と帳票の横罫線703、・・・、定義体の横罫線1202と帳票の横罫線701等と、基準横罫線を変更しながら、
図14のステップS1401乃至S1405のループ処理をそれぞれ実行して探索する。
【0038】
このループ処理内において、定義体の横罫線について、ステップS1401乃至S1403のループ処理を実行する。
【0039】
ステップS1401において、「定義体の基準横罫線」と「定義体の横罫線」の差を求め、「帳票の基準横罫線」に求めた差を適用し、所定のマージン内にある帳票の横罫線を探索する。例えば、
図12に示した横罫線1201乃至1209の任意の1本、横罫線1201を定義体の基準横罫線とし、
図7に示した横罫線701乃至709の任意の1本、横罫線701を帳票の基準横罫線とした場合を例にして説明する。まず、定義体の基準横罫線1201と、1番目の横罫線としての横罫線1201の差を求める。ここでは、
図15の(A)中に記した(1)に示すように、縦方向の座標値の差を求める。横罫線1201は、基準横罫線1201そのものであるので、差は「0」となる。帳票の基準横罫線701に求めた差「0」を適用し、
図15の(B)中に記した(1)に示すように、所定のマージン内にある帳票の横罫線を探索する。例えば、「帳票の基準横罫線701の縦方向の座標値」+「0」±「マージン」内にある帳票の横罫線を探索する。
【0040】
ステップS1402において、ステップS1401で帳票の横罫線が探索できたか否かを判断する。探索できた場合(ステップS1402:Yes)、上述の例では、横罫線701が探索されるので、ステップS1403において、横罫線1201と横罫線701の一致した長さを算出し、記録する。ここでは、「定義側の罫線」と「帳票側の罫線」の長さの小さい方を一致と見なす。上述の例では、
図15の(C)に示すように、一致長さ「23」を記録してステップS1401に戻る。ここで、1回目のループ処理から抜ける。
【0041】
2回目のループ処理のステップS1401において、定義体の基準横罫線1201と、2番目の横罫線としての横罫線1202の差を求める。
図15の(A)中に記した(2)に示すように、縦方向の座標値の差「1」を求める。帳票の基準横罫線701に求めた差「1」を適用し、
図15の(B)中に記した(2)に示すように、所定のマージン内にある帳票の横罫線702を探索する。そして、ステップS1402で探索すると(ステップS1402:Yes)、ステップS1403において、横罫線1202と横罫線702の一致した長さ「8」を算出し、
図15の(C)に示すように、一致長さ「8」を記録してステップS1401に戻る。
【0042】
同様に、3回目のループ処理のステップS1401において、定義体の基準横罫線1201と、3番目の横罫線としての横罫線1203の差を求める。
図15の(A)中に記した(3)に示すように、縦方向の座標値の差「3」を求める。帳票の基準横罫線701に求めた差「3」を適用し、
図15の(B)中に記した(3)に示すように、所定のマージン内にある帳票の横罫線703を探索する。そして、ステップS1402で探索すると(ステップS1402:Yes)、ステップS1403において、横罫線1203と横罫線703の一致した長さ「12」を算出し、
図15の(C)に示すように、一致長さ「12」を記録してステップS1401に戻る。
【0043】
同様に、4回目のループ処理のステップS1401において、定義体の基準横罫線1201と、4番目の横罫線としての横罫線1204の差を求める。
図15の(A)中に記した(4)に示すように、縦方向の座標値の差「5」を求める。帳票の基準横罫線701に求めた差「5」を適用し、
図15の(B)中に記した(4)に示すように、所定のマージン内にある帳票の横罫線704を探索する。そして、ステップS1402で探索すると(ステップS1402:Yes)、ステップS1403において、横罫線1204と横罫線704の一致した長さ「12」を算出し、
図15の(C)に示すように、一致長さ「12」を記録してステップS1401に戻る。
【0044】
このような定義体の横罫線の数だけループを繰り返した後、ステップS1404に進む。
【0045】
ステップS1404において、上述のようにして算出した一致長さの合計を算出し、バッファに一時的に退避した一致長さの合計と比較して大きいか否かを判断する。最初は、一致長さの合計が退避されていないので、例えば、初期値「0」と比較する。
【0046】
そして、大きいと判断された場合(ステップS1404:Yes)、ステップS1405において、算出した一致長さの合計、及び基準罫線として使用した罫線を、バッファに一時的に退避する。他方、大きいと判断されなかった場合(ステップS1404:No)、ステップS1405をスキップする。
【0047】
以上のステップS1401乃至S1405のループ処理を、定義体及び帳票の基準横罫線の組み合わせの数だけ繰り返す。
【0048】
次に、ステップS1406において、一致長さの合計から一致率を算出する。例えば、一致長さの合計を定義体の横罫線の長さの合計で除算して求める。
図15の(C)に示した例の場合、一致率は、およそ92.1%となる。
【0049】
ステップS1407において、ステップS1406で算出した一致率が所定値以上であるか否か、例えば80%以上であるか否かを判断する。
【0050】
所定値以上でなければ(ステップS1407:No)、サブルーチン「罫線レイアウト照合処理」を終了し、イメージスキャナを用いて取得した帳票の罫線レイアウトと、定義帳票情報データベース30から取り出した定義体の罫線レイアウトの比較結果が、「不一致」であるとして
図9の「帳票処理」に戻る。
【0051】
他方、所定値以上であれば(ステップS1407:Yes)、
図16のステップS1601に進む。
【0052】
図16のステップS1601乃至S1607は、横罫線について実行した
図14のステップS1401乃至1407と同様の処理を、縦罫線について実行する。
【0053】
まず、定義体及び帳票の基準縦罫線の組み合わせについて、
図16のステップS1601乃至S1605のループ処理を実行する。定義体をベースにして基準縦罫線を変更しながら、一致率の高い縦罫線を探索する。例えば、定義体の縦罫線1301と帳票の縦罫線801、定義体の縦罫線1301と帳票の縦罫線802、定義体の縦罫線1301と帳票の縦罫線803、・・・、定義体の縦罫線1302と帳票の縦罫線801等と、基準横罫線を変更しながら、
図16のステップS1601乃至S1605のループ処理をそれぞれ実行して探索する。
【0054】
このループ処理内において、定義体の縦罫線について、ステップS1601乃至S1603のループ処理を実行する。
【0055】
ステップS1601において、「定義体の基準縦罫線」と「定義体の縦罫線」の差を求め、「帳票の基準縦罫線」に求めた差を適用し、所定のマージン内にある帳票の縦罫線を探索する。例えば、
図13に示した縦罫線1301乃至1304の任意の1本、縦罫線1301を定義体の基準縦罫線とし、
図8に示した縦罫線801乃至804の任意の1本、縦罫線801を帳票の基準縦罫線とした場合を例にして説明する。まず、定義体の基準縦罫線1301と、1番目の縦罫線としての縦罫線1301の差を求める。ここでは、横方向の座標値の差を求める。縦罫線1301は、基準縦罫線1301そのものであるので、差は「0」となる。帳票の基準縦罫線801に求めた差「0」を適用し、所定のマージン内にある帳票の縦罫線を探索する。例えば、「帳票の基準縦罫線801の横方向の座標値」+「0」±「マージン」内にある帳票の縦罫線を探索する。
【0056】
ステップS1602において、ステップS1601で帳票の縦罫線が探索できたか否かを判断する。探索できた場合(ステップS1602:Yes)、上述の例では、縦罫線801が探索されるので、ステップS1603において、縦罫線1301と縦罫線801の一致した長さを算出し、記録する。ここでは、「定義側の罫線」と「帳票側の罫線」の長さの小さい方を一致と見なす。上述の例では、
図15の(D)に示すように、一致長さ「19」を記録してステップS1601に戻る。ここで、1回目のループ処理から抜ける。
【0057】
2回目のループ処理のステップS1601において、定義体の基準縦罫線1301と、2番目の縦罫線としての縦罫線1302の差を求める。例えば、横方向の座標値の差「1」を求める。帳票の基準縦罫線801に求めた差「1」を適用し、所定のマージン内にある帳票の縦罫線802を探索する。そして、ステップS1602で探索すると(ステップS1602:Yes)、ステップS1603において、縦罫線1302と縦罫線802の一致した長さ「19」を算出し、
図15の(D)に示すように、一致長さ「19」を記録してステップS1601に戻る。
【0058】
同様に、3回目のループ処理のステップS1601において、定義体の基準縦罫線1301と、3番目の縦罫線としての縦罫線1303の差を求める。例えば、横方向の座標値の差「2」を求める。帳票の基準縦罫線801に求めた差「2」を適用し、所定のマージン内にある帳票の縦罫線803を探索する。そして、ステップS1602で探索すると(ステップS1602:Yes)、ステップS1603において、縦罫線1303と縦罫線803の一致した長さ「16」を算出し、
図15の(D)に示すように、一致長さ「16」を記録してステップS1601に戻る。
【0059】
同様に、4回目のループ処理のステップS1601において、定義体の基準縦罫線1301と、4番目の縦罫線としての縦罫線1304の差を求める。例えば、横方向の座標値の差「13」を求める。帳票の基準縦罫線801に求めた差「13」を適用し、所定のマージン内にある帳票の縦罫線804を探索する。そして、ステップS1602で探索すると(ステップS1602:Yes)、ステップS1603において、縦罫線1304と縦罫線804の一致した長さ「19」を算出し、
図15の(D)に示すように、一致長さ「19」を記録してステップS1601に戻る。
【0060】
このような定義体の縦罫線の数だけループを繰り返した後、ステップS1604に進む。
【0061】
ステップS1604において、上述のようにして算出した一致長さの合計を算出し、バッファに一時的に退避した一致長さの合計と比較して大きいか否かを判断する。最初は、一致長さの合計が退避されていないので、例えば、初期値「0」と比較する。
【0062】
そして、大きいと判断された場合(ステップS1604:Yes)、ステップS1605において、算出した一致長さの合計、及び基準罫線として使用した罫線を、バッファに一時的に退避する。他方、大きいと判断されなかった場合(ステップS1604:No)、ステップS1605をスキップする。
【0063】
以上のステップS1601乃至S1605のループ処理を、定義体及び帳票の基準縦罫線の組み合わせの数だけ繰り返す。
【0064】
次に、ステップS1606において、一致長さの合計から一致率を算出する。例えば、一致長さの合計を定義体の縦罫線の長さの合計で除算して求める。
図15の(D)に示した例の場合、一致率は、100%となる。
【0065】
ステップS1607において、ステップS1606で算出した一致率が所定値以上であるか否か、例えば80%以上であるか否かを判断する。
【0066】
所定値以上でなければ(ステップS1607:No)、サブルーチン「罫線レイアウト照合処理」を終了し、イメージスキャナを用いて取得した帳票の罫線レイアウトと、定義帳票情報データベース30から取り出した定義体の罫線レイアウトの比較結果が、「不一致」であるとして
図9の「帳票処理」に戻る。
【0067】
他方、所定値以上であれば(ステップS1607:Yes)、サブルーチン「罫線レイアウト照合処理」を終了し、イメージスキャナを用いて取得した帳票の罫線レイアウトと、定義帳票情報データベース30から取り出した定義体の罫線レイアウトの比較結果が、「一致」であるとして
図9の「帳票処理」に戻る。
【0068】
図9のステップS903において、サブルーチン「罫線レイアウト照合処理」で実行した帳票と定義体の罫線レイアウトの比較結果が「一致」であるか否(「不一致」である)かを判断する。
【0069】
不一致であれば(ステップS903:No)、ステップS901において、定義帳票情報データベース30から、次の帳票の定義体を順に取り出す。
【0070】
他方、一致(ステップS903:Yes)であれば、ステップS904において、サブルーチン「文字認識項目照合/補正処理」を実行し、項目罫線を含む項目定義情報が登録された定義体と比較することにより、読み取った帳票の認識項目の項目罫線を補正する。
【0071】
サブルーチン「文字認識項目照合/補正処理」について、
図17のフローチャートを用いて説明する。
【0072】
まず、
図17のステップS1701において、サブルーチン「文字項目罫線照合処理」を実行し、定義体に登録された項目罫線と読み取った帳票の項目罫線を照合する。
【0074】
図18のフローチャートで示すサブルーチン「文字項目罫線照合処理」は、
図20に示すように、
図6に示すような帳票の認識項目の項目罫線(
図20の(B))を、
図19に示すような定義体(
図20の(A))と比較して照合する。
図19に示す定義体には、項目罫線を含む項目定義情報が登録されている。
【0075】
項目の横罫線数で、
図18のステップS1801乃至S1802のループ処理を実行する。
【0076】
まず、ステップS1801において、「定義体の基準横罫線」と「定義体の項目横罫線」の差を求め、「帳票の基準横罫線」に求めた差を適用し、所定のマージン内にある帳票の横罫線を探索する。例えば、
図21の(A)に示すように、定義体の基準横罫線1201と、1番目の横罫線としての横罫線1201の縦方向の差を求める。横罫線1201は、基準横罫線1201そのものであるので、差は「0」となる。帳票の基準横罫線701に求めた差「0」を適用し、
図21の(B)に示すように、所定のマージン内にある帳票の横罫線を探索する。例えば、「帳票の基準横罫線701の縦方向の座標値」+「0」±「マージン」内にある帳票の横罫線を探索する。
【0077】
ステップS1802において、ステップS1801で帳票の横罫線が探索できたか否かを判断する。探索できた場合(ステップS1802:Yes)、上述の例では、
図21の(B)に示すように、横罫線701が探索されるので、ステップS1801に戻る。
【0078】
2回目のループ処理のステップS1801において、定義体の基準横罫線1201と、2番目の横罫線としての横罫線1202の縦方向の座標値の差「1」を求める。帳票の基準横罫線701に求めた差「1」を適用し、所定のマージン内にある帳票の横罫線702を探索する。
【0079】
同様に、3回目のループ処理のステップS1801において、定義体の基準横罫線1201と、3番目の横罫線としての横罫線1203の縦方向の座標値の差「3」を求める。帳票の基準横罫線701に求めた差「3」を適用し、所定のマージン内にある帳票の横罫線を探索する。
図21に示した例では、横罫線1203に対応する帳票の横罫線は探索できない(
図21の(B)を参照)。
【0080】
ステップS1802で帳票の横罫線が探索できなかった場合(ステップS1802:No)、例えば、
図21に示した例のように、横罫線1203に対応する帳票の横罫線が探索できなかった場合、サブルーチン「文字項目罫線照合処理」を終了し、定義体に登録された項目罫線と読み取った帳票の項目罫線の照合結果が、「不一致」であるとして
図17のサブルーチン「文字認識項目照合/補正処理」に戻る。
【0081】
次に、項目の縦罫線数で、
図18のステップS1803乃至S1804のループ処理を実行する。
【0082】
まず、ステップS1803において、「定義体の基準縦罫線」と「定義体の項目縦罫線」の差を求め、「帳票の基準縦罫線」に求めた差を適用し、所定のマージン内にある帳票の縦罫線を探索する。例えば、
図22の(A)に示すように、定義体の基準縦罫線1304と、1番目の縦罫線としての縦罫線1304の横方向の差を求める。縦罫線1304は、基準縦罫線1304そのものであるので、差は「0」となる。帳票の基準縦罫線804に求めた差「0」を適用し、
図22の(B)に示すように、所定のマージン内にある帳票の縦罫線を探索する。例えば、「帳票の基準縦罫線804の横方向の座標値」+「0」±「マージン」内にある帳票の縦罫線を探索する。
【0083】
ステップS1804において、ステップS1803で帳票の縦罫線が探索できたか否かを判断する。探索できた場合(ステップS1804:Yes)、上述の例では、
図22の(B)に示すように、縦罫線804が探索されるので、ステップS1803に戻る。
【0084】
2回目のループ処理のステップS1803において、定義体の基準縦罫線1304と、2番目の縦罫線としての縦罫線2201の横方向の座標値の差「1」を求める。帳票の基準縦罫線804に求めた差「1」を適用し、
図22の(B)に示すように、所定のマージン内にある帳票の縦罫線2211を探索する。
【0085】
同様に、3回目のループ処理のステップS1803において、定義体の基準縦罫線1304と、3番目の縦罫線としての縦罫線2202の横方向の座標値の差「2」を求める。帳票の基準縦罫線804に求めた差「2」を適用し、
図22の(B)に示すように、所定のマージン内にある帳票の縦罫線2212を探索する。
【0086】
図22に示した例では、同様にして、定義体の横罫線2209に対応する帳票の横罫線2219までの探索を繰り返し、全ての横罫線が探索できた場合(ステップS1804:Yes)、サブルーチン「文字項目罫線照合処理」を終了し、定義体に登録された項目罫線と読み取った帳票の項目罫線の照合結果が、「一致」であるとして
図17のサブルーチン「文字認識項目照合/補正処理」に戻る。
【0087】
他方、ステップS1804で帳票の縦罫線が探索できなかった場合(ステップS1804:No)、サブルーチン「文字項目罫線照合処理」を終了し、定義体に登録された項目罫線と読み取った帳票の項目罫線の照合結果が、「不一致」であるとして
図17のサブルーチン「文字認識項目照合/補正処理」に戻る。
【0088】
サブルーチン「文字項目罫線照合処理」が終了すると、ステップS1702において、定義体に登録された項目罫線と読み取った帳票の項目罫線の照合結果が、「一致」であるか否(「不一致」である)かを判断する。
【0089】
一致であれば(ステップS1702:Yes)、定義体の次の項目について、ステップS1701のサブルーチン「文字項目罫線照合処理」を実行する。
【0090】
他方、不一致であれば(ステップS1702:No)、ステップS1703において、サブルーチン「文字項目定義補正処理」を実行し、ステップS1703において、定義体の認識項目の項目罫線を補正する。なお、補正の対象である定義体は、本「帳票処理」が実行されている間だけ一時的にバッファに複製されたものを用いる。
【0092】
図23及び
図26のフローチャートで示すサブルーチン「文字項目定義補正処理」は、上述したサブルーチン「文字項目罫線照合処理」で「不一致」となった定義体が対象となる。
【0093】
項目の横罫線数で、
図23のステップS2301乃至S2306のループ処理を実行する。
【0094】
まず、ステップS2301において、「定義体の基準横罫線」と「定義体の項目横罫線」の差を求め、「帳票の基準横罫線」に求めた差を適用し、所定のマージン内にある帳票の横罫線を探索する。例えば、
図24の(A)に示すように、定義体の基準横罫線1201と、1番目の横罫線としての横罫線1201の縦方向の差を求める。横罫線1201は、基準横罫線1201そのものであるので、差は「0」となる。帳票の基準横罫線701に求めた差「0」を適用し、
図24の(B)に示すように、所定のマージン内にある帳票の横罫線を探索する。例えば、「帳票の基準横罫線701の縦方向の座標値」+「0」±「マージン」内にある帳票の横罫線を探索する。
【0095】
ステップS2302において、ステップS2301で帳票の横罫線が探索できたか否かを判断する。探索できた場合(ステップS2302:Yes)、上述の例では、
図24の(B)に示すように、横罫線701が探索されるので、ステップS2301に戻る。
【0096】
2回目のループ処理のステップS2301において、定義体の基準横罫線1201と、2番目の横罫線としての横罫線1202の縦方向の座標値の差「1」を求める。帳票の基準横罫線701に求めた差「1」を適用し、所定のマージン内にある帳票の横罫線702を探索する。
【0097】
同様に、3回目のループ処理のステップS2301において、定義体の基準横罫線1201と、3番目の横罫線としての横罫線1203の縦方向の座標値の差「3」を求める。帳票の基準横罫線701に求めた差「3」を適用し、所定のマージン内にある帳票の横罫線を探索する。
図24に示した例では、横罫線1203に対応する帳票の横罫線は探索できない(
図24の(B)を参照)。
【0098】
ステップS2302で帳票の横罫線が探索できなかった場合(ステップS2302:No)、例えば、
図24に示した例のように、横罫線1203に対応する帳票の横罫線が探索できなかった場合、ステップS2303において、ステップS2301で用いたマージンを拡張したマージンを適用して、帳票の横罫線を探索する。
【0099】
そして、ステップS2304において、ステップS2303で帳票の横罫線が探索できたか否かを判断する。
【0100】
探索できなかった場合(ステップS2304:No)、サブルーチン「文字項目定義補正処理」を終了し、定義体の認識項目の項目罫線の補正が失敗したとして
図17のサブルーチン「文字認識項目照合/補正処理」に戻る。
【0101】
他方、検索できた場合(ステップS2304:Yes)、上述の例では、
図24の(B)に示すように、横罫線704が探索される。
【0102】
そして、ステップS2305において、補正値を算出し、算出した補正値で定義体の横罫線を補正する。補正した横罫線は、
図25の(A)の横罫線2503となる。ここで、補正値は、例えば、(「ステップS2303で探索した帳票の横罫線704の縦方向の座標値」−「帳票の基準横罫線701の縦方向の座標値」)−(「検索により横罫線704と対応した定義体の横罫線1203の縦方向の座標値」−「定義体の基準横罫線1201の縦方向の座標値」)を算出して求める。
【0103】
次に、項目の縦罫線数で、ステップS2306のループ処理を実行する。
ステップS2306において、「項目の縦罫線」の縦方向の座標値に、ステップS2305で算出した補正値を加算する。
【0104】
次に、項目の縦罫線数で、
図26のステップS2601乃至S2606のループ処理を実行する。
【0105】
まず、ステップS2601において、「定義体の基準縦罫線」と「定義体の項目縦罫線」の差を求め、「帳票の基準縦罫線」に求めた差を適用し、所定のマージン内にある帳票の縦罫線を探索する。例えば、「帳票の基準縦罫線の横方向の座標値」+「0」±「マージン」内にある帳票の縦罫線を探索する。
【0106】
ステップS2602において、ステップS2601で帳票の縦罫線が探索できたか否かを判断する。探索できた場合(ステップS2602:Yes)、ステップS2601に戻る。
【0107】
他方、ステップS2602で帳票の縦罫線が探索できなかった場合(ステップS2602:No)、ステップS2603において、ステップS2601で用いたマージンを拡張したマージンを適用して、帳票の縦罫線を探索する。
【0108】
そして、ステップS2604において、ステップS2603で帳票の縦罫線が探索できたか否かを判断する。
【0109】
探索できなかった場合(ステップS2604:No)、サブルーチン「文字項目定義補正処理」を終了し、定義体の認識項目の項目罫線の補正が失敗したとして
図17のサブルーチン「文字認識項目照合/補正処理」に戻る。
【0110】
他方、検索できた場合(ステップS2604:Yes)、ステップS2605において、補正値を算出し、算出した補正値で定義体の縦罫線を補正する。
【0111】
次に、項目の横罫線数で、ステップS2606のループ処理を実行する。
ステップS2606において、「項目の横罫線」の横方向の座標値に、ステップS2605で算出した補正値を加算する。
【0112】
そして、サブルーチン「文字項目定義補正処理」を終了し、定義体の認識項目の項目罫線の補正が成功したとして
図17のサブルーチン「文字認識項目照合/補正処理」に戻る。
【0113】
図17のステップS1704において、サブルーチン「文字項目定義補正処理」により定義体の認識項目の項目罫線の補正が成功したか否(失敗)かを判断する。
【0114】
成功した場合(ステップS1704:Yes)、サブルーチン「文字認識項目照合/補正処理」を終了し、定義体に登録された項目罫線と読み取った帳票が補正により一致したとして
図9の「帳票処理」に戻る。
【0115】
他方、失敗した場合(ステップS1704:No)、サブルーチン「文字認識項目照合/補正処理」を終了し、定義体に登録された項目罫線と読み取った帳票が補正によっても一致しなかった(不一致)であるとして
図9の「帳票処理」に戻る。
【0116】
図9のステップS905において、定義体に登録された項目罫線と読み取った帳票が一致しているか否かを判断する。
【0117】
一致していない場合(ステップS905:No)、ステップS901に戻り、次の定義体を取り出す。
【0118】
他方、一致している場合(ステップS905:Yes)、ステップS906において、一致した定義体があるか否かを判断する。
【0119】
一致した定義体がない場合(ステップS906:No)、ステップS907において、認識対象イメージを新規の帳票として、その定義体を新規登録し帳票処理を終了する。
【0120】
他方、一致した定義体がある場合(ステップS906:Yes)、ステップS908において、一致した定義体に従い、項目内の文字認識を行った後、帳票処理を終了する。
【0121】
以上、本発明の実施の形態を、図面を参照しながら説明してきたが、本発明が適用される帳票処理装置は、上述の実施の形態に限定されない。
【0122】
上述してきた本発明の実施の形態は、帳票処理装置の一機能としてハードウェアまたはDSP(Digital Signal Processor)ボードやCPUボードでのファームウェアもしくはソフトウェアにより実現することができる。
【0123】
また、本発明が適用される帳票処理装置は、その機能が実行されるのであれば、上述の実施の形態に限定されることなく、単体の装置であっても、複数の装置からなるシステムあるいは統合装置であっても、LAN、WAN等のネットワークを介して処理が行なわれるシステムであってもよいことは言うまでもない。
【0124】
また、バスに接続されたCPU、ROMやRAMのメモリ、入力装置、出力装置、外部記録装置、媒体駆動装置、ネットワーク接続装置で構成されるシステムでも実現できる。すなわち、前述してきた実施の形態のシステムを実現するソフトェアのプログラムを記録したROMやRAMのメモリ、外部記録装置、可搬記録媒体を、帳票処理装置に供給し、その帳票処理装置のコンピュータがプログラムを読み出し実行することによっても、達成されることは言うまでもない。
【0125】
この場合、可搬記録媒体等から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した可搬記録媒体等は本発明を構成することになる。
【0126】
プログラムを供給するための可搬記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、DVD−ROM、DVD−RAM、磁気テープ、不揮発性のメモリーカード、ROMカード、電子メールやパソコン通信等のネットワーク接続装置(言い換えれば、通信回線)を介して記録した種々の記録媒体などを用いることができる。
【0127】
また、コンピュータ(情報処理装置)がメモリ上に読み出したプログラムを実行することによって、前述した実施の形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが実際の処理の一部又は全部を行ない、その処理によっても前述した実施の形態の機能が実現される。
【0128】
さらに、可搬型記録媒体から読み出されたプログラムやプログラム(データ)提供者から提供されたプログラム(データ)が、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行ない、その処理によっても前述した実施の形態の機能が実現され得る。
【0129】
すなわち、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成又は形状を取ることができる。