スマートフォン等携帯端末装置を用いてレシートを撮影し、レシート画像から文字読取した結果を利用する各種アプリケーションが知られている。
アプリケーションのユーザによるレシートの撮影は、例えば、レシートをテーブルに載せるなどして固定し、携帯端末装置のカメラを起動しファインダ内にレシートが収まるように構え、手振れやピンボケがないようにシャッタボタンを押下して行われる。撮影されたレシート画像のOCR(Optical Character Recognition:光学文字認識)処理結果はさまざまな用途に使用され得る。
OCR処理では画像に含まれる一文字を構成する画素数が一定以上(例えば、24×24ドット以上)であることが好ましい。一文字を構成する画素数が少ないと文字読取できないことがある。
レシート全体をスマートフォン等のファインダに収めて撮影する場合、例えば、レシートの縦横比がスマートフォンの画面に対応すれば画面を広く使って撮影できるので、一文字を構成する画素数は多くなる。レシートは概して、購入商品が増えるほど縦に長くなり、細長いレシートを画面に収めようとすると一文字当たりの画素数は減少する。このため、小さな画像サイズ(例えば、2MP、3MP等)では、長尺のレシートは実質的に文字認識が困難だった。
本発明の発明者により、レシートに印字された行数と、画像サイズと、OCRの誤読率との関連が調査された。印字された行数がおよそ50行未満(短いレシート)では、画像サイズが3MP(メガピクセル)、8MP、12MPのいずれでも誤読率は0パーセントから10〜20パーセント前後と低かった。レシートの行数がおよそ50行以上(長いレシート)になると、3MPでは誤読率が30パーセント前後と高くなり、およそ60行以上で50パーセントを超えた。これに対し、8MP、12MPでは、レシートの行数がおよそ50行以上でも誤読率は概ね10パーセント前後と低く、誤読率が30パーセントを超えやすくなるのは、8MPでおよそ80行以上、12MPでおよそ90行以上であった。近年、スマートフォン等の携帯端末装置はいわゆる4K(3840×2160、8MP)動画等に対応する傾向にあり、従って長尺のレシートを成功裏に文字読取しやすくなってきたと言える。
しかしながら、概して、シャッタボタンを押下する動作は手振れを起こしやすく、画像がピンボケであるとOCRで文字読取できないことがある。手振れしないように一方の手で端末を保持し、他方の手でシャッタボタンを押下すると、両手がふさがる。そうなると、例えば、レシートが照明の真下で影にならないように空いた手で適宜位置を調整したり、長いレシートがカールしないように押さえたり、空中に持ち上げたり壁で支えたりして撮影することはできない。OCR処理に適するように撮影できなければ、結局アプリケーションはエラーを返し、ユーザは再び撮影を要求される。そのようなエラーは繰り返されやすく、エラーが続くことにより、ユーザは撮影をあきらめてアプリケーションから離脱するという問題がある。
従来、認識対象物(被写体)やカメラがぶれやすい状態で撮影される画像から所望の情報を高精度に認識することができる画像処理装置として、カメラで撮影された画像内に存在する認識対象物を検出する認識対象検出部と、認識対象物の画像領域が認識可能な状態か否かを判定する認識対象状態判定部等を備える画像処理装置が提案された(特開2010−218061号公報:特許文献1)。
多機能携帯端末の利用者が各種のキャンペーンに円滑かつ迅速に応募することができるように、長尺のレシートの撮影時に、長尺のレシートの長さ方向への分割撮影を指示することや、レシートの撮影時にレシートに対して多機能携帯端末の焦点が合わない場合、多機能携帯端末のシャッタを切ることを不能にすることが提案された(特開2016−57676号公報:特許文献2)。
撮影サイズやピントの調整が必要なカメラを使いOCRを行う場合の、何度も撮影をやり直す手間を解消する情報処理装置、プログラム及び制御方法として、連続撮影の中でリアルタイムにキーワード部分を判定し、さらにその近傍の候補を選択可能な形式で提示することで、ユーザが容易に必要なテキストのみを選択して取り込みし、静止画撮影時に発生していた撮影を繰り返す手間を解消することが提案された(特開2017−117027号公報:特許文献3)。
紙面を撮影して得られる紙面画像から画像の部分を自動的にスクラップする方法として、紙面画像に関する複数の仕切りエッジのうち、水平方向に伸長する上下の水平エッジ及び垂直方向に伸長する左右の垂直エッジから成るエッジのセットに基づいて紙面画像の区分を検出し、それぞれの区分に対応するエッジのセットに基づいてマップ領域を決定し、該マップ領域を構成する複数の画素がマップ番号に関連付けられるマップ画像を生成し、紙面画像を、スクラップする領域とスクラップしない領域とに区分して表示させることが提案された(特開2018−97551号公報:特許文献4)。
以下、図面を参照しながら、本発明のさまざまな特徴が、本発明の限定を意図するものではない好適な実施例とともに説明される。図面は説明の目的で単純化、概略化されている。
図1に、本発明に係る帳票自動読取アプリケーションプログラムを備えた携帯端末装置100の構成が概略的に示されている。携帯端末装置100は、例えば、カメラを内蔵したスマートフォン、携帯情報端末(PDA)、タブレットPC等の小型コンピュータ装置であってよい。公知の携帯端末装置100は、CPU、RAM、ROM、ハードディスクなどを実装し、適切なオペレーティングシステム(OS)の制御の下でプログラミング言語を実行し、様々な処理を実行することができる。
本発明に従って、携帯端末装置100は、撮影手段1、入出力手段2、制御手段3、記憶手段4、エッジ決定手段5、エッジ安定判定手段6、ピント判定手段7、画像取得手段8、読取手段9を備える。
撮影手段1は、携帯端末装置100に搭載されるデジタルカメラから構成され、撮影対象物であるレシート等帳票を撮影してデジタル画像データに変換することができる。撮影手段1は起動されると、概して、秒間10〜30フレームのプレビュー画像の撮影を連続して行うことができる。撮影手段10はオートフォーカス(AF)動作を実行することができる。帳票のプレビュー画像は概してカラー画像であり、様々なサイズを有し得る。
入出力手段2は、公知のタッチパネル等から構成される。例えば、タッチパネルに表示された画面上で本発明に係るアプリケーションプログラムの処理動作開始指令を行うことができる。例えば、画面上のアイコンをタップするとカメラが起動され、ユーザが携帯端末装置をレシートにかざす間に画像の取得から文字の読取まで行われ、適宜「確認」、「保存」、「やり直し」ボタン等がユーザ入力を受け付けるために表示され得る。また入出力手段2は、所定の解像度でプレビュー画像を連続して表示することができ、後述のように検出された帳票エッジがプレビュー画像に重畳して表示され得る。
制御手段3は、本発明に係る帳票画像自動取得・読取処理を実行するように、各手段を制御するための電子機器、電子回路及び/又はプログラムから成る。制御手段3は、撮影手段1を起動させ、適切なタイミングで撮影手段1がワンショットのAF動作を実行するように制御することができる。撮影手段1により連続して撮影される画像を適切なタイミングでエッジ検出等の解析のための画像として受付するよう制御することができる。適切なタイミングとして、例えば、ワンショットのフォーカス動作が終わるまでプレビュー画像をスキップし、フォーカス動作が終わったときにプレビュー画像を解析のために受け付ける。また、解析結果等を入出力手段2において適宜表示させるように制御することができる。
記憶手段4は、フラッシュメモリ、ハードディスク(HDD)、RAM及びROM等のメモリから主として構成される。記憶手段4は、本発明に係る帳票画像自動取得・読取処理に係るアプリケーションプログラムを記憶し、処理中の画像や解析結果、最終的な文字読取結果等を記憶することができる。
エッジ決定手段5は、受付されたプレビュー画像に含まれるレシートのエッジを検出し、決定するための電子機器、電子回路及び/又はプログラムから成る。
本発明におけるエッジの検出・決定は以下のような利点を有する。一般的なOCRエンジンは、帳票画像のどことどこを読むのか、フォーマットごとにその範囲を設定するツールを提供する。しかしながら、不定形なレシートを撮影したレシート画像を取得して文字読取を行う場合、予めOCR処理の対象となる画像中の範囲を設定することができない。帳票画像全体をOCRで処理しようとすると、レシートの形状によっては画像中の背景の割合が大きくなり、OCRで背景を文字として処理するなどして解読可能な文字数を超え、エラーを起こす場合がある。本発明のようにエッジ検出・決定を行うことで、不定形なレシートを撮影した画像において不要な背景を除去することができ、予め読取の対象範囲を設定しなくても成功裏に読取することができる。エッジの内側部分、すなわちレシートが写っている部分のピントを判定することができるので、予めレシートのOCR処理に適する画像を取得することができる。
また、ユーザがレシートを撮影するとき、レシートの背景は様々であることが考えられ、模様(テーブルの木目等)があったり、レシートと同じく白かったりする場合がある。本発明に係るエッジ検出によれば、さまざまな背景に対応してレシートのエッジを検出することができる。以下、帳票はレシートとして説明される場合があるが、レシートに限定することを意図するものではない。本発明は、白地に黒字、周囲に余白がある帳票、例えば、白黒で印字された名刺、カード、チケット、領収書、病院の診療票、学校のプリント等さまざまな印字物に適用することができる。
図2〜図11を参照して、本発明に係る一つの実施形態のエッジの決定が説明される。
初めに、エッジ決定手段5は、プレビュー画像を適宜スケーリングし、トリミングし、二値化し、及び/又はフィルタを実行して、エッジの検出のための解析画像IAを生成することができる。エッジを検出するために、解析画像IAはブロック化される。図2(a)は、解析画像IAの水平(幅W)方向のブロック化を表し、図2(b)は、解析画像IAの垂直(高さH)方向のブロック化を示す。それぞれのブロックサイズはΔw、Δhで表される。Δw、Δhは好適に、1画素よりも大きい整数の画素数である。例示的なΔw(Δh)は、2、4、6、8、10、15(画素)等であり、これらに限定されない。
水平方向のブロック化において、例えば、Δw=10画素であるとき、ブロック内の水平方向の10画素すべてが白画素であるときに白画素となり、ブロック内の水平方向の10画素のうち一つ以上が黒画素であるときは、ブロック内の全ての画素が黒画素とされる。同様に、垂直方向のブロック化においては、例えば、Δh=10画素であるとき、ブロック内の垂直方向の10画素すべてが白画素であるときに白画素となり、ブロック内の垂直方向の10画素のうち一つ以上が黒画素であるときは、ブロック内の全ての画素が黒画素となる。このようにすることで、水平方向や垂直方向に伸長する白地を検出しやすくなる。本明細書においては、同一ブロック内の連続する白画素の領域をブランク又はレクタングルといい、異なるブロック間で連結する一連のブランク又はレクタングルをスペースということがある。
一つの実施形態にかかる、レシート200の第1のエッジの検出が図3〜図6を参照して説明される。図3は、白い背景とともにレシート200を撮影したプレビュー画像Iを模式的に示す。
図4は、プレビュー画像Iの解析画像IAにおけるブランクの検出を模式的に示す。解析画像IAでは適当なフィルタにより、レシート中の黒い印字部分等は、周囲の白地と区別しやすいように、実際の印字部分よりも拡張される場合がある(図示せず)。解析画像IAにおいてレシート200Aに関する領域が検出される。解析画像IAの水平方向のブロック化により(図4(a))、垂直方向のブランクが検出され、検出されたブランクのうち一定以上の長さ(例えば、画像の高さの半分以上)を有するブランクB1〜B11が垂直方向のエッジ候補として検出され得る(図4(b))。
同様に図5を参照して、解析画像IAの垂直方向のブロック化により(図5(a))、水平方向のブランクが検出され、検出されたブランクのうち一定以上の長さ(例えば、画像の幅の半分以上)を有するブランクB12〜B22が水平方向のエッジ候補として検出され得る(図5(b))。
図6を参照し、エッジの決定及びOCR等文字読取処理の対象範囲の決定が模式的に示される。初めに、解析画像IAにおいてレシート部分(200A)が画像の中心Cを含むと仮定し、中心Cの位置に関して、上側、下側、左側、右側のいずれかにブランクを振り分ける。画像の上から、下から、左から、右からそれぞれ順に振り分けられたブランクを調べ、画像中心Cに最も近い四つのブランク(図中破線で示されるB5、B6、B18、及びB19)がエッジを表すブランクとして検出される(図6(a))。これらブランクにより画成される長方形の四辺e1、e2、e3、及びe4が検出され得る。
図6(b)を参照し、四辺e1、e2、e3、及びe4を、元のプレビュー画像Iの座標系に対応させて、レシート200(破線で示される)に関するエッジE1、E2、E3、及びE4が決定される。画像の左上端を原点(0,0)として、エッジE1、E2、E3、及びE4により画成される長方形の四つの頂点のX座標、Y座標それぞれがエッジの頂点座標として記憶され、後続のエッジ安定の判断に用いられる。また、OCRの読取対象範囲として、領域Rが決定される。例示的な領域Rは、エッジE1、E2、E3、及びE4により画成される長方形の内側部分である。領域Rはレシート200の文字領域に対応する。プレビュー画像Iが文字読取用の画像として取得される場合、領域Rの外側をOCRの処理対象にならないように、例えば、黒で塗りつぶした(図6(b)中、グレーの色塗り部分)画像が生成され得る(クリッピング)。このようにすることで、予めOCRの読取範囲としてレシート200の範囲が設定されなくても必要な範囲をOCRの処理対象とすることができ、精度よく文字認識することができる。
続いて、第2のエッジの検出が説明される。
初めに、図7は、ブロックサイズΔw(=6画素)で水平ブロック化された一つのブロックにおけるブランクとレクタングルの関係を模式的に示す。ここではブランクはΔw×1画素(垂直方向のブロック化では1×Δh画素)のサイズを持ち、レクタングルは、ブロック内で連続するブランクをまとめて成る。図示の例では、レクタングルr1は8つのブランク(6×8画素)から成り、レクタングルr2は4つのブランク(6×4画素)から成る。これらの白地レクタングルは、それぞれ右上及び左下の座標(ラスタデータ)を記憶手段4に記憶されてよい。これらのレクタングルの異なるブロック間での連結を調べることでスペースが検出される。例示的なスペースの検出が特許文献4に記載されているが、これは本発明におけるエッジの検出が公知であることを述べるものではない。
図8は、模様のある(白くない)背景とともにレシート200を撮影したプレビュー画像Iを模式的に示す。
図9は、プレビュー画像Iの解析画像IAにおけるスペースの検出を模式的に示す。解析画像IAにおいては、二値化や適当なフィルタにより、背景の黒い部分、及びレシート中の黒い印字部分は、レシートの周縁の白地と区別しやすいように、予め拡張され得る(図示せず)。水平方向のブロック化(図9(a))によりブロック毎の白地レクタングルが検出される。一定範囲の大きさを有するレクタングルの隣り合うブロック間の連結を調べることにより、水平方向に一定以上の長さを有する一連のレクタングルが検出される(図9(b)中、実線で表される複数の矩形)。検出された一連のレクタングルに基づいてスペースが決定される。図示の例では、一連のレクタングルがそのままスペースS1、S2に決定される(同、グレーの色塗り部分)。概して一連のレクタングルは、帳票が画像の縦横に関して傾いていたり(スキュー)、様々な印字パターンによって、多くの場合、ブロック間でレクタングルの位置やサイズが一定しない。従ってスペースは、レシートの周縁の余白の検出に適するように、一連のレクタングルのそれぞれの位置やサイズが調整された、略長方形状や略平行四辺形状の領域に決定されてよい。
同様に図10は、垂直方向のブロック化(図10(a))による垂直方向のスペースの検出を模式的に示す。ブロック毎に一定範囲の大きさを有するレクタングルが検出され、隣り合うブロックのレクタングルの垂直方向の連結を調べることにより、垂直方向に一定以上の長さを有する一連のレクタングルが検出される(図10(b)中、実線で表される複数の矩形)。図示のように、一連のレクタングルのそれぞれのサイズはブロック間でまちまちであり、レクタングルの中心位置等も必ずしも一定しない。図示の例では、一連のレクタングル間で位置や大きさが共通する範囲が、スペースS3、S4に決定され得る(同、グレーの色塗り部分)。なお、スペースは、一連のレクタングルの共通部分として決定されなくてもよく、レシート周縁の余白を検出するという目的に適合するように、一連のレクタングルに関する領域として決定されてよい。
図11は、検出されたスペースに基づくレシートエッジの決定を模式的に示す。図11(a)を参照して、レシートの上下のエッジは水平方向のブロック化により検出されたスペース(図中、点線で表される)の画像の中心Cからの位置関係等に基づき検出される。画像中心より上側にあり最も中心Cに近いスペースがレシートの上側エッジを表し、画像中心Cより下側にあり、最も中心Cに近いスペースがレシートの下側エッジを表す。同様に、レシートの左右のエッジは垂直方向のブロック化により検出されたスペース(図中、点線で表される)の画像中心Cからの位置関係に基づき検出される。すなわち、画像中心Cより左側にあり最も中心Cに近いスペースがレシートの左側エッジを表し、画像中心Cより右側にあり、最も中心に近いスペースがレシートの右側エッジを表す。このようにすることで、背景によっては多数検出され得るスペースから、適切なスペースを選択することができる。検出された最大四つのスペースのそれぞれについて、長方形の四辺となり得るe5、e6、e7、及びe8が決定される。e5、e6、e7、及びe8は、それぞれのスペースの面積を等分する水平方向の直線、及び垂直方向の直線であり得る。e5、e6、e7、及びe8の決定はこれに限定されず、スペースの最も中心Cに近い/遠い直線であってもよい。また、e5、e6、e7、及びe8は、スペースに基づいて任意に決定される水平方向の直線、及び垂直方向の直線であってよい。
図11(b)を参照し、スペースに基づいて決定される直線e5、e6、e7、及びe8を、長方形を画成するようにを元の画像Iに対応させることによりレシート200に関するエッジE5、E6、E7、及びE8が決定される。エッジE5、E6、E7、及びE8を四辺とする長方形の四つの頂点座標がエッジの頂点座標として記憶手段4に記憶される。クリッピングは、スペースに基づいて行うことができる。スペース(あるいはスペースを構成する各レクタングル)の外側に対応する部分や画像の四隅をOCRの処理対象とならないように塗りつぶすことで(図11(b)中、グレーの色塗り部分)、文字読取の対象領域R’を画成することができる。このようにすることで、画像I全体をOCR処理しても読取可能文字数を超えることがなく、レシート200に関連する部分、すなわちレシート200の文字領域に対応する部分のみを成功裏に文字読取処理することができる。
ユーザがレシートを撮影する際、背景はさまざまであることに鑑みて、本発明では好適に、第1の検出と、第2の検出とが組み合わされる。すなわち、第1の検出によりエッジを表す最大四つのブランクが検出され、第2の検出によりエッジを表す最大四つのスペースが検出され、これらに基づいてレシートのエッジが決定される。例えば、上側ブランクと上側スペースが検出された場合、中心Cにより近い一方、より長い一方、又は任意の一方を選択したり、両方を組み合わせて四本のエッジを決定することができる。背景によっては、エッジを表すブランク又はスペースの一方しか検出されないため、両方を検出するようにすることで、どのような背景でもエッジを適切に決定することができる。第1、第2の検出ともにエッジが検出されない場合は、画像の周縁をエッジに決定することができる。
エッジ安定判定手段6(図1)は、上記のように決定されたエッジが安定したかどうかを判定するための電子機器、電子回路及び/又はプログラムから成る。
エッジ安定判定手段6は、例えば、第1のプレビュー画像の解析により決定されたエッジの四つの頂点座標と、第2のプレビュー画像の解析により決定されたエッジの四つの頂点座標とを比較することにより、エッジが安定したかどうかを判定する。例えば、第1の四つの頂点座標と第2の四つの頂点座標のそれぞれの最小のX座標の値同士、最大のX座標の値同士、最小のY座標の値同士、最大のY座標の値同士を比較し、それぞれの差が一定以下である場合にエッジが安定したと判定することができる。このようにエッジの安定を検出することで、対象レシートがファインダ内で定まり、手振れが少ない状態を検出することができる。
エッジ安定判定部6は、時刻(t−1)に撮影された第1のプレビュー画像と、時刻tに撮影された第2のプレビュー画像とから検出された2回分のエッジを比較してよい。エッジ安定判定部6は、任意のN(≧2)回分のエッジを比較して、エッジが安定したかどうか判定してよい。安定と判定されたとき、N回分の最新(例えば、時刻t)のプレビュー画像が後続のピント判定処理に用いられる。
上記のとおり、レシートエッジは白地の検出に基づいて決定される。カメラのピントが合っていなくても、エッジは検出、決定される。単にエッジが検出されても、ピントが合っていない場合があり、そのような画像を対象としてOCR処理を行っても、成功裏に文字読取することができない場合がある。
ピント判定手段7(図1)は、エッジが安定したと判定されたときに、エッジが安定したプレビュー画像の読取対象範囲について、ピントが合っているかどうかを判定するための電子機器、電子回路及び/又はプログラムから成る。
ピント判定手段7は、プレビュー画像のグレースケール画像をエンボス加工したエンボス画像を生成する。エンボス加工では画素(p)と左上の画素(s)を用いて、「p=−s+p+128」が計算される。画素(p)と(s)に明度の差が少なければ「128」に近づき、明度の差が大きければその大きさ(n)に応じて、「128±n」となる。すなわちエンボス加工は、明度の差を浮き上がらせる効果と、同じ明度を中間色にする効果とを有する。本発明の発明者は、レシート画像において、ピントが合っていなければ「128」に近い画素が多く、ピントがあっていれば「128±n」の画素が増えること、及び輝度の数なら画像の大きさ(画素の数)に影響されない事に着目し、これを用いて容易にピント判定を行うように構成した。
図12は、フォーカスヒストグラムであり、縦軸は画素数(0〜300)、横軸は輝度(0〜255)を表す。ピント判定手段7は、例えば、検出されたエッジ(長方形)の内側で、エッジの長方形の大きさの一定の割合の長方形(例えば、300〜400×300〜400画素)に対して、エンボス画像のヒストグラムを調べることによってピントが合っているか否か、ピントが合っていない場合はどのくらい合っていないか(ピントレベル)を決定することができる。帳票の特徴に応じて一定の割合の長方形の位置、形状、大きさは変更されてよい。
例示的に、図12のピントレベルF1(点線で示される)では、エンボス画像において輝度が128に集中している。例えば、128よりも大きい方向、小さい方向のそれぞれの輝度を持つ画素が一定数以上である輝度の範囲(差)が60未満のときに「輝度が128に集中している」、すなわち、「ピントがまったく合っていない」と判定することができる。ピントレベルF2(二点鎖線で示される)では、依然128前後に集中しており、「ピントが合っていない」と判定され得る。ピントレベルF3(一点鎖線で示される)はやや明度の差があり、「ピントが少し合っている/やや手振れ」と判定され得る。ピントレベルF4(破線で示される)は「ピントがあまい/動きがある」と判定され得る。ピントレベルF5(実線で示される)は、輝度が十分に分散し、明度に大きな差があることが分かる。例えば、輝度128よりも大きい方向、小さい方向のそれぞれの輝度を持つ画素が一定数以上である輝度の範囲(差)が180以上であるときに「輝度が十分に分散している」、すなわち、「ピントが合っている」と判定され得る。
画像取得手段8(図1)は、エッジが安定したと判定されたプレビュー画像であって、さらにピントが合っていると判定されたプレビュー画像を文字読取用の画像として取得するための電子機器、電子回路及び/又はプログラムから成る。
代替的に、画像取得手段8は、携帯端末装置100のプレビュー画像の画像サイズが十分でない場合、エッジが安定したと判定され、且つピントが合っていると判定されたときに自動的にシャッタ動作を行って撮影された画像を文字読取用の画像として取得することができる。画像取得手段8は、取得された画像について、上記のクリッピング処理を行うことができる。
読取手段9(図1)は、文字読取用画像として取得された画像について文字読取に関する処理を行うための電子機器、電子回路及び/又はプログラムから成る。読取手段9は公知のOCR処理を行うものであってよく、例えば、取得された画像の明るさ、ハイライトを調整して白黒二値化し、レイアウト解析し、罫線を除去し、文字を切り出し、パターン辞書、フォント辞書等を用いて文字読取することができる。読取結果は記憶手段4に記憶されてよい。
図13を参照し、本発明の一つの実施形態に係るレシート等帳票画像自動取得・読取フローが説明される。携帯端末装置100で本発明に係る所定のアプリケーションが開始されると(START)、カメラ(撮影手段1)が起動され、ワンショットのオートフォーカス(AF)動作が実行される(S301)。本発明では好適に、カメラのフォーカスをコントロールし適切なタイミングで画像を取り込むために、コンティニアス(継続フォーカス)モードではなく、ワンショットのオートフォーカスが実行される。
オートフォーカス動作が終了すると連続して撮影されるプレビュー画像が受付され、解析される(S303)。レシートが写っていなかったり手振れがひどいなどしてエッジが決定されない場合、後続のプレビュー画像が解析される。エッジが決定されると記憶手段4に記憶される(S305)。決定されたエッジは、プレビュー画像に重畳して表示されてよい。このようにすることで、ユーザがエッジを意識するので、エッジが安定しやすくなる。
エッジの安定がN回のエッジの検出に基づいて行われるとき、比較対象となる前回((N−1)回)分のエッジが決定されているかどうかが調べられ、決定されていなかった場合はさらにプレビュー画像の解析を行ってエッジを決定する。例えば、二回分のエッジを比較する場合、最新のエッジと前回のエッジの位置の変化が小さいかどうかチェックされ、エッジが安定したかどうか判定される(S307)。エッジが安定していない場合は、最初からプレビュー画像の解析を繰り返してよい。
エッジが安定していると判定されたとき、エッジが安定したプレビュー画像のエッジの内側の所定範囲について、ピントが合っているかどうかが判定される(S309)。
ピントが合っていない場合、ピントレベル(F1〜F4)に応じて、カメラにワンショットのフォーカス動作を要求する(S311)。例えば、エッジは安定したがピントレベルがF1又はF2であるとき、起動後にユーザがカメラでレシートを探している途中だったり、レシートを画面に収めるためにカメラを上下していると考えられるので、準備が終わったことを想定してワンショットのAFをカメラに要求しプレビュー画像解析以降の処理を繰り返す。エッジが安定しピントレベルがF3又はF4であるときは、ユーザが微調整しているか、カメラが少し揺れている状態が多いと考えられるため、そのままプレビュー画像解析以降の処理を繰り返す。F3やF4の状態が数回繰り返される場合はユーザが意識していないと考えられるため、カメラにAFを要求するようにしてよい。
エッジが安定し、さらにピントが合っていると判定された画像は、文字読取に適した画像として取得され、記憶手段に記憶される(S313)。このとき、プレビュー画像の解像度が小さい場合(2MPや3MP等)、そのまま取り込んでも長尺のレシート画像では読取ができないため、自動でシャッタ動作を行うようにしてよい。このようにすることで、プレビュー画像の画像サイズが十分でない携帯端末装置の機種であっても、レシートが定まり、ピントが合っている状態で自動的に撮影して、文字読取に適した画像を取得することができる。
取得された画像について適宜背景を除去して文字読取処理を行い(S315)、例えば、ユーザに読取結果の確認用の画面を表示し、「保存」ボタンの押下を受けて読取結果が保存されてよい(S317)。このように、ユーザがレシートにカメラをかざすだけで、画像の取得から文字読取まで自動で行われる。文字認識結果は通信手段(図示せず)を介してサーバへ送信され、サーバ側でさらに処理されてよい。あるいは、取得された画像(又はクリッピング画像)が通信手段(図示せず)によりサーバへ送信され、サーバ側で文字認識処理を行ってよく、このようにすることで、サーバからユーザに返されるエラーが低減される。文字読取結果がユーザの意図等と異なる場合、「やり直し」ボタンの押下に応じて、プレビュー画像解析以降の一連の処理が行われてよい。
本発明によれば、不定形なレシートや長いレシートであっても、ユーザは携帯端末装置のカメラをプレビュー画面に収めるように片手でかざすだけで、ピントの確認やシャッタボタンの押下を要することなく、自動的に文字読取結果を得ることができる。容易なピント判定で、OCR処理を行うことなくOCR処理に適した画像を取得することができ、CPUに負荷をかけることなく成功裏に文字読取することができる。本発明によれば、文字読取結果を利用する各種アプリケーションの操作性が向上し、ユーザ満足度を向上させることができる。
本発明の思想及び態様から離れることなく多くのさまざまな修正が可能であることは当業者の知るところである。したがって、言うまでもなく、本発明の態様は例示に過ぎず、本発明の範囲を限定するものではない。