JP2019168856A - 画像処理装置、画像処理方法および画像処理プログラム - Google Patents
画像処理装置、画像処理方法および画像処理プログラム Download PDFInfo
- Publication number
- JP2019168856A JP2019168856A JP2018055197A JP2018055197A JP2019168856A JP 2019168856 A JP2019168856 A JP 2019168856A JP 2018055197 A JP2018055197 A JP 2018055197A JP 2018055197 A JP2018055197 A JP 2018055197A JP 2019168856 A JP2019168856 A JP 2019168856A
- Authority
- JP
- Japan
- Prior art keywords
- character recognition
- read image
- information
- target area
- reference point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】特定項目の情報を文字認識により適切に得る。【解決手段】画像処理装置は、レシートまたは請求書の読み取りにより生成された読取画像を取得する取得部と、前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定部と、前記レシートまたは請求書に含まれる特定項目の情報の位置を、前記基準点からの相対的な位置により規定したレイアウト情報を予め記憶する記憶部と、前記設定された基準点と前記レイアウト情報とに基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う文字認識部と、を備える。【選択図】図2
Description
本発明は、文字認識処理を実行するための画像処理装置、画像処理方法および画像処理プログラムに関する。
イメージ入力装置を通じて読み取ったレシートの文字画像を文字コードデータに変換し、フォーマット記憶部に記憶されたレシートのフォーマットに基づいて、文字コードデータから、日付、品目、価格、消費税等のデータを抽出するデータ処理装置が開示されている(特許文献1参照)。
レシート内での印字領域の位置、つまりレシート内での印字領域と印字領域の周囲のレシートの余白との位置関係は、例えば、同じ店舗で発行されたレシートであってもばらつくことがある。そのため、文献1のように、特定の店舗のレシートのフォーマットを記憶していたとしても、レシートの読み取りにより生成された画像に対して適切な位置関係でフォーマットを適用しなければ、日付等の項目毎の情報を適切に抽出することはできない。そのため、より適切な文字認識結果を得るための改善が求められていた。
画像処理装置は、レシートまたは請求書の読み取りにより生成された読取画像を取得する取得部と、前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定部と、前記レシートまたは請求書に含まれる特定項目の情報の位置を、前記基準点からの相対的な位置により規定したレイアウト情報を予め記憶する記憶部と、前記設定された基準点と前記レイアウト情報とに基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う文字認識部と、を備える。
以下、各図を参照しながら本発明の実施形態を説明する。なお各図は、本実施形態を説明するための例示に過ぎない。
1.システムの概略説明:
図1は、本実施形態にかかるシステム1の構成を簡易的に示している。システム1は、スキャナー10、通信装置20、メインサーバー30、ストレージサーバー50を含んでいる。メインサーバー30およびストレージサーバー50は、インターネット通信網を通じてユーザーにクラウドサービスを提供可能なサーバーである。
図1は、本実施形態にかかるシステム1の構成を簡易的に示している。システム1は、スキャナー10、通信装置20、メインサーバー30、ストレージサーバー50を含んでいる。メインサーバー30およびストレージサーバー50は、インターネット通信網を通じてユーザーにクラウドサービスを提供可能なサーバーである。
スキャナー10は、原稿を光学的に読み取り、読取結果としての所定のフォーマットの画像データを生成し画像データを外部へ出力可能な読取装置である。スキャナー10は、スキャナーとしての機能に加え、印刷機能やファクシミリ通信機能等の複数の機能を兼ね備えた複合機であってもよい。スキャナー10は、通信装置20と有線または無線により通信可能に接続しており、画像データを通信装置20へ送信する。
通信装置20は、例えば、パーソナルコンピューター(PC)、スマートフォン、タブレット型端末、携帯電話機、或いはそれらと同程度の処理能力を有する情報処理装置によって実現される。通信装置20は、制御部21、通信インターフェイス(IF)23、表示部24、操作受付部25等を備える。制御部21は、プロセッサーとしてのCPU21a、ROM21b、RAM21c等を有する一つ又は複数のICや、その他のメモリー等を含んで構成される。
制御部21では、プロセッサー(CPU21a)が、ROM21bやROM21b以外のメモリー等に保存されたプログラムに従った演算処理を、RAM21c等をワークエリアとして用いて実行することにより、通信装置20を制御する。制御部21はプログラム22を搭載している。プログラム22は、スキャナー10が原稿の読み取りにより生成した画像データをメインサーバー30へアップロードするためのアプリケーションである。
通信IF23は、通信装置20が公知の通信規格を含む所定の通信プロトコルに準拠して有線又は無線で外部と通信を実行するための一つまたは複数のIFの総称である。通信装置20は、スキャナー10と接続しているだけでなく、通信IF23を介して、ネットワークNWに接続する。ネットワークNWは、ローカルエリアネットワーク(LAN)やインターネット通信網やその他の公衆回線等を含む。
表示部24は、視覚的情報を表示するための手段であり、例えば、液晶ディスプレイ(LCD)や、有機ELディスプレイ等により構成される。表示部24は、ディスプレイと、ディスプレイを駆動するための駆動回路とを含む構成であってもよい。操作受付部25は、ユーザーによる操作を受け付けるための手段であり、例えば、物理的なボタンや、タッチパネルや、マウスや、キーボード等によって実現される。むろん、タッチパネルは、表示部24の一機能として実現されるとしてもよい。表示部24および操作受付部25を含めて、通信装置20の操作パネルと呼ぶことができる。
スキャナー10と通信装置20は、図1に例示したように互いに独立した装置であってもよいが、実態としてそれら全体が一つの装置に含まれていてもよい。具体的には、スキャナー10は、通信装置20の構成を含むことにより、ネットワークNWを介した外部との通信機能を兼ね備えた複合機として実現されてもよい。
メインサーバー30は、ネットワークNW上でサーバーとして機能する一台あるいは複数台の情報処理装置によって実現される。メインサーバー30は、制御部31、通信IF33、記憶部34等を備える。制御部31は、プロセッサーとしてのCPU31a、ROM31b、RAM31c等を有する一つ又は複数のICや、その他のメモリー等を含んで構成される。制御部31では、プロセッサー(CPU31a)が、ROM31bや記憶部34等に保存されたプログラムに従った演算処理を、RAM31c等をワークエリアとして用いて実行することにより、メインサーバー30を制御する。制御部31はプログラムの一つとしてプログラム32を搭載している。プログラム32は、メインサーバー30の制御部31が実行する画像処理プログラムに該当する。また、プログラム32を実行するメインサーバー30は、画像処理装置の具体例に該当する。なお、プロセッサーとしては、一つのCPUに限られることなく、複数のCPUやASIC等のハードウェア回路により処理を行う構成としてもよいし、CPUとハードウェア回路とが協働して処理を行うようにしてもよい。
通信IF33は、メインサーバー30が公知の通信規格を含む所定の通信プロトコルに準拠して有線又は無線で外部と通信を実行するための一つまたは複数のIFの総称である。記憶部34は、例えば、ハードディスクドライブや不揮発性のメモリーによって構成される記憶手段であり、本実施形態では、OCR(Optical Character Recognition)エンジン35のプログラム、DL(Deep Learning)エンジン36のプログラム、レイアウト情報37,38等を予め記憶している。OCRエンジン35やDLエンジン36はソフトウェアの一種である。プログラム32だけでなくOCRエンジン35やDLエンジン36を含めて画像処理プログラムと呼んでもよい。
メインサーバー30は、図1の例では、ストレージサーバー50と通信可能に接続している。ストレージサーバー50も、ネットワークNW上でサーバーとして機能する一台あるいは複数台の情報処理装置によって実現される。ストレージサーバー50は、メインサーバー30からデータを取得して格納するためのサーバーである。なお、メインサーバー30とストレージサーバー50とは、装置として明確に分かれていても分かれていなくてもよく、例えば、共通のサーバーがメインサーバー30およびストレージサーバー50として機能する構成であってもよい。図1では示していないが、サーバー30,50に対して、これらサーバーをオペレーターが操作するために必要な表示部や操作受付部が接続されていてもよい。
メインサーバー30側の構成である制御部31、プログラム32、通信IF33等と、通信装置20側の構成である制御部21、プログラム22、通信IF23等とを判り易く区別するために、便宜上、第1制御部31、第1プログラム32、第1通信IF33、第2制御部21、第2プログラム22、第2通信IF23、等と表現してもよい。
2.文字認識処理:
図2は、メインサーバー30の制御部31がプログラム32に従って実行する画像処理をフローチャートにより示している。当該フローチャートは、スキャナー10による原稿の読取結果から、特定項目の情報を検出し保存する処理である。また、当該フローチャートの少なくとも一部は、画像処理方法を示していると言える。
図2は、メインサーバー30の制御部31がプログラム32に従って実行する画像処理をフローチャートにより示している。当該フローチャートは、スキャナー10による原稿の読取結果から、特定項目の情報を検出し保存する処理である。また、当該フローチャートの少なくとも一部は、画像処理方法を示していると言える。
システム1において、先ず、スキャナー10は、ユーザーが任意にセットした原稿を読み取ることにより画像データを生成する。本実施形態では、ユーザーがスキャナー10に読み取らせる原稿は、店舗等で発行されたレシート等の証憑または請求書であるとする。以下では、ユーザーがスキャナー10に読み取らせるレシートまたは請求書を、単に原稿とも呼ぶ。スキャナー10は、原稿の読み取りにより生成した画像データ(以下、読取画像)を通信装置20へ送信する。通信装置20の制御部21は、通信IF23を介してスキャナー10へ原稿の読取開始を指示し、スキャナー10は、制御部21からの原稿の読取開始の指示に従って原稿の読み取りを開始するとしてもよい。
通信装置20においては、プログラム22を実行する制御部21は、スキャナー10から受信した読取画像を、通信IF23およびネットワークNWを介してメインサーバー30へアップロードする。
メインサーバー30においては、制御部31は、通信装置20から送信された読取画像を、通信IF33を介して取得する(ステップS100)。なお、制御部31は、通信装置20から受信した読取画像を、一旦、記憶部34に保存し、ステップS100では、記憶部34から読取画像を取得してもよい。ステップS100は、レシートまたは請求書の読み取りにより生成された読取画像を取得する取得工程に該当する。また、ステップS100を実現する点において、プログラム32を実行する制御部31は、読取画像を取得する取得部39として機能すると言える。
メインサーバー30においては、制御部31は、通信装置20から送信された読取画像を、通信IF33を介して取得する(ステップS100)。なお、制御部31は、通信装置20から受信した読取画像を、一旦、記憶部34に保存し、ステップS100では、記憶部34から読取画像を取得してもよい。ステップS100は、レシートまたは請求書の読み取りにより生成された読取画像を取得する取得工程に該当する。また、ステップS100を実現する点において、プログラム32を実行する制御部31は、読取画像を取得する取得部39として機能すると言える。
ステップS110では、制御部31は、読取画像に含まれる印字領域を特定し、印字領域に対して所定の位置関係となる読取画像内の位置に、基準点を設定する。ステップS110は、読取画像内に基準点を設定する設定工程に該当する。また、ステップS110を実現する点において、プログラム32を実行する制御部31は、読取画像内に基準点を設定する設定部40として機能すると言える。
図3は、ステップS110の詳細をフローチャートにより示している。
図4は、ステップS110の処理の流れを、具体例を用いて説明する図である。
ステップS111では、制御部31は、読取画像に含まれる画毎の輪郭を抽出し、輪郭が内接する矩形を生成する。ステップS111で生成する矩形を輪郭枠と呼ぶ。ここで言う、読取画像に含まれる画とは、一つの文字や、一つのロゴ、その他、制御部31が一まとまりと認識できる模様や図形である。基本的には、読取画像内において原稿の紙の色(白色)よりも暗い部分は、輪郭が抽出される。
図4は、ステップS110の処理の流れを、具体例を用いて説明する図である。
ステップS111では、制御部31は、読取画像に含まれる画毎の輪郭を抽出し、輪郭が内接する矩形を生成する。ステップS111で生成する矩形を輪郭枠と呼ぶ。ここで言う、読取画像に含まれる画とは、一つの文字や、一つのロゴ、その他、制御部31が一まとまりと認識できる模様や図形である。基本的には、読取画像内において原稿の紙の色(白色)よりも暗い部分は、輪郭が抽出される。
図4の上段左には、ステップS100で取得された読取画像IMの一部を例示している。読取画像IMは、ユーザーが利用した店舗で発行されたレシートをスキャナー10が読み取ったことにより生成された画像データである。また、図4の上段右には、ステップS111で読取画像IM内に生成された輪郭枠CFそれぞれを実線の矩形にて示している。図4の、上段左の読取画像IMと、上段右のステップS111を経た読取画像IMとを比較すると判るように、輪郭枠CFは、基本的には読取画像IM内の文字単位で生成される。ただし、例えば、一つの文字を構成する各要素(例えば、漢字の各部首)に対応して別々の輪郭枠CFが生成されることも有り得る。図4では、上段左に示した読取画像IM以外では、読取画像IM内の文字の表記を省略している。
ステップS112では、制御部31は、ステップS111で生成した輪郭枠に基づいて、読取画像内に印字行を特定する。印字行とは、簡単に言うと、輪郭枠が読取画像の横方向に沿って並んでいる領域である。制御部31は、一つの輪郭枠と、この一つの輪郭枠の横方向の隣に在る別の輪郭枠とを比較したとき、比較した二つの輪郭枠が、夫々の縦方向の長さ(縦幅)の範囲が縦方向において少なくとも一部重なる関係にある場合、それら二つの輪郭枠は共通の印字行に含める、と判定する。制御部31は、このような輪郭枠同士の比較を繰り返し、共通の印字行に含めるべき全ての輪郭枠を包含する最小の矩形を、一つの印字行とする。印字行は、読取画像内の印字領域である。
図4の下段左には、ステップS112により読取画像IM内で特定された印字行PLそれぞれを実線の矩形にて示している。印字行PL内に破線で示した各矩形は、印字行PLに含まれている輪郭枠CFである。なお図4の、上段右の読取画像IMと、下段左のステップS112を経た読取画像IMとを比較すると判るように、読取画像IM内の右上角近傍の一つの輪郭枠CFは、ステップS112により、それのみで一つの印字行PLとして特定されている。
ステップS112による印字行の特定は、仮の特定である。
ステップS113では、制御部31は、所定のノイズの条件に該当するノイズ領域を、ステップS112で特定した印字行から除去する。これは、原稿の染みや汚れ、あるいは原稿に付着した塵や埃等の読取結果が、読取画像内で印字行の一つとされることを防ぐためである。
ステップS113では、制御部31は、所定のノイズの条件に該当するノイズ領域を、ステップS112で特定した印字行から除去する。これは、原稿の染みや汚れ、あるいは原稿に付着した塵や埃等の読取結果が、読取画像内で印字行の一つとされることを防ぐためである。
所定のノイズの条件は、幾つか考えられる。制御部31は、ステップS112で特定した印字行のうち、例えば、予め定められた文字の最小サイズの面積よりも面積が狭いという条件(第1条件)に該当する印字行をノイズ領域と認定し、印字行から除去する。
さらに、制御部31は、ステップS112において特定した印字行の縦幅の平均値、あるいは中央値、あるいは最頻値を、印字行の縦幅の代表値として算出する。そして制御部31は、ステップS112で特定した印字行のうち、例えば、縦幅が前記代表値の半分に満たないという条件(第2条件)に該当する印字行をノイズ領域と認定し、印字行から除去してもよい。この第2条件を用いることで、前記第1条件では除去できない、読取画像の横方向に長い線状の汚れ等によるノイズを除去することができる。
さらに、制御部31は、ステップS112で特定した印字行のうち、輝度(例えば、印字行内の平均輝度)が、輝度に関するしきい値よりも高いという条件(第3条件)に該当する印字行をノイズ領域と認定し、印字行から除去してもよい。輝度に関するしきい値とは、通常は黒である文字の色と、文字よりも明るい色とを分離するためのしきい値であり、予め定められたしきい値であってもよい。あるいは、制御部31は、印字行毎の輝度の分布(ヒストグラム)を生成し、このヒストグラムを解析することにより、例えば、ヒストグラムにおける高輝度側の上位数パーセントの分布を除去するためのしきい値を、前記輝度に関するしきい値に設定してもよい。前記第3条件を用いることで、前記第1条件や第2条件では除去できない、文字の色と比較して薄い色の汚れ等によるノイズを除去することができる。
ステップS114では、制御部31は、ステップS112で特定した印字行のうち、ステップS113で除去の対象としなかった印字行を特定する。つまり、読取画像内の印字領域が、ステップS114で最終的に特定される。図4の上段左の読取画像IMを見ると、読取画像IM内の右上角近傍に黒い点が表現されている。この黒い点は、原稿がスキャナー10によって読み取られるときに原稿に付着していた何らかの汚れが原稿とともに読み取られた結果である。図4の例では、この黒い点は、ステップS111において一つの輪郭枠CFが生成され、ステップS112において一つの印字行PLとして特定されたが、ステップS113によりノイズ領域であるとして除去されている。
ステップS115では、制御部31は、ステップS114で特定した印字行(印字領域)に対して所定の位置関係となる読取画像内の位置に、基準点を設定する。本実施形態では、一例として、制御部31は、読取画像内で最も上側の印字行の左上の角を、基準点に設定する。図4の下段右には、ステップS113,S114,S115を経て、読取画像IM内で最も上側の印字行PLの左上の角が基準点RPに設定された例を示している。
図2に戻って説明を続ける。
ステップS120では、制御部31は、OCRエンジン35を起動させ、ステップS100で取得した読取画像を対象とした文字認識処理をOCRエンジン35に実行させる。ステップS120では、OCRエンジン35は、読取画像に含まれている一文字らしき画像、例えば、上述した輪郭枠単位の画像を順次入力し、画像から認識(推測)した文字を文字データ(テキストデータ)に変換して出力する。制御部31は、このようなOCRエンジン35による文字認識処理の結果としてのテキストデータを取得する。OCRエンジン35は、入力した画像から漢字、平仮名、片仮名、数字、アルファベット、その他の記号等、多くの種類の文字を推測可能な汎用的なOCRエンジンである。
ステップS120では、制御部31は、OCRエンジン35を起動させ、ステップS100で取得した読取画像を対象とした文字認識処理をOCRエンジン35に実行させる。ステップS120では、OCRエンジン35は、読取画像に含まれている一文字らしき画像、例えば、上述した輪郭枠単位の画像を順次入力し、画像から認識(推測)した文字を文字データ(テキストデータ)に変換して出力する。制御部31は、このようなOCRエンジン35による文字認識処理の結果としてのテキストデータを取得する。OCRエンジン35は、入力した画像から漢字、平仮名、片仮名、数字、アルファベット、その他の記号等、多くの種類の文字を推測可能な汎用的なOCRエンジンである。
ステップS130では、制御部31は、読取画像に対するステップS120の文字認識処理の結果から、第1の特定項目に関する所定のキーワードの抽出を試みる。図2では、キーワードを「KW」と略している。以下では一例として、第1の特定項目は、電話番号であるとする。従って、第1の特定項目に関する所定のキーワードとは、電話番号の存在を示唆する「電話」や「TEL」等といった文字列である。制御部31は、読取画像に対するステップS120の文字認識処理の結果から、このようなキーワードのいずれか一つ以上を抽出できた場合に、ステップS130において“Yes”と判定し、ステップS140へ進む。一方、制御部31は、読取画像に対するステップS120の文字認識処理の結果から、第1の特定項目に関する所定のキーワードのいずれも抽出できなかった場合、ステップS130において“No”と判定し、ステップS170へ進む。
ステップS140では、制御部31は、ステップS110で設定した基準点と、記憶部34に記憶されているレイアウト情報37とに基づいて、文字認識処理を行う。
図5は、ステップS140の詳細をフローチャートにより示している。
図6Aは、レイアウト情報37の一例を示している。
図5は、ステップS140の詳細をフローチャートにより示している。
図6Aは、レイアウト情報37の一例を示している。
ステップS141では、制御部31は、レイアウト情報37から、一つの発行元の第1の特定項目の情報に関する位置、つまり電話番号の位置を読み出して取得する。レイアウト情報37は、原稿に含まれる特定項目の情報の位置を、基準点からの相対的な位置により規定したレイアウト情報の一種であり、本実施形態では、第1のレイアウト情報に該当する。
具体的には、レイアウト情報37は、レシートや請求書といった原稿を発行する発行元の電話番号と、基準点を基準とした電話番号の位置(x,y,x+width,y+height)との対応関係を、複数の発行元について規定している。つまり、レイアウト情報37は、過去に行われた原稿の読取画像に対する文字認識処理の結果から得られた電話番号や位置(x,y,x+width,y+height)の情報を登録したテーブルである。
図6Aの例では、レイアウト情報37には、原稿の発行元としての店舗A,B,C…と、店舗A,B,C…毎の電話番号と、各電話番号に対応した位置(x,y,x+width,y+height)と、が登録されている。位置(x,y,x+width,y+height)におけるxおよびx+widthは、基準点をx=0としたときの読取画像内の横方向の座標を示し、yおよびy+heightは、基準点をy=0としたときの読取画像内の縦方向の座標を示している。上述したように、基準点は読取画像内で最も上側の印字行の左上の角であり、(x,y)座標は、読取画像の横方向右側と読取画像の縦方向下側とを正の向きとしている。x,y,x+width,y+heightが夫々示す数値は、例えば画素数である。
ステップS142では、制御部31は、ステップS110で設定した基準点と、ステップS141で取得した位置に基づいて、第1の特定項目の情報を文字認識するための対象領域(第1の対象領域)を読取画像内に特定する。つまり、ステップS141で取得した位置(x,y,x+width,y+height)に従い、制御部31は、基準点を基準とした座標(x,y)および座標(x+width,y+height)の二点を対角として読取画像内に定義される矩形領域を、対象領域として特定する。
ステップS143では、制御部31は、ステップS142で特定した対象領域と、読取画像内の印字領域とのずれに応じて、ステップS142で特定した対象領域の位置及び又は大きさを修正する。レイアウト情報37に規定されている位置は、発行元に応じて異なるレシート等における電話番号の正しい位置を示す情報である。しかし現実の問題として、レイアウト情報37に規定されたある発行元に対応する位置に従って、当該ある発行元が発行したレシート等の読取画像内で対象領域を特定した場合であっても、対象領域の位置が、印字領域つまり印字行に対して微妙にずれてしまうことがある。また、レイアウト情報37に規定されたある発行元に対応する位置に従って、別の発行元が発行したレシート等の読取画像内で対象領域を特定した場合には、対象領域の位置が、印字行に対して大きくずれることが多々ある。
このような実情に鑑みて、ステップS143では制御部31は、例えば、ステップS142で特定した対象領域と、読取画像内の印字行のうちステップS142で特定した対象領域と最も近い位置に在る印字行との縦方向のずれを無くすように、ステップS142で特定した対象領域を読取画像内で移動させる。制御部31は、ステップS142で特定した対象領域が、読取画像内の印字行のうちステップS142で特定した対象領域と最も近い位置に在る印字行のより多くの範囲を含むように、ステップS142で特定した対象領域を拡大するとしてもよい。ステップS143による対象領域の位置及び又は大きさの修正は、対象領域と印字行とのずれの有無に応じて実行されたりされなかったりする。ステップS144以降の説明において、ステップS142で特定した対象領域と表現した場合であっても、ステップS143で対象領域の修正が行われた場合には、当然、修正後の対象領域を意味する。
ステップS144では、制御部31は、ステップS142で特定した対象領域に対する文字認識処理をOCRエンジン35に実行させる。ステップS144は、文字認識処理にOCRエンジン35を用いる点で、ステップS120(図2)と同じである。しかし、ステップS120が、読取画像全体を対象とした処理であるのに対し、ステップS144は、ステップS142で特定した対象領域に限定した処理である点で異なる。
ステップS145では、制御部31は、ステップS144の文字認識処理の結果に基づいて、ステップS142で特定した対象領域に第1の特定項目の情報、つまり電話番号としての文字列が含まれているか否かを判定する。ステップS145は、次のステップS146によるDLエンジン36を用いた文字認識処理を実行すべきか否かを判定する処理とも言える。
例えば、ステップS144の文字認識処理の結果としてのテキストデータに、数字が全く含まれていないか、電話番号を構成するために最低限必要な個数より所定個数以上少ない個数の数字しか含まれていない場合は、制御部31は、ステップS142で特定した対象領域に電話番号が含まれていないと判定し(ステップS145において“No”)、ステップS148へ進む。一方、ステップS144の文字認識処理の結果としてのテキストデータに、電話番号を構成するために最低限必要な個数以上の数字が含まれていたり、電話番号を構成するために最低限必要な個数に前記所定個数よりも少ない個数(例えば、1,2個)足りない程度の個数の数字が含まれていたりする場合は、制御部31は、ステップS142で特定した対象領域に電話番号が含まれている、あるいは含まれている可能性があるため、ステップS145で“Yes”と判定し、ステップS146へ進む。いずれにしても、制御部31は、ステップS144の文字認識処理の結果に基づいて、ステップS142で特定した対象領域に第1の特定項目の情報が含まれているか否かを判定するための判定基準を予め保持し、この判定基準に従って、ステップS145の判定を行う。
ステップS146では、制御部31は、DLエンジン36を起動させ、ステップS142で特定した対象領域に対する文字認識処理をDLエンジン36に実行させる。ステップS144は、特定した対象領域に対して行う第1の文字認識処理に該当し、ステップS146は、特定した対象領域に対して行う第2の文字認識処理に該当する。ステップS146では、DLエンジン36は、ステップS142で特定した対象領域に含まれている一文字らしき画像、例えば、上述した輪郭枠単位の画像を順次入力し、画像から認識(推測)した文字を文字データ(テキストデータ)に変換して出力する。制御部31は、このようなDLエンジン36による文字認識処理の結果としてのテキストデータを取得する。
DLエンジン36も、文字認識処理を実行するためのOCRエンジンの一種であるが、機械学習の一つであるDeep Learning技術により作成された文字認識用のモデルである点で、OCRエンジン35と異なる。DLエンジン36は、例えば、多層構造のニューラルネットワークに大量の学習用画像を入力することで、学習用画像の特徴を自動的に学習し、入力された画像を分類できるように構築されている。例えば、DLエンジン36は、「0」〜「9」の数字や、「年」、「月」、「日」、「時」、「分」の各漢字や、特定の記号、例えば日本円を表す記号「¥」等といった、限定された種類の文字について、数万の学習用画像に基づいて学習済みである。従って、DLエンジン36は、入力された画像が、「0」〜「9」の数字、「年」、「月」、「日」、「時」、「分」の各漢字、或いは特定の記号のいずれであるかを高い精度(少なくともOCRエンジン35よりも高い正答率)で推測することが可能である。そのため、DLエンジン36を用いる文字認識処理は、第1の文字認識処理よりも文字認識精度が高い第2の文字認識処理である。
上述したように第1の文字認識処理に用いるOCRエンジン35は、入力した画像から漢字、平仮名、片仮名、数字、アルファベット、その他の記号等、多くの種類の文字を推測可能なOCRエンジンである。OCRエンジン35と第2の文字認識処理に用いるDLエンジン36とを比較すると、DLエンジン36が認識する文字種類(推測可能な文字種類)は、OCRエンジン35が認識する文字種類よりも大幅に少ない。漢字、平仮名、片仮名、数字、アルファベット、その他の記号等の多くの種類の文字について、Deep Learning技術を用いて高精度で文字認識を行うモデルを作成することは、開発費用やコンピューターの能力や時間等の制約を鑑みると現実的ではない。従って、認識させる文字種類を大幅に絞ることで、限定された種類の文字についてDeep Learning技術を用いて文字認識精度をOCRエンジン35よりも高めたOCRエンジンが、DLエンジン36であると言える。
ステップS147では、制御部31は、ステップS146の文字認識処理の結果が、ステップS141でレイアウト情報37から取得した位置の情報に対応する前記一つの発行元(例えば店舗A)の電話番号と一致するか否かを判定する。つまり、DLエンジン36による文字認識処理の結果としてのテキストデータが、前記一つの発行元の電話番号と一致するか否かを判定し、一致する場合はステップS147で“Yes”と判定してステップS149へ進み、一致しない場合は、ステップS147で“No”と判定してステップS148へ進む。
ステップS149では、制御部31は、ステップS100で取得した読取画像の生成の元となった原稿の発行元は、ステップS141でレイアウト情報37から取得した位置の情報に対応する前記一つの発行元であると特定し、図5の処理(ステップS140)を終える。つまり、ステップS140の処理を、ステップS149を経て終えたとき、制御部31は、読取画像から第1の特定項目の情報としての電話番号の検出に成功し、かつ、原稿の発行元の特定に成功したことになる。
ステップS148では、制御部31は、レイアウト情報37に規定された全ての発行元それぞれの電話番号の位置をステップS141で取得してステップS142以降の処理を行ったか、否かを判定する。この判定で“No”の場合は、制御部31は、ステップS141へ戻り、レイアウト情報37から電話番号の位置を未取得である一つの発行元に対応して、新たに電話番号の位置を取得し、ステップS142以降の処理へ進む。一方、制御部31は、レイアウト情報37に規定された全ての発行元それぞれの電話番号の位置をステップS141で取得してステップS142以降の処理を行った場合には、ステップS148で“Yes”と判定して図5の処理(ステップS140)を終える。ステップS140の処理を、ステップS148の“Yes”の判定で終えたとき、制御部31は、原稿の発行元を特定できなかったことになる。ステップS140の処理を、ステップS148の“Yes”の判定で終えたときであっても、制御部31は、読取画像内に特定した対象領域から第1の特定項目の情報としての電話番号の検出に成功している場合がある。ただし、そのような検出に成功した電話番号は、レイアウト情報37に登録されたいずれの電話番号とも異なる電話番号である。
図2に戻って説明を続ける。
ステップS150では、制御部31は、原稿の発行元の特定に成功したか否かに応じて処理を分岐する。つまり、ステップS140の処理を、ステップS149を経て終えた場合には、ステップS150で“Yes”と判定してステップS160へ進む。一方、ステップS140の処理を、ステップS148の“Yes”の判定で終えた場合には、制御部31は、ステップS150で“No”と判定してステップS170へ進む。
ステップS150では、制御部31は、原稿の発行元の特定に成功したか否かに応じて処理を分岐する。つまり、ステップS140の処理を、ステップS149を経て終えた場合には、ステップS150で“Yes”と判定してステップS160へ進む。一方、ステップS140の処理を、ステップS148の“Yes”の判定で終えた場合には、制御部31は、ステップS150で“No”と判定してステップS170へ進む。
ステップS160では、制御部31は、ステップS110で設定した基準点と、ステップS140で特定した原稿の発行元に対応して記憶部34に記憶されているレイアウト情報38とに基づいて、文字認識処理を行う。
図7は、ステップS160の詳細をフローチャートにより示している。
図6Bは、レイアウト情報38の一例を示している。
図7は、ステップS160の詳細をフローチャートにより示している。
図6Bは、レイアウト情報38の一例を示している。
レイアウト情報38は、原稿に含まれる特定項目の情報の位置を、基準点からの相対的な位置により規定したレイアウト情報の一種である。また、レイアウト情報38は、レイアウト情報37に規定された発行元(図6Aの例では、店舗A、店舗B、店舗C…)毎に生成されて予め記憶部34に複数記憶されている。そして、レイアウト情報38は、原稿の発行元毎に異なる、基準点からの第2の特定項目の情報の位置、を規定した第2のレイアウト情報に該当する。
上述したように、一例として第1の特定項目は電話番号である。一方、第2の特定項目は、図6Bに示すように、例えば、日付、つまり原稿の発行日や、合計金額、つまり原稿の発行元とユーザーとの取引金額等である。
ステップS161では、制御部31は、ステップS140で特定した原稿の発行元に対応するレイアウト情報38から、第2の特定項目のうちの一つの特定項目の情報に関する位置、例えば日付の位置を読み出して取得する。レイアウト情報38に規定されている位置(x,y,x+width,y+height)の解釈の仕方は、レイアウト情報37の説明で述べた通りである。
ステップS162では、制御部31は、ステップS110で設定した基準点と、ステップS161で取得した位置に基づいて、第2の特定項目の情報を文字認識するための対象領域(第2の対象領域)を読取画像内に特定する。ステップS142でも説明したように、制御部31は、基準点を基準とした座標(x,y)および座標(x+width,y+height)の二点を対角として読取画像内に定義される矩形領域を、対象領域として特定する。
ステップS163では、制御部31は、ステップS162で特定した対象領域と、読取画像内の印字領域とのずれに応じて、ステップS162で特定した対象領域の位置及び又は大きさを修正する。ステップS163の説明は、ステップS143の説明を準用する。むろん、ステップS164以降の説明において、ステップS162で特定した対象領域と表現した場合であっても、ステップS163で対象領域の修正が行われた場合には、修正後の対象領域を意味する。
ステップS164では、制御部31は、ステップS162で特定した対象領域に対する文字認識処理をOCRエンジン35に実行させる。
ステップS165では、制御部31は、ステップS164の文字認識処理の結果に基づいて、ステップS162で特定した対象領域に、ステップS161で取得した位置に対応する第2の特定項目の情報が含まれているか否かを判定する。
ステップS165では、制御部31は、ステップS164の文字認識処理の結果に基づいて、ステップS162で特定した対象領域に、ステップS161で取得した位置に対応する第2の特定項目の情報が含まれているか否かを判定する。
ステップS161で取得した位置に対応する第2の特定項目が日付である場合を想定する。制御部31は、例えば、ステップS164の文字認識処理の結果としてのテキストデータに、数字が全く含まれていない場合や、ステップS164の文字認識処理の結果としてのテキストデータに数字が含まれていたとしても、日付の表記に該当しない数字の羅列である場合は、ステップS162で特定した対象領域に日付が含まれていないと判定し(ステップS165において“No”)、ステップS167へ進む。一方、ステップS164の文字認識処理の結果としてのテキストデータに、日付の表記に該当すると認められる数字が含まれている場合は、制御部31は、ステップS162で特定した対象領域に日付が含まれている、あるいは含まれている可能性があるため、ステップS165で“Yes”と判定し、ステップS166へ進む。
また、ステップS161で取得した位置に対応する第2の特定項目が合計金額である場合を想定する。制御部31は、例えば、ステップS164の文字認識処理の結果としてのテキストデータに、数字が全く含まれていない場合や、ステップS164の文字認識処理の結果としてのテキストデータに数字が含まれていたとしても、金額の表記に該当しない数字の羅列(例えば、小数点以下の数字の表記等)である場合は、ステップS162で特定した対象領域に合計金額が含まれていないと判定し(ステップS165において“No”)、ステップS167へ進む。一方、ステップS164の文字認識処理の結果としてのテキストデータに、合計金額の表記に該当すると認められる数字が含まれていたり、金額の表記に特有の記号「¥」等が含まれていたりする場合は、制御部31は、ステップS162で特定した対象領域に合計金額が含まれている、あるいは含まれている可能性があるため、ステップS165で“Yes”と判定し、ステップS166へ進む。
いずれにしても、制御部31は、ステップS164の文字認識処理の結果に基づいて、ステップS162で特定した対象領域に第2の特定項目の情報が含まれているか否かを判定するための判定基準を予め保持し、この判定基準に従って、ステップS165の判定を行う。
いずれにしても、制御部31は、ステップS164の文字認識処理の結果に基づいて、ステップS162で特定した対象領域に第2の特定項目の情報が含まれているか否かを判定するための判定基準を予め保持し、この判定基準に従って、ステップS165の判定を行う。
ステップS166では、制御部31は、ステップS162で特定した対象領域に対する文字認識処理をDLエンジン36に実行させる。ステップS164は、特定した対象領域に対して行う第1の文字認識処理に該当し、ステップS166は、特定した対象領域に対して行う第2の文字認識処理に該当する。
ステップS167では、制御部31は、ステップS140で特定した原稿の発行元に対応するレイアウト情報38に規定された全ての項目(第2の特定項目)それぞれの位置をステップS161で取得してステップS162以降の処理を行ったか、否かを判定する。この判定で“No”の場合は、制御部31は、ステップS161へ戻り、ステップS140で特定した原稿の発行元に対応するレイアウト情報38から、位置を未取得である一つの項目に対応して新たに位置を取得し、ステップS162以降の処理へ進む。一方、制御部31は、ステップS140で特定した原稿の発行元に対応するレイアウト情報38に規定された全ての項目それぞれの位置をステップS161で取得してステップS162以降の処理を行った場合には、ステップS167で“Yes”と判定して図7の処理(ステップS160)を終える。
図7の処理は、ステップS165で“No”の判定を繰り返した結果、ステップS167で“Yes”と判定して終わることも、可能性としては0%ではない。ただし、図7の処理は、原稿の発行元に対応するレイアウト情報38を参照して、ステップS162で対象領域を特定しているため、高い確率で第2の特定項目の情報としての日付や合計金額を検出することができる。
上述したようなステップS140の処理や、ステップS160の処理を実現する点で、プログラム32を実行する制御部31は、設定された基準点とレイアウト情報とに基づいて、読取画像内に文字認識処理の対象とする対象領域を特定し、特定した対象領域に対して文字認識処理を行う文字認識部、として機能すると言える。また、プロセッサー(CPU31a)は、OCRエンジン35やDLエンジン36を実行することで文字認識部として機能するとも言える。また、ステップS140の処理や、ステップS160の処理は、上述のように特定した対象領域に対して文字認識処理を行う文字認識工程に該当する。なお、制御部31は、ステップS140やステップS160において、特定した対象領域に対して、OCRエンジン35を用いた第1の文字認識処理と、DLエンジン36を用いた第2の文字認識処理との両方を実行した場合は、第2の文字認識処理による結果を優先して採用し、後述する保存処理の対象とする。
図2に戻って説明を続ける。
ステップS160の後のステップS190では、制御部31は、ステップS140による文字認識処理の結果およびステップS160による文字認識処理の結果を、ストレージサーバー50へ保存する。この場合、制御部31は、ステップS100で取得した読取画像とともに、ステップS140,S160による文字認識処理の結果を、ストレージサーバー50へ保存する。この結果、例えば、図4の上段左に示した読取画像IMとともに、読取画像IM内の特定項目の情報としての電話番号、日付、合計金額等のテキストデータが、ストレージサーバー50に保存される。ストレージサーバー50に保存するテキストデータの正確性(原稿に記載された文字との一致率)は、DLエンジン36を用いた第2の文字認識処理によって担保される。ステップS190を経て、図2のフローチャートが終了する。
ステップS160の後のステップS190では、制御部31は、ステップS140による文字認識処理の結果およびステップS160による文字認識処理の結果を、ストレージサーバー50へ保存する。この場合、制御部31は、ステップS100で取得した読取画像とともに、ステップS140,S160による文字認識処理の結果を、ストレージサーバー50へ保存する。この結果、例えば、図4の上段左に示した読取画像IMとともに、読取画像IM内の特定項目の情報としての電話番号、日付、合計金額等のテキストデータが、ストレージサーバー50に保存される。ストレージサーバー50に保存するテキストデータの正確性(原稿に記載された文字との一致率)は、DLエンジン36を用いた第2の文字認識処理によって担保される。ステップS190を経て、図2のフローチャートが終了する。
ステップS170,S180について説明する。
ステップS170では、制御部31は、ステップS100で取得した読取画像に含まれる特定項目の情報の少なくとも一部を抽出するための一般的な処理を実行する。つまり、制御部31は、ステップS170では公知技術を含めた種々の手法により特定項目の情報の抽出(検出)を試み、ステップS170以前の、例えばステップS140の結果を含めて、電話番号や日付や合計金額といった情報を検出できればよい。例えば、制御部31は、ステップS170では、特定項目の情報の存在を示唆する所定のキーワードを読取画像内で検索し、検索でヒットしたキーワード近傍の領域に対して文字認識処理を行うことにより特定項目の情報を検出するとしてもよい。
ステップS170では、制御部31は、ステップS100で取得した読取画像に含まれる特定項目の情報の少なくとも一部を抽出するための一般的な処理を実行する。つまり、制御部31は、ステップS170では公知技術を含めた種々の手法により特定項目の情報の抽出(検出)を試み、ステップS170以前の、例えばステップS140の結果を含めて、電話番号や日付や合計金額といった情報を検出できればよい。例えば、制御部31は、ステップS170では、特定項目の情報の存在を示唆する所定のキーワードを読取画像内で検索し、検索でヒットしたキーワード近傍の領域に対して文字認識処理を行うことにより特定項目の情報を検出するとしてもよい。
ステップS180では、制御部31は、ステップS170を終えた時点で読取画像から検出できた電話番号や日付や合計金額といった特定項目の情報により、レイアウト情報37を更新したり、レイアウト情報38を新規に生成したりする。むろん、ステップS170を終えた時点で、特定項目の情報の検出に成功していないこともある。そのため、制御部31は、ステップS170を終えた時点で、電話番号や日付や合計金額といった特定項目の情報の検出に成功した場合に、ステップS180を実行することが可能である。具体的には、制御部31は、ステップS170を終えた時点で検出に成功している電話番号と、読取画像内における基準点からの電話番号の位置とを、レイアウト情報37に追記する。レイアウト情報37に追記した電話番号と、店舗等の原稿の発行元との紐づけは、メインサーバー30を操作するオペレーターにより人為的に行われてもよいし、そのような紐づけを行うサービスを利用してもよい。また、制御部31は、レイアウト情報37に追記した電話番号とともに読取画像から検出した日付、合計金額それぞれについての基準点からの位置を登録したレイアウト情報38を新たに生成し、原稿の発行元、つまり電話番号と対応付けて記憶部34に記憶させることができる。また、制御部31は、ステップS180の後、ステップS190へ進み、ステップS170までの処理で読取画像から検出した電話番号や日付や合計金額といった特定項目の情報を、ステップS100で取得した読取画像とともにストレージサーバー50へ保存する。
ストレージサーバー50に読取画像とともに保存されたテキストデータは、ネットワークNWを通じて外部へ提供される。ストレージサーバー50に保存されたテキストデータは、レシートや請求書といった原稿に記載された取引相手(電話番号)、取引日(日付)、取引金額(合計金額)、等を示す文字列である。そのため、ストレージサーバー50に保存されたテキストデータは、例えば、会計処理や税務上の処理を行う会計事務所が操作する端末へ、ネットワークNWを介して送信され、会計処理や税務上の処理の用に供される。また、ストレージサーバー50に保存されたテキストデータは、ネットワークNWに接続したプリンターによって印刷されたり、通信装置20およびスキャナー10のユーザーの求めに応じて、ネットワークNWを通じて通信装置20へ送信されたりする。
3.まとめ:
このように本実施形態によれば、画像処理装置(メインサーバー30)は、レシートまたは請求書の読み取りにより生成された読取画像を取得する取得部39と、前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定部40と、前記レシートまたは請求書に含まれる特定項目の情報の位置を、前記基準点からの相対的な位置により規定したレイアウト情報を予め記憶する記憶部34と、を備える。そして、文字認識部として機能する制御部31は、前記設定された基準点と前記レイアウト情報とに基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う。
このように本実施形態によれば、画像処理装置(メインサーバー30)は、レシートまたは請求書の読み取りにより生成された読取画像を取得する取得部39と、前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定部40と、前記レシートまたは請求書に含まれる特定項目の情報の位置を、前記基準点からの相対的な位置により規定したレイアウト情報を予め記憶する記憶部34と、を備える。そして、文字認識部として機能する制御部31は、前記設定された基準点と前記レイアウト情報とに基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う。
前記構成によれば、印字領域に対して所定の位置関係となる基準点を基準として、特定項目の情報を検出するための対象領域が読取画像内に特定される。従って、レシート等の原稿内での印字領域の位置のばらつきに関係なく、特定項目の情報の位置に対して正確に文字認識処理を施すことができ、特定項目の情報の正確な文字認識結果を得ることができる。
また、本実施形態によれば、設定部40は、前記印字領域のうち所定のノイズの条件に該当するノイズ領域を前記印字領域から除去し(図3のステップS113)、前記ノイズ領域の除去後の印字領域に応じて前記基準点を設定する(ステップS114,S115)。
前記構成によれば、本来の印字領域には該当しないノイズ領域を除去することにより、印字領域に対して所定の位置関係となる基準点を誤らずに設定することができる。
前記構成によれば、本来の印字領域には該当しないノイズ領域を除去することにより、印字領域に対して所定の位置関係となる基準点を誤らずに設定することができる。
また、本実施形態によれば、前記文字認識部は、前記特定した対象領域と前記印字領域とのずれに応じて、前記対象領域の位置及び又は大きさを修正し(図5のステップS143、図7のステップS163)、前記修正後の対象領域に対して前記文字認識処理を行う。
前記構成によれば、基準点とレイアウト情報とに基づいて読取画像内に一旦特定した対象領域について、印字領域(印字行)とのずれに応じて、位置及び又は大きさを修正する。そのため、対象領域から、より適切な文字認識処理の結果が得られる。
前記構成によれば、基準点とレイアウト情報とに基づいて読取画像内に一旦特定した対象領域について、印字領域(印字行)とのずれに応じて、位置及び又は大きさを修正する。そのため、対象領域から、より適切な文字認識処理の結果が得られる。
また、本実施形態によれば、記憶部34は、前記レシートまたは請求書の発行元の第1の特定項目の情報と、前記基準点からの第1の特定項目の情報の位置との対応関係を、複数の前記発行元について規定した第1のレイアウト情報(レイアウト情報37)と、前記基準点からの第2の特定項目の情報の位置を規定した第2のレイアウト情報であって複数の前記発行元毎の複数の第2のレイアウト情報(レイアウト情報38)と、を記憶している。前記文字認識部は、前記設定された基準点と第1のレイアウト情報とに基づいて、一の発行元の第1の特定項目の情報を文字認識するための第1の対象領域を前記読取画像内に特定し、前記特定した第1の対象領域に対する前記文字認識処理により認識した文字列と、第1のレイアウト情報に規定されている前記一の発行元の第1の特定項目の情報とが一致するか否かの判断を、前記発行元毎に繰り返す。これにより、前記読取画像の生成の元となった前記レシートまたは請求書の発行元を特定する(図5)。そして、前記設定された基準点と前記特定した発行元に対応する第2のレイアウト情報とに基づいて、第2の特定項目の情報を文字認識するための第2の対象領域を前記読取画像内に特定し、前記特定した第2の対象領域に対して前記文字認識処理を行う(図7)。
前記構成によれば、第1の対象領域に対する文字認識処理により認識した文字列と、第1のレイアウト情報に規定されている第1の特定項目の情報との一致に応じて、第1の特定項目の情報が正しく検出できたこと及び読取画像の生成元の原稿の発行元が確定する。そして、基準点と原稿の発行元に対応する第2のレイアウト情報とに基づく第2の対象領域に対する文字認識処理が実行される。そのため、第1の特定項目の情報および第2の特定項目の情報を正しく検出することができる。
また、本実施形態によれば、前記文字認識部は、前記特定した対象領域に対して第1の文字認識処理を行い、第1の文字認識処理の結果に基づいて、前記特定項目の情報が前記特定した対象領域に含まれていると判定した場合に、前記特定した対象領域に対して第1の文字認識処理よりも文字認識精度が高い第2の文字認識処理を実行する(図5のステップS144〜S146、図7のステップS164〜S166)。
前記構成によれば、画像処理装置は、対象領域に対する第1の文字認識処理の結果に基づいて、対象領域に特定項目の情報が含まれている旨のある程度の認識を得た場合に、同じ対象領域に対して、より文字認識精度が高い第2の文字認識処理を実行する。そのため、特定項目の情報を読取画像から効率的に且つ高い文字認識精度で検出することができる。
前記構成によれば、画像処理装置は、対象領域に対する第1の文字認識処理の結果に基づいて、対象領域に特定項目の情報が含まれている旨のある程度の認識を得た場合に、同じ対象領域に対して、より文字認識精度が高い第2の文字認識処理を実行する。そのため、特定項目の情報を読取画像から効率的に且つ高い文字認識精度で検出することができる。
また、本実施形態によれば、前記文字認識部は、機械学習により作成された文字認識用のモデル(DLエンジン36)を用いて第2の文字認識処理を実行する。これにより、レシートまたは請求書といった原稿の読取画像に含まれている特定項目の情報に対する文字認識精度を確実に向上させることができる。
また、本実施形態では、第2の文字認識処理により認識する文字種類は、第1の文字認識処理により認識する文字種類よりも少ない。つまり、第1の文字認識処理に用いられるOCRエンジン35と比較して、第2の文字認識処理に用いられるDLエンジン36は、認識する文字種類(推測可能な文字種類)が少ない。汎用的なOCRエンジン35と比べて認識する文字種類を大幅に絞ることで、機械学習により文字認識精度を高めたOCRエンジン(DLエンジン36)が実現されている。従って、画像処理装置は、対象領域に対する第1の文字認識処理では、多くの文字種類の中から該当する文字を推測することにより、特定項目の情報が含まれている旨のある程度の認識を得て、その後、同じ対象領域に対する第2の文字認識処理により、特定項目の情報を高い文字認識精度で検出することができる。
4.他の実施形態:
本発明の実施形態は上述した態様に限定されず、例えば、以下に説明する種々の態様を含む。各実施形態を組み合わせた構成も本明細書の開示範囲に含まれる。
本発明の実施形態は上述した態様に限定されず、例えば、以下に説明する種々の態様を含む。各実施形態を組み合わせた構成も本明細書の開示範囲に含まれる。
印字領域に対して所定の位置関係となる読取画像内の位置である基準点の定義は、図4で説明したような、読取画像内で最も上側の印字行の左上の角に限定されない。一例として、読取画像内で最も上側の印字行の右上の角を基準点と定義してもよい。
図2のフローチャートにおいて、制御部31は、ステップS120,S130を実行することで、ステップS140を実行するか否かを分岐している。これにより、読取画像内に第1の特定項目の情報が含まれている可能性がかなり低いにもかかわらずステップS140を実行して、結果的にステップS140の処理が無駄になることを、未然に防いでいる。ただし、ステップS120,S130は必須ではない。図2のフローチャートにおいてステップS120,S130を省き、制御部31は、ステップS110からステップS140へ進むとしてもよい。
ステップS140やステップS160において、第2の文字認識処理を実行しない構成であってもよい。つまり、ステップS140の処理は、図5のステップS145およびステップS146を含まず、制御部31は、ステップS144からステップS147の判定に進むとしてもよい。また、ステップS160の処理は、図7のステップS165およびステップS166を含まず、制御部31は、ステップS164からステップS167の判定に進むとしてもよい。
また、図2のフローチャートに示した通りにステップS120,S130を実行する構成では、制御部31は、ステップS140やステップS160では、特定した対象領域に対して改めてOCRエンジン35を用いた文字認識処理を実行するのではなく、ステップS120の文字認識処理の結果を流用してもよい。つまり、図5のステップS144では、制御部31は、ステップS142で特定した対象領域に対するOCRエンジン35を用いた文字認識処理を実行せず、ステップS120で実行済みの読取画像全体に対するOCRエンジン35を用いた文字認識処理の結果(テキストデータ)のうちの、ステップS142で特定した対象領域に対応する部分を、ステップS142で特定した対象領域に対するOCRエンジン35を用いた文字認識処理の結果として取得すればよい。同様に、図7のステップS164では、制御部31は、ステップS162で特定した対象領域に対するOCRエンジン35を用いた文字認識処理を実行せず、ステップS120で実行済みのOCRエンジン35を用いた文字認識処理の結果(テキストデータ)のうちの、ステップS162で特定した対象領域に対応する部分を、ステップS162で特定した対象領域に対するOCRエンジン35を用いた文字認識処理の結果として取得すればよい。
これまでは、本発明にかかる画像処理装置の具体例として、システム1に含まれるメインサーバー30を挙げて説明を行った。ただし、画像処理装置の具体例はメインサーバー30に限定されない。例えば、スキャナー10から原稿の読取画像を取得する通信装置20が、自身のリソースを用いて本発明の画像処理装置を実現してもよい。つまり、通信装置20において、ROM21bやROM21b以外のメモリー等の記憶手段にOCRエンジン35、DLエンジン36、レイアウト情報37,38等が記憶されており、制御部21がプログラム22に従って、図2〜7を参照してこれまで説明した処理を実行する構成であってもよい。この場合、通信装置20は、ステップS190(保存処理)における読取画像やテキストデータの保存先を、自身が有するメモリー等の記憶手段としてもよいし、外部のサーバー(例えば、ストレージサーバー50)としてもよい。
OCRエンジン35やDLエンジン36は、記憶部34やメモリーに記憶されたソフトウェアではなく、ソフトウェアと協働して機能するハードウェアであってもよい。
OCRエンジン35やDLエンジン36は、記憶部34やメモリーに記憶されたソフトウェアではなく、ソフトウェアと協働して機能するハードウェアであってもよい。
レイアウト情報37やレイアウト情報38には、図6A,6Bで示したような原稿の発行元(店舗A、店舗B、店舗C…)を示す情報が含まれていてもよいし、含まれていなくてもよい。これは、第1の特定項目の情報である電話番号が、そもそも原稿の発行元を一義的に示す情報だからである。つまり、レイアウト情報37に登録されている一つ一つの電話番号が夫々異なる発行元を示している。従って、複数の発行元の夫々に対応して記憶されている複数のレイアウト情報38は、レイアウト情報37に規定されている複数の電話番号の夫々に対応して記憶されている、とも言える。
第2の文字認識処理は、第1の文字認識処理よりも高い文字認識精度で文字認識を実現するものであればよい。その意味で、第2の文字認識処理は、Deep Learning技術により作成されたDLエンジン36を用いた処理に限定されない。第2の文字認識処理は、例えば、Deep Learning以外の機械学習の手法により作成されて、OCRエンジン35よりも制限された範囲の文字(例えば、数字等)についての文字認識精度を高めた処理部による文字認識処理であってもよい。
1…システム、10…スキャナー、20…通信装置、21…制御部、21a…CPU、21b…ROM、21c…RAM、22…プログラム、23…通信IF、30…メインサーバー、31…制御部、31a…CPU、31b…ROM、31c…RAM、32…プログラム、33…通信IF、34…記憶部、35…OCRエンジン、36…DLエンジン、37,38…レイアウト情報、39…取得部、40…設定部、50…ストレージサーバー、IM…読取画像、NW…ネットワーク
Claims (9)
- レシートまたは請求書の読み取りにより生成された読取画像を取得する取得部と、
前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定部と、
前記レシートまたは請求書に含まれる特定項目の情報の位置を、前記基準点からの相対的な位置により規定したレイアウト情報を予め記憶する記憶部と、
前記設定された基準点と前記レイアウト情報とに基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う文字認識部と、を備えることを特徴とする画像処理装置。 - 前記設定部は、前記印字領域のうち所定のノイズの条件に該当するノイズ領域を前記印字領域から除去し、前記ノイズ領域の除去後の印字領域に応じて前記基準点を設定する、ことを特徴とする請求項1に記載の画像処理装置。
- 前記文字認識部は、前記特定した対象領域と前記印字領域とのずれに応じて、前記対象領域の位置及び又は大きさを修正し、前記修正後の対象領域に対して前記文字認識処理を行う、ことを特徴とする請求項1または請求項2に記載の画像処理装置。
- 前記記憶部は、前記レシートまたは請求書の発行元の第1の前記特定項目の情報と、前記基準点からの第1の前記特定項目の情報の位置との対応関係を、複数の前記発行元について規定した第1の前記レイアウト情報と、前記基準点からの第2の前記特定項目の情報の位置を規定した第2の前記レイアウト情報であって複数の前記発行元毎の複数の第2の前記レイアウト情報と、を記憶しており、
前記文字認識部は、前記設定された基準点と第1の前記レイアウト情報とに基づいて、一の前記発行元の第1の前記特定項目の情報を文字認識するための第1の前記対象領域を前記読取画像内に特定し、前記特定した第1の前記対象領域に対する前記文字認識処理により認識した文字列と、第1の前記レイアウト情報に規定されている前記一の発行元の第1の前記特定項目の情報とが一致するか否かの判断を、前記発行元毎に繰り返すことにより、前記読取画像の生成の元となった前記レシートまたは請求書の発行元を特定し、前記設定された基準点と前記特定した発行元に対応する第2の前記レイアウト情報とに基づいて、第2の前記特定項目の情報を文字認識するための第2の前記対象領域を前記読取画像内に特定し、前記特定した第2の前記対象領域に対して前記文字認識処理を行う、ことを特徴とする請求項1〜請求項3のいずれかに記載の画像処理装置。 - 前記文字認識部は、前記特定した対象領域に対して第1の前記文字認識処理を行い、第1の前記文字認識処理の結果に基づいて、前記特定項目の情報が前記特定した対象領域に含まれていると判定した場合に、前記特定した対象領域に対して第1の前記文字認識処理よりも文字認識精度が高い第2の前記文字認識処理を実行する、ことを特徴とする請求項1〜請求項4のいずれかに記載の画像処理装置。
- 前記文字認識部は、機械学習により作成された文字認識用のモデルを用いて第2の前記文字認識処理を実行することを特徴とする請求項5に記載の画像処理装置。
- 第2の前記文字認識処理により認識する文字種類は、第1の前記文字認識処理により認識する文字種類よりも少ないことを特徴とする請求項5または請求項6に記載の画像処理装置。
- レシートまたは請求書の読み取りにより生成された読取画像を取得する取得工程と、
前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定工程と、
前記設定された基準点と、記憶部に記憶されている、前記レシートまたは請求書に含まれる特定項目の情報の位置を前記基準点からの相対的な位置により規定したレイアウト情報と、に基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う文字認識工程と、を備えることを特徴とする画像処理方法。 - レシートまたは請求書の読み取りにより生成された読取画像を取得する取得機能と、
前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定機能と、
前記設定された基準点と、記憶部に記憶されている、前記レシートまたは請求書に含まれる特定項目の情報の位置を前記基準点からの相対的な位置により規定したレイアウト情報と、に基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う文字認識機能と、をコンピューターに実行させることを特徴とする画像処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018055197A JP2019168856A (ja) | 2018-03-22 | 2018-03-22 | 画像処理装置、画像処理方法および画像処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018055197A JP2019168856A (ja) | 2018-03-22 | 2018-03-22 | 画像処理装置、画像処理方法および画像処理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019168856A true JP2019168856A (ja) | 2019-10-03 |
Family
ID=68106784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018055197A Pending JP2019168856A (ja) | 2018-03-22 | 2018-03-22 | 画像処理装置、画像処理方法および画像処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2019168856A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111291726A (zh) * | 2020-03-12 | 2020-06-16 | 泰康保险集团股份有限公司 | 医疗票据分拣方法、装置、设备和介质 |
-
2018
- 2018-03-22 JP JP2018055197A patent/JP2019168856A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111291726A (zh) * | 2020-03-12 | 2020-06-16 | 泰康保险集团股份有限公司 | 医疗票据分拣方法、装置、设备和介质 |
CN111291726B (zh) * | 2020-03-12 | 2023-08-08 | 泰康保险集团股份有限公司 | 医疗票据分拣方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7225548B2 (ja) | 画像処理装置、画像処理方法および画像処理プログラム | |
KR101783337B1 (ko) | 이미지 문서에서 텍스트를 추출하는 방법 및 장치 | |
JP6900164B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
US20210064859A1 (en) | Image processing system, image processing method, and storage medium | |
US11418658B2 (en) | Image processing apparatus, image processing system, image processing method, and storage medium | |
JP2010157107A (ja) | 業務文書処理装置 | |
JP2019159633A (ja) | 画像処理装置、画像処理方法および画像処理プログラム | |
US9665786B2 (en) | Confirming automatically recognized handwritten answers | |
JP2019168856A (ja) | 画像処理装置、画像処理方法および画像処理プログラム | |
JP2019191665A (ja) | 財務諸表読取装置、財務諸表読取方法及びプログラム | |
JP6662023B2 (ja) | 画像処理装置および画像処理プログラム | |
US10706337B2 (en) | Character recognition device, character recognition method, and recording medium | |
US11170211B2 (en) | Information processing apparatus for extracting portions filled with characters from completed document without user intervention and non-transitory computer readable medium | |
JP7351159B2 (ja) | 情報処理装置及びプログラム | |
JP2022090947A (ja) | 画像処理装置、画像処理方法およびプログラム | |
JP6879034B2 (ja) | プログラム、情報処理装置、及びシステム | |
JP2020047138A (ja) | 情報処理装置 | |
JP6639257B2 (ja) | 情報処理装置及びその制御方法 | |
JPWO2020044537A1 (ja) | 画像照合装置、画像照合方法、及びプログラム | |
US11983910B2 (en) | Image processing system, image processing method, and storage medium each for obtaining pixels of object using neural network | |
US11238305B2 (en) | Information processing apparatus and non-transitory computer readable medium storing program | |
US20210357674A1 (en) | Image processing system, image processing method, and storage medium each for obtaining pixels of object using neural network | |
US20220319218A1 (en) | Image processing apparatus, image processing system, control method thereof, and storage medium | |
JP5277750B2 (ja) | 画像処理プログラム、画像処理装置及び画像処理システム | |
JP2022011037A (ja) | 画像処理装置、画像処理方法およびプログラム |