発明の目的および利点は、請求の範囲に具体的に記載された構成要素および組み合わせによって実現され達成される。
前述の一般的な説明および以下の詳細な説明は、典型例および説明のためのものであって、本発明を限定するためのものではない、と理解される。
本発明の非限定的な実施形態を、図面を参照して説明する。図面において、同様のコンポーネントおよび要素には同じ参照番号が付されている。
例えばショッピング・センターおよびショッピング・モール等のテナント店のレジ端末はテナント店の所有物なので、ショッピング・センターおよびショッピング・モール等の運営業者は、そのレジ端末の所望のデータを自動的に取得できるように改造することができない。従って、テナント店業者は、そのレジ端末で印字された精算レシートの内容を指定の用紙に転記して運営業者に提出することが多い。この転記の作業を軽減するために、精算レシートを光学的文字認識(OCR)技術で文字認識して文字データを収集することが想定される。しかし、通常の光学的文字認識技術では、様々な種類の精算レシートに対する文字認識の信頼性が低く、精算レシートにおける所望の項目の位置を高い信頼性で検出することができず、従って所望の項目の金額等のデータを検出できない。
また、精算レシートに印字され得るデータ項目名は、日々の販売状況および取引状況により日々変化する。例えば、取引状況次第で、印字される項目名と印字されない項目名とが変化する。従って、通常の光学的文字認識技術をそのまま用いて所望の項目の近傍に位置する特定の項目の位置を特定できる場合であっても、その近傍に位置する項目に対してどのような相対的位置関係で所望の項目名が位置をするかを決めることができない。
発明者たちは、通常の光学的文字認識技術では、ほとんどの場合、精算レシートにおける或る項目の文字列の全ての文字を誤認識することはなく、或る項目の文字列の一部についてだけ文字を誤認識する、と認識した。また、発明者たちは、精算レシートにおいて、認識できた一部の文字との相対的位置関係に基づいて所望の項目の位置を特定することができる、と認識した。
図1は、テナント店用のPOS端末12またはレジ端末(金銭登録機端末)、および、ショッピング・センターまたはショッピング・モール等の運営業者用の情報処理端末30およびサーバ装置40を含むシステムの例を示している。情報処理端末30とサーバ装置40は、ネットワーク5を介して接続される。ネットワーク5は、LAN(Local Area Network)、インターネット、公衆交換電話網(PSTN)、パケット交換網(PSN)、ISDN(Integrated Services Digital Network)、および/または移動体通信網を含んでいてもよい。
POS端末またはレジ端末12は、例えば、プロセッサ102、入力部122、表示部124、プリンタ126、ネットワーク・インタフェース(NW I/F)104、バーコード・リーダ(図示せず)およびキャッシュ・ボックス(図示せず)、等を含んでいる。POS端末12は、テナント店業者の操作に従って、営業終了後に精算データを用紙に印字して精算レシートを生成する。POS端末12の種類および精算レシートの形式は、テナント店ごとに違っていてよい。
サーバ装置40は、情報処理装置であり、例えば、プロセッサ402、ネットワーク・インタフェース(NW I/F)426、およびデータベースを含む記憶部412を含んでいる。サーバ装置40は、記憶部412または他の記憶装置に、画像データベース(DB)432、文字データベース(DB)434、条件マスタファイルまたはデータベース436、売上データベース(DB)442を格納する。
情報処理端末30は、例えばCPU(Central Processing Unit)、主記憶装置、ハードディスク・ドライブ(HDD)、半導体メモリ、バス、入力装置、出力装置、通信インタフェース、記録媒体読取用のドライブ、等を含むパーソナル・コンピュータのようなコンピュータまたは装置であってもよい。
情報処理端末30は、例えば、プロセッサ302、データベースを含む記憶部312、例えばUSBインタフェースのようなインタフェース(I/F)304、入力部322、表示部324、およびネットワーク・インタフェース(NW I/F)326を含んでいる。情報処理端末30は、さらに、記憶部312または他の記憶装置に、画像データベース(DB)332および文字データベース(DB)334を格納する。情報処理端末30は、ネットワーク・インタフェース326を介してサーバ装置40に接続される。
プロセッサ302は、コンピュータ用のCPU(Central Processing Unit)であってもよい。記憶部312には、例えば、主記憶装置および半導体メモリ等が含まれる。入力部322は、例えば、キーボード、マウスまたはタッチパッドのようなポインティング・デバイス、およびタッチパネルを含んでいてもよい。情報処理端末30は、さらに、記録媒体読み取り用のドライブ306を含んでいる。ドライブ306は、プログラムが記録された例えば光ディスクまたは磁気ディスクのような記録媒体307を読み取るために設けられている。ドライブ306は、例えばハードディスク・ドライブであってもよい。情報処理端末30において、USBインタフェース304は、少なくともスキャナ20からの画像データまたは文字データを入力する入力部としても機能してもよい。
プロセッサ302は、文字認識の機能を含む例えば集積回路として実装された専用のプロセッサであってもよい。また、プロセッサ302は、記憶部312に格納されたアプリケーション・プログラムに従って動作するものであってもよい。アプリケーション・プログラムは、記録媒体307に格納されていて、ドライブ306によって記録媒体307から読み出されて情報処理端末30にインストールされてもよい。
情報処理端末30は、USBケーブルによって、USBインタフェース304を介してスキャナ20に結合される。情報処理端末30は、スキャナ20から、運営業者またはテナント店業者によって走査された精算レシートの画像のデータを捕捉しまたは取り込んで画像データベース332またはサーバ装置40の画像データベース432に格納する。情報処理端末30は、格納された画像データを光学的文字認識技術で文字認識して、認識された文字のデータを生成して文字データベース334または434に格納する。スキャナ20は、文字認識機能を含んでいてもよい。この場合、情報処理端末30は、スキャナ20から認識結果の文字データを捕捉しまたは取り込んで文字データベース334またはサーバ装置40の文字データベース434に格納する。
情報処理端末30は、さらに精算レシートにおける認識された文字のデータを、条件マスタファイル436から取り出した検索条件に基づいて分析して、精算レシートにおける所望の項目(例、売上額)のデータを決定してサーバ装置40の売上データベース442に格納する。
代替形態として、情報処理端末30は、画像データベース332または432の画像データを読み込んで文字データに変換しながら、それに同期的に、テナントの精算レシートの認識結果の文字データを読み込んで検索条件に基づいて分析してもよい。
図2は、情報処理端末30のプロセッサ302またはサーバ装置40のプロセッサ402の概略的な構成(configuration)の例を示している。
プロセッサ302は、例えば、制御部3020、光学的文字認識(OCR)制御部3022、光学的文字認識(OCR)部3024、データ抽出部(または文字データ変換部)3028、データ確認部3030、およびその他の処理部3040を含んでいてもよい。処理部3040には例えば通信処理部が含まれていてもよい。プロセッサ302は光学的文字認識部3024を含まず、スキャナ20が光学的文字認識機能を含んでいてもよい。制御部3020は、光学的文字認識制御部3022、光学的文字認識部3024、データ抽出部3028、データ確認部3030、および処理部3040に制御信号を供給して、これらの要素の動作を制御してもよい。
代替形態としてまたは追加的に、サーバ装置40のプロセッサ402は、例えば、制御部3020、光学的文字認識(OCR)制御部3022、光学的文字認識(OCR)部3024、データ抽出部3028、データ確認部3030、および処理部3040を含んでいてもよい。プロセッサ402は光学的文字認識部3024を含まず、スキャナ20が光学的文字認識機能を含んでいてもよい。
図3Aおよび3Bは、光学的文字認識部3024またはスキャナ20の認識機能によって読み取られる精算レシート、および認識結果の文字および数値のデータの例を示している。
図3Bにおいて、認識結果の文字および数値のデータは、垂直方向の相対的位置と水平方向の相対的位置に関する各文字の位置関係を表す情報を含んでいる。認識結果の文字および数値のデータでは、精算レシートの各行に対応する行に認識結果の文字および/または数値が生成される。各行の文字データは、文字間隔、データ形式に応じて1つ以上の項目または1組以上の文字列に分離されグループ化される。精算レシート上の印字された文字には、文字認識の成功率の高い文字と低い文字とがある。数字は文字認識の成功率が高い。発明者たちは、文字認識の成功率の高い複数の文字の組合せをキーワードとして、認識された文字データ全体を検索することによって、そのようなキーワードの位置との相対的位置関係に基づいて所望の項目の数値の位置を特定することができると、認識した。そのために、キーワードと、そのキーワードを含む項目と所望の項目の位置関係を表す検索条件が、サーバ装置40の条件マスタファイル436に予め格納される。その検索条件は、例えば、XMLフォーマットで記述してもよい。
図4は、情報処理端末30のプロセッサ302またはそのデータ抽出部3028によって実行される、検索条件に従って文字データを検索するための全体的なフローチャートの例を示している。
ステップ502において、プロセッサ302は、条件マスタファイル436から1件のテナント用の条件データを読み込み、文字データベース334または434からテナントの精算レシートの認識結果の文字データのファイルを読み込んで、記憶部312に格納する。ステップ504において、プロセッサ302またはデータ抽出部3028は、その条件データから1件の項目を読み込む。ステップ506において、プロセッサ302またはデータ抽出部3028は、その項目から1件の検索条件を読み込む。
ステップ508において、プロセッサ302は、その項目についてその検索条件に従って精算レシートの認識結果の文字データを検索し、その項目に対応するデータ(数値)を抽出して記憶部312に格納する。そのために、プロセッサ302またはデータ抽出部3028は、認識結果の例えばCSV形式のテキストを含む文字データのファイルから、行単位でテキストの文字データを取り出す。
具体的には、プロセッサ302は、所望の抽出対象項目の文字または数値データに対する少なくとも1つの項目のキーワード文字または文字列の位置関係を表す検索条件を記憶部312から取り出し、認識結果としての文字位置情報を含む文字データ(図3B)を例えば行単位で記憶部312から取り出す。その位置関係は、例えば、文字データにおいて1つの項目の文字または文字列の位置に対する別の項目の文字または文字列が位置する範囲を表すものであってもよい。プロセッサ302は、各行の文字データを少なくとも1つの項目のキーワード文字または文字列と比較して、文字データにおいてその少なくとも1つの項目のキーワード文字または文字列と一致または近似するとみなせる文字または文字列を検出する。プロセッサ302は、その検出された文字または文字列とその位置関係にある所望の抽出対象項目の文字または数値データを決定して記憶部312に格納する。
別の形態として、プロセッサ302は、複数の項目の文字または文字列の第1の位置関係と、複数の項目の中の1つの項目の文字または文字列に対する所望の抽出対象項目のデータの第2の位置関係とを表す検索条件を記憶部312から取り出し、認識結果としての文字位置情報を含む文字データ(図3B)を例えば行単位で記憶部312から取り出す。プロセッサ302は、各行の文字データを複数の項目の文字または文字列と比較して、文字データにおいて複数の項目の文字または文字列と一致または近似するとみなせる第1の位置関係にある複数の文字または文字列を検出する。プロセッサ302は、さらに、その検出された複数の文字または文字列におけるその1つの項目の文字または文字列と一致または近似すると見なせる文字または文字列に対して第2の位置関係にある所望の抽出対象項目のデータを抽出して記憶部312に格納する。第1の位置関係は、例えば、文字データにおいて1つの項目の文字または文字列の位置に対する別の項目の文字または文字列が位置する範囲を表すものであってもよい。
例えば、所望の検出対象項目のキーワード文字列が、文字データにおいて或る文字列と一致する文字の数の割合が閾値1より大きい場合に、その或る文字列が所望の検出対象項目のキーワード文字列と一致するとみなしてよい。例えば、所望の検出対象項目のキーワード文字列が、文字データにおいて或る文字列と一致する文字の数の割合が閾値1より小さく閾値2より大きい場合に、その或る文字列が所望の検出対象項目のキーワード文字列と近似するとみなしてよい。プロセッサ302は、その或る文字列が所望の検出対象項目のキーワード文字列と近似することを確認または検証するために、文字データにおいて複数の項目の中の他の項目の文字または文字列と一致する第1の位置関係にある文字または文字列の存在を検出してもよい。
ステップ510において、プロセッサ302は、抽出対象項目のデータ(数値)が抽出できたかどうかを判定する。抽出できたと判定された場合は、手順はステップ514に進む(所望項目抽出の成功)。抽出できなかったと判定された場合は、手順はステップ512に進む。
ステップ512において、プロセッサ302は、全ての検索条件について検索が終了したかどうかを判定する。検索が終了していないと判定された場合は、手順はステップ506に戻る。検索が終了したと判定された場合は、手順はステップ514に進む(所望項目抽出の不成功)。
ステップ514において、プロセッサ302は、抽出が成功であった場合は、抽出されたデータ(数値)をその項目名(識別情報)に対応付けて、売上データベース442における対応するテナントの記憶領域に格納する。プロセッサ302は、抽出が不成功であった場合は、その項目名に対応付けて抽出不成功を表す表示データをテナントの記憶領域に格納する。
ステップ516において、プロセッサ302は、全ての抽出対象項目について検索が終了したかどうかを判定する。検索が終了したと判定された場合は、手順はステップ518に進む。検索が終了していないと判定された場合は、手順はステップ504に戻る。
ステップ518において、プロセッサ302は、全てのテナントについて検索が終了したかどうかを判定する。検索が終了していないと判定された場合は、手順はステップ502に戻る。全てのテナントについて検索が終了したと判定された場合は、手順は図4のルーチンを出る。
このようにして、全てのテナントについて、それぞれの精算レシートの認識結果の文字データを全ての所望の項目について検索して、所望の項目のデータ(数値)が収集される。
キーワードに対する精算レシートの文字データの検索法として複数の方式が考えられる。
方式1では、キーワードを設定し、キーワードと一致する文字列を含む行を求めて文字データ・ファイルを検索して、その行との相対的位置関係に基づいて所望のデータ(数値)を抽出する。この場合、例えば画数が多い文字を含むことに起因して抽出対象行の抽出項目の文字列の認識精度が低い場合、その文字列の代わりに、他の行における例えば少ない画数の文字を含む認識率の高い文字列がキーワードとして選択される。その選択キーワードの文字列を含む行との相対的位置関係に従って抽出対象項目の位置する行が決定されてもよい。例えば、選択キーワードの文字列を含む行から或る行数だけ離れた上方向または下方向の位置の行を、抽出対象項目を含む行として設定することができる。
図5は、情報処理端末30のプロセッサ302(データ抽出部3028)によって実行される、図4のステップ508における方式1による検索条件に従って文字データを検索するためのフローチャートの例を示している。この場合、主キーワードを用いて検索が行われて、所望の項目のデータが抽出される。
ステップ542において、プロセッサ302は、読み込んだ文字データ・ファイルを開く。ステップ544において、プロセッサ302は、文字データ・ファイルから認識結果としての1件または1行分の文字データを読み込む。
ステップ546において、プロセッサ302は、その文字データを検索または分析して、検索条件における主キーワードと一致(マッチ)するまたは同じ文字列があるかどうかを判定する。一致する文字列があると判定された場合は、手順はステップ548に進む。一致する文字列がないと判定された場合は、手順はステップ552に進む。
ステップ548において、プロセッサ302は、主キーワードと一致した文字列が出現する順番が検索条件に適合するか、即ち条件の所定の出現順番と同じかどうかを判定する。例えば、主キーワードと一致する可能性のある文字列が2つの行にあり、主キーワードと一致する2番目の文字列が所定の順番として検索条件で指定されている場合、主キーワードと一致する最初の文字列は検索条件に適合しない。その出現の順番が適合すると判定された場合は、手順はステップ550に進む。その出現の順番が適合しないと判定された場合は、手順はステップ552に進む。
ステップ552において、プロセッサ302は、全ての行の文字データを読み込んだかどうかを判定する。全ての行を読み込んだと判定された場合は、手順は図5のルーチンを出る(所望項目抽出の不成功)。全ての行を読み込んでいないと判定された場合は、手順はステップ544に戻る。
ステップ550において、プロセッサ302は、抽出対象行がキーワードの文字列を含む行と同じかどうかを判定する。抽出対象行がキーワードの文字列を含む行と同じと判定された場合は、手順はステップ556に進む。抽出対象行がキーワードの文字列を含む行と異なると判定された場合は、手順はステップ554に進む。
ステップ554において、プロセッサ302は、検索条件において指定された方向(上下、行に垂直な方向)および移動行数に従って、文字データ・ファイル中における抽出対象行まで行位置を移動する。
ステップ556において、プロセッサ302は、抽出対象行における指定された方向(左右、行内の方向)および項目の移動項目数に従って、抽出対象行における抽出対象項目まで項目位置を移動し、抽出対象項目のデータ(数値)を抽出して、その抽出対象項目に対応付けて記憶部312の領域に格納する。その後、手順は図5のルーチンを出る(所望項目抽出の成功)。
図6は、方式1による図5のフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する手順を説明するためのものである。
検索の例1
方式1の検索条件(a)は、検索対象項目として、キーワードと一致する文字列を含む行を規定し、その行における何番目の項目か(順番)を規定する。この場合、検索条件(a)は、検索(検出)対象項目「精算上現金売上」の右隣すなわち左から2番目の項目の数値(a)を所望のデータとして抽出することを規定する。この場合、図6の精算レシートにおいて、項目「精算上現金売上」が印字されるものとする。
例えば、項目「精算上現金売上」の中の少なくとも「現金売上」を含む文字列(4〜7文字)をキーワードとして、項目「精算上現金売上」を含む行の右隣すなわち2番目の項目の数値(a)(「120,005」)が、所望のデータとして抽出される。
キーワードの文字列“現金売上”が出現する項目を含む行として、文字データ・ファイルにおける同キーワードを含む1つ以上の行のうちの何番目の行か(順番)が指定されてもよい。例えば、同じキーワードの文字列“現金売上”が出現する最初の行か、2番目の行か、または3番目の行かを指定することができる。キーワードは、連続文字列でなくてもよい。例えば、“日?上??上”のようなワイルドカード文字の形式で指定してもよい。ここで、記号“?”は、例えば任意の1文字を表す。その他、記号“*”は、例えば任意の0文字以上の文字列を表す。記号“#”は、例えば任意の数字1字を表す。
さらに、検索条件(b、c)は、検索対象項目として、キーワードの文字列を含む行から或る行数だけ上または下の行における何番目の項目か(順番)を規定してもよい。
図7は、方式1による図5のフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(a)の例を示している。ここで、検索条件はXML形式で記述される。
図7の検索条件(a)において、上下のタグ<テナント>と</テナント>の間に1件のテナントの精算レシートに関する検索条件が規定される。次に、テナントのコード“0001”(タグ<コード>と</コード>の間)、或る文字データ・ファイルを表す識別情報の入力(タグ<指定>と</指定>の間)、1件の検索項目(タグ<項目>と</項目>の間の行)が規定される。上下のタグ<検索>と</検索>の間の複数行で、1つの検索条件が規定される。次に、具体的な検索条件として、検索方式“1”(<方式>と</方式>の間)、主キーワード“現金売上”(<主キーワード>と</主キーワード>の間)、主キーワードが発生(出現)する1つ以上の行における行の順番“1”(最初の行)(<発生順番>と</発生順番>の間)が規定される。
また、抽出対象項目(上下の<対象行>と</対象行>の間)として、主キーワードの文字列を含む行から見た検索対象行の方向(上、下、同)“同”(<行方向>と</行方向>の間)が規定される。さらに、検索開始行までの行数“0”(同行)(<行数開始>と</行数開始>の間)、検索終了行までの行数“0”(同行)(<行数終了>と</行数終了>の間)が規定される。これら3つのタグは、キーワードの文字列を含む行が抽出対象行である場合には、省略してもよい。この場合、検索対象の行範囲は、検索対象行が“0”(行数開始位置)〜“0”(行数終了位置)なので、キーワードの文字列を含む行に限定される。さらに、抽出対象行における検索開始列(左、右)“左”(<項目方向>と</項目方向>の間)、および抽出対象行における抽出対象項目の順番“2”(<項目順番>と</項目順番>の間)が規定される。この場合、図6に中央の矢印で示されているように、キーワード“現金売上”を含む行において左から右の方向に2番目の項目(数値)が、所望の項目(「精算上現金売上」の金額)の所望のデータ(例えば「120,005」)として抽出される。
検索の例2
方式1の検索条件(b)は、検索対象項目として、主キーワードと一致する文字列を含む行を規定し、その行位置から或る行数だけ上の行における何番目の項目か(順番)を規定する。この場合、検索条件(b)は、項目「精算上現金売上」の2行上にある項目「感謝カード」の右隣すなわち左から2番目の項目の数値(b)を所望のデータとして抽出することを規定する。この場合、図6の精算レシートにおいて、項目「感謝カード」を含む行から項目「精算上現金売上」までの3行が印字されるものとする。キーワードは、連続文字列でなくてもよい。
例えば、文字列「精算上現金売上」の中の少なくとも「現金売上」を含む文字列(4〜7文字)をキーワードとして、項目「精算上現金売上」の2行上にある項目「感謝カード」の右隣すなわち2番目の項目の数値(b)(「1,500」)が、所望のデータとして抽出される。
図8は、方式1による図5のフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(b)の例を示している。
図8の検索条件(b)において、コード“0001”の後の“候補”に関する記述は、精算レシートがいずれのテナントのものであるかを識別するためのものである。コード“0001”の後に、或る文字データ・ファイルを表すテナント識別情報のデータ形式“文字列”(<指定>と</指定>の間)、テナント識別情報の候補として、店名“珈琲屋 大阪店”および電話番号“06−1111−2222”(<候補>と</候補>の間)が規定される。このように、候補を表す識別情報として、複数の候補が規定されてもよい。さらに、文字データ・ファイルにおける候補検索開始行の(上からの)行数または行番号“1”(行1)(<候補行数開始>と</候補行数開始>の間)、その候補検索終了行の(上からの)行数または行番号“5”(行5)(<候補行数終了>と</候補行数終了>の間)が規定される。その開始行位置と終了行位置によって、テナント識別情報を表す候補の文字列または数字列が出現する上から或る行数以内の行範囲が規定される。この場合、上から1乃至5行の範囲(行1〜行5)が規定される。
次いで、具体的な検索条件として、検索方式“1”、主キーワード“現金売上”、全ての行において主キーワードが発生(出現)する1つ以上の行における行の順番“1”(最初の行)が規定される。抽出対象行として、主キーワードの文字列を含む行から見た検索対象行の方向(上、下、同)“上”(<行方向>と</行方向>の間)、検索開始行までの行数“2”(<行数開始>と</行数開始>の間)、検索終了行までの行数“2” が規定される。この場合、検索対象の行範囲は、 検索対象行が“2” (行数開始位置)〜 “2” (行数終了位置)なので、キーワードの文字列を含む行の2行上の行に限定される。さらに、抽出対象行における検索開始列(左、右)“左”、および抽出対象行における抽出対象項目の順番“2”が規定される。この場合、図6に上側の矢印で示されているように、キーワード“現金売上”を含む行から2行上の行における左の項目「感謝カード」から右の方向に2番目の項目(数値)(例えば「1,500」)が、所望の項目の所望のデータとして抽出される。
検索の例3
方式1の検索条件(c)は、検索対象項目としてキーワードと一致する文字列を含む行を規定し、その行位置から或る行数だけ下の行における何番目の項目か(順番)を規定する。この場合、検索条件(c)は、項目「精算上現金売上」の2行下にある項目「支払/割引」の右隣すなわち左から2番目の数値(c)を所望のデータとして抽出することを規定する。この場合、図6の精算レシートにおいて、項目「精算上現金売上」を含む行から項目「支払/割引」までの3行が印字されるものとする。キーワードは、連続文字列でなくてもよい。
例えば、項目「精算上現金売上」の中の少なくとも「現金売上」を含む文字列(4〜7文字)をキーワードとして、項目「精算上現金売上」の2行下にある項目(「支払/割引」)の右隣すなわち2番目の項目の数値(c)(「106」)が、所望のデータとして抽出される。
図9は、方式1による図5のフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(c)の例を示している。
図9の検索条件(c)において、具体的な検索条件として、検索方式“1”、主キーワード“現金売上”、全ての行において主キーワードが発生(出現)する1つ以上の行における行の順番“1”(最初の行)が規定される。抽出対象行として、主キーワードの文字列を含む行から見た検索対象行の方向(上、下、同)“下”(<行方向>と</行方向>の間)、検索開始行までの行数“2”、検索終了行までの行数“2” が規定される。この場合、検索対象の行範囲は、 検索対象行が“2”(行数開始位置)〜“2”(行数終了位置)なので、キーワードの文字列を含む行の2行下の行に限定される。さらに、抽出対象行における検索開始列(左、右)“左”、および抽出対象行における抽出対象項目の順番“2”が規定される。この場合、図6に下側の矢印で示されているように、キーワード“現金売上”を含む行から2行下の行における左の項目「支払/割引」から右の方向に2番目の項目(数値)(例えば「106」)が、所望の項目の所望のデータとして抽出される。
図10は、情報処理端末30のプロセッサ302(データ抽出部3028)によって実行される、図4のステップ508における方式2による検索条件に従って文字データを検索するための別のフローチャートの例を示している。この場合、認識成功率の高い目標文字列を含む行を検索するための主キーワードに加えて、抽出対象行の位置を検索するための別のキーワードを用いて所望の項目のデータが抽出される。
ステップ542〜548および552は図5のものと同様である。ステップ552において全ての行を読み込んだと判定された場合は、手順は図10のルーチンを出る(所望項目抽出の不成功)。
ステップ548(YES)の後のステップ554において、プロセッサ302は、検索条件において指定された方向(上下、行に垂直な方向)および移動行数に従って、主キーワードの文字列を含む行から文字データ・ファイル中における抽出対象行まで行位置を移動する。
ステップ616において、プロセッサ302は、その文字データを検索して、検索条件における別のキーワードと一致(マッチ)するまたは同じ文字列があるかどうかを判定する。一致する文字列があると判定された場合は、手順はステップ556に進む。一致する文字列がないと判定された場合は、手順はステップ618に進む。
ステップ556は図5のものと同様である。その後、手順は、図10のルーチンを出る(所望項目抽出の成功)。
ステップ618において、プロセッサ302は、別のキーワードによる全ての検索範囲の行について検索が終了したかどうかを判定する。それが終了したと判定された場合は、手順はステップ620に進む。それが終了していないと判定された場合は、手順はステップ554に戻る。
ステップ620において、プロセッサ302は、主キーワードと一致する文字列が出現する順番が指定されているかを判定する。主キーワードと一致する文字列が出現する順番(例えば、最初、2番目)が指定されていない場合には、別のキーワードと一致する文字列が出現するまで、主キーワードに対して全ての行が検索される。そのような順番が指定されていないと判定された場合は、手順はステップ544に戻る。そのような順番が指定されていると判定された場合は、手順は図10のルーチンを出る(所望項目抽出の不成功)。
図11は、方式2による図10のフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する手順を説明するためのものである。
検索の例4
方式2の検索条件(a)は、検索対象項目として、キーワードと一致する文字列を含む行を規定し、その行位置から或る行数だけ上の行範囲を規定し、その行範囲にある別のキーワードと一致する文字列を含む行を規定し、その行における何番目の項目か(順番)を規定する。この場合、検索条件(a)は、項目「精算上現金売上」を含む行から上方向の2行以内の範囲にある項目「感謝カード」の右隣すなわち左から2番目の項目の数値(a)を所望のデータとして抽出することを規定する。この場合、図11の精算レシートにおいて、項目「感謝カード」および項目「精算上現金売上」の2行が印字されるものとする。キーワードは、連続文字列でなくてもよい。
例えば、文字列「精算上現金売上」の中の少なくとも「現金売上」を含む文字列(4〜7文字)をキーワードとし、項目「精算上現金売上」の上方向の1〜2行の範囲にある項目「カード」が別のキーワードとされる。さらに、項目「感謝カード」の右隣すなわち2番目の項目の数値(a)(「1,500」)が、所望のデータとして抽出される。この場合、項目「精算報上現金売上」と「感謝カード」の間に項目「商品券等」が印字されなくても、項目「感謝カード」の金額のデータが抽出できる。
検索条件は、抽出対象項目として、別のキーワードの文字列を含む行からさらに或る行数だけ上または下の行における何番目の項目か(順番)を規定してもよい。
図12は、方式2による図10のフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(a)の例を示している。
図12の検索条件(a)において、具体的な検索条件として、検索方式“2”、主キーワード“現金売上”、全ての行において主キーワードが発生(出現)する1つ以上の行における行の順番“1”(最初の行)が規定される。但し、主キーワードが発生(出現)する行の順番が“0”の場合、それは、キーワードと一致する文字列が出現するまで全ての行について検索されることを表す。抽出対象行として、主キーワードの文字列を含む行から見た検索対象行の方向(上、下、同)“上”、検索開始行までの行数“1”、検索終了行までの行数“2” が規定される。この場合、検索対象の行範囲は、 検索対象行が“1”(行数開始位置)〜“2”(行数終了位置)なので、主キーワードの文字列を含む行の1〜2行上の行である。
さらに、別のキーワード“カード”(<検索キーワード>と</検索キーワード>の間)、抽出対象行における検索開始列(左、右)“左”、および抽出対象行における抽出対象項目の順番“2”が規定される。この場合、図11に上側の破線矢印で示されているように、キーワード“現金売上”を含む行から2行上の行における左の項目「感謝カード」から右の方向に2番目の項目(数値)(例えば「1,500」)が、所望の項目の所望のデータとして抽出される。
検索の例5
方式2の検索条件(b)は、検索対象項目として、キーワードと一致する文字列を含む行を規定し、その行位置から或る行数だけ下の行範囲を規定し、その行範囲にある別のキーワードと一致する文字列を含む行を規定し、その行における何番目の項目か(順番)を規定する。この場合、検索条件(b)は、項目「精算上現金売上」を含む行から下方向の2行以内の範囲にある項目「支払/割引」の右隣すなわち左から2番目の項目の数値(a)を所望のデータとして抽出することを規定する。この場合、図11の精算レシートにおいて、項目「精算上現金売上」および項目「支払/割引」の2行が印字されるものとする。
例えば、文字列「精算上現金売上」の中の少なくとも「現金売上」を含む文字列(4〜7文字)をキーワードとし、項目「精算上現金売上」の下方向の1〜2行の範囲にある項目「支払/割引」の「支」が別のキーワードとされる。さらに、項目「支払/割引」の右隣すなわち2番目の項目の数値(b)(「130」)が、所望のデータとして抽出される。この場合、項目「精算上現金売上」と「支払/割引」の間に項目「掛売上入金」が印字されていなくても、項目「支払/割引」のデータが抽出できる。キーワード“現金売上”が出現する項目を含む行として、文字データ・ファイルにおける同キーワードを含む1つ以上の行のうちの何番目の行か(順番)を指定してもよい。キーワードは、連続文字列でなくてもよい。
検索条件は、抽出対象項目として、別のキーワードの文字列を含む行からさらに或る行数だけ上または下の行における何番目の項目か(順番)を規定してもよい。
図13は、方式2による図10のフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(b)の例を示している。
図13の検索条件(b)において、具体的な検索条件として、検索方式“2”、主キーワード“現金売上”、全ての行において主キーワードが発生(出現)する1つ以上の行における行の順番“1”(最初の行)が規定される。但し、主キーワードが発生(出現)する行の順番が“0”の場合、それは、キーワードと一致する文字列が出現するまで全ての行について検索されることを表す。抽出対象行として、主キーワードの文字列を含む行から見た検索対象行の方向(上、下、同)“下”、検索開始行までの行数“1”、検索終了行までの行数“2” が規定される。この場合、検索対象の行範囲は、 検索対象行が“1”(行数開始位置)〜 “2”(行数終了位置)なので、主キーワードの文字列を含む行の1〜2行下の行である。
さらに、別のキーワード“支”(<検索キーワード>と</検索キーワード>の間)、抽出対象行における検索開始列(左、右)“左”、および抽出対象行における抽出対象項目の順番“2”が規定される。この場合、図11に下側の破線矢印で示されているように、キーワード“現金売上”を含む行から2行下の行における左の項目「支払/割引」から右の方向に2番目の項目(数値)(例えば「106」)が、所望の項目の所望のデータとして抽出される。
図14Aおよび14Bは、情報処理端末30のプロセッサ302(データ抽出部3028)によって実行される、図4のステップ508における方式3による検索条件に従って文字データを検索するためのさらに他のフローチャートの例を示している。この場合、主キーワードに加えて、例えば画数が少ない認識率の高い2つのキーワード(主キーワードと検証用の他のキーワード)を用いて所望の項目のデータが抽出される。
ステップ542〜548および552は図5のものと同様である。ステップ552において全ての行を読み込んだと判定された場合は、手順は図14Aおよび14Bのルーチンを出る(所望項目抽出の不成功)。
ステップ548(YES)の後、手順は、ステップ554に進み、その後でステップ556に進む。ステップ554および556は、図10のものと同様である。その後、手順は、図14Bのステップ670に進む。この時点では、主キーワードは他の行にも出現する可能性があり、主キーワードと一致すると判定された文字列は誤認識された可能性があり、従って、抽出された抽出対象項目のデータ(数値)の位置が適正かどうかの信頼性は低い。従って、その後、主キーワードと或る位置関係にある他の行の文字列をキーワードとして用いて、他の行において他のキーワードと一致する文字列があるかどうかが検証される。
図14Bを参照すると、ステップ670において、プロセッサ302は、検証のための指定された方向(上下、行に垂直な方向)および移動行数に従って、主キーワードの文字列を含む行から文字データ・ファイル中における検証用の行まで行位置を移動する。
ステップ672において、プロセッサ302は、その行の文字データを検索して、検索条件における検証用の他のキーワードと一致(マッチ)するまたは同じ文字列があるかどうかを判定する。一致する文字列があると判定された場合は、手順はステップ676に進む。一致する文字列がないと判定された場合は、手順はステップ674に進む。
ステップ674において、プロセッサ302は、検証用の他のキーワードによる全ての検索範囲の行について検索が終了したかどうかを判定する。それが終了したと判定された場合は、手順はステップ676に進む。それが終了していないと判定された場合は、手順はステップ670に戻る。
ステップ676において、プロセッサ302は、検証用の他のキーワードと一致する文字列として確認された文字列を記憶部312に格納する。そのような文字列がない場合は、そのような文字列は格納されない。
ステップ678において、プロセッサ302は、検証用の全ての他のキーワードについて検索が終了したかどうかを判定する。その検索が終了したと判定された場合は、手順はステップ680に進む。その検索が終了していないと判定された場合は、手順はステップ670に戻る。ステップ670において、プロセッサ302は、次の検証用の行まで行位置を移動する。
ステップ680において、プロセッサ302は、その確認された文字列が検索条件における検証式に適合するかどうかを判定する。それが適合すると判定された場合は、手順は図14Aおよび14Bのルーチンを出る(所望項目抽出の成功)。それが適合しないと判定された場合は、手順はステップ682に進む。
ステップ682において、プロセッサ302は、主キーワードと一致する文字列が出現する順番が指定されているかどうかを判定する。主キーワードと一致する文字列が出現する順番(例えば、最初、2番目)が指定されていない場合には、検証用の他のキーワードと一致する文字列が出現するまで、主キーワードに対して全ての行が検索される。そのような順番が指定されていないと判定された場合は、手順はステップ544に戻る。そのような順番が指定されていると判定された場合は、手順は図14Aおよび14Bのルーチンを出る(所望項目抽出の不成功)。
図15は、方式3による図14Aおよび14Bのフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する手順を説明するためのものである。
検索の例6
方式3の検索条件(a)は、検索対象項目として、主キーワードと一致する文字列を含む行を規定し、その行における何番目の項目か(順番)を規定する。検索条件は、抽出対象項目として、主キーワードの文字列を含む行からさらに或る行数だけ上または下の行における或る項目を指定してもよい。検索条件(a)は、さらに検証対象項目として、主キーワードの文字列を含む行から或る行数だけ下または上の行範囲を規定し、その行範囲にある検証用の他のキーワードと一致する文字列を規定する。
この場合、検索条件(a)は、項目「感謝カード」の右隣すなわち左から2番目の項目の数値(a)を所望のデータとして抽出することを規定する。さらに、検索条件(a)は、その項目(b)が所望の抽出対象項目であることを検証するためにその1行下にある項目「商品券等」中の文字列「商品券」を抽出することを規定する。この場合、図15の精算レシートにおいて、項目「感謝カード」および項目「商品券等」の2行が印字されるものとする。キーワードは、連続文字列でなくてもよい。
例えば、項目「感謝カード」の中の少なくとも「カード」を含む文字列(3〜5文字)を主キーワードとして、項目「感謝カード」を含む行の右隣すなわち2番目の項目の数値(a)(「1,500」)が、所望のデータとして抽出される。さらに、その抽出項目の妥当性を検証するために、項目「商品券等」の中の少なくとも「商品券」を含む文字列(3〜4文字)を他のキーワードとしてその1行下の行から「商品券」を含む文字列が抽出される。
図16は、方式3による図14Aおよび14Bのフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(a)の例を示している。
図16の検索条件(a)において、具体的な検索条件として、検索方式“3”、主キーワード“カード”、全ての行において主キーワードが発生(出現)する1つ以上の行における行の順番“1”(最初の行)が規定される。抽出対象行として、主キーワードの文字列を含む行から見た検索対象行の方向(上、下、同)“同”、検索開始行までの行数“0”、検索終了行までの行数“0”が規定される。例2、例3の場合のように、検索対象項目として、主キーワードの文字列を含む行から或る行数だけ上または下の行における何番目の項目か(順番)が規定されてもよい。さらに、抽出対象行における検索開始列(左、右)“左”、および抽出対象行における抽出対象項目の順番“2”が規定される。この場合、図15に上側の実線矢印で示されているように、主キーワード“カード”を含む行における左の項目「感謝カード」から右の方向に2番目の項目(数値)(例えば「1,500”)が、所望の項目の所望のデータとして抽出される。
さらに、検証対象項目(上下の<検証行>と</検証行>の間)として、主キーワードの文字列を含む行から見た検証行の方向(上、下、同)“下”、検証開始行までの行数“1”、検証終了行までの行数“1” が規定される。この場合、検証対象の行範囲は、 検索行が“1”(行数開始位置)〜“1”(行数終了位置)なので、主キーワードの文字列を含む行の1行下の行に限定される。さらに、検証のための他のキーワード“商品券”が規定される。この場合、図15に上側の破線矢印で示されているように、主キーワード“カード”を含む行から1行下の行における左の最初の項目「商品券等」の中の文字列「商品券」が、確認された検証用の文字列として抽出される。それによって、主キーワードを用いて抽出された項目(数値)の妥当性が検証され、抽出した項目が格納される。
検索の例7
方式3の検索条件(b)は、検索対象項目として、主キーワードと一致する文字列を含む行を規定し、その行における何番目の項目か(順番)を規定する。検索条件は、抽出対象項目として、主キーワードの文字列を含む行からさらに或る行数だけ上または下の行における或る項目を指定してもよい。検索条件(b)は、さらに2つの検証対象項目として、主キーワードの文字列を含む行から或る行数だけ上および或る行数だけ下の2つの行範囲を規定し、その行範囲にある検証用の他の2つのキーワードと一致する文字列を規定する。
この場合、検索条件(b)は、項目「支払/割引」の右隣すなわち左から2番目の項目の数値(b)を所望のデータとして抽出することを規定する。さらに、検索条件(b)は、その項目(b)が所望の抽出対象項目であることを検証するために、その1行上にある項目「掛売上入金」中の文字または文字列「入」を抽出することを規定し、また、その項目(b)の1〜4行下にある項目「その他」中の文字または文字列「そ」を抽出することを規定する。この場合、図15の精算レシートにおいて、項目「掛売上入金」、項目「支払/割引」および項目「その他」の3行が印字されるものとする。キーワードは、連続文字列でなくてもよい。
例えば、項目「支払/割引」の中の少なくとも「支」を含む文字列(1〜5文字)を主キーワードとして、項目「支払/割引」を含む行の右隣すなわち2番目の項目の数値(b)(「106」)が、所望のデータとして抽出される。さらに、その抽出項目(b)の妥当性を検証するために、項目「掛売上入金」の中の少なくとも「入」を含む文字または文字列(1〜5文字)を他のキーワードとしてその1行上の行から「入」を含む文字または文字列が抽出される。さらに、項目「その他」の中の少なくとも「そ」を含む文字または文字列(1〜3文字)を他のキーワードとしてその1〜5行下の行から「そ」を含む文字または文字列が抽出される。この場合、項目「支払/割引」と項目「その他」の間に例えば項目「クーポン」等の項目が印字されなくても、項目「支払/割引」のデータが抽出できる。
図17は、方式3による図14Aおよび14Bのフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(b)の例を示している。
図17の検索条件(b)において、具体的な検索条件として、検索方式“3”、主キーワード“支”、全ての行において主キーワードが発生(出現)する1つ以上の行における行の順番“1”(最初の行)が規定される。抽出対象行として、主キーワードの文字列を含む行から見た検索対象行の方向(上、下、同)“同”、検索開始行までの行数“0”、検索終了行までの行数“0” が規定される。例2、例3の場合のように、検索対象項目として、主キーワードの文字列を含む行位置から或る行数だけ上または下の行における何番目の項目か(順番)が規定されてもよい。さらに、抽出対象行における検索開始列(左、右)“左”、および抽出対象行における抽出対象項目の順番“2”が規定される。この場合、図15に下側の実線矢印で示されているように、主キーワード“支”を含む行における左の項目「支払/割引」から右の方向に2番目の項目(数値)(例えば「106」)が、所望の項目の所望のデータとして抽出される。
さらに、第1の検証対象項目として、主キーワードの文字列を含む行から見た検証行の方向(上、下、同)“上”、検証開始行までの行数“1”、検証終了行までの行数“1” が規定される。この場合、検証対象の行範囲は、 検証行が“1”(行数開始位置)〜“1”(行数終了位置)なので、主キーワードの文字列を含む行の1行上の行に限定される。さらに、検証のための他のキーワード“入”が規定される。この場合、図15に中央の破線矢印で示されているように、主キーワード“支”を含む行から1行上の行における左の最初の項目「掛売上入金」の中の文字または文字列「入」が、確認された検証用の文字列として抽出される。
さらに、第2の検証対象項目として、主キーワードの文字列を含む行から見た検証行の方向 “下”、検証開始行までの行数“1”、検証終了行までの行数“4” が規定される。この場合、検証対象の行範囲は、検証行が“1”(行数開始位置)〜“4”(行数終了位置)なので、主キーワードの文字列を含む行から下方向の1〜4行である。さらに、検証のためのさらに他のキーワード“そ”が規定される。この場合、図15に下側の破線矢印で示されているように、主キーワード“支”を含む行から4行下の行における左の最初の項目「その他」の文字列「そ」が、確認された検証用の文字列として抽出される。
さらに、2つ検証項目の2つの検証式(検証条件)の論理関係“検1 AND 検2”(<検証式>と</検証式>の間)(論理積)が規定される。それによって、認識率の高い少ない文字数の主キーワードを用いて抽出した項目(数値)の妥当性が2つの検証式で検証され、抽出した項目が格納される。
検索の例8
方式3の検索条件(c)は、検索対象項目として、検索条件(b)と同様の内容を規定する。検索条件(c)では、2つの検証対象項目として2つの他のキーワードを用いていずれかの検証法で検証されればよい。この場合、項目「売掛上入金」と「その他」のいずれかの項目が印字されなくても、項目「支払/割引」のデータが抽出できる。
図18は、方式3による図14Aおよび14Bのフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(c)の例を示している。
図18の検索条件(c)において、2つ検証対象項目の2つの検証式(検証条件)の論理関係以外は、図17の検索条件(b)のものと同様である。具体的な検証条件(c)は、2つ検証項目の2つの2つの検証式の論理関係“検1 OR 検2”(<検証式>と</検証式>の間)(論理和)を規定する。それによって、認識率の高い少ない文字数の主キーワードを用いて抽出した項目(数値)の妥当性が2つの検証式の一方だけで検証されればよく、それによって抽出された項目のデータが格納される。
図19は、方式3による図14Aおよび14Bのフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する手順を説明するためのものである。
検索の例9
方式3の検索条件(d)は、検索対象項目として、検索条件(b)と同様の内容を規定する。検索条件(d)では、2つの検証対象項目としてそれぞれ他の1つおよび2つのキーワードを用いて2つの検証法で、主キーワードを用いて抽出された項目(d)の妥当性が検証される。
検索条件(d)は、第1の検証対象項目として、主キーワードの文字列を含む行から或る行数だけ上または下の行範囲を規定し、その行範囲にある検証用の他のキーワードと一致する文字列を規定する。検索条件(d)は、さらに第2の検証対象項目として、主キーワードの文字列を含む行から或る行数だけ下または上の別の行範囲を規定し、その行範囲にある検証用のさらに他のキーワードと一致する文字列を規定する。検索条件(d)は、第2の検証対象項目の一部として、さらに第2の検証対象項目で検証された他のキーワードの文字列を含む行から或る行数だけ下または上の行範囲を規定し、その行範囲にある検証用のさらに他のキーワードと一致する文字列を規定する。
この場合、検索条件(d)は、その抽出された項目(d)が所望の抽出対象項目であることを検証するために、その1行上にある項目「掛売上入金」中の文字または文字列「入」を抽出することを規定する。検索条件(d)は、その項目(d)が所望の抽出対象項目であることを検証するために、さらに、その2行下にある項目「客割引」中の文字または文字列「客」を抽出し、さらにその2行下にある項目「その他」中の文字または文字列「そ」を抽出することを規定する。この場合、図19の精算レシートにおいて、項目「掛売上入金」、項目「支払/割引」、項目「客割引」および項目「その他」の4行が印字されるものとする。キーワードは、連続文字列でなくてもよい。
例えば、項目「支払/割引」の中の少なくとも「支」を含む文字または文字列(1〜5文字)を主キーワードとして、項目「支払/割引」を含む行の右隣すなわち2番目の項目の数値(d)(「106」)が、所望のデータとして抽出される。さらに、その項目(d)の妥当性を検証するために、項目「掛売上入金」の中の少なくとも「入」を含む文字または文字列(1〜5文字)を他のキーワードとして、その項目(d)の1行上の行から「入」を含む文字または文字列が抽出される。さらに、その項目(d)の妥当性を検証するために、項目「客割引」の中の少なくとも「客」を含む文字または文字列(1〜3文字)をさらに他のキーワードとしてその1〜2行下の行から「客」を含む文字または文字列が抽出される。さらに、その項目(d)の妥当性を検証するために、項目「その他」の中の少なくとも「そ」を含む文字または文字列(1〜3文字)をさらに他のキーワードとして、項目「客割引」を含む行の1〜2行下の行から「そ」を含む文字または文字列が抽出される。この場合、項目「支払/割引」、「客割引」および「その他」の間の項目「クーポン」と「社員割引」のいずれかの項目が印字されなくても、項目「支払/割引」のデータが抽出できる。
図20は、方式3による図14Aおよび14Bのフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(d)の例を示している。
図20の検索条件(d)において、第2の検証対象項以外は、検索条件(b)の図17のものと同様である。
検索条件(d)は、第2の検証項目として、主キーワードの文字列を含む行から見た検証行の方向(上、下、同)“下”、検証開始行までの行数“1”、検証終了行までの行数“2”が規定される。この場合、検証対象の行範囲は、検証行が“1”(行数開始位置)〜“2”(行数終了位置)なので、主キーワードの文字列を含む行の下の1〜2行である。さらに、検証のための他のキーワード“客”が規定される。この場合、図19に中央の破線矢印で示されているように、主キーワード“支”を含む行から2行下の行における左の最初の項目「客割引」の文字または文字列「客」が、確認された検証用の文字列として抽出される。
さらに第2の検証項目の一部に、追加的な検証項目(<検証行2>と</検証行2>の間)として、第2の検証項目の他のキーワードの文字列“客”を含む行から見た検証行の方向“下”、検証開始行までの行数“1”、検証終了行までの行数“2”が規定される。この場合、検証対象の行範囲は、検証行が“1”(行数開始位置)〜“2”(行数終了位置)なので、他のキーワードの文字列“客”を含む行の下の1〜2行である。さらに、検証のための他のキーワード“そ”が規定される。この場合、さらに、図19に下側の破線矢印で示されているように、項目「客割引」を含む行から1〜2行下の範囲の行における左の最初の項目「その他」の文字または文字列「そ」が、確認された検証用の文字列として抽出される。
さらに、2つ検証項目の2つの検証式(検証条件)の論理関係“検1 AND 検2”(論理積)が規定される。それによって、認識率の高い少ない文字数の主キーワードを用いて抽出した項目(数値)の妥当性が2つの検証式で他の3つのキーワードを用いて検証され、抽出した項目が格納される。
検索の例10
方式3の検索条件(e)は、検索対象項目として、検索条件(d)と同様の内容を規定する。検索条件(d)では、1つの他のキーワードを用いた検証法かまたは2つの他のキーワードを用いた別の検証法のいずれかの検証法で検証されればよい。この場合、「掛売上入金」と、項目「客割引」および「その他」の組、のいずれかの項目が印字されなくても、項目「支払/割引細」のデータが抽出できる。
図21は、方式3による図14Aおよび14Bのフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(e)の例を示している。
図21の検索条件(e)において、2つ検証対象項目の2つの検証式(検証条件)の論理関係以外は、図20の検索条件(d)のものと同様である。具体的な検証条件(e)は、検証のための2つの検証式の論理関係“検1 OR 検2”(論理和)を規定する。それによって、認識率の高い少ない文字数の主キーワードを用いて抽出した項目(数値)の妥当性が2つの検証式の一方だけで他の1つまたは2つのキーワードを用いて検証されればよく、それによって抽出された項目のデータが格納される。
図22Aおよび22Bは、情報処理端末30のプロセッサ302(データ抽出部3028)によって実行される、図4のステップ508における方式4による検索条件に従って文字データを検索するためのさらに他のフローチャートの例を示している。この場合、主キーワードに対する文字列の一致率または認識率に応じて、例えば画数が少ない一致率の高い他のキーワードをさらに用いて所望の項目のデータが抽出される。
ステップ542および544は図5のものと同様である。ステップ544の後のステップ706において、プロセッサ302は、その行の認識文字データを主キーワードと比較し分析して、認識文字データの文字列と検索条件における主キーワードとの一致率を求める。ここで、一致率は、例えば、主キーワードの文字数に対する1行分の認識文字の中の一致する文字数の比率であってもよい。その際、認識文字における文字が、主キーワードにおける文字の順序に従って比較されてもよい。
ステップ708において、プロセッサ302は、1行の認識文字の中に主キーワード中の文字列と一致する文字列、またはそれと同じ順序で出現する複数の文字があるかどうかを判定する。そのような文字列または複数の文字が存在しないと判定された場合は、手順はステップ552に進む。そのような文字列または複数の文字が存在すると判定された場合は、手順はステップ710に進む。
ステップ710において、プロセッサ302は、1行の認識文字データと主キーワードとの一致率を、一致するとみなせるかどうかを判定するための閾値1より高いか(>閾値1)(または閾値1以上か(≧閾値1))どうかを判定する。閾値1は、例えば75〜85%の範囲の或る値、例えば80%であってもよい。一致率が閾値1より高い(または閾値1以上)と判定された場合、手順は図22Bのステップ554に進む。一致率が閾値1以下(または閾値1未満)と判定された場合、手順はステップ712に進む。
ステップ712において、プロセッサ302は、1行の認識文字データと主キーワードとの一致率を、検証を行うかどうかを判定するための閾値2より高いか(>閾値2)(または閾値2以上か(≧閾値2))どうかを判定する。閾値2は、例えば、36〜46%の範囲の或る値、例えば41%であってもよい。一致率が閾値2より高い(または閾値2以上)と判定された場合、手順は図22Bのステップ670に進む。一致率が閾値2以下(または閾値2未満)と判定された場合、手順はステップ552に進む。
ステップ552は、図5のものと同様である。ステップ552において全ての行を読み込んだと判定された場合は、手順は図22Aおよび22Bのルーチンを出る(所望項目抽出の不成功)。
図22Bを参照すると、ステップ670〜680は図14Bのものと同様である。
ステップ680において、確認された文字列が検索条件における検証式に適合すると判定された場合は、手順はステップ554に進む(所望項目抽出の成功)。それが適合しないと判定された場合は、手順は図22Aのステップ544に戻る。ステップ554および556は、図5のものと同様である。
図23は、方式4による図22Aおよび22Bのフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する手順を説明するためのものである。
検索の例11
方式4の検索条件(a)は、検索対象項目として、主キーワードと一致または近似するとみなせる文字列を含む行を規定し、その行における何番目の項目か(順番)を規定する。一致または近似するとみなせる条件は、高い閾値1より高いまたはそれ以上の割合で(>または≧)文字データ中の或る文字列が主キーワードと一致する場合である。一致または近似するとみなせる別の条件は、低い閾値2より高いまたはそれ以上の割合で(>または≧)文字データ中の或る文字列が主キーワードと一致し、かつ検証用の他のキーワードと一致する文字データ中の他の文字または文字列が抽出されたことを表す。検索条件(a)は、抽出対象項目として、主キーワードと一致または近似するとみなされた文字列を含む行からさらに或る行数だけ上または下の行における或る項目を指定してもよい。
検索条件(a)は、その一致率が閾値1と閾値2の間の値である場合に、第1の検証対象項目として、主キーワードがその一致率で一致した文字列を含むその行から或る行数だけ上の行範囲を規定し、その行範囲にある検証用の他のキーワードと一致する文字列を規定する。この場合、検索条件(a)は、さらに第2の検証対象項目として、主キーワードとその一致率で一致した文字列を含むその行から或る行数だけ下の行範囲を規定し、その行範囲にある検証用のさらに他のキーワードと一致する文字列を規定する。検索条件(a)は、第2の検証対象項目の一部として、さらに、検証されたその行から或る行数だけ下の行範囲を規定し、その行範囲にある検証用のさらに他のキーワードと一致する文字列を規定する。この場合、検索条件(a)は、項目「精算上現金売上」の右隣すなわち左から2番目の項目の数値(a)を所望のデータとして抽出する。項目「精算上現金売上」の少なくとも一部の文字列の主キーワードとの一致率が閾値1より高い場合、項目抽出が成功し、検索は終了する。例えば、閾値1は、例えば75〜85%、例えば80%であってもよい。例えば、精算レシート上の項目「精算上現金」が主キーワードであり、1行の認識文字が「精算上現金」または「精算上王見金」と認識された場合、一致率は100%または80%であり、閾値1以上となる。
一方、項目「精算上現金売上」の主キーワードとの一致率が閾値1より低く閾値2より高い場合、検索条件(a)は、その項目が所望の抽出対象項目であることを検証するために、その2行上にある項目「感謝カード」中の文字列「カード」を抽出する。例えば、閾値2は、例えば35〜45%、例えば41%であってもよい。例えば、精算レシート上の項目「精算上現金」が主キーワードであり、認識結果の1行の文字が「日幸反上王見金」または「8幸反上現金」である場合、一致率は60%であり、閾値1未満かつ閾値2以上となる。また、例えば、認識結果の1行の文字が「8幸反上王見金」または「幸反上王見金」である場合、一致率は40%または20%であり、閾値2未満となる。
検索条件(a)は、さらに、その項目が所望の抽出対象項目であることを検証するために、その2行下にある項目「支払/割引」中の文字または文字列「支」を抽出し、さらにその3行下にある項目「社員割引」中の文字または文字列「員」を抽出する。この場合、図23の精算レシートにおいて、項目「感謝カード」、項目「精算上現金売上」、項目「支払/割引」、項目「社員割引」の4行が印字されるものとする。キーワードは、連続文字列でなくてもよい。
例えば、項目「精算上現金売上」の中の少なくとも「精算上現金」を含む文字列(5〜7文字)を主キーワードとして、項目「精算上現金売上」を含む行の右隣すなわち2番目の項目の数値(a)(「120,0005」)が、所望のデータとして抽出される。項目「精算上現金売上」の主キーワードとの一致率が閾値1未満かつ閾値2以上である場合、その抽出項目の妥当性を検証するために、さらに項目「感謝カード」の中の少なくとも文字列「カード」を含む文字列(3〜5文字)を他のキーワードとしてその1〜2行上の行から文字列「カード」が抽出される。さらに、その抽出項目の妥当性を検証するために、項目「支払/割引」の中の少なくとも「支」を含む文字または文字列(1〜5文字)をさらに他のキーワードとしてその1〜2行下の行から支」を含む文字または文字列が抽出される。さらに、その抽出項目の妥当性を検証するために、項目「社員割引」の中の少なくとも「員」を含む文字または文字列(1〜4文字)をさらに他のキーワードとしてその1〜3行下の行から「員」を含む文字または文字列が抽出される。検証対象項目として、検索条件は、他のキーワードの文字列を含む行からさらに或る行数だけ上または下の行における或る項目順番の項目を指定してもよい。
図24は、方式4による図22Aおよび22Bのフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(a)の例を示している。
図24の検索条件(a)において、具体的な検索条件として、検索方式“4”、主キーワード“精算上現金”、全ての行において主キーワードが発生(出現)する1つ以上の行における行の順番“1”(最初の行)が規定される。抽出対象行として、主キーワードの文字列を含む行から見た検索対象行の方向(上、下、同)“同”、検索開始行までの行数“0”、検索終了行までの行数“0” が規定される。例2、例3の場合のように、検索対象項目として、主キーワードの文字列を含む行から或る行数だけ上または下の行における何番目の項目か(順番)が規定されてもよい。さらに、抽出対象行における検索開始列(左、右)“左”、および抽出対象行における抽出対象項目の順番“2”が規定される。この場合、図23に実線矢印で示されているように、主キーワード“精算上現金”を含む行における左の項目「精算上現金売上」から右の方向に2番目の項目(数値)(例えば「120,005”)が、所望の項目の所望のデータとして抽出される。
検索条件(a)は、文字データ中の1行の文字列と主キーワードとの一致率に関する一致条件として、正常な一致と判定される閾値の一致率“80”(<正常率開始>と</正常率開始>の間)、閾値一致率との比較条件“≧”(<正常率条件>と</正常率条件>の間)を規定する。さらに、検索条件(a)は、1行の文字列と主キーワードとの一致率に関する検証を行う条件として、他のキーワードを用いて検証を行うための閾値一致率“41”(<検証率開始>と</検証率開始>の間)、閾値一致率との比較条件“≧”(<検証率条件>と</検証率条件>の間)を規定する。
さらに、検証条件(a)は、2つの検索対象項目として、方式3の検索条件(d)と同様の内容を規定する。
検索の例12
方式4の検索条件(b)は、検索対象項目および2つの検証対象項目として、方式4の検索条件(a)と同様の内容を規定する。検索条件(b)では、1つの他のキーワードを用いた検証法かまたは2つの他のキーワードを用いた検証法のいずれかの検証法で検証されればよい。
図25は、方式4による図22Aおよび22Bのフローチャートに従って、図3Aの精算レシートの認識結果の文字データのファイルを検索する記述形式の検索条件(b)の例を示している。
図25の検索条件(b)において、2つ検証対象項目の2つの検証式(検証条件)の論理関係以外は、図24の検索条件(a)のものと同様である。具体的な検証条件(b)は、検証のための2つの検証式の論理関係“検1 OR 検2”(論理和)を規定する。それによって、認識率の高い少ない文字数の主キーワードを用いて抽出した項目(数値)の妥当性が2つの検証式の一方だけで他の1つまたは2つのキーワードを用いて検証されればよく、それによって抽出された項目のデータが格納される。
実施形態によれば、文字認識して得られた誤認識を含む文字データにおいて、高い認識成功率の文字列または複数の文字の相対的な位置関係に基づいて、所望の項目の文字または文字列を検出することができ、その所望の項目に対応する所望のデータを抽出することができる。また、実施形態によれば、テナント店の様々な種類の精算レシートの文字データを運営業者用のデータ・フォーマットに自動的に変換できる。また、実施形態によれば、各精算レシートに対して、印字レイアウト情報(例えば、印字開始位置、読み込み行数、等)を設定しなくてよく、また、レシート項目情報(例えば、行番号、1行の桁数、各項目の桁数)を設定しなくてよい。
所望の項目のデータの抽出を、実施形態では精算レシートを文字認識して生成された文字データについて説明したが、これに限定されることなく、例えば、その他の印字された用紙を文字認識して生成された文字データについても適用可能である。
実施形態では、情報処理端末30またはそのプロセッサ302によって実行されるものとして説明した処理またはその少なくとも一部の処理は、サーバ装置40またはそのプロセッサ402によって実行されてもよい。
ここで挙げた全ての例および条件的表現は、発明者が技術促進に貢献した発明および概念を読者が理解するのを助けるためのものであり、ここで具体的に挙げたそのような例および条件に限定することなく解釈され、また、明細書におけるそのような例の編成は本発明の優劣を示すこととは関係ない、と理解される。本発明の実施形態を詳細に説明したが、本発明の精神および範囲から逸脱することなく、それに対して種々の変更、置換および変形を施すことができる、と理解される。
以上の実施例を含む実施形態に関して、さらに以下の付記を開示する。
(付記1) 所望の項目に対する少なくとも1つの項目の文字または文字列の位置関係を表す条件情報を格納し、文字認識によって生成された、文字位置情報を含む文字データを格納する記憶部と、
前記文字データを前記少なくとも1つの項目の文字または文字列と比較して、前記文字データにおいて前記少なくとも1つの項目の文字または文字列と一致または近似するとみなせる文字または文字列を検出し、前記検出された文字または文字列と前記位置関係にある前記所望の項目のデータを抽出する抽出部と、
を具える情報処理装置。
(付記2) 前記位置関係は、さらに、前記少なくとも1つの項目の中の2つ以上の項目の文字または文字列の間の位置関係を含むものであることを特徴とする、付記1に記載の情報処理装置。
(付記3) 前記位置関係は、前記文字データにおける前記少なくとも1つの項目の文字または文字列の中の或る項目の文字または文字列の位置に対する前記少なくとも1つの項目の文字または文字列の中の別の文字または文字列が位置する範囲を含むものであることを特徴とする、付記1または2に記載の情報処理装置。
(付記4) 複数の項目の文字または文字列の第1の位置関係と、前記複数の項目の中の1つの項目の文字または文字列に対する所望の項目の第2の位置関係とを表す条件情報を格納し、文字認識によって生成された、文字位置情報を含む文字データを格納する記憶部と、
前記文字データを前記複数の項目の文字または文字列と比較して、前記文字データにおいて前記複数の項目の文字または文字列と一致または近似するとみなせる前記第1の位置関係にある複数の文字または文字列を検出し、前記文字データにおいて、前記検出された複数の文字または文字列における前記1つの項目の文字または文字列と一致または近似すると見なせる文字または文字列に対して前記第2の位置関係にある前記所望の項目のデータを抽出する抽出部と、
を具える情報処理装置。
(付記5) 前記1つの項目の文字列が、前記文字データにおける或る文字列と一致する文字の数の割合が閾値より大きい場合に、前記或る文字列が前記1つの項目の文字列と一致または近似するとみなされることを特徴とする、付記1乃至4のいずれかに記載の情報処理装置。
(付記6) 前記第1の位置関係は、前記1つの項目の文字または文字列と前記複数の項目の中の他の2つの項目の文字または文字列の間の位置関係であり、
前記文字データにおいて前記1つの項目の文字または文字列に対して前記第1の位置関係にある前記2つの項目のうちの1つの項目の文字または文字列と一致する文字または文字列が検出された場合、前記抽出部は、前記文字データにおいて前記2つの項目のうちの別の項目の文字または文字列と一致する文字または文字列があるかどうかを判定しないものであることを特徴とする、付記5に記載の情報処理装置。
(付記7) 所望の項目に対する少なくとも1つの項目の文字または文字列の位置関係を表す条件情報を記憶部から取り出し、
文字認識によって生成された、文字位置情報を含む文字データを前記記憶部から取り出し、
前記文字データを前記少なくとも1つの項目の文字または文字列と比較して、前記文字データにおいて前記少なくとも1つの項目の文字または文字列と一致または近似するとみなせる文字または文字列を検出し、
前記検出された文字または文字列と前記位置関係にある前記所望の項目のデータを抽出して前記記憶部に格納する
処理を情報処理装置に実行させるためのプログラム。
(付記8) 複数の項目の文字または文字列の第1の位置関係と、前記複数の項目の中の1つの項目の文字または文字列に対する所望の項目の第2の位置関係とを表す条件情報を記憶部から取り出し、
文字認識によって生成された、文字位置情報を含む文字データを前記記憶部から取り出し、
前記文字データを前記複数の項目の文字または文字列と比較して、前記文字データにおいて前記複数の項目の文字または文字列と一致または近似するとみなせる前記第1の位置関係にある複数の文字または文字列を検出し、
前記文字データにおいて、前記検出された複数の文字または文字列における前記1つの項目の文字または文字列と一致または近似すると見なせる文字または文字列に対して前記第2の位置関係にある前記所望の項目のデータを抽出して前記記憶部に格納する
処理を情報処理装置に実行させるためのプログラム。
(付記9) 情報処理装置が、
所望の項目に対する少なくとも1つの項目の文字または文字列の位置関係を表す条件情報を記憶部から取り出し、
文字認識によって生成された、文字位置情報を含む文字データを前記記憶部から取り出し、
前記文字データを前記少なくとも1つの項目の文字または文字列と比較して、前記文字データにおいて前記少なくとも1つの項目の文字または文字列と一致または近似するとみなせる文字または文字列を検出し、
前記検出された文字または文字列と前記位置関係にある前記所望の項目のデータを抽出する
ことを特徴とするデータの抽出方法。
(付記10) 情報処理装置が、
複数の項目の文字または文字列の第1の位置関係と、前記複数の項目の中の1つの項目の文字または文字列に対する所望の項目の第2の位置関係とを表す条件情報を記憶部から取り出し、
文字認識によって生成された、文字の位置情報を含む文字データを前記記憶部から取り出し、
前記文字データを前記複数の項目の文字または文字列と比較して、前記文字データにおいて前記複数の項目の文字または文字列と一致または近似するとみなせる前記第1の位置関係にある複数の文字または文字列を検出し、
前記文字データにおいて、前記検出された複数の文字または文字列における前記1つの項目の文字または文字列と一致または近似すると見なせる文字または文字列に対して前記第2の位置関係にある前記所望の項目のデータを抽出して前記記憶部に格納する
ことを特徴とするデータの抽出方法。
5 ネットワーク
20 スキャナ
30 情報処理端末
302 プロセッサ
312 記憶部
332、432 画像データベース
334、434 文字データベース
40 サーバ装置
402 プロセッサ
412 記憶部
436 条件マスタファイル