(57)【要約】【課題】特定項目の情報を文字認識により適切に得る。【解決手段】画像処理装置は、レシートまたは請求書の読み取りにより生成された読取画像を取得する取得部と、前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定部と、前記レシートまたは請求書に含まれる特定項目の情報の位置を、前記基準点からの相対的な位置により規定したレイアウト情報を予め記憶する記憶部と、前記設定された基準点と前記レイアウト情報とに基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う文字認識部と、を備える。【選択図】図２
2019168856.tif 000002
【特許請求の範囲】
【請求項１】
レシートまたは請求書の読み取りにより生成された読取画像を取得する取得部と、
前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定部と、
前記レシートまたは請求書に含まれる特定項目の情報の位置を、前記基準点からの相対的な位置により規定したレイアウト情報を予め記憶する記憶部と、
前記設定された基準点と前記レイアウト情報とに基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う文字認識部と、を備えることを特徴とする画像処理装置。
【請求項２】
前記設定部は、前記印字領域のうち所定のノイズの条件に該当するノイズ領域を前記印字領域から除去し、前記ノイズ領域の除去後の印字領域に応じて前記基準点を設定する、ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記文字認識部は、前記特定した対象領域と前記印字領域とのずれに応じて、前記対象領域の位置及び又は大きさを修正し、前記修正後の対象領域に対して前記文字認識処理を行う、ことを特徴とする請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記記憶部は、前記レシートまたは請求書の発行元の第１の前記特定項目の情報と、前記基準点からの第１の前記特定項目の情報の位置との対応関係を、複数の前記発行元について規定した第１の前記レイアウト情報と、前記基準点からの第２の前記特定項目の情報の位置を規定した第２の前記レイアウト情報であって複数の前記発行元毎の複数の第２の前記レイアウト情報と、を記憶しており、
前記文字認識部は、前記設定された基準点と第１の前記レイアウト情報とに基づいて、一の前記発行元の第１の前記特定項目の情報を文字認識するための第１の前記対象領域を前記読取画像内に特定し、前記特定した第１の前記対象領域に対する前記文字認識処理により認識した文字列と、第１の前記レイアウト情報に規定されている前記一の発行元の第１の前記特定項目の情報とが一致するか否かの判断を、前記発行元毎に繰り返すことにより、前記読取画像の生成の元となった前記レシートまたは請求書の発行元を特定し、前記設定された基準点と前記特定した発行元に対応する第２の前記レイアウト情報とに基づいて、第２の前記特定項目の情報を文字認識するための第２の前記対象領域を前記読取画像内に特定し、前記特定した第２の前記対象領域に対して前記文字認識処理を行う、ことを特徴とする請求項１〜請求項３のいずれかに記載の画像処理装置。
【請求項５】
前記文字認識部は、前記特定した対象領域に対して第１の前記文字認識処理を行い、第１の前記文字認識処理の結果に基づいて、前記特定項目の情報が前記特定した対象領域に含まれていると判定した場合に、前記特定した対象領域に対して第１の前記文字認識処理よりも文字認識精度が高い第２の前記文字認識処理を実行する、ことを特徴とする請求項１〜請求項４のいずれかに記載の画像処理装置。
【請求項６】
前記文字認識部は、機械学習により作成された文字認識用のモデルを用いて第２の前記文字認識処理を実行することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
第２の前記文字認識処理により認識する文字種類は、第１の前記文字認識処理により認識する文字種類よりも少ないことを特徴とする請求項５または請求項６に記載の画像処理装置。
【請求項８】
レシートまたは請求書の読み取りにより生成された読取画像を取得する取得工程と、
前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定工程と、
前記設定された基準点と、記憶部に記憶されている、前記レシートまたは請求書に含まれる特定項目の情報の位置を前記基準点からの相対的な位置により規定したレイアウト情報と、に基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う文字認識工程と、を備えることを特徴とする画像処理方法。
【請求項９】
レシートまたは請求書の読み取りにより生成された読取画像を取得する取得機能と、
前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定機能と、
前記設定された基準点と、記憶部に記憶されている、前記レシートまたは請求書に含まれる特定項目の情報の位置を前記基準点からの相対的な位置により規定したレイアウト情報と、に基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う文字認識機能と、をコンピューターに実行させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字認識処理を実行するための画像処理装置、画像処理方法および画像処理プログラムに関する。
【背景技術】
【０００２】
イメージ入力装置を通じて読み取ったレシートの文字画像を文字コードデータに変換し、フォーマット記憶部に記憶されたレシートのフォーマットに基づいて、文字コードデータから、日付、品目、価格、消費税等のデータを抽出するデータ処理装置が開示されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１‐２６５４０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
レシート内での印字領域の位置、つまりレシート内での印字領域と印字領域の周囲のレシートの余白との位置関係は、例えば、同じ店舗で発行されたレシートであってもばらつくことがある。そのため、文献１のように、特定の店舗のレシートのフォーマットを記憶していたとしても、レシートの読み取りにより生成された画像に対して適切な位置関係でフォーマットを適用しなければ、日付等の項目毎の情報を適切に抽出することはできない。そのため、より適切な文字認識結果を得るための改善が求められていた。
【課題を解決するための手段】
【０００５】
画像処理装置は、レシートまたは請求書の読み取りにより生成された読取画像を取得する取得部と、前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定部と、前記レシートまたは請求書に含まれる特定項目の情報の位置を、前記基準点からの相対的な位置により規定したレイアウト情報を予め記憶する記憶部と、前記設定された基準点と前記レイアウト情報とに基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う文字認識部と、を備える。
【図面の簡単な説明】
【０００６】
【図１】システムの構成を簡易的に示す図。
【図２】画像処理装置が実行する処理を示すフローチャート。
【図３】ステップＳ１１０の詳細を示すフローチャート。
【図４】ステップＳ１１０の処理の流れを具体例を用いて説明するための図。
【図５】ステップＳ１４０の詳細を示すフローチャート。
【図６】図６Ａは、レイアウト情報３７（第１のレイアウト情報）の例を示す図、図６Ｂは、レイアウト情報３８（第２のレイアウト情報）の例を示す図。
【図７】ステップＳ１６０の詳細を示すフローチャート。
【発明を実施するための形態】
【０００７】
以下、各図を参照しながら本発明の実施形態を説明する。なお各図は、本実施形態を説明するための例示に過ぎない。
【０００８】
１．システムの概略説明：
図１は、本実施形態にかかるシステム１の構成を簡易的に示している。システム１は、スキャナー１０、通信装置２０、メインサーバー３０、ストレージサーバー５０を含んでいる。メインサーバー３０およびストレージサーバー５０は、インターネット通信網を通じてユーザーにクラウドサービスを提供可能なサーバーである。
【０００９】
スキャナー１０は、原稿を光学的に読み取り、読取結果としての所定のフォーマットの画像データを生成し画像データを外部へ出力可能な読取装置である。スキャナー１０は、スキャナーとしての機能に加え、印刷機能やファクシミリ通信機能等の複数の機能を兼ね備えた複合機であってもよい。スキャナー１０は、通信装置２０と有線または無線により通信可能に接続しており、画像データを通信装置２０へ送信する。
【００１０】
通信装置２０は、例えば、パーソナルコンピューター（ＰＣ）、スマートフォン、タブレット型端末、携帯電話機、或いはそれらと同程度の処理能力を有する情報処理装置によって実現される。通信装置２０は、制御部２１、通信インターフェイス（ＩＦ）２３、表示部２４、操作受付部２５等を備える。制御部２１は、プロセッサーとしてのＣＰＵ２１ａ、ＲＯＭ２１ｂ、ＲＡＭ２１ｃ等を有する一つ又は複数のＩＣや、その他のメモリー等を含んで構成される。
【００１１】
制御部２１では、プロセッサー（ＣＰＵ２１ａ）が、ＲＯＭ２１ｂやＲＯＭ２１ｂ以外のメモリー等に保存されたプログラムに従った演算処理を、ＲＡＭ２１ｃ等をワークエリアとして用いて実行することにより、通信装置２０を制御する。制御部２１はプログラム２２を搭載している。プログラム２２は、スキャナー１０が原稿の読み取りにより生成した画像データをメインサーバー３０へアップロードするためのアプリケーションである。
【００１２】
通信ＩＦ２３は、通信装置２０が公知の通信規格を含む所定の通信プロトコルに準拠して有線又は無線で外部と通信を実行するための一つまたは複数のＩＦの総称である。通信装置２０は、スキャナー１０と接続しているだけでなく、通信ＩＦ２３を介して、ネットワークＮＷに接続する。ネットワークＮＷは、ローカルエリアネットワーク（ＬＡＮ）やインターネット通信網やその他の公衆回線等を含む。
【００１３】
表示部２４は、視覚的情報を表示するための手段であり、例えば、液晶ディスプレイ（ＬＣＤ）や、有機ＥＬディスプレイ等により構成される。表示部２４は、ディスプレイと、ディスプレイを駆動するための駆動回路とを含む構成であってもよい。操作受付部２５は、ユーザーによる操作を受け付けるための手段であり、例えば、物理的なボタンや、タッチパネルや、マウスや、キーボード等によって実現される。むろん、タッチパネルは、表示部２４の一機能として実現されるとしてもよい。表示部２４および操作受付部２５を含めて、通信装置２０の操作パネルと呼ぶことができる。
【００１４】
スキャナー１０と通信装置２０は、図１に例示したように互いに独立した装置であってもよいが、実態としてそれら全体が一つの装置に含まれていてもよい。具体的には、スキャナー１０は、通信装置２０の構成を含むことにより、ネットワークＮＷを介した外部との通信機能を兼ね備えた複合機として実現されてもよい。
【００１５】
メインサーバー３０は、ネットワークＮＷ上でサーバーとして機能する一台あるいは複数台の情報処理装置によって実現される。メインサーバー３０は、制御部３１、通信ＩＦ３３、記憶部３４等を備える。制御部３１は、プロセッサーとしてのＣＰＵ３１ａ、ＲＯＭ３１ｂ、ＲＡＭ３１ｃ等を有する一つ又は複数のＩＣや、その他のメモリー等を含んで構成される。制御部３１では、プロセッサー（ＣＰＵ３１ａ）が、ＲＯＭ３１ｂや記憶部３４等に保存されたプログラムに従った演算処理を、ＲＡＭ３１ｃ等をワークエリアとして用いて実行することにより、メインサーバー３０を制御する。制御部３１はプログラムの一つとしてプログラム３２を搭載している。プログラム３２は、メインサーバー３０の制御部３１が実行する画像処理プログラムに該当する。また、プログラム３２を実行するメインサーバー３０は、画像処理装置の具体例に該当する。なお、プロセッサーとしては、一つのＣＰＵに限られることなく、複数のＣＰＵやＡＳＩＣ等のハードウェア回路により処理を行う構成としてもよいし、ＣＰＵとハードウェア回路とが協働して処理を行うようにしてもよい。
【００１６】
通信ＩＦ３３は、メインサーバー３０が公知の通信規格を含む所定の通信プロトコルに準拠して有線又は無線で外部と通信を実行するための一つまたは複数のＩＦの総称である。記憶部３４は、例えば、ハードディスクドライブや不揮発性のメモリーによって構成される記憶手段であり、本実施形態では、ＯＣＲ（Optical Character Recognition）エンジン３５のプログラム、ＤＬ（Deep Learning）エンジン３６のプログラム、レイアウト情報３７，３８等を予め記憶している。ＯＣＲエンジン３５やＤＬエンジン３６はソフトウェアの一種である。プログラム３２だけでなくＯＣＲエンジン３５やＤＬエンジン３６を含めて画像処理プログラムと呼んでもよい。
【００１７】
メインサーバー３０は、図１の例では、ストレージサーバー５０と通信可能に接続している。ストレージサーバー５０も、ネットワークＮＷ上でサーバーとして機能する一台あるいは複数台の情報処理装置によって実現される。ストレージサーバー５０は、メインサーバー３０からデータを取得して格納するためのサーバーである。なお、メインサーバー３０とストレージサーバー５０とは、装置として明確に分かれていても分かれていなくてもよく、例えば、共通のサーバーがメインサーバー３０およびストレージサーバー５０として機能する構成であってもよい。図１では示していないが、サーバー３０，５０に対して、これらサーバーをオペレーターが操作するために必要な表示部や操作受付部が接続されていてもよい。
【００１８】
メインサーバー３０側の構成である制御部３１、プログラム３２、通信ＩＦ３３等と、通信装置２０側の構成である制御部２１、プログラム２２、通信ＩＦ２３等とを判り易く区別するために、便宜上、第１制御部３１、第１プログラム３２、第１通信ＩＦ３３、第２制御部２１、第２プログラム２２、第２通信ＩＦ２３、等と表現してもよい。
【００１９】
２．文字認識処理：
図２は、メインサーバー３０の制御部３１がプログラム３２に従って実行する画像処理をフローチャートにより示している。当該フローチャートは、スキャナー１０による原稿の読取結果から、特定項目の情報を検出し保存する処理である。また、当該フローチャートの少なくとも一部は、画像処理方法を示していると言える。
【００２０】
システム１において、先ず、スキャナー１０は、ユーザーが任意にセットした原稿を読み取ることにより画像データを生成する。本実施形態では、ユーザーがスキャナー１０に読み取らせる原稿は、店舗等で発行されたレシート等の証憑または請求書であるとする。以下では、ユーザーがスキャナー１０に読み取らせるレシートまたは請求書を、単に原稿とも呼ぶ。スキャナー１０は、原稿の読み取りにより生成した画像データ（以下、読取画像）を通信装置２０へ送信する。通信装置２０の制御部２１は、通信ＩＦ２３を介してスキャナー１０へ原稿の読取開始を指示し、スキャナー１０は、制御部２１からの原稿の読取開始の指示に従って原稿の読み取りを開始するとしてもよい。
【００２１】
通信装置２０においては、プログラム２２を実行する制御部２１は、スキャナー１０から受信した読取画像を、通信ＩＦ２３およびネットワークＮＷを介してメインサーバー３０へアップロードする。
メインサーバー３０においては、制御部３１は、通信装置２０から送信された読取画像を、通信ＩＦ３３を介して取得する（ステップＳ１００）。なお、制御部３１は、通信装置２０から受信した読取画像を、一旦、記憶部３４に保存し、ステップＳ１００では、記憶部３４から読取画像を取得してもよい。ステップＳ１００は、レシートまたは請求書の読み取りにより生成された読取画像を取得する取得工程に該当する。また、ステップＳ１００を実現する点において、プログラム３２を実行する制御部３１は、読取画像を取得する取得部３９として機能すると言える。
【００２２】
ステップＳ１１０では、制御部３１は、読取画像に含まれる印字領域を特定し、印字領域に対して所定の位置関係となる読取画像内の位置に、基準点を設定する。ステップＳ１１０は、読取画像内に基準点を設定する設定工程に該当する。また、ステップＳ１１０を実現する点において、プログラム３２を実行する制御部３１は、読取画像内に基準点を設定する設定部４０として機能すると言える。
【００２３】
図３は、ステップＳ１１０の詳細をフローチャートにより示している。
図４は、ステップＳ１１０の処理の流れを、具体例を用いて説明する図である。
ステップＳ１１１では、制御部３１は、読取画像に含まれる画毎の輪郭を抽出し、輪郭が内接する矩形を生成する。ステップＳ１１１で生成する矩形を輪郭枠と呼ぶ。ここで言う、読取画像に含まれる画とは、一つの文字や、一つのロゴ、その他、制御部３１が一まとまりと認識できる模様や図形である。基本的には、読取画像内において原稿の紙の色（白色）よりも暗い部分は、輪郭が抽出される。
【００２４】
図４の上段左には、ステップＳ１００で取得された読取画像ＩＭの一部を例示している。読取画像ＩＭは、ユーザーが利用した店舗で発行されたレシートをスキャナー１０が読み取ったことにより生成された画像データである。また、図４の上段右には、ステップＳ１１１で読取画像ＩＭ内に生成された輪郭枠ＣＦそれぞれを実線の矩形にて示している。図４の、上段左の読取画像ＩＭと、上段右のステップＳ１１１を経た読取画像ＩＭとを比較すると判るように、輪郭枠ＣＦは、基本的には読取画像ＩＭ内の文字単位で生成される。ただし、例えば、一つの文字を構成する各要素（例えば、漢字の各部首）に対応して別々の輪郭枠ＣＦが生成されることも有り得る。図４では、上段左に示した読取画像ＩＭ以外では、読取画像ＩＭ内の文字の表記を省略している。
【００２５】
ステップＳ１１２では、制御部３１は、ステップＳ１１１で生成した輪郭枠に基づいて、読取画像内に印字行を特定する。印字行とは、簡単に言うと、輪郭枠が読取画像の横方向に沿って並んでいる領域である。制御部３１は、一つの輪郭枠と、この一つの輪郭枠の横方向の隣に在る別の輪郭枠とを比較したとき、比較した二つの輪郭枠が、夫々の縦方向の長さ（縦幅）の範囲が縦方向において少なくとも一部重なる関係にある場合、それら二つの輪郭枠は共通の印字行に含める、と判定する。制御部３１は、このような輪郭枠同士の比較を繰り返し、共通の印字行に含めるべき全ての輪郭枠を包含する最小の矩形を、一つの印字行とする。印字行は、読取画像内の印字領域である。
【００２６】
図４の下段左には、ステップＳ１１２により読取画像ＩＭ内で特定された印字行ＰＬそれぞれを実線の矩形にて示している。印字行ＰＬ内に破線で示した各矩形は、印字行ＰＬに含まれている輪郭枠ＣＦである。なお図４の、上段右の読取画像ＩＭと、下段左のステップＳ１１２を経た読取画像ＩＭとを比較すると判るように、読取画像ＩＭ内の右上角近傍の一つの輪郭枠ＣＦは、ステップＳ１１２により、それのみで一つの印字行ＰＬとして特定されている。
【００２７】
ステップＳ１１２による印字行の特定は、仮の特定である。
ステップＳ１１３では、制御部３１は、所定のノイズの条件に該当するノイズ領域を、ステップＳ１１２で特定した印字行から除去する。これは、原稿の染みや汚れ、あるいは原稿に付着した塵や埃等の読取結果が、読取画像内で印字行の一つとされることを防ぐためである。
【００２８】
所定のノイズの条件は、幾つか考えられる。制御部３１は、ステップＳ１１２で特定した印字行のうち、例えば、予め定められた文字の最小サイズの面積よりも面積が狭いという条件（第１条件）に該当する印字行をノイズ領域と認定し、印字行から除去する。
【００２９】
さらに、制御部３１は、ステップＳ１１２において特定した印字行の縦幅の平均値、あるいは中央値、あるいは最頻値を、印字行の縦幅の代表値として算出する。そして制御部３１は、ステップＳ１１２で特定した印字行のうち、例えば、縦幅が前記代表値の半分に満たないという条件（第２条件）に該当する印字行をノイズ領域と認定し、印字行から除去してもよい。この第２条件を用いることで、前記第１条件では除去できない、読取画像の横方向に長い線状の汚れ等によるノイズを除去することができる。
【００３０】
さらに、制御部３１は、ステップＳ１１２で特定した印字行のうち、輝度（例えば、印字行内の平均輝度）が、輝度に関するしきい値よりも高いという条件（第３条件）に該当する印字行をノイズ領域と認定し、印字行から除去してもよい。輝度に関するしきい値とは、通常は黒である文字の色と、文字よりも明るい色とを分離するためのしきい値であり、予め定められたしきい値であってもよい。あるいは、制御部３１は、印字行毎の輝度の分布（ヒストグラム）を生成し、このヒストグラムを解析することにより、例えば、ヒストグラムにおける高輝度側の上位数パーセントの分布を除去するためのしきい値を、前記輝度に関するしきい値に設定してもよい。前記第３条件を用いることで、前記第１条件や第２条件では除去できない、文字の色と比較して薄い色の汚れ等によるノイズを除去することができる。
【００３１】
ステップＳ１１４では、制御部３１は、ステップＳ１１２で特定した印字行のうち、ステップＳ１１３で除去の対象としなかった印字行を特定する。つまり、読取画像内の印字領域が、ステップＳ１１４で最終的に特定される。図４の上段左の読取画像ＩＭを見ると、読取画像ＩＭ内の右上角近傍に黒い点が表現されている。この黒い点は、原稿がスキャナー１０によって読み取られるときに原稿に付着していた何らかの汚れが原稿とともに読み取られた結果である。図４の例では、この黒い点は、ステップＳ１１１において一つの輪郭枠ＣＦが生成され、ステップＳ１１２において一つの印字行ＰＬとして特定されたが、ステップＳ１１３によりノイズ領域であるとして除去されている。
【００３２】
ステップＳ１１５では、制御部３１は、ステップＳ１１４で特定した印字行（印字領域）に対して所定の位置関係となる読取画像内の位置に、基準点を設定する。本実施形態では、一例として、制御部３１は、読取画像内で最も上側の印字行の左上の角を、基準点に設定する。図４の下段右には、ステップＳ１１３，Ｓ１１４，Ｓ１１５を経て、読取画像ＩＭ内で最も上側の印字行ＰＬの左上の角が基準点ＲＰに設定された例を示している。
【００３３】
図２に戻って説明を続ける。
ステップＳ１２０では、制御部３１は、ＯＣＲエンジン３５を起動させ、ステップＳ１００で取得した読取画像を対象とした文字認識処理をＯＣＲエンジン３５に実行させる。ステップＳ１２０では、ＯＣＲエンジン３５は、読取画像に含まれている一文字らしき画像、例えば、上述した輪郭枠単位の画像を順次入力し、画像から認識（推測）した文字を文字データ（テキストデータ）に変換して出力する。制御部３１は、このようなＯＣＲエンジン３５による文字認識処理の結果としてのテキストデータを取得する。ＯＣＲエンジン３５は、入力した画像から漢字、平仮名、片仮名、数字、アルファベット、その他の記号等、多くの種類の文字を推測可能な汎用的なＯＣＲエンジンである。
【００３４】
ステップＳ１３０では、制御部３１は、読取画像に対するステップＳ１２０の文字認識処理の結果から、第１の特定項目に関する所定のキーワードの抽出を試みる。図２では、キーワードを「ＫＷ」と略している。以下では一例として、第１の特定項目は、電話番号であるとする。従って、第１の特定項目に関する所定のキーワードとは、電話番号の存在を示唆する「電話」や「ＴＥＬ」等といった文字列である。制御部３１は、読取画像に対するステップＳ１２０の文字認識処理の結果から、このようなキーワードのいずれか一つ以上を抽出できた場合に、ステップＳ１３０において“Ｙｅｓ”と判定し、ステップＳ１４０へ進む。一方、制御部３１は、読取画像に対するステップＳ１２０の文字認識処理の結果から、第１の特定項目に関する所定のキーワードのいずれも抽出できなかった場合、ステップＳ１３０において“Ｎｏ”と判定し、ステップＳ１７０へ進む。
【００３５】
ステップＳ１４０では、制御部３１は、ステップＳ１１０で設定した基準点と、記憶部３４に記憶されているレイアウト情報３７とに基づいて、文字認識処理を行う。
図５は、ステップＳ１４０の詳細をフローチャートにより示している。
図６Ａは、レイアウト情報３７の一例を示している。
【００３６】
ステップＳ１４１では、制御部３１は、レイアウト情報３７から、一つの発行元の第１の特定項目の情報に関する位置、つまり電話番号の位置を読み出して取得する。レイアウト情報３７は、原稿に含まれる特定項目の情報の位置を、基準点からの相対的な位置により規定したレイアウト情報の一種であり、本実施形態では、第１のレイアウト情報に該当する。
【００３７】
具体的には、レイアウト情報３７は、レシートや請求書といった原稿を発行する発行元の電話番号と、基準点を基準とした電話番号の位置（ｘ，ｙ，ｘ＋ｗｉｄｔｈ，ｙ＋ｈｅｉｇｈｔ）との対応関係を、複数の発行元について規定している。つまり、レイアウト情報３７は、過去に行われた原稿の読取画像に対する文字認識処理の結果から得られた電話番号や位置（ｘ，ｙ，ｘ＋ｗｉｄｔｈ，ｙ＋ｈｅｉｇｈｔ）の情報を登録したテーブルである。
【００３８】
図６Ａの例では、レイアウト情報３７には、原稿の発行元としての店舗Ａ，Ｂ，Ｃ…と、店舗Ａ，Ｂ，Ｃ…毎の電話番号と、各電話番号に対応した位置（ｘ，ｙ，ｘ＋ｗｉｄｔｈ，ｙ＋ｈｅｉｇｈｔ）と、が登録されている。位置（ｘ，ｙ，ｘ＋ｗｉｄｔｈ，ｙ＋ｈｅｉｇｈｔ）におけるｘおよびｘ＋ｗｉｄｔｈは、基準点をｘ＝０としたときの読取画像内の横方向の座標を示し、ｙおよびｙ＋ｈｅｉｇｈｔは、基準点をｙ＝０としたときの読取画像内の縦方向の座標を示している。上述したように、基準点は読取画像内で最も上側の印字行の左上の角であり、（ｘ，ｙ）座標は、読取画像の横方向右側と読取画像の縦方向下側とを正の向きとしている。ｘ，ｙ，ｘ＋ｗｉｄｔｈ，ｙ＋ｈｅｉｇｈｔが夫々示す数値は、例えば画素数である。
【００３９】
ステップＳ１４２では、制御部３１は、ステップＳ１１０で設定した基準点と、ステップＳ１４１で取得した位置に基づいて、第１の特定項目の情報を文字認識するための対象領域（第１の対象領域）を読取画像内に特定する。つまり、ステップＳ１４１で取得した位置（ｘ，ｙ，ｘ＋ｗｉｄｔｈ，ｙ＋ｈｅｉｇｈｔ）に従い、制御部３１は、基準点を基準とした座標（ｘ，ｙ）および座標（ｘ＋ｗｉｄｔｈ，ｙ＋ｈｅｉｇｈｔ）の二点を対角として読取画像内に定義される矩形領域を、対象領域として特定する。
【００４０】
ステップＳ１４３では、制御部３１は、ステップＳ１４２で特定した対象領域と、読取画像内の印字領域とのずれに応じて、ステップＳ１４２で特定した対象領域の位置及び又は大きさを修正する。レイアウト情報３７に規定されている位置は、発行元に応じて異なるレシート等における電話番号の正しい位置を示す情報である。しかし現実の問題として、レイアウト情報３７に規定されたある発行元に対応する位置に従って、当該ある発行元が発行したレシート等の読取画像内で対象領域を特定した場合であっても、対象領域の位置が、印字領域つまり印字行に対して微妙にずれてしまうことがある。また、レイアウト情報３７に規定されたある発行元に対応する位置に従って、別の発行元が発行したレシート等の読取画像内で対象領域を特定した場合には、対象領域の位置が、印字行に対して大きくずれることが多々ある。
【００４１】
このような実情に鑑みて、ステップＳ１４３では制御部３１は、例えば、ステップＳ１４２で特定した対象領域と、読取画像内の印字行のうちステップＳ１４２で特定した対象領域と最も近い位置に在る印字行との縦方向のずれを無くすように、ステップＳ１４２で特定した対象領域を読取画像内で移動させる。制御部３１は、ステップＳ１４２で特定した対象領域が、読取画像内の印字行のうちステップＳ１４２で特定した対象領域と最も近い位置に在る印字行のより多くの範囲を含むように、ステップＳ１４２で特定した対象領域を拡大するとしてもよい。ステップＳ１４３による対象領域の位置及び又は大きさの修正は、対象領域と印字行とのずれの有無に応じて実行されたりされなかったりする。ステップＳ１４４以降の説明において、ステップＳ１４２で特定した対象領域と表現した場合であっても、ステップＳ１４３で対象領域の修正が行われた場合には、当然、修正後の対象領域を意味する。
【００４２】
ステップＳ１４４では、制御部３１は、ステップＳ１４２で特定した対象領域に対する文字認識処理をＯＣＲエンジン３５に実行させる。ステップＳ１４４は、文字認識処理にＯＣＲエンジン３５を用いる点で、ステップＳ１２０（図２）と同じである。しかし、ステップＳ１２０が、読取画像全体を対象とした処理であるのに対し、ステップＳ１４４は、ステップＳ１４２で特定した対象領域に限定した処理である点で異なる。
【００４３】
ステップＳ１４５では、制御部３１は、ステップＳ１４４の文字認識処理の結果に基づいて、ステップＳ１４２で特定した対象領域に第１の特定項目の情報、つまり電話番号としての文字列が含まれているか否かを判定する。ステップＳ１４５は、次のステップＳ１４６によるＤＬエンジン３６を用いた文字認識処理を実行すべきか否かを判定する処理とも言える。
【００４４】
例えば、ステップＳ１４４の文字認識処理の結果としてのテキストデータに、数字が全く含まれていないか、電話番号を構成するために最低限必要な個数より所定個数以上少ない個数の数字しか含まれていない場合は、制御部３１は、ステップＳ１４２で特定した対象領域に電話番号が含まれていないと判定し（ステップＳ１４５において“Ｎｏ”）、ステップＳ１４８へ進む。一方、ステップＳ１４４の文字認識処理の結果としてのテキストデータに、電話番号を構成するために最低限必要な個数以上の数字が含まれていたり、電話番号を構成するために最低限必要な個数に前記所定個数よりも少ない個数（例えば、１，２個）足りない程度の個数の数字が含まれていたりする場合は、制御部３１は、ステップＳ１４２で特定した対象領域に電話番号が含まれている、あるいは含まれている可能性があるため、ステップＳ１４５で“Ｙｅｓ”と判定し、ステップＳ１４６へ進む。いずれにしても、制御部３１は、ステップＳ１４４の文字認識処理の結果に基づいて、ステップＳ１４２で特定した対象領域に第１の特定項目の情報が含まれているか否かを判定するための判定基準を予め保持し、この判定基準に従って、ステップＳ１４５の判定を行う。
【００４５】
ステップＳ１４６では、制御部３１は、ＤＬエンジン３６を起動させ、ステップＳ１４２で特定した対象領域に対する文字認識処理をＤＬエンジン３６に実行させる。ステップＳ１４４は、特定した対象領域に対して行う第１の文字認識処理に該当し、ステップＳ１４６は、特定した対象領域に対して行う第２の文字認識処理に該当する。ステップＳ１４６では、ＤＬエンジン３６は、ステップＳ１４２で特定した対象領域に含まれている一文字らしき画像、例えば、上述した輪郭枠単位の画像を順次入力し、画像から認識（推測）した文字を文字データ（テキストデータ）に変換して出力する。制御部３１は、このようなＤＬエンジン３６による文字認識処理の結果としてのテキストデータを取得する。
【００４６】
ＤＬエンジン３６も、文字認識処理を実行するためのＯＣＲエンジンの一種であるが、機械学習の一つであるDeep Learning技術により作成された文字認識用のモデルである点で、ＯＣＲエンジン３５と異なる。ＤＬエンジン３６は、例えば、多層構造のニューラルネットワークに大量の学習用画像を入力することで、学習用画像の特徴を自動的に学習し、入力された画像を分類できるように構築されている。例えば、ＤＬエンジン３６は、「０」〜「９」の数字や、「年」、「月」、「日」、「時」、「分」の各漢字や、特定の記号、例えば日本円を表す記号「￥」等といった、限定された種類の文字について、数万の学習用画像に基づいて学習済みである。従って、ＤＬエンジン３６は、入力された画像が、「０」〜「９」の数字、「年」、「月」、「日」、「時」、「分」の各漢字、或いは特定の記号のいずれであるかを高い精度（少なくともＯＣＲエンジン３５よりも高い正答率）で推測することが可能である。そのため、ＤＬエンジン３６を用いる文字認識処理は、第１の文字認識処理よりも文字認識精度が高い第２の文字認識処理である。
【００４７】
上述したように第１の文字認識処理に用いるＯＣＲエンジン３５は、入力した画像から漢字、平仮名、片仮名、数字、アルファベット、その他の記号等、多くの種類の文字を推測可能なＯＣＲエンジンである。ＯＣＲエンジン３５と第２の文字認識処理に用いるＤＬエンジン３６とを比較すると、ＤＬエンジン３６が認識する文字種類（推測可能な文字種類）は、ＯＣＲエンジン３５が認識する文字種類よりも大幅に少ない。漢字、平仮名、片仮名、数字、アルファベット、その他の記号等の多くの種類の文字について、Deep Learning技術を用いて高精度で文字認識を行うモデルを作成することは、開発費用やコンピューターの能力や時間等の制約を鑑みると現実的ではない。従って、認識させる文字種類を大幅に絞ることで、限定された種類の文字についてDeep Learning技術を用いて文字認識精度をＯＣＲエンジン３５よりも高めたＯＣＲエンジンが、ＤＬエンジン３６であると言える。
【００４８】
ステップＳ１４７では、制御部３１は、ステップＳ１４６の文字認識処理の結果が、ステップＳ１４１でレイアウト情報３７から取得した位置の情報に対応する前記一つの発行元（例えば店舗Ａ）の電話番号と一致するか否かを判定する。つまり、ＤＬエンジン３６による文字認識処理の結果としてのテキストデータが、前記一つの発行元の電話番号と一致するか否かを判定し、一致する場合はステップＳ１４７で“Ｙｅｓ”と判定してステップＳ１４９へ進み、一致しない場合は、ステップＳ１４７で“Ｎｏ”と判定してステップＳ１４８へ進む。
【００４９】
ステップＳ１４９では、制御部３１は、ステップＳ１００で取得した読取画像の生成の元となった原稿の発行元は、ステップＳ１４１でレイアウト情報３７から取得した位置の情報に対応する前記一つの発行元であると特定し、図５の処理（ステップＳ１４０）を終える。つまり、ステップＳ１４０の処理を、ステップＳ１４９を経て終えたとき、制御部３１は、読取画像から第１の特定項目の情報としての電話番号の検出に成功し、かつ、原稿の発行元の特定に成功したことになる。
【００５０】
ステップＳ１４８では、制御部３１は、レイアウト情報３７に規定された全ての発行元それぞれの電話番号の位置をステップＳ１４１で取得してステップＳ１４２以降の処理を行ったか、否かを判定する。この判定で“Ｎｏ”の場合は、制御部３１は、ステップＳ１４１へ戻り、レイアウト情報３７から電話番号の位置を未取得である一つの発行元に対応して、新たに電話番号の位置を取得し、ステップＳ１４２以降の処理へ進む。一方、制御部３１は、レイアウト情報３７に規定された全ての発行元それぞれの電話番号の位置をステップＳ１４１で取得してステップＳ１４２以降の処理を行った場合には、ステップＳ１４８で“Ｙｅｓ”と判定して図５の処理（ステップＳ１４０）を終える。ステップＳ１４０の処理を、ステップＳ１４８の“Ｙｅｓ”の判定で終えたとき、制御部３１は、原稿の発行元を特定できなかったことになる。ステップＳ１４０の処理を、ステップＳ１４８の“Ｙｅｓ”の判定で終えたときであっても、制御部３１は、読取画像内に特定した対象領域から第１の特定項目の情報としての電話番号の検出に成功している場合がある。ただし、そのような検出に成功した電話番号は、レイアウト情報３７に登録されたいずれの電話番号とも異なる電話番号である。
【００５１】
図２に戻って説明を続ける。
ステップＳ１５０では、制御部３１は、原稿の発行元の特定に成功したか否かに応じて処理を分岐する。つまり、ステップＳ１４０の処理を、ステップＳ１４９を経て終えた場合には、ステップＳ１５０で“Ｙｅｓ”と判定してステップＳ１６０へ進む。一方、ステップＳ１４０の処理を、ステップＳ１４８の“Ｙｅｓ”の判定で終えた場合には、制御部３１は、ステップＳ１５０で“Ｎｏ”と判定してステップＳ１７０へ進む。
【００５２】
ステップＳ１６０では、制御部３１は、ステップＳ１１０で設定した基準点と、ステップＳ１４０で特定した原稿の発行元に対応して記憶部３４に記憶されているレイアウト情報３８とに基づいて、文字認識処理を行う。
図７は、ステップＳ１６０の詳細をフローチャートにより示している。
図６Ｂは、レイアウト情報３８の一例を示している。
【００５３】
レイアウト情報３８は、原稿に含まれる特定項目の情報の位置を、基準点からの相対的な位置により規定したレイアウト情報の一種である。また、レイアウト情報３８は、レイアウト情報３７に規定された発行元（図６Ａの例では、店舗Ａ、店舗Ｂ、店舗Ｃ…）毎に生成されて予め記憶部３４に複数記憶されている。そして、レイアウト情報３８は、原稿の発行元毎に異なる、基準点からの第２の特定項目の情報の位置、を規定した第２のレイアウト情報に該当する。
【００５４】
上述したように、一例として第１の特定項目は電話番号である。一方、第２の特定項目は、図６Ｂに示すように、例えば、日付、つまり原稿の発行日や、合計金額、つまり原稿の発行元とユーザーとの取引金額等である。
【００５５】
ステップＳ１６１では、制御部３１は、ステップＳ１４０で特定した原稿の発行元に対応するレイアウト情報３８から、第２の特定項目のうちの一つの特定項目の情報に関する位置、例えば日付の位置を読み出して取得する。レイアウト情報３８に規定されている位置（ｘ，ｙ，ｘ＋ｗｉｄｔｈ，ｙ＋ｈｅｉｇｈｔ）の解釈の仕方は、レイアウト情報３７の説明で述べた通りである。
【００５６】
ステップＳ１６２では、制御部３１は、ステップＳ１１０で設定した基準点と、ステップＳ１６１で取得した位置に基づいて、第２の特定項目の情報を文字認識するための対象領域（第２の対象領域）を読取画像内に特定する。ステップＳ１４２でも説明したように、制御部３１は、基準点を基準とした座標（ｘ，ｙ）および座標（ｘ＋ｗｉｄｔｈ，ｙ＋ｈｅｉｇｈｔ）の二点を対角として読取画像内に定義される矩形領域を、対象領域として特定する。
【００５７】
ステップＳ１６３では、制御部３１は、ステップＳ１６２で特定した対象領域と、読取画像内の印字領域とのずれに応じて、ステップＳ１６２で特定した対象領域の位置及び又は大きさを修正する。ステップＳ１６３の説明は、ステップＳ１４３の説明を準用する。むろん、ステップＳ１６４以降の説明において、ステップＳ１６２で特定した対象領域と表現した場合であっても、ステップＳ１６３で対象領域の修正が行われた場合には、修正後の対象領域を意味する。
【００５８】
ステップＳ１６４では、制御部３１は、ステップＳ１６２で特定した対象領域に対する文字認識処理をＯＣＲエンジン３５に実行させる。
ステップＳ１６５では、制御部３１は、ステップＳ１６４の文字認識処理の結果に基づいて、ステップＳ１６２で特定した対象領域に、ステップＳ１６１で取得した位置に対応する第２の特定項目の情報が含まれているか否かを判定する。
【００５９】
ステップＳ１６１で取得した位置に対応する第２の特定項目が日付である場合を想定する。制御部３１は、例えば、ステップＳ１６４の文字認識処理の結果としてのテキストデータに、数字が全く含まれていない場合や、ステップＳ１６４の文字認識処理の結果としてのテキストデータに数字が含まれていたとしても、日付の表記に該当しない数字の羅列である場合は、ステップＳ１６２で特定した対象領域に日付が含まれていないと判定し（ステップＳ１６５において“Ｎｏ”）、ステップＳ１６７へ進む。一方、ステップＳ１６４の文字認識処理の結果としてのテキストデータに、日付の表記に該当すると認められる数字が含まれている場合は、制御部３１は、ステップＳ１６２で特定した対象領域に日付が含まれている、あるいは含まれている可能性があるため、ステップＳ１６５で“Ｙｅｓ”と判定し、ステップＳ１６６へ進む。
【００６０】
また、ステップＳ１６１で取得した位置に対応する第２の特定項目が合計金額である場合を想定する。制御部３１は、例えば、ステップＳ１６４の文字認識処理の結果としてのテキストデータに、数字が全く含まれていない場合や、ステップＳ１６４の文字認識処理の結果としてのテキストデータに数字が含まれていたとしても、金額の表記に該当しない数字の羅列（例えば、小数点以下の数字の表記等）である場合は、ステップＳ１６２で特定した対象領域に合計金額が含まれていないと判定し（ステップＳ１６５において“Ｎｏ”）、ステップＳ１６７へ進む。一方、ステップＳ１６４の文字認識処理の結果としてのテキストデータに、合計金額の表記に該当すると認められる数字が含まれていたり、金額の表記に特有の記号「￥」等が含まれていたりする場合は、制御部３１は、ステップＳ１６２で特定した対象領域に合計金額が含まれている、あるいは含まれている可能性があるため、ステップＳ１６５で“Ｙｅｓ”と判定し、ステップＳ１６６へ進む。
いずれにしても、制御部３１は、ステップＳ１６４の文字認識処理の結果に基づいて、ステップＳ１６２で特定した対象領域に第２の特定項目の情報が含まれているか否かを判定するための判定基準を予め保持し、この判定基準に従って、ステップＳ１６５の判定を行う。
【００６１】
ステップＳ１６６では、制御部３１は、ステップＳ１６２で特定した対象領域に対する文字認識処理をＤＬエンジン３６に実行させる。ステップＳ１６４は、特定した対象領域に対して行う第１の文字認識処理に該当し、ステップＳ１６６は、特定した対象領域に対して行う第２の文字認識処理に該当する。
【００６２】
ステップＳ１６７では、制御部３１は、ステップＳ１４０で特定した原稿の発行元に対応するレイアウト情報３８に規定された全ての項目（第２の特定項目）それぞれの位置をステップＳ１６１で取得してステップＳ１６２以降の処理を行ったか、否かを判定する。この判定で“Ｎｏ”の場合は、制御部３１は、ステップＳ１６１へ戻り、ステップＳ１４０で特定した原稿の発行元に対応するレイアウト情報３８から、位置を未取得である一つの項目に対応して新たに位置を取得し、ステップＳ１６２以降の処理へ進む。一方、制御部３１は、ステップＳ１４０で特定した原稿の発行元に対応するレイアウト情報３８に規定された全ての項目それぞれの位置をステップＳ１６１で取得してステップＳ１６２以降の処理を行った場合には、ステップＳ１６７で“Ｙｅｓ”と判定して図７の処理（ステップＳ１６０）を終える。
【００６３】
図７の処理は、ステップＳ１６５で“Ｎｏ”の判定を繰り返した結果、ステップＳ１６７で“Ｙｅｓ”と判定して終わることも、可能性としては０％ではない。ただし、図７の処理は、原稿の発行元に対応するレイアウト情報３８を参照して、ステップＳ１６２で対象領域を特定しているため、高い確率で第２の特定項目の情報としての日付や合計金額を検出することができる。
【００６４】
上述したようなステップＳ１４０の処理や、ステップＳ１６０の処理を実現する点で、プログラム３２を実行する制御部３１は、設定された基準点とレイアウト情報とに基づいて、読取画像内に文字認識処理の対象とする対象領域を特定し、特定した対象領域に対して文字認識処理を行う文字認識部、として機能すると言える。また、プロセッサー（ＣＰＵ３１ａ）は、ＯＣＲエンジン３５やＤＬエンジン３６を実行することで文字認識部として機能するとも言える。また、ステップＳ１４０の処理や、ステップＳ１６０の処理は、上述のように特定した対象領域に対して文字認識処理を行う文字認識工程に該当する。なお、制御部３１は、ステップＳ１４０やステップＳ１６０において、特定した対象領域に対して、ＯＣＲエンジン３５を用いた第１の文字認識処理と、ＤＬエンジン３６を用いた第２の文字認識処理との両方を実行した場合は、第２の文字認識処理による結果を優先して採用し、後述する保存処理の対象とする。
【００６５】
図２に戻って説明を続ける。
ステップＳ１６０の後のステップＳ１９０では、制御部３１は、ステップＳ１４０による文字認識処理の結果およびステップＳ１６０による文字認識処理の結果を、ストレージサーバー５０へ保存する。この場合、制御部３１は、ステップＳ１００で取得した読取画像とともに、ステップＳ１４０，Ｓ１６０による文字認識処理の結果を、ストレージサーバー５０へ保存する。この結果、例えば、図４の上段左に示した読取画像ＩＭとともに、読取画像ＩＭ内の特定項目の情報としての電話番号、日付、合計金額等のテキストデータが、ストレージサーバー５０に保存される。ストレージサーバー５０に保存するテキストデータの正確性（原稿に記載された文字との一致率）は、ＤＬエンジン３６を用いた第２の文字認識処理によって担保される。ステップＳ１９０を経て、図２のフローチャートが終了する。
【００６６】
ステップＳ１７０，Ｓ１８０について説明する。
ステップＳ１７０では、制御部３１は、ステップＳ１００で取得した読取画像に含まれる特定項目の情報の少なくとも一部を抽出するための一般的な処理を実行する。つまり、制御部３１は、ステップＳ１７０では公知技術を含めた種々の手法により特定項目の情報の抽出（検出）を試み、ステップＳ１７０以前の、例えばステップＳ１４０の結果を含めて、電話番号や日付や合計金額といった情報を検出できればよい。例えば、制御部３１は、ステップＳ１７０では、特定項目の情報の存在を示唆する所定のキーワードを読取画像内で検索し、検索でヒットしたキーワード近傍の領域に対して文字認識処理を行うことにより特定項目の情報を検出するとしてもよい。
【００６７】
ステップＳ１８０では、制御部３１は、ステップＳ１７０を終えた時点で読取画像から検出できた電話番号や日付や合計金額といった特定項目の情報により、レイアウト情報３７を更新したり、レイアウト情報３８を新規に生成したりする。むろん、ステップＳ１７０を終えた時点で、特定項目の情報の検出に成功していないこともある。そのため、制御部３１は、ステップＳ１７０を終えた時点で、電話番号や日付や合計金額といった特定項目の情報の検出に成功した場合に、ステップＳ１８０を実行することが可能である。具体的には、制御部３１は、ステップＳ１７０を終えた時点で検出に成功している電話番号と、読取画像内における基準点からの電話番号の位置とを、レイアウト情報３７に追記する。レイアウト情報３７に追記した電話番号と、店舗等の原稿の発行元との紐づけは、メインサーバー３０を操作するオペレーターにより人為的に行われてもよいし、そのような紐づけを行うサービスを利用してもよい。また、制御部３１は、レイアウト情報３７に追記した電話番号とともに読取画像から検出した日付、合計金額それぞれについての基準点からの位置を登録したレイアウト情報３８を新たに生成し、原稿の発行元、つまり電話番号と対応付けて記憶部３４に記憶させることができる。また、制御部３１は、ステップＳ１８０の後、ステップＳ１９０へ進み、ステップＳ１７０までの処理で読取画像から検出した電話番号や日付や合計金額といった特定項目の情報を、ステップＳ１００で取得した読取画像とともにストレージサーバー５０へ保存する。
【００６８】
ストレージサーバー５０に読取画像とともに保存されたテキストデータは、ネットワークＮＷを通じて外部へ提供される。ストレージサーバー５０に保存されたテキストデータは、レシートや請求書といった原稿に記載された取引相手（電話番号）、取引日（日付）、取引金額（合計金額）、等を示す文字列である。そのため、ストレージサーバー５０に保存されたテキストデータは、例えば、会計処理や税務上の処理を行う会計事務所が操作する端末へ、ネットワークＮＷを介して送信され、会計処理や税務上の処理の用に供される。また、ストレージサーバー５０に保存されたテキストデータは、ネットワークＮＷに接続したプリンターによって印刷されたり、通信装置２０およびスキャナー１０のユーザーの求めに応じて、ネットワークＮＷを通じて通信装置２０へ送信されたりする。
【００６９】
３．まとめ：
このように本実施形態によれば、画像処理装置（メインサーバー３０）は、レシートまたは請求書の読み取りにより生成された読取画像を取得する取得部３９と、前記読取画像に含まれる印字領域を特定し、前記印字領域に対して所定の位置関係となる前記読取画像内の位置に基準点を設定する設定部４０と、前記レシートまたは請求書に含まれる特定項目の情報の位置を、前記基準点からの相対的な位置により規定したレイアウト情報を予め記憶する記憶部３４と、を備える。そして、文字認識部として機能する制御部３１は、前記設定された基準点と前記レイアウト情報とに基づいて、前記読取画像内に文字認識処理の対象とする対象領域を特定し、前記特定した対象領域に対して文字認識処理を行う。
【００７０】
前記構成によれば、印字領域に対して所定の位置関係となる基準点を基準として、特定項目の情報を検出するための対象領域が読取画像内に特定される。従って、レシート等の原稿内での印字領域の位置のばらつきに関係なく、特定項目の情報の位置に対して正確に文字認識処理を施すことができ、特定項目の情報の正確な文字認識結果を得ることができる。
【００７１】
また、本実施形態によれば、設定部４０は、前記印字領域のうち所定のノイズの条件に該当するノイズ領域を前記印字領域から除去し（図３のステップＳ１１３）、前記ノイズ領域の除去後の印字領域に応じて前記基準点を設定する（ステップＳ１１４，Ｓ１１５）。
前記構成によれば、本来の印字領域には該当しないノイズ領域を除去することにより、印字領域に対して所定の位置関係となる基準点を誤らずに設定することができる。
【００７２】
また、本実施形態によれば、前記文字認識部は、前記特定した対象領域と前記印字領域とのずれに応じて、前記対象領域の位置及び又は大きさを修正し（図５のステップＳ１４３、図７のステップＳ１６３）、前記修正後の対象領域に対して前記文字認識処理を行う。
前記構成によれば、基準点とレイアウト情報とに基づいて読取画像内に一旦特定した対象領域について、印字領域（印字行）とのずれに応じて、位置及び又は大きさを修正する。そのため、対象領域から、より適切な文字認識処理の結果が得られる。
【００７３】
また、本実施形態によれば、記憶部３４は、前記レシートまたは請求書の発行元の第１の特定項目の情報と、前記基準点からの第１の特定項目の情報の位置との対応関係を、複数の前記発行元について規定した第１のレイアウト情報（レイアウト情報３７）と、前記基準点からの第２の特定項目の情報の位置を規定した第２のレイアウト情報であって複数の前記発行元毎の複数の第２のレイアウト情報（レイアウト情報３８）と、を記憶している。前記文字認識部は、前記設定された基準点と第１のレイアウト情報とに基づいて、一の発行元の第１の特定項目の情報を文字認識するための第１の対象領域を前記読取画像内に特定し、前記特定した第１の対象領域に対する前記文字認識処理により認識した文字列と、第１のレイアウト情報に規定されている前記一の発行元の第１の特定項目の情報とが一致するか否かの判断を、前記発行元毎に繰り返す。これにより、前記読取画像の生成の元となった前記レシートまたは請求書の発行元を特定する（図５）。そして、前記設定された基準点と前記特定した発行元に対応する第２のレイアウト情報とに基づいて、第２の特定項目の情報を文字認識するための第２の対象領域を前記読取画像内に特定し、前記特定した第２の対象領域に対して前記文字認識処理を行う（図７）。
【００７４】
前記構成によれば、第１の対象領域に対する文字認識処理により認識した文字列と、第１のレイアウト情報に規定されている第１の特定項目の情報との一致に応じて、第１の特定項目の情報が正しく検出できたこと及び読取画像の生成元の原稿の発行元が確定する。そして、基準点と原稿の発行元に対応する第２のレイアウト情報とに基づく第２の対象領域に対する文字認識処理が実行される。そのため、第１の特定項目の情報および第２の特定項目の情報を正しく検出することができる。
【００７５】
また、本実施形態によれば、前記文字認識部は、前記特定した対象領域に対して第１の文字認識処理を行い、第１の文字認識処理の結果に基づいて、前記特定項目の情報が前記特定した対象領域に含まれていると判定した場合に、前記特定した対象領域に対して第１の文字認識処理よりも文字認識精度が高い第２の文字認識処理を実行する（図５のステップＳ１４４〜Ｓ１４６、図７のステップＳ１６４〜Ｓ１６６）。
前記構成によれば、画像処理装置は、対象領域に対する第１の文字認識処理の結果に基づいて、対象領域に特定項目の情報が含まれている旨のある程度の認識を得た場合に、同じ対象領域に対して、より文字認識精度が高い第２の文字認識処理を実行する。そのため、特定項目の情報を読取画像から効率的に且つ高い文字認識精度で検出することができる。
【００７６】
また、本実施形態によれば、前記文字認識部は、機械学習により作成された文字認識用のモデル（ＤＬエンジン３６）を用いて第２の文字認識処理を実行する。これにより、レシートまたは請求書といった原稿の読取画像に含まれている特定項目の情報に対する文字認識精度を確実に向上させることができる。
【００７７】
また、本実施形態では、第２の文字認識処理により認識する文字種類は、第１の文字認識処理により認識する文字種類よりも少ない。つまり、第１の文字認識処理に用いられるＯＣＲエンジン３５と比較して、第２の文字認識処理に用いられるＤＬエンジン３６は、認識する文字種類（推測可能な文字種類）が少ない。汎用的なＯＣＲエンジン３５と比べて認識する文字種類を大幅に絞ることで、機械学習により文字認識精度を高めたＯＣＲエンジン（ＤＬエンジン３６）が実現されている。従って、画像処理装置は、対象領域に対する第１の文字認識処理では、多くの文字種類の中から該当する文字を推測することにより、特定項目の情報が含まれている旨のある程度の認識を得て、その後、同じ対象領域に対する第２の文字認識処理により、特定項目の情報を高い文字認識精度で検出することができる。
【００７８】
４．他の実施形態：
本発明の実施形態は上述した態様に限定されず、例えば、以下に説明する種々の態様を含む。各実施形態を組み合わせた構成も本明細書の開示範囲に含まれる。
【００７９】
印字領域に対して所定の位置関係となる読取画像内の位置である基準点の定義は、図４で説明したような、読取画像内で最も上側の印字行の左上の角に限定されない。一例として、読取画像内で最も上側の印字行の右上の角を基準点と定義してもよい。
【００８０】
図２のフローチャートにおいて、制御部３１は、ステップＳ１２０，Ｓ１３０を実行することで、ステップＳ１４０を実行するか否かを分岐している。これにより、読取画像内に第１の特定項目の情報が含まれている可能性がかなり低いにもかかわらずステップＳ１４０を実行して、結果的にステップＳ１４０の処理が無駄になることを、未然に防いでいる。ただし、ステップＳ１２０，Ｓ１３０は必須ではない。図２のフローチャートにおいてステップＳ１２０，Ｓ１３０を省き、制御部３１は、ステップＳ１１０からステップＳ１４０へ進むとしてもよい。
【００８１】
ステップＳ１４０やステップＳ１６０において、第２の文字認識処理を実行しない構成であってもよい。つまり、ステップＳ１４０の処理は、図５のステップＳ１４５およびステップＳ１４６を含まず、制御部３１は、ステップＳ１４４からステップＳ１４７の判定に進むとしてもよい。また、ステップＳ１６０の処理は、図７のステップＳ１６５およびステップＳ１６６を含まず、制御部３１は、ステップＳ１６４からステップＳ１６７の判定に進むとしてもよい。
【００８２】
また、図２のフローチャートに示した通りにステップＳ１２０，Ｓ１３０を実行する構成では、制御部３１は、ステップＳ１４０やステップＳ１６０では、特定した対象領域に対して改めてＯＣＲエンジン３５を用いた文字認識処理を実行するのではなく、ステップＳ１２０の文字認識処理の結果を流用してもよい。つまり、図５のステップＳ１４４では、制御部３１は、ステップＳ１４２で特定した対象領域に対するＯＣＲエンジン３５を用いた文字認識処理を実行せず、ステップＳ１２０で実行済みの読取画像全体に対するＯＣＲエンジン３５を用いた文字認識処理の結果（テキストデータ）のうちの、ステップＳ１４２で特定した対象領域に対応する部分を、ステップＳ１４２で特定した対象領域に対するＯＣＲエンジン３５を用いた文字認識処理の結果として取得すればよい。同様に、図７のステップＳ１６４では、制御部３１は、ステップＳ１６２で特定した対象領域に対するＯＣＲエンジン３５を用いた文字認識処理を実行せず、ステップＳ１２０で実行済みのＯＣＲエンジン３５を用いた文字認識処理の結果（テキストデータ）のうちの、ステップＳ１６２で特定した対象領域に対応する部分を、ステップＳ１６２で特定した対象領域に対するＯＣＲエンジン３５を用いた文字認識処理の結果として取得すればよい。
【００８３】
これまでは、本発明にかかる画像処理装置の具体例として、システム１に含まれるメインサーバー３０を挙げて説明を行った。ただし、画像処理装置の具体例はメインサーバー３０に限定されない。例えば、スキャナー１０から原稿の読取画像を取得する通信装置２０が、自身のリソースを用いて本発明の画像処理装置を実現してもよい。つまり、通信装置２０において、ＲＯＭ２１ｂやＲＯＭ２１ｂ以外のメモリー等の記憶手段にＯＣＲエンジン３５、ＤＬエンジン３６、レイアウト情報３７，３８等が記憶されており、制御部２１がプログラム２２に従って、図２〜７を参照してこれまで説明した処理を実行する構成であってもよい。この場合、通信装置２０は、ステップＳ１９０（保存処理）における読取画像やテキストデータの保存先を、自身が有するメモリー等の記憶手段としてもよいし、外部のサーバー（例えば、ストレージサーバー５０）としてもよい。
ＯＣＲエンジン３５やＤＬエンジン３６は、記憶部３４やメモリーに記憶されたソフトウェアではなく、ソフトウェアと協働して機能するハードウェアであってもよい。
【００８４】
レイアウト情報３７やレイアウト情報３８には、図６Ａ，６Ｂで示したような原稿の発行元（店舗Ａ、店舗Ｂ、店舗Ｃ…）を示す情報が含まれていてもよいし、含まれていなくてもよい。これは、第１の特定項目の情報である電話番号が、そもそも原稿の発行元を一義的に示す情報だからである。つまり、レイアウト情報３７に登録されている一つ一つの電話番号が夫々異なる発行元を示している。従って、複数の発行元の夫々に対応して記憶されている複数のレイアウト情報３８は、レイアウト情報３７に規定されている複数の電話番号の夫々に対応して記憶されている、とも言える。
【００８５】
第２の文字認識処理は、第１の文字認識処理よりも高い文字認識精度で文字認識を実現するものであればよい。その意味で、第２の文字認識処理は、Deep Learning技術により作成されたＤＬエンジン３６を用いた処理に限定されない。第２の文字認識処理は、例えば、Deep Learning以外の機械学習の手法により作成されて、ＯＣＲエンジン３５よりも制限された範囲の文字（例えば、数字等）についての文字認識精度を高めた処理部による文字認識処理であってもよい。
【符号の説明】
【００８６】
１…システム、１０…スキャナー、２０…通信装置、２１…制御部、２１ａ…ＣＰＵ、２１ｂ…ＲＯＭ、２１ｃ…ＲＡＭ、２２…プログラム、２３…通信ＩＦ、３０…メインサーバー、３１…制御部、３１ａ…ＣＰＵ、３１ｂ…ＲＯＭ、３１ｃ…ＲＡＭ、３２…プログラム、３３…通信ＩＦ、３４…記憶部、３５…ＯＣＲエンジン、３６…ＤＬエンジン、３７，３８…レイアウト情報、３９…取得部、４０…設定部、５０…ストレージサーバー、ＩＭ…読取画像、ＮＷ…ネットワーク
【図１】
2019168856.tif 000003
【図２】
2019168856.tif 000004
【図３】
2019168856.tif 000005
【図４】
2019168856.tif 000006
【図５】
2019168856.tif 000007
【図６】
2019168856.tif 000008
【図７】
2019168856.tif 000009