(57)【要約】【課題】処理負荷を抑えながらも、被写体について良好な文字認識結果を効率よく取得する。【解決手段】文字列を含む被写体の一部を撮影して得られた部分画像を取得する取得手段と、前記部分画像から認識された文字列のうち候補文字列を前記被写体の全体を撮影した全体画像に対応付けて記憶する記憶手段と、前記記憶手段に記憶された候補文字列と関係する条件を用いて該候補文字列を評価して取得対象の文字列を特定する特定手段と、前記特定手段で特定された前記取得対象の文字列が反映された前記被写体の部分画像を生成する生成手段とを有する。【選択図】図２
2019091305.tif 000002
【特許請求の範囲】
【請求項１】
文字列を含む被写体の一部を撮影して得られた部分画像を取得する取得手段と、
前記部分画像から認識された文字列のうち候補文字列を前記被写体の全体を撮影した全体画像に対応付けて記憶する記憶手段と、
前記記憶手段に記憶された候補文字列と関係する条件を用いて、該候補文字列を評価して取得対象の文字列を特定する特定手段と、
前記特定手段で特定された前記取得対象の文字列が反映された前記被写体の部分画像を生成する生成手段と
を有する、ことを特徴とする情報処理装置。
【請求項２】
前記特定手段は、前記候補文字列が前記条件を満たすと評価した場合に、前記候補文字列を前記取得対象の文字列に特定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記条件は、前記被写体の文字列の条件と、前記被写体の文字列の配置条件とを有し、
前記特定手段は、前記被写体の文字列の条件と前記被写体の文字列の配置条件の少なくとも一方の条件を用いて、前記候補文字列を評価する、ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記特定手段は、前記候補文字列の位置が、既に特定された前記取得対象の文字列の配置条件と関係する場合、該既に特定された前記取得対象の文字列の配置条件と関係する配置条件を用いて、該候補文字列を評価する、ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記部分画像を前記被写体の全体画像に対応付ける補正を行う補正手段を有する、ことを特徴とする請求項１から４の何れか一項に記載の情報処理装置。
【請求項６】
前記補正手段は、前記被写体の全体画像の特徴点への前記部分画像の特徴点の変換と、前記部分画像と異なる目標画像の特徴点への前記被写体の全体画像の特徴点の変換とを用いて前記目標画像に補正する、ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記条件を記憶する条件記憶手段をさらに有する、ことを特徴とする請求項１から６の何れか一項に記載の情報処理装置。
【請求項８】
動画像を構成する複数のフレームの画像を撮像する撮像手段をさらに有し、
前記取得手段は、前記フレームの画像を前記部分画像として取得する
ことを特徴とする請求項１から７の何れか一項に記載の情報処理装置。
【請求項９】
前記記憶手段は、所定の条件を満たした前記文字列を前記候補文字列として記憶する、ことを特徴とする請求項１から８の何れか一項に記載の情報処理装置。
【請求項１０】
前記記憶手段は、前記取得手段で新たに取得された部分画像から認識された文字列の信頼度が前記記憶手段に既に記憶されている文字列の信頼度よりも高いと、該新たに取得された部分画像から認識された文字列を前記候補文字列として記憶することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記取得手段で取得された前記部分画像から文字列領域を検出する検出手段と、
前記検出手段で検出された前記文字列領域から文字を認識する認識手段と
を有する、ことを特徴とする請求項１から１０の何れか一項に記載の情報処理装置。
【請求項１２】
前記生成手段で生成された前記被写体の部分画像を表示する表示手段をさらに有することを特徴とする請求項１から１１の何れか一項に記載の情報処理装置。
【請求項１３】
文字列を含む被写体の一部を撮影して得られた部分画像を取得する取得ステップと、
前記部分画像から認識された文字列のうち候補文字列を前記被写体の全体を撮影した全体画像に対応付けて記憶する記憶ステップと、
前記記憶ステップで記憶された候補文字列と関係する条件を用いて、該候補文字列を評価して取得対象の文字列を特定する特定ステップと、
前記特定ステップで特定された前記取得対象の文字列が反映された前記被写体の部分画像を生成する生成ステップと
を有する、ことを特徴とする情報処理方法。
【請求項１４】
コンピュータを、請求項１から１２の何れか一項に記載の情報処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像に含まれる文字情報の抽出技術に関する。
【背景技術】
【０００２】
近年、カメラ機能付きスマートフォンやタブレット等の携帯型のデバイスで紙文書を撮影して得られた画像（以下、撮影画像）に対して文字認識処理（ＯＣＲ処理）を行うことで、画像に含まれるテキスト情報を取得する技術が種々開発されている。
【０００３】
手持ちの携帯型のデバイスを用いて得られた画像は、スキャナを用いて得られた画像と比べて、撮影環境の影響を受けやすい。例えば、手ぶれなどに起因して撮影画像の画質が低下する。またスキャナに比べ撮影解像度も低い。撮影対象の紙文書全体をカメラの画角内に含まれるようにして撮影した撮影画像から文字情報を取得する場合、文字を構成する画素数が少なすぎるために文字認識精度が低下する可能性がある。
【０００４】
これに対し特許文献１は、紙帳票の一部を撮影した複数の撮影画像（部分画像）それぞれから得られた文字認識結果に対し、一致する文字が多くなるように位置合わせを行って複数の文字認識結果を合成する技術を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−５５９６９号公報
【特許文献２】特開２０１１−２４８６０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１では、取得可能な撮影画像の撮影解像度が低く、類似の文字列が複数あったり、一致する文字が少なかったりすると、文字列の位置合わせを適切に行うことができず、確度の高い文字認識結果を取得できなかった。撮影画像の数量を多くしたり認識結果の信頼度を示す条件で評価したりすることが考えられるが、撮影画像や評価対象の数量に比例して処理負荷が増大する可能性があった。
【０００７】
ところで、紙帳票の撮影画像から項目名それぞれに対応する文字列を取得対象の項目値として読み取る技術が望まれている。例えば、上述の特許文献２には、紙帳票全体を撮影した帳票画像に対して文字認識処理を行い、項目名，項目値および配置の各尤度を計算し、計算結果に基づき項目名−項目値関係の対応付けを決定する技術が開示されている。上述の特許文献１，２を組み合わせて紙帳票の部分画像から項目名に対応付けた項目値を読み取ることが考えられるが、各尤度を適切に算出できず、部分画像にて項目名−項目値関係の対応付けを決定できない可能性があった。また、部分画像それぞれについて全ての文字列に対して各尤度を計算することから、撮影画像や文字列の数量に比例して処理負荷が増大する可能性があった。
【０００８】
そこで本発明は、処理負荷を抑えながらも、被写体について良好な文字認識結果を効率よく取得することができることを目的としている。
【課題を解決するための手段】
【０００９】
上述した課題を解決する本発明に係る情報処理装置は、文字列を含む被写体の一部を撮影して得られた部分画像を取得する取得手段と、前記部分画像から認識された文字列のうち候補文字列を前記被写体の全体を撮影した全体画像に対応付けて記憶する記憶手段と、前記記憶手段に記憶された候補文字列と関係する条件を用いて、該候補文字列を評価して取得対象の文字列を特定する特定手段と、前記特定手段で特定された前記取得対象の文字列が反映された前記被写体の部分画像を生成する生成手段とを有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、処理負荷を抑えながらも、被写体について良好な文字認識結果を効率よく取得することができる。
【図面の簡単な説明】
【００１１】
【図１】モバイル端末の外観の一例を示す図
【図２】モバイル端末のソフトウェア構成の一例を示す図
【図３】モバイル端末の動作の一例を示すフローチャート
【図４】モバイル端末で用いる項目特定ルールの一例を示す図
【図５】図３のステップＳ３０９の処理内容の一例を示すフローチャート
【図６】図５のステップＳ５０３，Ｓ５０４の処理内容の一例を示すフローチャート
【図７】本発明の第一の実施形態で用いた紙帳票および撮影範囲の一例を示す図
【図８】本発明の第二の実施形態で用いた紙帳票および撮影範囲と、項目特定ルールの一例を示す図
【図９】図５のステップＳ５０４の処理内容の他例を示すフローチャート
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について図面を参照して説明する。ただし、この実施形態に記載されている構成要素はあくまで例示であり、本発明の範囲をそれらに限定する趣旨のものではない。また、実施形態で説明されている構成要素の組み合わせのすべてが、課題を解決するための手段に必須のものとは限らない。
【００１３】
［第一の実施形態］
＜外観＞
本実施形態に係る情報処理装置として、例えば、タブレットＰＣやスマートフォンなどのカメラ機能を有する携帯可能な情報処理装置であるモバイル端末が挙げられる。
【００１４】
情報処理装置の一例として、モバイル端末を例に説明する。モバイル端末は、携帯通信端末の一例であり、無線通信機能などを実装しており自由な場所で利用できる端末である。
【００１５】
図１は、モバイル端末の外観の一例を示す図である。図１（ａ）はモバイル端末の表面側（正面側）から見た図であり、図１（ｂ）はモバイル端末を裏面側（背面側）から見た図である。モバイル端末１００は、撮像器（カメラ）１０１、表示器１０２、ボタン１０３、通信器１０４を有する。モバイル端末１００の正面には、撮像器１０１を備える。モバイル端末１００の背面部には、表示器１０２およびボタン１０３を備える。
【００１６】
撮像器１０１は実世界の情景を画像データとして得る機器である。たとえば撮像器１０１はレンズと撮像素子で構成される。表示器１０２は、撮像器１０１で得られた画像データをユーザーが視覚的に確認できるよう表示する機器である。表示器１０２としてたとえば液晶ディスプレイが挙げられる。ボタン１０３はユーザーがモバイル端末１００に対して撮影開始、終了などの操作をおこなうインターフェースである。ボタン１０３としてたとえば機械式あるいは感圧式のボタンが挙げられる。これらは一例であって、たとえば表示器１０２はボタン１０３の機能をも有すタッチパネルを兼ねた液晶ディスプレイであってもよい。通信器１０４がモバイル端末１００に内蔵されており、モバイル端末１００は無線でイントラネット・インターネットに接続して外部サーバー等とのデータ交換をおこなうことが可能である。
【００１７】
撮像器１０１は、一定時間内で被写体を連続撮影し取得した複数撮影画像として、すなわち撮影動画像としてデータ取得可能な機器である。言い換えると、撮像器１０１は、動画像を構成する複数のフレームの画像を所定の撮像間隔で撮像可能な機器である。所定の撮影間隔を、たとえば１秒間に３０回あるいは６０回などに設定可能である。詳細につき後述するように、撮影動画像は直ちにモバイル端末１００の表示器１０２に表示されるので、ユーザーは被写体に対する現在の撮影範囲を認識することができる。さらにモバイル端末１００は、撮影画像に含まれる文字列の内容を認識し、関連する情報を取得したうえで、前記撮影動画像の表示に関連づけて表示する機能を有してもよい。あるいは前記取得した情報を、通信器１０４により外部サーバー等に送信してもよい。
【００１８】
＜ソフトウェア構成（モバイル端末）＞
次に、モバイル端末１００におけるソフトウェアの構成について説明する。
【００１９】
図２は、モバイル端末１００内の各機能部の構成の一例を示す図である。モバイル端末１００は、撮影画像取得部２０１、撮影画像追跡部２０２、表示生成部２０３、文字列領域検出部２０４、文字認識部２０５、文字列情報記憶部２０６を有する。モバイル端末１００は、さらに、項目特定ルール記憶部２０７、項目特定部２０８、操作情報取得部２０９を有する。図２に示される各機能部２０１〜２０９はソフトウェアコンポーネントであり、ソフトウェアのバス２００を介して接続され、必要に応じて相互にデータを入出力する。また前記コンポーネントはその機能を実現するためにハードウェアとの通信をおこなうものとする。これはあくまで一例であって、各機能部をサブルーチンとして実装したソフトウェアプログラムとして実現されてもよい。
【００２０】
撮影画像取得部２０１は、撮像器１０１により撮影した撮影画像を所定の撮影間隔で取得する。撮影画像取得部２０１で取得された撮影画像は、後述の撮影画像追跡部２０２や表示生成部２０３の入力となる。
【００２１】
撮影画像追跡部２０２は、撮影画像取得部２０１で取得され、所定の撮影間隔で入力される撮影画像を、後述する文字列領域検出部２０４や文字認識部２０５での処理に適した状態へと補正する。本実施形態では、撮影画像追跡部２０２は以下（１）〜（３）の機能を少なくとも有するものとする。
【００２２】
（１）撮影画像取得部２０１から所定の撮影間隔で入力される撮影画像中から、一定条件を満たす被写体である対象紙面の４辺を抽出する機能。
（２）（１）の機能により４辺が抽出された場合、撮影画像を基準画像として抽出された４辺とともに記憶する機能。
（３）（２）の機能で記憶された基準画像と４辺の位置に基づいて、撮影画像を紙面相当の長方形画像（以下、紙面画像と記す）へと歪み補正（台形補正など）する機能。（なお、紙面全体を撮影した画像（基準画像）を歪み補正する場合は、検出された４辺が予め決められたサイズ（例えばＡ４サイズ）となるように補正すればよい。また、紙面の一部を撮影した画像（部分撮影画像）を歪み補正する場合は、部分撮影画像の特徴点と基準画像の特徴点とを比較して、部分撮影画像の特徴点が歪み補正後の基準画像における該当する特徴点に一致するように補正すればよい。詳しくは後述する。）
【００２３】
なお、上記機能の詳細および具体例は、図３のフローチャートの処理の説明の中で撮影画像追跡部２０２がおこなう処理の内容として後述する。
【００２４】
表示生成部２０３は、ユーザーインターフェースの為の表示画像を生成する。生成された表示画像は、図１の表示器１０２により可視化される。
【００２５】
前記表示画像の一例として、撮影画像取得部２０１から入力される撮影画像が挙げられる。表示生成部２０３で生成され表示器１０２で可視化された表示画像が、撮影間隔と同等の間隔で更新されることで、撮影画像取得部２０１および表示生成部２０３などがユーザーに撮影内容・状態を確認する手段としての機能を提供する。この時の表示画像は撮影画像追跡部２０２で補正された画像であってもよい。さらに、後述する文字列情報記憶部２０６や項目特定部２０８から得られる情報が付加・重畳されていてもよい。
【００２６】
文字列領域検出部２０４は、撮影画像追跡部２０２により補正された紙面画像中から公知の検出技術を用いて文字認識処理の対象となる文字列を含む文字列領域を検出する。検出された文字列領域の情報は文字列情報記憶部２０６に記憶される。
【００２７】
文字認識部２０５は、撮影画像追跡部２０２により補正された紙面画像に対し、文字列情報記憶部２０６に記憶された文字列領域内で公知の文字認識処理をおこない、文字コードの並びからなる文字認識結果を得る。
【００２８】
文字列情報記憶部２０６は、前述の文字列領域検出部２０４が検出した１または複数の文字列領域の座標情報（文字列領域の四隅を表す位置座標）を各々の文字列情報として記憶する。また、文字列情報記憶部２０６は、各文字列に対して文字認識部２０５が生成する文字認識結果も文字列情報に加えて記憶する。さらに、複数の撮影画像から検出された文字列や文字認識結果に対し、それらが同一の文字列に対する情報か否かを判定し、同一の文字列に対してはひとつの文字列情報に統合して記憶する。
【００２９】
項目特定ルール記憶部（条件記憶部）２０７は、取得対象となる項目文字列を特定する為の項目特定ルール（条件）を記憶する。同項目特定ルールは図２の全ソフトウェアとともにあらかじめモバイル端末１００のＲＯＭやＨＤＤなどの記憶部（不図示）に格納されていてもよいし、モバイル端末１００の動作時に後述の操作情報取得部２０９を介して外部から入力されてもよい。前記項目特定ルールとして、例えば、詳細につき後述する条件記述である文字列条件ルールおよび項目値出力条件ルールなどが挙げられる。
【００３０】
項目特定部２０８は、文字列情報記憶部２０６に記憶される文字列に対し、項目特定ルール記憶部２０７に記憶された項目特定ルールに従って評価することで、取得対象となる項目文字列を特定する。項目特定部２０８が特定した結果は、表示生成部２０３および表示器１０２を通じてユーザーに報知されるほか、必要に応じて通信器１０４を通して外部サーバー等に送られてもよい。
【００３１】
上述した各機能部２０１〜２０９は、不図示のＣＰＵにより統括的に制御されている。
【００３２】
なお、本実施形態のフローチャートは、モバイル端末１００のモバイルアプリ（不図示）が実行する処理である。すなわち、ＲＯＭやＨＤＤなどの記憶部に記憶されている、フローチャートに関わるモバイルアプリのプログラムをＣＰＵがＲＡＭに展開して実行することで実現される処理である。
【００３３】
＜モバイルアプリの動作＞
続いて、モバイル端末１００のモバイルアプリによる被写体上の文字列の読み取り動作の一例について、図３を用いて説明する。図３は、モバイル端末の動作の一例を示すフローチャートである。ここでは、ユーザーが机等の台上に置かれた被写体である紙帳票の紙面をモバイル端末１００で撮影し、帳票に記載された項目を読み取る一連の作業を例に説明する。
【００３４】
ステップＳ３０１では、操作情報取得部２０９が、モバイル端末１００にインストールされた不図示のモバイルアプリの起動をユーザーによる作業開始の指示として受け付ける。このとき、ステップＳ３０２以降の作業で取得対象の項目の種類や項目特定ルールの種類の指定に関する指示、あるいはそれらを指定する設定ファイルの選択等の操作をモバイル端末１００に対しおこなってもよい。すなわち、対象の被写体である紙帳票と関連する後述の項目特定ルールを指定する操作をモバイル端末１００に対し行ってもよい。作業開始の指示を受け付けると、モバイル端末１００は撮像器１０１による動画撮影を開始する。撮像器１０１により撮影された動画像は、撮影画像取得部２０１により取得される。
【００３５】
ステップＳ３０２では、被写体である紙帳票に対し離間した位置にてモバイル端末１００の撮像器１０１により該紙帳票の紙面全体が撮影されて、撮影画像取得部２０１は、撮像器１０１により紙帳票の紙面全体が撮影された全体撮影画像を取得する。なお、全体撮影画像は、帳票領域と帳票領域以外の領域とで構成される。
【００３６】
ステップＳ３０３では、撮影画像追跡部２０２は、ステップＳ３０２で取得した全体撮影画像が基準画像条件を満たすかどうかを判定する。基準画像条件として、例えば、前述の（１）の機能により全体撮影画像から一定条件を満たす紙面の４辺を抽出できるという条件が挙げられる。基準画像条件を満たす場合、すなわち、一定条件を満たす紙面の４辺が抽出された場合はステップＳ３０４に進む。基準画像条件を満たさない場合、すなわち、４辺が抽出さていない、あるいは抽出された４辺が一定条件を満たしていないと判定された場合はステップＳ３０２に戻り次の全体撮影画像を取得し、ステップＳ３０３の処理が再度行われる。また、ステップＳ３０３にて、前記基準画像条件に帳票領域の大きさの下限条件を加えて判定することも可能である。前記帳票領域の大きさの下限条件として、例えば、帳票領域が画像特徴点を抽出可能な大きさであるという条件、帳票領域が所定の大きさより広いという条件などが挙げられる。「帳票領域が所定の大きさより広い」として、例えば、当該抽出された４辺で構成される帳票領域のサイズが、撮影画像全体のサイズと比較して、所定の割合以上になっていることなどが挙げられる。なお、モバイル端末１００は、ステップＳ３０２に戻った際に、撮影画像中で基準画像条件を満たす全体撮影画像の撮影方法を表示器１０２に表示するようにしてもよい。この場合、ユーザーの撮影操作を報知でき、操作性が高められる。
【００３７】
なお、前述した（１）の機能（すなわち、撮影画像より紙面の４辺を抽出する処理）には公知の手法を用いればよい。たとえば撮影画像からエッジを抽出した画像に対し、ハフ変換等の直線検出処理をおこなう。検出された直線群に対し４辺形を構成する４直線の組み合わせを抽出する。そして隣接する辺がおよそ直角をなし、隣接する辺の比率が所定範囲であり、４辺形の面積が所定値以上となる４直線の組み合わせが見つかった際に、一定条件を満たす４辺が抽出されたと判定すればよい。なお、実際にモバイル端末１００が被写体である紙帳票の紙面に完全に正対した状態で撮影されているとは限らない。前記条件において４辺形は完全に長方形ではなく、例えば射影変換で長方形になる形状などの一定の歪みを許容するものであってよい。また、ハフ変換の代わりにエッジ画素の連結画素塊を抽出し、直線形状の画素塊を選別し直線近似した集合を前記直線群として、以降同様に処理してもよい。
【００３８】
ステップＳ３０４では、撮影画像追跡部２０２が前述の機能（２）により、直前のステップＳ３０２で取得した全体撮影画像を基準画像として記憶する。また抽出された４辺の座標情報を前記基準画像と関連づけて記憶する。
【００３９】
ステップＳ３０５では、被写体である紙帳票に対し近接した位置にてモバイル端末１００の撮像器１０１により該紙帳票の紙面の一部が撮影されて、撮影画像取得部２０１は、撮像器１０１により紙帳票の紙面の一部が撮影された部分撮影画像を取得する。以降ステップＳ３０５からステップＳ３１０まではループ処理をなし、部分撮影画像の取得と同部分撮影画像への処理が繰り返される。
【００４０】
ステップＳ３０６では、撮影画像追跡部２０２が前述の機能（３）により、直前のステップＳ３０５で取得した部分撮影画像を、ステップＳ３０４で記憶した基準画像および４辺の座標情報を用いて紙面画像へと補正する。これにより、直前のステップＳ３０５で取得した部分撮影画像が、全体撮影画像の該当箇所に対応付けられる。この補正処理の詳細を以下に説明する。
【００４１】
まず、基準画像（全体撮影画像）から抽出される画像特徴点と部分撮影画像から抽出される画像特徴点の間のマッチングをおこなう。ここで画像特徴点としては、コーナー特徴であるＨａｒｒｉｓ特徴や、ＯＲＢ、ＳＩＦＴといった公知の特徴点を利用し、その抽出には公知の特徴点検出器を用いることができる。両者のマッチングには特徴としての類似度と距離を用いる。それらマッチングされた両特徴点を用いて、部分撮影画像座標から基準画像座標（全体撮影画像座標）へのホモグラフィ行列Ｈ1を算出する。具体的には、ＲＡＮＳＡＣ法を用いて誤ったマッチングを除き、両特徴点集合間のホモグラフィ行列のパラメータを求める連立方程式を解くことにより、部分撮影画像座標から基準画像座標（全体撮影画像）へのホモグラフィ行列Ｈ1を算出する。このとき公知の最小二乗法を用いてもよい。
【００４２】
次に、ステップＳ３０３で基準画像から抽出された４辺がなす４辺形を、紙面相当の長方形である紙面画像（目標画像）へと補正するホモグラフィ行列Ｈ2を算出する。ホモグラフィ行列Ｈ2は単純に４点の座標値間の対応を用いた連立方程式により算出することができる。ここで紙面相当の長方形とは、紙面同等のアスペクト比を持つ長方形である。本補正の目的は文字認識処理に適した画像へと補正することであり、長方形の大きさは同目的に合う大きさであればよい。たとえば紙面がＡ４ポートレイトサイズ（210mm×297mm）であると仮定し、３００ｄｐｉ相当の紙面画像へ補正するとして２４８０×３５０７の長方形とすればよい。
【００４３】
上記で算出されたホモグラフィ行列Ｈ1，Ｈ2を合成したホモグラフィＨm=Ｈ1×Ｈ2により部分撮影画像を紙面画像における対象箇所の部分画像へと補正する。補正処理には公知の画像射影変換処理を用いればよい。なお、ステップＳ３０５で取得される部分撮影画像は、撮影対象の紙帳票の紙面の４辺を含んでいるとは限らない。たとえば、紙面内の小さな文字を正確に認識するためにモバイル端末１００を紙帳票の紙面に近づけ、撮影画像が紙帳票の紙面以外に対応する範囲を含む状態となる場合がある。このような場合、補正された紙面画像において、撮影画像中の紙面に対応する範囲を有効範囲、それ以外の範囲を無効範囲とすればよい。具体的には、撮影画像と同大で画素値がすべて１の画像をホモグラフィ行列Ｈmで長方形の画像へと変形する際に、撮影画像の写像範囲外の画素が０となる画像を作成し、これをマスク情報として紙面画像内の前記有効・無効を判定すればよい。
【００４４】
前述のステップＳ３０６の説明において、基準画像から抽出される画像特徴点と、基準画像の４辺を紙面画像に変形するホモグラフィ行列Ｈ2は、基準画像が変わらなければ一定である。よって、基準画像を記憶するステップＳ３０４でそれらを計算して保存しておき、それらを毎回のステップＳ３０６の処理で利用するようにしてもよい。
【００４５】
図３に戻り、ステップＳ３０７では、文字列領域検出部２０４が、ステップＳ３０６で補正された紙面画像を入力として文字列領域の検出処理をおこなう。文字列領域の検出処理の詳細については後述する。検出された文字列領域の座標は文字列情報記憶部２０６に記憶される。文字列領域の座標情報は、たとえば文字列領域を包含する矩形領域座標（文字列領域の四隅を表す位置座標）のリストである。
【００４６】
このとき、文字列情報記憶部２０６が空ではない場合がある。過去のステップＳ３０５で撮影画像が取得され、それを補正した紙面画像から検出された文字列情報（以下、既存の文字列情報）がすでに文字列情報記憶部２０６に記憶されている場合である。この場合文字列情報記憶部２０６は、以下のようにして現ステップＳ３０７で検出した文字列（以下、現文字列）を既存の文字列情報に統合する。
【００４７】
現文字列のそれぞれの位置（矩形座標）と、既存の文字列情報にある文字列の位置（矩形座標）が対比され、両者の矩形座標に重複するものがない場合は、現文字列が新規の文字列情報として記憶される。矩形座標の一部が重複する場合は、撮影範囲の移動により同一文字列領域が増加したものとして、現文字列と重複する文字列の両方を包含するように既存の文字列情報が更新される。現文字列が既存の文字列情報にある文字列に包含されるかほぼ一致する場合、既存の文字列情報は更新されない。
【００４８】
画像中の文字列領域の検出には公知技術が用いられる。例えば次のような方法がある。まず入力となるグレーもしくはカラーの多値画像中の各画素を二値化した二値画像を生成する。二値化は画像内画素の輝度分布により適応的に求めた閾値でおこなう。次に二値画像内で連結する黒画素をラベリング処理により連結した連結画素塊（＝Ｃｏｎｎｅｃｔｅｄ  Ｃｏｍｐｏｎｅｎｔ）を抽出する。抽出された連結画素塊のうち、外接矩形の大きさなどから文字らしいと推定された文字画素塊を、さらに近傍に存在する文字画素塊と結合して文字列領域を抽出する。
【００４９】
なお、上記の検出方法は一例であって、たとえば連結画素塊を得る際に二値画像を生成せずに、多値画像内で輝度や色の近い画素を連結するようにしてもよい。あるいはエッジ抽出をおこない、連結するエッジ画素から連結画素塊を得てもよい。また、上記の検出処理を高速化する為に、縮小処理を施した紙面画像から連結画素塊を抽出して文字列を検出してもよい。
【００５０】
ステップＳ３０８では、文字認識部２０５が、ステップＳ３０６で補正された紙面画像と文字列情報記憶部２０６に記憶された文字列情報を入力データとして用いて文字認識処理をおこない、文字列情報記憶部２０６の文字列情報を更新する。具体的には、紙面画像において文字列情報に含まれる文字列領域座標範囲の画像を対象とする公知の文字認識処理をおこない、各文字の座標、文字コードおよび認識信頼度からなる文字認識結果を得る。この文字認識結果によって前記文字列情報を更新する。ただし、前記ステップＳ３０６で無効とされた範囲にある文字列情報に対しては認識処理をおこなわない。文字列情報が複数ある場合は各々に対して文字認識処理をおこなって文字列情報を更新する。更新処理の具体的な内容については以下に説明する。
【００５１】
図３のステップＳ３０５〜Ｓ３１０はループ処理である。本ステップＳ３０８の更新処理において、文字列情報記憶部２０６に記憶される文字列情報には、過去のステップＳ３０８の更新処理で格納あるいは更新された文字認識結果（以降、過去の文字認識結果と呼ぶ）が無い場合とある場合がある。
【００５２】
過去の文字認識結果が無い場合は、本ステップＳ３０８で得られた文字認識結果（以降、現在の文字認識結果と呼ぶ）として、各文字の座標、文字コードおよび認識信頼度（文字認識率）の情報を同文字列情報に格納する。
【００５３】
他方、過去の文字認識結果がある場合、文字列情報記憶部２０６は過去の文字認識結果と現在の文字認識結果を文字単位で統合することで、各文字列情報の文字認識結果を更新する。具体的には、現在の文字認識結果と過去の文字認識結果の座標とを比較して、対応する文字認識結果が無ければ現在の文字認識結果を追加する。対応する文字認識結果があれば、現在の文字認識結果と過去の文字認識結果とで認識信頼度を比較し、信頼度の高いほうの文字コードで文字列情報に格納された文字認識結果を更新する。すなわち、信頼度の高いほうの文字コードで文字列情報に格納された文字認識結果を候補文字列として記憶する。前記対応づけは１文字対１文字であってもよいし、１文字対Ｎ文字やＮ文字対Ｍ文字（Ｎ，Ｍ＞１）であってもよい。２文字以上で信頼度を比較する場合は複数信頼度の平均あるいは最大値で比較してもよい。または、現在と過去との２つの信頼度比較で更新するのではなく、過去の文字コード情報をすべて、あるいは一定数保存しておき、過去から現在までの多数決で文字列情報における文字コードを更新してもよい。文字単位ではなく、隣接する文字をまとめた単語単位で情報を更新してもよい。なお、文字列情報の文字認識結果を更新した場合でも、過去の文字認識結果は文字列情報記憶部２０６に記憶されている。
【００５４】
ステップＳ３０９では、項目特定部２０８が、文字列情報記憶部２０６に格納された文字列情報に対して項目特定処理をおこなう。すなわち、文字列情報記憶部２０６に格納された文字列情報を確定する。項目特定処理の詳細は後述する。項目特定処理の結果は、取得対象となる項目値の文字列であり、その対象及び特定方法は項目特定ルール記憶部２０７に記憶された項目特定ルールに記述される。
【００５５】
ステップＳ３１０では、ステップＳ３０９の項目特定処理が完了した場合はステップＳ３１１に進む。具体的には、前記項目特定ルールに記述された取得対象となる項目文字列の特定がすべて完了した場合にステップＳ３１１に進む。完了していない場合はステップＳ３０５に戻り、ステップＳ３０５〜Ｓ３１０の処理が再び行われる。前記項目特定ルールに記述された取得対象となる項目文字列の特定がすべて完了するまで、ステップＳ３０５〜Ｓ３１０の処理が繰り返し行われる。
【００５６】
ステップＳ３１１では、モバイル端末１００は特定された取得対象となる項目文字列を表示器１０２に表示する。
【００５７】
ステップＳ３１２では、取得対象となる項目文字列の表示内容がユーザーにより確認され、操作情報取得部２０９が、ユーザーによる操作情報を受け付ける。表示内容に誤りが無い場合は、作業完了がＯＫである指示を受け付けて、文字情報の抽出フローが終了となる。他方、表示内容に誤りがある場合は、作業完了がＯＫでない指示を受け付け、ステップＳ３０５に戻り、ステップＳ３０５〜Ｓ３１０の処理が再び行われる。文字列領域検出、文字認識による文字列情報の更新と項目特定処理が継続して行われることになり、紙面全体について文字認識結果を高い精度で維持される。
【００５８】
なお上記では、図３のフローチャートの各処理ステップは撮影画像入力と同期してシーケンシャルに実行されるように説明したが、一部の処理ステップを非同期に実行してもよい。たとえば撮影画像が毎秒３０フレーム入力される場合、次のように処理してもよい。たとえばステップＳ３０７の文字列領域検出処理は３０フレームに一度、ステップＳ３０８の文字認識処理は５フレームに一度、ステップＳ３０９の項目特定処理は２０フレームに一度のみ実行するようにしてもよい。その際、撮影画像は常にステップＳ３０６にて紙面画像に補正され、その紙面画像から検出・認識された文字列情報記憶部２０６に記憶される文字列情報は統一の紙面座標を持つように統合され管理される。よって、文字列領域検出、文字認識および項目特定処理部分は、図３のステップＳ３０５〜Ｓ３１０のループでどのタイミングで撮影された画像かに関わり無く紙面内の文字列情報を扱うことができる。
【００５９】
また、ステップＳ３０６で算出されたホモグラフィＨmの逆行列Ｈm-1は、紙面座標を撮影画像に変換するホモグラフィとなる。このＨm-1を利用することで、以下に示す文字列情報や文字列をステップＳ３０５で取得した撮影画像に重畳してモバイル端末１００の表示器１０２に表示することも可能である。前記文字列情報としては、例えば、文字列情報記憶部２０６に記憶される紙面座標系の文字列情報が挙げられる。前記文字列としては、例えば、ステップＳ３０９で得られる項目特定結果の文字列が挙げられる。この場合、現在どのような文字認識処理の結果や項目特定の結果が得られているかについてリアルタイムに知ることが出来るので、ユーザーはモバイル端末１００の撮影範囲をより効率的に定めるよう操作できる。さらに、ステップＳ３１０の完了判定のかわりに、ステップＳ３１１の結果表示を撮影画像に重畳して撮影を継続し、ユーザーによる明示的な作業完了がステップＳ３１２で指示されるまでステップＳ３０５〜Ｓ３１２のループを繰り返すようにしてもよい。
【００６０】
図４は、図７に示される被写体の紙帳票である健康診断表を対象とした項目特定処理を想定した項目特定ルールの一例である。項目特定ルールは項目特定部２０８の処理内容を記述したもので、文字列条件ルール４０１と、項目値出力条件ルール４０２とに分けられる。文字列条件ルール４０１として、たとえば、文字列を構成する文字コードを規定する文字列の条件が挙げられる。項目値出力条件ルール４０２として、たとえば、前記文字列の条件と、文字列の配置箇所を規定する文字列の配置条件が挙げられる。
【００６１】
図４の文字列条件ルール４０１の各行となる個々のルールはＩＤと条件記述のペアで構成される。本実施形態ＩＤ＝＃Ｃ１の条件記述のうち、「Ｎｕｍｅｒｉｃ」は数値文字列であること、「ｒｅｇｅｘｐ＝“．．．”」は指定された正規表現を満たす文字列、という意味である。具体的には０以外で始まる数字２〜３桁と小数点以下１桁の数値文字列が＃Ｃ１の条件に当てはまる。同様に、０以外で始まる数字１〜２桁と小数点以下１桁の数値文字列が＃Ｃ２の条件に当てはまる。０以外で始まる２〜３桁で且つ小数点以下の桁が無い整数値の文字列が＃Ｃ３の条件に当てはまる。＃Ｃ４の条件は定型文字列で日付型の文字列である。たとえば「２０１７年１月１日」や「平成２９年１月１日」、「２０１７／１／１」、「Ｊａｎ  １，２０１７」等がすべて当てはまる。後述するルール評価処理の際には、これら日付型文字列を正規表現パターンとして内部定義しておき、そのいずれかに合致する場合、条件に当てはまると処理すればよい。＃Ｃ５の条件は制約付きで人名型の文字列である。ここで健康診断表が日本人を対象にしたものと仮定すると、人名の文字として不適切な数字や記号を除いた２〜１０数文字程度までの文字列が当てはまる。＃Ｃ６の条件には項目名として受診者名の意味で記述される一般的文字列、すなわち「受診者名」「名前」「お名前」「氏名」などの文字列が当てはまる。後述するルール評価処理の際にはそれら記述のバリエーションを含む単語辞書を用意し、そのいずれかに合致する場合、条件に当てはまると処理すればよい。＃Ｃ７〜＃Ｃ１３は同様に、生年月日、身長、体重、ＢＭＩ、最高血圧、最小血圧、健診日を意味する一般的項目名の文字列が当てはまる。
【００６２】
図４の項目値出力条件ルール４０２の各行となる個々のルールは、取得対象項目ごとに項目番号、項目を区別する名前、出力する項目値の文字列条件、および配置条件で構成される。たとえば項目番号１は受診者名の項目であり、出力する項目値の文字列条件は＃Ｃ５、すなわち人名型の条件を満たす文字列となる。配置条件の「＃Ｃ６  ａｔ  ｌｅｆｔ」とは、出力文字列の左または上に＃Ｃ６、すなわち受診者名にあたる項目名文字列が存在するという意味である。また配置条件の「ｎｅａｒｅｓｔ」は、配置条件を満たす出力文字列が複数ある場合は最も配置条件の相手に近い出力文字列を選択するという意味である。つまり、人名型の条件を満たす文字列のうち、受診者名にあたる項目名文字列が左または上にあって最も近い文字列が出力となる。項目番号２は生年月日の項目であり、＃Ｃ４すなわち日付型の条件を満たす文字列のうち、左または上にあって＃Ｃ７すなわち生年月日にあたる項目名文字列があって最も近い文字列が出力される。項目番号３〜７も同様に、各々出力項目値の文字列の条件を満たし、かつ所定項目名の文字列が左にあって最も近い文字列が出力される。
【００６３】
以降、図４の項目特定ルールが指定された際に、項目特定部２０８が図３のステップＳ３０９においておこなう項目特定処理の内容について、図５のフローチャートを用いて説明する。
【００６４】
ステップＳ５０１では、前回の項目特定処理以降に前述ステップＳ３０８の処理において、文字認識情報が更新された文字列（以降、更新文字列と記述する）が、文字列情報記憶部２０６に記憶されているか否かを判定する。すなわち、前回のループ処理でのステップＳ３０８にて、更新文字列（候補文字列）が文字列情報記憶部２０６に記憶されているか否かを判定する。更新文字列が記憶されている場合はステップＳ５０２に進む。更新文字列が記憶されていない場合はステップＳ５０５に進む。
【００６５】
ステップＳ５０２では、項目特定ルール記憶部２０７に記憶される項目特定ルールのうち、ステップＳ５０１で判定された更新文字列に関係するルールと関係しないルールに判別する。ここでは、文字列条件ルール４０１と項目値出力条件ルール４０２の両方に関し、ステップＳ５０１で判定された更新文字列に関係するルールが判別される。判別の結果、関係するルールが存在する場合はステップＳ５０３に進む。関係するルールが存在しない場合はステップＳ５０５に進む。
【００６６】
たとえば文字列条件ルール４０１において、更新文字列に関係するルールの例を以下に説明する。たとえば更新文字列の文字コード列が数字だけで構成されていたとする。その場合、文字列条件ルール４０１において数値の文字列条件を持つ＃Ｃ１，＃Ｃ２，＃Ｃ３が関係するルールに判別される。さらに更新文字列の数値が２桁と小数点以下１桁であった場合、＃Ｃ１と＃Ｃ２のみが関係するルールに判別され、更新文字列の数値が整数であった場合は＃Ｃ３のみが関係するルールに判別される。他の文字列条件ルール＃Ｃ４〜＃Ｃ１３については、条件に当てはまるか否かを実際のルール評価処理をおこなわずに、更新文字列に関係するルールを判別するのは困難である。代わりに、文字列に算用数字が含まれる、文字列の文字数が所定数に収まらないなどの、簡単な処理で当てはまらないと断定できるルールを各条件に定義しておき、それらを利用して関係しないルールと関係するルールを判別するようにしてもよい。
【００６７】
項目値出力条件ルール４０２において、更新文字列に関係するルールの例を以下に説明する。たとえば更新文字列の文字コードが２桁の整数値であった場合、前述のとおり文字列条件ルール４０１では＃Ｃ３のみが関係する。その結果として、項目値出力条件ルール４０２では、出力項目値あるいは配置条件に＃Ｃ３を含む項目番号６および７の項目出力条件のみが、更新文字列に関係するルールと判別される。すなわち、項目値出力条件ルールに対する処理では、文字列条件ルールのうち、更新文字列に関係すると判別されたルールに対応付けられたルールが更新文字列に関係すると判別される。
【００６８】
ステップＳ５０３では、ステップＳ５０２で更新文字列に関係すると判別された文字列条件ルールの評価処理をおこなう。ステップＳ５０３においておこなう処理の詳細について図６（ａ）のフローチャートを用いて説明する。
【００６９】
図６（ａ）のステップＳ６０１〜Ｓ６０６は、文字列条件ルールに記載された各ルールに対して繰り返されるループ処理である。以下、ｘ回目のループ処理の中で、ｘ番目の文字列条件ルール＃Ｃｘを処理中であるとして説明する。
【００７０】
ステップＳ６０１では、項目特定部２０８は、Ｓ３０５で取得した部分撮影画像、Ｓ３０４で記憶した基準画像と対応付けられた文字列条件ルールの中から評価する文字列条件ルール（以下、評価対象の文字列条件ルールと称す）＃Ｃｘを決定する。なお、ここでは、評価対象の文字列条件ルールを番号順（＃１、＃２、・・・、＃１３）で決定していく例を用いて説明するが、これに限るものではなく、順不同に決定しても構わない。
【００７１】
ステップＳ６０２では、ステップＳ６０１で決定した評価対象の文字列条件ルール＃Ｃｘが更新文字列（候補文字列）に関係するか否かを判定する。評価対象の文字列条件ルール＃Ｃｘが更新文字列に関係する場合にはステップＳ６０３に進む。評価対象の文字列条件ルール＃Ｃｘが更新文字列に関係しない場合には、評価対象の文字列条件ルール＃Ｃｘに対する処理であるステップＳ６０３〜Ｓ６０５をスキップしてステップＳ６０６に進む。すなわちステップＳ５０２で関係すると判別されたルールであれば、ステップＳ６０３に進む。関係しないと判別されたルールであれば、評価対象の文字列条件ルール＃Ｃｘに対する処理をスキップしてステップＳ６０６に進む。
【００７２】
ステップＳ６０３では、更新文字列（候補文字列）に対し評価対象の文字列条件ルール＃Ｃｘを評価する。具体的には、更新文字列が評価対象の文字列条件ルール＃Ｃｘの文字列条件に記載される条件に当てはまるか否かを判定する処理をおこなう。
【００７３】
ステップＳ６０４では、ステップＳ６０３の評価で評価対象の文字列条件ルール＃Ｃｘの文字列条件に当てはまる更新文字列がある場合はステップＳ６０５に進む。評価対象の文字列条件ルール＃Ｃｘの文字列条件に当てはまる更新文字列が無い場合は、ステップＳ６０６に進む。
【００７４】
ステップＳ６０５では、評価対象の文字列条件ルール＃Ｃｘの文字列条件に当てはまる更新文字列を、＃Ｃｘ合致文字列集合に加える。＃Ｃｘ合致文字列集合は評価対象の文字列条件ルール＃Ｃｘに合致した更新文字列を保持するリストである。ここで、＃Ｃｘ合致文字列集合中に、更新文字列と座標が一致する文字列が既に存在し、認識された文字コード情報のみが異なる場合は文字コード情報のみを更新する。更新文字列が存在しない場合は新規文字列として追加する。ステップＳ６０５終了後は、ステップＳ６０６に進み、文字列条件ルールを全て評価したか否かが判定される。未評価の文字列条件ルールがある場合には、ステップＳ６０１に戻り、ステップＳ６０１〜Ｓ６０６の処理がおこなわれる。未評価の文字列条件ルールが無い場合には、図６（ａ）の文字列条件ルールの評価処理が終わる。
【００７５】
図５に戻り、ステップＳ５０４では、ステップＳ５０３でおこなわれた文字列条件ルール評価の結果に対し、項目値出力条件ルールの評価をおこない、項目特定結果を更新する。ステップＳ５０４においておこなう処理の詳細について図６（ｂ）のフローチャートを用いて説明する。
【００７６】
図６（ｂ）のステップＳ６０７〜Ｓ６１３は、項目値出力条件ルールに記載されたルール各々に対して繰り返されるループ処理である。以下、ループ処理の中で項目番号ｙのルールを処理中であるとして説明する。
【００７７】
ステップＳ６０７では、評価する項目値出力条件ルールＮｏ．ｙを決定する。なお、ここでは、ｙ回目のループ処理において、評価対象の項目値出力条件ルールＮｏ．ｙを評価対象とする（すなわち、番号順（１、２、・・・、７）に決定していく）ものとして説明するが、これに限るものではなく、評価対象を順不同に決定しても構わない。
【００７８】
ステップＳ６０８では、ステップＳ６０７で決定された、評価する項目値出力条件ルール（以下、評価対象の項目値出力条件ルールと称す）Ｎｏ．ｙが更新文字列（候補文字列）に関係するルールであるか否かを判定する。ステップＳ６０５の処理で更新文字列の追加が加えられた合致文字列集合に対応する文字列条件ルールが、項目番号ｙのルール記述の項目値出力あるいは配置条件に含まれる場合、評価対象の項目番号ｙの項目値出力条件ルールは関係あると判定する。或いは、ステップＳ６０５の処理で文字コード情報の更新が加えられた合致文字列集合に対応する文字列条件ルールが、項目番号ｙのルール記述の項目値出力或いは配置条件に含まれる場合、評価対象の項目番号ｙの項目値出力条件ルールは関係あると判定する。
【００７９】
評価対象の項目番号ｙの項目値出力条件ルールが関係あると判定した場合、ステップＳ６０９に進む。評価対象の項目番号ｙの項目値出力条件ルールは関係しないと判定した場合には、評価対象の項目番号ｙの項目値出力条件ルールに対する処理であるステップＳ６０９〜Ｓ６１２をスキップしてステップＳ６１３に進む。すなわちステップＳ５０２で関係すると判別されたルールであれば、ステップＳ６０９に進む。関係しないと判別されたルールであれば、評価対象の項目番号ｙの項目値出力条件ルールに対する処理をスキップしてステップＳ６１３に進む。
【００８０】
ステップＳ６０９では、項目番号ｙの出力条件に合致する文字列があるか否かを判定する。具体的には、出力条件が＃Ｃｉの場合、＃Ｃｉ合致文字列集合に文字列が存在するか否かを判定する。＃Ｃｉ合致文字列集合に文字列が存在する場合はステップＳ６１０に進む。＃Ｃｉ合致文字列集合に文字列が存在しない場合、ステップＳ６１０〜Ｓ６１２をスキップしてステップＳ６１３に進む。
【００８１】
ステップＳ６１０では、項目番号ｙの配置条件の評価処理をおこなう。具体的には、配置条件に記載される文字列条件ルール＃Ｃｊの合致文字列集合に含まれる文字列と、項目値出力条件の＃Ｃｉ合致文字列集合に含まれる文字列とのすべての組み合わせに対し、位置関係が配置条件に記載される条件を満たすかどうかを評価する。配置条件の評価が終わると、ステップＳ６１１に進む。
【００８２】
ステップＳ６１１では、ステップＳ６１０の評価処理により配置条件を満たす組み合わせがある場合はステップＳ６１２に進む。配置条件を満たす組み合わせが無い場合は、ステップＳ６１２をスキップしてステップＳ６１３に進む。
【００８３】
ステップＳ６１２では、ステップＳ６１１で配置条件を満たすとされた組み合わせにおける、項目値出力条件の合致文字列を項目番号ｙの出力文字列であると特定する。複数の組み合わせが配置条件を満たす場合には、その両方を出力文字列の候補として出力してもよいし、配置条件の合致度を相対評価からひとつ出力してもよい。出力文字列の特定が終わると、ステップＳ６１３に進む。
【００８４】
ステップＳ６１３では、項目値出力条件ルールを全て評価したか否かが判定される。未評価の項目値出力条件ルールがある場合には、ステップＳ６０７に戻り、ステップＳ６０７〜Ｓ６１３の処理がおこなわれる。未評価の項目値出力条件ルールが無い場合には、図６（ｂ）の項目値出力条件ルールの評価処理が終わる。
【００８５】
図５に戻り、ステップＳ５０５では、ステップＳ５０４で特定された項目番号の出力文字列を項目特定結果として出力し、図５のフローチャートの処理を終了する。あるいはステップＳ５０１またはステップＳ５０２の条件を満たさず、ステップＳ５０３〜Ｓ５０４の処理がスキップされた場合は本フローチャート開始時の項目特定結果をそのまま出力する。また、ステップＳ５０３またはステップＳ５０４の詳細な処理で条件を満たさなかった場合も本フローチャート開始時の項目特定結果をそのまま出力する。
【００８６】
次に、図７の紙面を対象にした図３〜図６のフローチャートによる項目読取り処理の実例について、ユーザーが本発明に係るモバイル端末１００を用いて健康診断表の紙面から必要項目を読取る作業例として説明する。ここで項目特定ルールは図４の文字列条件ルール４０１および項目値出力条件ルール４０２を用いるものとする
【００８７】
図７の紙面７００は本説明に用いる健康診断表の一例である。ユーザーは、モバイル端末１００に作業開始を指示した後、表示器１０２の表示内容を確認しながら紙面７００の４辺が収まる撮影範囲７０１で紙面７００を撮影する。このとき、モバイル端末１００の撮影画像取得部２０１は、紙面７００の全体撮影画像を取得する。この処理は図３のステップＳ３０２〜Ｓ３０３のループ処理に相当する。モバイル端末１００が一定条件を満たす４辺を抽出するとステップＳ３０４に進み、ステップＳ３０２で取得した全体撮影画像を基準画像として記憶する。
【００８８】
続けて、ユーザーは、モバイル端末１００が帳票の各項目の文字を精度良く認識できるように、モバイル端末１００を紙面７００に近づけて紙面７００を部分的に撮影しながら項目読取り作業をおこなう。これはステップＳ３０５〜Ｓ３１０のループ処理に相当する。まず、ユーザーが撮影範囲７０２で紙面７００を撮影する。ステップＳ３０５で取得された撮影画像（部分撮影画像）はステップＳ３０６で紙面画像へ補正され、ステップＳ３０７で検出された文字列領域の座標が文字列情報記憶部２０６に記憶される。
【００８９】
ステップＳ３０８では処理中の紙面画像の文字列領域に対して文字認識処理がおこなわれ文字認識結果を得る。ここでは、以下の１６個の文字列が得られた。「健診表」「氏名」「〇田×郎」「生年月日」「１９８０年１月１日」「健診日」「２０１７年６月８日」の各文字列が得られた。さらに、「１７２．３」「ＧＯＴ」「１６」「６６．４」「ＧＰＴ」「１９」「８６．０」「γ―ＧＴＰ」「３０」の各文字列が得られた。これらは文字列情報記憶部２０６の各文字列情報において更新文字列として記憶される。更新文字列であることを示すために、各文字列情報に更新を表すフラグが付与されるものとする。
【００９０】
なお、上記の文字認識処理は文字列領域検出処理の直後に同じ紙面画像に対しておこなわれてもよいし、ループを繰り返す中で別の撮影画像から補正された紙面画像に対しておこなわれてもよい。前述のとおりステップＳ３０６の紙面画像補正処理により、紙面画像の有効範囲にある文字列は常に同じ紙面座標系の座標を持つように処理されるからである。
【００９１】
ステップＳ３０９では、図５のフローチャートの処理による項目特定処理がおこなわれる。ステップＳ５０１では、この時点では文字列情報記憶部２０６にあるのはすべて更新文字列なのでステップＳ５０２に進む。ステップＳ５０２では、更新文字列には数値文字列が含まれるので、少なくとも文字列条件ルール４０１のルール＃Ｃ１〜＃Ｃ３は関係すると判定してステップＳ５０３に進む。
【００９２】
ステップＳ５０３では図６（ａ）のフローチャートの処理により、図４の文字列条件ルール４０１の各ルールについて更新文字列に対する評価が行われる。たとえばルール＃Ｃ１を処理するループでは、ステップＳ６０１にて文字列条件ルール＃１が決定され、ステップＳ６０２にて数値の更新文字列がルール＃Ｃ１に関係するとしてステップＳ６０３に進み更新文字列を評価する。ステップＳ６０４で、評価結果が文字列条件に当てはまるとしてステップＳ６０５に進み、＃Ｃ１合致文字列集合に「１７２．３」「６６．４」「８６．０」の３つが追加される。同様にして＃Ｃ２合致文字列集合には、「６６．４」「８６．０」、＃Ｃ３合致文字列集合には「１６」「１９」「３０」がそれぞれ追加される。＃Ｃ４合致文字列集合には日付型の文字列「１９８０年１月１日」「２０１７年６月８日」が追加される。＃Ｃ５合致文字列集合には人名型の文字列として、ここでは数字を含まないすべての更新文字列が追加される。＃Ｃ６、＃Ｃ７、＃Ｃ１３の各合致文字列集合にはそれぞれ「氏名」、「生年月日」、「健診日」がそれぞれ１つずつ追加される。
【００９３】
ステップＳ５０４では図６（ｂ）のフローチャートの処理により、図４の項目値出力条件ルール４０２の各ルールを更新文字列に対して処理する。たとえば項目番号１を処理するループでは、ステップＳ６０７にて項目番号１が決定され、ステップＳ６０８では項目出力値の文字列条件の＃Ｃ５合致文字列集合、あるいは配置条件になる文字列条件＃Ｃ６の合致文字列集合が更新されたか否かを判定する。ここでは＃Ｃ５、＃Ｃ６両方の合致文字列集合が更新されているのでステップＳ６０９に進む。そして＃Ｃ５合致文字列集合のすべてに対し、ステップＳ６１０で配置条件を評価する。ステップＳ６１１で、評価結果が配置条件に当てはまる場合にはステップＳ６１２に進む。具体的には、＃Ｃ６合致文字列集合に含まれる文字列を左に持つ文字列を＃Ｃ５合致文字列集合から選び、両者距離が最も近いものを選ぶ。その結果「〇田×郎」がステップＳ６１２で項目番号１の出力文字列として特定される。同様にして「１９８０年１月１日」が項目番号２の出力文字列として特定される。項目番号３〜６のルールに対しては現時点では特定されない。
【００９４】
上記ステップＳ３０９の項目特定処理結果は、取得対象の項目番号１〜６に対して項目番号１（受診者名）＝「〇田×郎」、項目番号２（生年月日）＝「１９８０年１月１日」で、３〜６は未特定状態にある。その結果、ステップＳ３１０では項目特定処理が完了していないと判定されて、ステップＳ３０５に戻る。このとき、特定済みの項目値をモバイル端末１００の表示器１０２に表示する。ユーザーはこの表示を見て、未特定の項目が含まれるように撮影範囲を移動する。
【００９５】
次に、ユーザーが撮影範囲７０３で紙面７００を撮影し、同様にステップＳ３０５〜ステップＳ３０８の処理により文字認識結果を得る。ここでは、以下の２１個の文字列が得られた。「身長」「１７２．３」「ＧＯＴ」「体重」「６６．４」「ＧＰＴ」「腹囲」「８６．０」「γ―ＧＴＰ」の各文字列が得られた。「ＢＭＩ」「２２．１」「赤血球数」「視力右」「０．７」「白血球数」「視力左」「０．８」「最高血圧」「中性脂肪」「７５」「最低血圧」の各文字列が得られた。このうち「１７２．３」「ＧＯＴ」「６６．４」「ＧＰＴ」「８６．０」「γ―ＧＴＰ」は、撮影範囲７０２で得た文字列情報からの座標も認識文字コードも変化しなかった。よってそれ以外である、以下の１５個の文字列が更新文字列（候補文字列）として文字列情報記憶部２０６に記憶された。「身長」「体重」「腹囲」「ＢＭＩ」「２２．１」「赤血球数」「視力右」「０．７」「白血球数」「視力左」「０．８」「最高血圧」「中性脂肪」「７５」「最低血圧」の各文字列が更新文字列として文字列情報記憶部２０６に記憶された。
【００９６】
ステップＳ３０９でそれら更新文字列に対する項目特定処理をおこなう。更新文字列には数値文字列が含まれるので関係するルールの評価処理に入る。文字列条件ルール４０１の評価により、＃Ｃ１合致文字列集合は「１７２．３」「６６．４」「８６．０」「２２．１」に更新される。＃Ｃ２合致文字列集合は「６６．４」「８６．０」「２２．１」に、＃Ｃ３合致文字列集合は「１６」「１９」「３０」「７５」にそれぞれ更新される。また、＃Ｃ８、＃Ｃ９、＃Ｃ１０、＃Ｃ１１、＃Ｃ１２合致文字列集合にそれぞれ「身長」、「体重」、「ＢＭＩ」「最高血圧」「最低血圧」が１つずつ追加される。続いて項目値出力条件ルール４０２の評価として、更新された合致文字列集合の文字列条件を含む項目番号３〜６のルールが処理される。その結果、項目番号３（身長）＝「１７２．３」、項目番号４（体重）＝「６６．４」、項目番号５（ＢＭＩ）＝「２２．１」がそれぞれ出力文字列として特定される。項目番号６および７は該当する配置条件を満たす文字列がないので特定されない。ステップＳ３１０では項目特定処理が完了していないとして、ステップＳ３０５に戻る。
【００９７】
さらにユーザーが撮影範囲７０４で紙面７００を撮影すると、同様にステップＳ３０５〜ステップＳ３０８の処理により文字認識結果を得る。ここでは、以下の２４個の文字列を得られた。「腹囲」「８６．０」「γ―ＧＴＰ」「３０」「ＢＭＩ」「２２．１」「赤血球数」「５１６」「視力右」「０．７」「白血球数」「７２．３」「視力左」「０．８」「最高血圧」「ＩＩＩ」「中性脂肪」「７５」「最低血圧」「８３」の各文字列を得られた。さらに「ＨＤＬ−Ｃ」「４８」「ＬＤＬ−Ｃ」「９０」の各文字列を得られた。ここで、ローマ数字の「ＩＩＩ」は図７の文字列７１０に対する文字認識処理上の誤りで正解は算用数字の「１１１」という文字列であるが、現時点で訂正手段はなくそのまま文字列情報記憶部２０６に記憶される。認識結果による文字コードの更新がない文字列を除き、「３０」「５１６」「７２．３」「ＩＩＩ」「８３」「ＨＤＬ−Ｃ」「４８」「ＬＤＬ−Ｃ」「９０」が更新文字列となる。
【００９８】
ステップＳ３０９でそれら更新文字列に対する項目特定処理をおこなう。更新文字列には数値文字列が含まれるので関係するルールの評価処理に入る。文字列条件ルール４０１の評価により、＃Ｃ１合致文字列集合は「１７２．３」「６６．４」「８６．０」「２２．１」「７２．３」に更新される。＃Ｃ２合致文字列集合は「６６．４」「８６．０」「２２．１」「７２．３」に、＃Ｃ３合致文字列集合は「１６」「１９」「３０」「７５」「５１６」「８３」「４８」「９０」にそれぞれ更新される。続いて項目値出力条件ルールの評価として、更新された合致文字列集合の文字列条件ルールに関係する項目番号７のルールが処理される。その結果、項目番号７（最低血圧）＝「８３」がそれぞれ出力文字列として特定される。項目番号６については、本来の項目値になるべき文字列が前述の文字認識誤りにより「ＩＩＩ」として記憶され、文字列条件＃Ｃ３に合致しないため、配置条件を満たす文字列はなく未特定のままである。よって、ステップＳ３１０では項目特定処理が完了していないとして、ステップＳ３０５に戻る。
【００９９】
ここで、ユーザーは撮影範囲７０４で紙面７００を対象に撮影を続け、モバイル端末１００はステップＳ３０５〜ステップＳ３１０の処理を繰り返しているものとする。その間、取得した撮影画像を補正した紙面画像に対する文字認識処理の結果として上記の文字列が得られ続けており更新文字列が無く、項目特定ルールの評価もおこなわれていないとする。時間が経過し、ある時点のステップＳ３０５で取得した撮影画像を補正した紙面画像から、文字列７１０に対し算用数字の「１１１」という認識結果が得られた。その結果、更新文字列は算用数字の「１１１」となり、文字列条件ルール４０１の評価により＃Ｃ３合致文字列集合は「１６」「１９」「３０」「７５」「５１６」「８３」「４８」「９０」「１１１」にそれぞれ更新される。そして項目値出力条件ルール４０２の項目番号６の配置条件を満たす項目値出力文字列として算用数字の「１１１」が特定される。よって、項目番号６（最高血圧）＝「１１１」がそれぞれ出力文字列として特定される。このようにして項目番号１〜７すべての取得項目値の出力文字列が特定されると、ステップＳ３１０からステップＳ３１１に進む。ユーザーは、それら文字列の表示を確認し（ステップＳ３１２）、文字列の表示がＯＫであれば、モバイル端末１００は、ユーザーによるＯＫの指示を受け付けて作業を完了する。
【０１００】
上記動作例の説明において図２の項目特定部２０８は、項目特定ルール記憶部２０７に記憶される項目特定ルールの記述に基づき、取得した撮影画像により更新された文字列情報が関係するルールと関係しないルールを区別して処理をおこなう。具体的には、図５のステップＳ５０２および図６（ａ）のステップＳ６０２、図６（ｂ）のステップＳ６０８のそれぞれにおいて、項目特定のルールが更新文字列に関係するか否かを判定し、関係しないルールの評価処理をおこなわないようにする。これにより、動画撮影画像を入力とした文字認識処理で、得られる文字列情報が漸進的に追加されかつ部分的に更新されるケースでも、更新文字列に対し必要なルール評価処理をおこない、かつ不要なルール評価処理を抑制することができる。たとえば上記例では、図７の文字列７１０の認識結果の文字コードのみが更新された際には、文字列条件ルールとして数値の条件を持つ＃Ｃ１〜＃Ｃ３のみが評価される。またその評価結果が整数値であり、文字列条件ルール＃Ｃ３の合致文字列集合のみが更新されるため、同文字列条件＃Ｃ３を出力値条件に持つ項目番号６および７の項目値出力条件ルールのみが評価される。もしこれらの判定がおこなわれないと、動画撮影画像入力により文字認識結果が更新されるごとに、すべてのルールの評価処理を実行することになる。その処理時間は取得対象項目の種類や紙面内の文字列数に依存するが、それらが多い場合には評価処理時間の増加により、動画処理のフレームレートが低下したり、認識結果をユーザーが確認できるまでに多大な時間を要したりする。結果としてモバイル端末１００による帳票の読取り作業の操作性を損ねることになる。
【０１０１】
以上説明したように、本実施形態によれば、ユーザーが帳票紙面をカメラ撮影して項目読取り処理をおこなう手持ちデバイスであるモバイル端末において、動画撮影を入力として帳票紙面を部分的に撮影しながら文字認識処理を実行する。このとき、撮影画像から基準画像を定めるとともに紙面の４辺を抽出し、それらをもとに異なる撮影範囲の撮影画像を常に同一座標系となる紙面画像へと変換する（補正する）。そして異なる紙面画像から検出・認識した文字列を紙面各部から抽出した１セットの文字列情報として追加・更新しながら記憶する。これら文字列情報の更新部分に対し、あらかじめ定められた項目特定ルールを評価することで、取得対象項目の文字列を特定していく。よってユーザーはモバイル端末が表示する特定済み項目の情報を確認しながら、文字認識の精度を確保できるように紙面に近接した位置で部分撮影を繰り返すことで漸進的な複数項目の読取り作業を容易におこなえる。この項目特定ルール評価処理において、動画像入力の認識で更新された文字列に関係するルールのみを特定し評価処理をおこなう。その結果、不要なルール評価を抑制して評価処理負荷および評価処理時間の増加を抑えることができるので、取得対象項目数や紙面内の文字列数が多い場合でも、操作性を損ねることのない読取り作業を提供できるようになる。よって、処理負荷を抑えながらも、被写体について良好な文字認識結果を効率よく取得することができる。
【０１０２】
［第二の実施形態］
次に、項目値出力条件ルールが過去に特定されており、かつ、更新された文字列の配置から再評価が不要なルールを特定して評価処理をスキップする態様を第二の実施形態として説明する。なお、被写体の項目読み取り処理の制御の流れなど第一の実施形態と共通する内容については説明を省略することとし、以下では本実施形態の特徴である項目値出力条件ルールの評価処理を中心に説明するものとする。
【０１０３】
図８（ａ）は本発明の第二の実施形態における、モバイル端末１００を用いた項目読取り作業の対象となる紙帳票および撮影範囲の一例を示す図である。図８（ｂ），（ｃ）は本実施形態で用いた項目特定ルールの一例を示す図である。被写体である紙面８００は肝機能測定の受診結果を記載した帳票紙面の例である。撮影範囲８０１〜８０３は紙面８００を撮影する際の異なる撮影範囲の例である。
【０１０４】
図８（ｂ）の文字列条件ルール８１１および図８（ｃ）の項目値出力条件ルール８１２は、図８（ａ）の帳票から所定項目を読取る項目特定ルールの例である。文字列条件ルール８１１において、＃Ｃ３、＃Ｃ５，＃Ｃ６各ルールの意味は図４の文字列条件ルール４０１における同名のルールと同一である。＃Ｃ１４は年齢を意味する文字列、＃Ｃ１５は肝機能値ＧＯＴを意味する文字列、＃Ｃ１６は肝機能値ＧＰＴを意味する文字列が当てはまる。項目値出力条件ルール８１２の配置条件のうち、図４に記載されていない「ｒｉｇｈｔｍｏｓｔ」とは、複数の配置条件を満たす出力文字列がある場合は最も右にある文字列を出力するという意味である。これは対象帳票の既知情報として取得対象となる項目値が複数ある場合は右側にあるという規則を反映したルールである。
【０１０５】
以降、図８の紙面８００を対象とする項目読取り作業における、モバイル端末１００の動作例を説明する。なおモバイル端末１００の構成および処理ステップ各内容のうち、図２〜３および図５、図６（ａ）については第一の実施形態の説明と同一であるものとする。
【０１０６】
ユーザーはモバイル端末１００に作業開始を指示した後、まず紙面８００の４辺が収まるような撮影範囲８０１で紙面８００を撮影する。このとき、モバイル端末１００の撮影画像取得部２０１は、紙面８００の全体撮影画像を取得する。これは図３のステップＳ３０２〜Ｓ３０３のループ処理に相当する。モバイル端末１００が一定条件を満たす４辺を抽出するとステップＳ３０４に進み、ステップＳ３０２で取得した全体撮影画像を基準画像として記憶する。
【０１０７】
続けてユーザーは、モバイル端末１００を紙面８００に近づけて紙面８００を部分的に撮影しながら項目読取り作業をおこなう。これはステップＳ３０５〜Ｓ３１０のループ処理に相当する。ユーザーが撮影範囲８０２で紙面８００を撮影した画像（部分撮影画像）をステップＳ３０５で取得する。ステップＳ３０６で撮影画像（部分撮影画像）を紙面画像へ補正し、ステップＳ３０７で文字列領域検出をおこなって文字列領域の座標を文字列情報記憶部２０６に記憶する。
【０１０８】
ステップＳ３０８では紙面画像の文字列領域に対して文字認識処理をおこなう。文字認識結果として「受診者名」「〇田×郎」「年齢」「３３」「前回」「ＧＯＴ」「１９」「ＧＰＴ」「１３」の各文字列が得られ、更新文字列とされた。
【０１０９】
ステップＳ３０９では、図５のフローチャートの処理による項目特定処理をおこなう。本実施形態では項目特定ルールとして図８の文字列条件ルール８１１と項目値出力条件ルール８１２を用いる。
【０１１０】
まず、図６（ａ）のフローチャートにより、更新文字列に対して図８の文字列条件ルール８１１を評価すると、＃Ｃ３合致文字列集合に「３３」「１９」「１３」が格納される。＃Ｃ５合致文字列集合には人名型の文字列として、ここでは英数字を含まない２文字以上の文字列「受診者名」「〇田×郎」「年齢」「前回」が格納される。＃Ｃ６合致文字列集合には「受診者名」が格納される。＃Ｃ１４合致文字列集合には「年齢」が格納される。＃Ｃ１５合致文字列集合には「ＧＯＴ」が格納される。＃Ｃ１６合致文字列集合には「ＧＰＴ」が格納される。
【０１１１】
続いて、更新文字列に対して図８の項目値出力条件ルール８１２を評価する。本実施形態では、図９のフローチャートにより項目値出力条件ルールの評価処理をおこなうものとする。なお、図９のフローチャートのステップＳ６０７〜Ｓ６１３については、第一の実施形態における図６（ｂ）のフローチャートの同番号のステップと同じであるため説明は省略する。図６（ｂ）との差分になるステップＳ９０１では、処理中の項目番号に対する出力値がこれまでに特定済みであるかどうかを判定する。特定済みであればさらに再評価が必要か否かを判定し、再評価不要であれば、ステップＳ６０９〜Ｓ６１２の処理をスキップしてステップＳ６１３に進む。特定済みでないか、特定済みだが再評価必要な場合はステップＳ６０９に進む。まず、本実施形態において、最初の図９のフローチャートの処理のケースでは、すべての項目が未特定であるためステップＳ６１３に進む。なお、再評価が必要か否かの判定処理の詳細については後述する。
【０１１２】
項目番号１のルールでは文字列「〇田×郎」が、項目番号２のルールでは文字列「３３」がそれぞれ項目値の出力結果として特定される。これら処理は第一の実施形態と同じであるため説明は省略する。項目番号３のルールでは、＃Ｃ３合致文字列集合より配置条件を唯一満たす「１９」が特定される。項目番号４のルールでは「１３」が特定される。
【０１１３】
以上ステップＳ３０９の項目特定処理により、取得対象の項目番号１〜４すべてに対する出力文字列が特定される。しかし、その表示を確認したユーザーは、真に取得したい肝機能数値は、撮影済みの「前回」列の数値ではなく、表の右側の「今回」列にある数値であるとして、モバイル端末１００を移動してそれらを含む撮影範囲８０３を撮影する。
【０１１４】
撮影範囲８０３に対する撮影画像から得られた更新文字列は「３１」「４０」であった。このとき得た更新文字列領域の座標と、文字列情報記憶部２０６に記憶されている更新文字列以外の既存文字列領域の座標とを比較することで、更新文字列がすべて既存文字列の右に存在していると認識された。そこで、図９のフローチャートのステップＳ９０１にて、項目値出力が過去に特定されており、かつ配置条件に「ｒｉｇｈｔｍｏｓｔ」を含むルールは関係しないため再評価不要と判定する。具体的には、項目番号２のルールは、すでに＃Ｃ１４に合致する文字列「年齢」に最近傍で＃Ｃ３の文字列条件を満たす「３３」で特定されており、その右側に更新文字列が増えたとしても評価結果が変わる可能性は無いため再評価不要と判断される。その結果、ステップＳ６１０で評価されるのは項目番号３および４の配置条件のみとなる。結果として項目番号３の出力文字列は「３１」、項目番号４の出力文字列は「４０」に更新されて出力される。この表示を確認したユーザーは取得したい項目値はすべて正しく読取れたと判断し、作業を完了する。
【０１１５】
以上説明したように、本実施形態によれば、項目特定ルールの評価処理において、動画像入力の認識で更新された文字列に関係するルールのみを特定し評価処理をおこなう。このとき、更新された文字列の配置から再評価が不要なルールを特定して評価処理をスキップする。その結果、不要なルール評価を抑制して評価処理時間の増加を抑えることができるので、取得対象項目数や紙面内の文字列数が多い場合でも、操作性を損ねることのない読取り作業を提供できるようになる。
【０１１６】
なお、動画像の代わりに静止画像を用いることも可能である。被写体上の文字列の読み取り動作を行う前に文字列情報記憶部２０６に記憶された基準画像を用いることも可能である。同一のルールに当てはまる更新文字列（候補文字列）を個別に文字列情報記憶部に格納することも可能である。文字列の条件と文字列の配置条件の少なくとも一方の条件を用いて更新文字列（候補文字列）を評価することも可能である。
【０１１７】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１１８】
２０１    撮影画像取得部
２０２    撮影画像追跡部
２０５    文字認識部
２０６    文字列情報記憶部
２０７    項目特定ルール記憶部
２０８    項目特定部
【図１】
2019091305.tif 000003
【図２】
2019091305.tif 000004
【図３】
2019091305.tif 000005
【図４】
2019091305.tif 000006
【図５】
2019091305.tif 000007
【図６】
2019091305.tif 000008
【図７】
2019091305.tif 000009
【図８】
2019091305.tif 000010
【図９】
2019091305.tif 000011