(57)【要約】【課題】  撮像時の手ブレやフォーカスのずれ等に起因するボケが撮像画像上に生じるようなケースであっても、撮像画像に対する文字認識をより高速且つ正確に実施するための技術を提供すること。【解決手段】  撮像画像中の文字に対する文字認識の結果として得られた認識文字の複雑度及び該文字認識の信頼度を取得する。複雑度と信頼度とに基づいて、認識文字を、文字に対する最終的な文字認識結果の候補に決定するのか否かを判断する。候補として決定済みの認識文字群に基づいて、文字に対する最終的な文字認識結果を決定して出力する。【選択図】  図１
2018180606.tif 000002
【特許請求の範囲】
【請求項１】
撮像画像中の文字に対する文字認識の結果として得られた認識文字の複雑度及び該文字認識の信頼度を取得する認識手段と、
前記複雑度と前記信頼度とに基づいて、前記認識文字を、前記文字に対する最終的な文字認識結果の候補に決定するのか否かを判断する判断手段と、
前記候補として決定済みの認識文字群に基づいて、前記文字に対する最終的な文字認識結果を決定して出力する出力手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記認識手段は、認識文字が第１の属性を有する文字に該当する場合には、簡単を表す値、認識文字が第２の属性を有する文字に該当する場合には、複雑を表す値、を前記複雑度として取得することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第１の属性を有する文字は数字であることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記第２の属性を有する文字は、漢字、カタカナ、ひらがな、アルファベットを含むことを特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記認識手段は、特徴空間における前記文字と前記認識文字との間の距離を前記信頼度として取得することを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
前記判断手段は、前記複雑度に対応する閾値を取得し、前記信頼度が該閾値よりも高い場合には、前記認識文字を前記候補に決定することを特徴とする請求項１乃至５の何れか１項に記載の画像処理装置。
【請求項７】
複雑を表す値を有する複雑度に対応する閾値は、簡単を表す値を有する複雑度に対応する閾値よりも高いことを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記認識手段は、認識文字の属性と前記文字の画像特徴とに基づいて、該認識文字の複雑度を決定することを特徴とする請求項１に記載の画像処理装置。
【請求項９】
前記文字の画像特徴は、前記文字の孔数、前記文字を含む文字列の連結成分の形状の分布、を含むことを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
撮像画像中の文字に対する文字認識の結果として得られた認識文字の複雑度及び該文字の画質を取得する認識手段と、
前記複雑度と前記画質とに基づいて、前記認識文字を、前記文字に対する最終的な文字認識結果の候補に決定するのか否かを判断する判断手段と、
前記候補として決定済みの認識文字に基づいて、前記文字に対する最終的な文字認識結果を決定して出力する出力手段と
を備えることを特徴とする画像処理装置。
【請求項１１】
前記判断手段は、前記複雑度に対応する閾値を取得し、前記画質が該閾値よりも高い場合には、前記認識文字を前記候補に決定することを特徴とする請求項１０に記載の画像処理装置。
【請求項１２】
複雑を表す値を有する複雑度に対応する閾値は、簡単を表す値を有する複雑度に対応する閾値よりも高いことを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
前記出力手段は、複数の撮像画像のそれぞれから前記候補として決定済みの認識文字から前記最終的な文字認識結果を決定して出力することを特徴とする請求項１乃至１２の何れか１項に記載の画像処理装置。
【請求項１４】
前記出力手段は、前記最終的な文字認識結果を表示することを特徴とする請求項１乃至１３の何れか１項に記載の画像処理装置。
【請求項１５】
更に、文字を含む文書を撮像する撮像手段を備えることを特徴とする請求項１乃至１４の何れか１項に記載の画像処理装置。
【請求項１６】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の認識手段が、撮像画像中の文字に対する文字認識の結果として得られた認識文字の複雑度及び該文字認識の信頼度を取得する認識工程と、
前記画像処理装置の判断手段が、前記複雑度と前記信頼度とに基づいて、前記認識文字を、前記文字に対する最終的な文字認識結果の候補に決定するのか否かを判断する判断工程と、
前記画像処理装置の出力手段が、前記候補として決定済みの認識文字群に基づいて、前記文字に対する最終的な文字認識結果を決定して出力する出力工程と
を備えることを特徴とする画像処理方法。
【請求項１７】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の認識手段が、撮像画像中の文字に対する文字認識の結果として得られた認識文字の複雑度及び該文字の画質を取得する認識工程と、
前記画像処理装置の判断手段が、前記複雑度と前記画質とに基づいて、前記認識文字を、前記文字に対する最終的な文字認識結果の候補に決定するのか否かを判断する判断工程と、
前記画像処理装置の出力手段が、前記候補として決定済みの認識文字に基づいて、前記文字に対する最終的な文字認識結果を決定して出力する出力工程と
を備えることを特徴とする画像処理方法。
【請求項１８】
コンピュータを、請求項１乃至１５の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字認識技術に関するものである。
【背景技術】
【０００２】
カメラ付きのスマートフォンやタブレットの普及により、健康診断表など様々な文書をカメラによって撮影し、文書内の文字を認識する技術が開発されている。スマートフォンやタブレットなどで文字認識を行う場合、カメラは手持ちである場合が多く、手ぶれが発生したり、フォーカスが合わない画像が入力されたりすることがある。このような手ぶれやフォーカスが合わない画像に対して文字認識を行った場合、認識性能が低下するという問題があった。特許文献１には、カメラから連続的に入力される画像に対し、文字認識に適しているか否かを判断するための評価値を、撮影対象領域に含まれる高周波成分の量から求め、この量が一定値以上となる画像を用いて文字認識を行う方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２１８０６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、文字の複雑さは文字種によって異なり、撮影時にボケが生じていても正しく認識できる文字もある。特許文献１の方法では、そのような正しく認識できる文字を文字認識に用いず認識までに多くの時間を要してしまう。例えばこれを回避するために、評価値の低い画像も用いて文字認識を行うと、ボケが生じると正しく認識できない文字を誤認識し精度が低下する。
【０００５】
本発明はこのような問題に鑑みてなされたものであり、撮像時の手ブレやフォーカスのずれ等に起因するボケが撮像画像上に生じるようなケースであっても、撮像画像に対する文字認識をより高速且つ正確に実施するための技術を提供する。
【課題を解決するための手段】
【０００６】
本発明の一様態は、撮像画像中の文字に対する文字認識の結果として得られた認識文字の複雑度及び該文字認識の信頼度を取得する認識手段と、前記複雑度と前記信頼度とに基づいて、前記認識文字を、前記文字に対する最終的な文字認識結果の候補に決定するのか否かを判断する判断手段と、前記候補として決定済みの認識文字群に基づいて、前記文字に対する最終的な文字認識結果を決定して出力する出力手段とを備えることを特徴とする。
【発明の効果】
【０００７】
本発明の構成によれば、撮像時の手ブレやフォーカスのずれ等に起因するボケが撮像画像上に生じるようなケースであっても、撮像画像に対する文字認識をより高速且つ正確に実施することができる。
【図面の簡単な説明】
【０００８】
【図１】画像処理装置１００の構成例を示すブロック図。
【図２】制御部１０３の機能構成例を示すブロック図。
【図３】文字認識処理を説明する図。
【図４】画像処理装置１００が行う処理のフローチャート。
【図５】ステップＳ４０７における処理の詳細を示すフローチャート。
【図６】ステップＳ４０８における処理の詳細を示すフローチャート。
【図７】ステップＳ４０７における処理の詳細を示すフローチャート。
【図８】選択文字の孔数を説明する図。
【図９】選択文字の連結成分の形状の分布を説明する図。
【図１０】ステップＳ４０８における処理の詳細を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照し、本発明の実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の１つである。
【００１０】
［第１の実施形態］
先ず、本実施形態に係る画像処理装置１００の構成例について、図１のブロック図を用いて説明する。なお、図１には、以下に説明する各処理に関連する主要な構成を示している。
【００１１】
撮影部１０１は、静止画像を連続して撮像する若しくは動画像を撮像する。通知部１０２は、制御部１０３による処理結果をユーザに通知する。本実施形態では、通知部１０２はタッチパネル画面であるものとする。制御部１０３は、ＣＰＵやメモリなどにより構成されている。制御部１０３は、該メモリに格納されているコンピュータプログラムやデータを用いて処理を実行することで画像処理装置１００全体の動作制御を行うと共に、画像処理装置１００が行うものとして後述する各処理を実行若しくは制御する。記憶部１０４は、不揮発性メモリであり、ＯＳ（オペレーティングシステム）や、画像処理装置１００に係る様々なデータや動作プログラムなどが保存されている。記憶部１０４に保存されている動作プログラムには、画像処理装置１００が行うものとして後述する各処理を制御部１０３に実行若しくは制御させるためのコンピュータプログラムが含まれている。記憶部１０４に保存されているデータには、以下の説明において既知の情報として説明するものが含まれている。
【００１２】
次に、制御部１０３の機能構成例を図２のブロック図に示す。図２に示した各機能部はハードウェアで実装されても良いし、コンピュータプログラムで実装されても良い。後者の場合、このコンピュータプログラムは、上記の動作プログラムに含まれることになる。以下では、図２の機能部を処理の主体として説明する場合があるが、この機能部をコンピュータプログラムで実装する場合、実際には、このコンピュータプログラムを制御部１０３が実行することで、対応する機能部の機能が実現される。図２に示した各機能部の動作の説明は、図４のフローチャートに係る説明の中で行う。
【００１３】
次に、画像処理装置１００が文字列（１文字以上の文字を含む文字列）が記された文書を撮像し、該撮像により得られる撮像画像中の各文字を認識してユーザに提示するために画像処理装置１００が行う処理について、図４のフローチャートを用いて説明する。
【００１４】
ユーザは画像処理装置１００を手にして撮影部１０１の撮像視界内に文書を収め、その状態で撮像開始指示を入力する。撮像開始指示は、例えば、通知部１０２であるタッチパネル画面上に表示されている撮像開始指示ボタンをユーザがタップすることで入力することができる。制御部１０３が撮像開始指示の入力を検知すると、図４のフローチャートに従った処理が開始される。なお、図４のフローチャートに従った処理の開始のトリガはこれに限らない。
【００１５】
ユーザが撮像しにくさを感じないためには、１５〜３０ｆｐｓ程度のフレームレートが必要である。例えば、文書を撮像することで得られる撮像画像中に５０文字存在した場合、ステップＳ４０３で行う文字列領域の検出処理には約２００ｍｓの処理時間が必要である。またステップＳ４０５〜ステップＳ４１０では約１００ｍｓ程度の処理時間が必要である。そのためステップＳ４０３の処理、ステップＳ４０５〜ステップＳ４１０の処理、の各処理を、撮影部１０１から入力される全ての撮像画像に対して行った場合、十分なフレームレートを確保できない。十分なフレームレートを確保するために、本実施形態では、ステップＳ４０３の処理とステップＳ４０５〜ステップＳ４１０の処理とを別スレッドで実施する。そして、撮影部１０１から入力された撮像画像のうち一定の頻度で選択された撮像画像をステップＳ４０３の処理、ステップＳ４０５〜ステップＳ４１０の処理の対象とする。
【００１６】
撮影部１０１は連続して文書を撮像して撮像画像を出力しており、撮影部１０１から出力された撮像画像は連続的に記憶部１０４に書き込まれる。ステップＳ４０１では、入力部２０１は、最近に記憶部１０４に書き込まれた撮像画像をフレーム画像に設定する。
【００１７】
ステップＳ４０２では、判定部２０２は、文字列の領域（文字列領域）を検出する対象となるフレーム画像（未だ文字列領域が検出されていないフレーム画像）を検出フレーム画像として記憶部１０４から選択する。撮影部１０１による撮像時のフレームレートが３０ｆｐｓ、ステップＳ４０３の処理に約２００ｍｓの処理時間がかかると想定される場合、検出フレーム画像は撮影部１０１から入力される撮像画像のうち６フレームに１回の頻度で選択される。なお、ステップＳ４０３の処理が完了した時点での最新のフレーム画像を検出フレーム画像として選択しても良い。
【００１８】
記憶部１０４から検出フレーム画像が選択できた場合には、処理はステップＳ４０３に進み、選択できなかった場合（文字列領域が未検出のフレーム画像が未だ記憶部１０４に格納されていない場合）には、処理はステップＳ４０４に進む。
【００１９】
ステップＳ４０３では、同定部２０３は、検出フレーム画像から文字列領域を検出する。文字列を含む画像から該文字列の領域を検出する技術は周知の技術であり、例えば、周波数成分を用いる手法やエッジの多さを用いる手法等、公知の方法により実現することができる。周波数成分を用いる手法では、画像領域を周波数成分に分解し、周波数成分が大きい場合には文字や図形と判定する。エッジの多さを用いる手法では、差分フィルタ等で画像に対して重み付け処理をして、その値が大きい場合には、画像領域内にエッジが存在すると判別する。エッジ数が大きい場合には文字・図形などと判別する。
【００２０】
一方、ステップＳ４０４では、判定部２０２は、記憶部１０４から、文字列領域内の文字列を認識する対象となるフレーム画像（文字列領域内の文字列の認識を未だ行っていないフレーム画像）を認識フレーム画像として記憶部１０４から選択する。例えば、撮影部１０１による撮像時のフレームレートが３０ｆｐｓ、ステップＳ４０５〜ステップＳ４１０の処理に約１００ｍｓの処理時間がかかると想定される場合、認識フレーム画像は３フレームに１回の頻度で選択される。なお、ステップＳ４１０が完了した時点での最新のフレーム画像を認識フレーム画像として選択しても良い。
【００２１】
記憶部１０４から認識フレーム画像が選択できた場合、処理はステップＳ４０５に進み、選択できなかった場合（文字列領域内の文字列の認識を未だ行っていないフレーム画像が未だ記憶部１０４に格納されていない場合）、処理はステップＳ４１１に進む。
【００２２】
ステップＳ４０５の処理は、認識フレーム画像において文字列領域が検出されていない場合に行う処理である。ステップＳ４０５では、同定部２０３は、認識フレーム画像の最近の検出フレーム画像における文字列領域に対応する、認識フレーム画像内の領域を追跡し、該追跡した領域を認識フレーム画像における文字列領域とする。本ステップにおける処理は、例えばオプティカルフローによる文字列の追跡、局所特徴量とＲＡＮＳＡＣによるホモグラフィ行列推定等、公知の方法により実現することができる。オプティカルフローは、画像中の物体の動きをベクトルで表す手法である。動画像からの物体追跡に広く用いられ、これにより文字列の追跡が可能である。局所特徴量は、画像中の濃淡の変化が大きい点の周囲を画素値や微分値により、特徴量として表す手法である。局所特徴量を用いることで、異なるフレーム間で類似した局所領域の対応点群を求めることができる。またＲＡＮＳＡＣによるホモグラフィ行列推定とは、外れ値を含む対応点群から高精度にホモグラフィを推定する手法である。
【００２３】
そして、認識フレーム画像における文字列領域中の各文字について、ステップＳ４０６〜Ｓ４１０の処理が行われる。ステップＳ４０６では、文字認識部２０４は、認識フレーム画像における文字列領域中の文字列を構成する各文字のうち未認識の文字を選択文字として選択する。そして文字認識部２０４は、選択文字に対して文字認識を行い、該文字認識の結果として得られた認識文字の文字コードと、該選択文字に対する文字認識の信頼度（認識信頼度）と、を出力する。文字認識には様々な技術が存在する。例えば、文字の特徴量が属する空間である特徴空間上でクエリ文字とデータベース文字の幾何関係を比較する等、公知の方法により実現することができる。認識信頼度とは、選択文字に対する認識文字の確からしさを表す数値であり、例えば、選択文字（文字認識時のクエリ文字）と、該選択文字に対する文字認識の結果として得られる認識文字（データベース文字）と、の間の特徴空間における距離である。
【００２４】
ステップＳ４０７では、算出部２０５は、認識文字の複雑の度合いを表す複雑度特徴量を求める。ステップＳ４０７における処理の詳細については、図５のフローチャートを用いて後述する。
【００２５】
ステップＳ４０８で評価部２０６は、ステップＳ４０７で求めた認識文字の複雑度特徴量とステップＳ４０６で求めた選択文字の認識信頼度とに基づいて、認識文字を、選択文字に対する最終的な文字認識結果の候補に決定するのか否かを（評価）判断する。ステップＳ４０８における処理の詳細については、図６のフローチャートを用いて後述する。そして、認識文字を上記候補に決定すると評価部２０６が判断した（認識結果統合に用いると判断した）場合には、処理はステップＳ４０９を介してステップＳ４１０に進む。一方、認識文字を上記候補に決定しないと評価部２０６が判断した（認識結果統合に用いないと判断した）場合には、処理はステップＳ４０９を介してステップＳ４１１に進む。
【００２６】
ステップＳ４１０では、統合部２０７は、認識文字を上記候補に決定する。なお、認識フレーム画像を選択する度に、選択文字の認識文字が上記候補となるのか否かを判断し、上記候補になると判断された場合には、該認識文字を上記候補とするので、選択文字については上記候補として複数の認識文字が決定されている。然るに統合部２０７は、この複数の認識文字（候補として決定済みの認識文字群）のうち１つの認識文字を、選択文字に対する最終的な文字認識結果として決定する（認識結果を統合する）。例えば、複数の認識文字を同じ文字コードを有する認識文字のグループに分割し、最も多くの認識文字を含むグループに属する認識文字を、選択文字に対する最終的な文字認識結果として決定する方法がある。また、複数の認識文字のうち最近の認識文字を、選択文字に対する最終的な文字認識結果として決定する方法もある。また、上記のグループ分割を行い、グループ内の認識信頼度の合計が最も高いグループに属する認識文字を、選択文字に対する最終的な文字認識結果として決定する方法もある。また、複数の認識文字のうち最も認識信頼度が高い認識文字を、選択文字に対する最終的な文字認識結果として決定する方法もある。
【００２７】
通知部１０２は、統合部２０７により、選択文字に対する最終的な文字認識結果として決定した認識文字の文字コードに対応する文字をタッチパネル画面に表示する。ステップＳ４０６〜Ｓ４１０の処理を、文字列領域内の各文字について行うことで、タッチパネル画面には、文字列領域内の各文字の認識結果としての認識文字が表示されることになる。これによりユーザは撮像した文書中の文字列の認識結果を目視で確認することができる。例えば、図３に示す如く、健康診断書３０２を撮像することで得られた撮像画像群から選択された認識フレーム画像群３０１に含まれている「６４．５」という文字列３０３を認識対象とするケースを考える。図３では、フレーム番号（ｔ−４）〜（ｔ−２）のそれぞれにおける認識フレーム画像から上記の候補として取得した認識文字列（認識結果３０４）は「８４．５」となっており、上記の文字列３０３とは異なっている。また、フレーム番号（ｔ−１）〜ｔのそれぞれにおける認識フレーム画像から上記の候補として取得した認識文字列は「６４．５」となっており、上記の文字列３０３と一致する。図３の場合、統合部２０７は、フレーム番号ｔ〜（ｔ−４）のそれぞれに対応する認識結果３０４を統合して１つの認識結果である統合結果３０５を得る。然るに、この統合結果３０５は、新たな認識フレーム画像から上記候補を決定する度に更新されることになる。
【００２８】
図４に戻って、次にステップＳ４１１では制御部１０３は、タッチパネル画面を介してユーザから撮像終了指示が入力されたか否かを判断する。この判断の結果、タッチパネル画面を介してユーザから撮像終了指示が入力された場合には、図４のフローチャートに従った処理を終了する。一方、タッチパネル画面を介してユーザから撮像終了指示が入力されていない場合には、処理はステップＳ４０１に戻り、次のフレーム画像について以降の処理を行う。
【００２９】
次に、上記のステップＳ４０７における処理の詳細について、図５のフローチャートに従って説明する。ステップＳ５０１では算出部２０５は、認識フレーム画像中に写っている文書のレイアウト解析を行って、認識文字の属性を特定する。例えば、文書が帳票の場合、帳票の画像とその帳票が含む各文字の属性を登録したデータベースに対して、認識フレーム画像を照合し、該認識フレーム画像中の認識文字の属性を特定する。ここでいうところの「属性」とは、文字が数字、漢字、カタカナ、ひらがな、アルファベットといった文字の種別を指し、ステップＳ５０１では、認識文字が数字、漢字、カタカナ、ひらがな、アルファベットの何れであるのかを特定する。なお、認識文字の属性の特定方法は特定の方法に限らない。例えば、認識文字の文字コードから、該認識文字が数字、漢字、カタカナ、ひらがな、アルファベットの何れであるのかを特定しても良い。
【００３０】
ステップＳ５０２では、算出部２０５は、ステップＳ５０１で特定した認識文字の属性が「数字」（項目値）であるのか否かを判断する。この判断の結果、ステップＳ５０１で特定した認識文字の属性が「数字」であれば、処理はステップＳ５０４に進み、ステップＳ５０１で特定した認識文字の属性が「数字」（項目値）でなければ、処理はステップＳ５０３に進む。
【００３１】
ステップＳ５０３では、算出部２０５は、レイアウト特徴として「項目値以外」を設定する。一方、ステップＳ５０４では、算出部２０５は、レイアウト特徴として「項目値」を設定する。
【００３２】
ステップＳ５０５では、算出部２０５は、レイアウト特徴として「項目値」が設定されているのか否かを判断する。この判断の結果、レイアウト特徴として「項目値」が設定されていれば、処理はステップＳ５０７に進み、レイアウト特徴として「項目値以外」が設定されていれば、処理はステップＳ５０６に進む。
【００３３】
ステップＳ５０７では、算出部２０５は、複雑度特徴量として「単純」を示す値（本実施形態では「０」とする）を設定する。一方、ステップＳ５０６では、算出部２０５は、複雑度特徴量として「複雑」を示す値（本実施形態では「１」とする）を設定する。数字は漢字やひらがなと比べて、その形状は比較的単純である。然るに、認識文字の属性が「数字」であれば、該認識文字の複雑の度合いは「簡単」とし、複雑度特徴量として「簡単」を示す値を設定する。一方、認識文字の属性が「数字以外」であれば、該認識文字の複雑の度合いは「複雑」とし、複雑度特徴量として「複雑」を示す値を設定する。
【００３４】
なお、ユーザがタッチパネル画面上で項目値が写る領域（第１の領域）と、非項目値が写る領域（第２の領域）を指定しておいても良い。この場合、認識フレーム画像がタッチパネル画面上に表示されたときにおける第１の領域内の文字については複雑度特徴量として「簡単」を表す値を設定し、第２の領域内の文字については複雑度特徴量として「複雑」を表す値を設定する。
【００３５】
なお、ここでは簡単な文字の種別として数字、複雑な文字の種別として数字以外としたが、簡単な文字の種別、複雑な文字の種別はこれらの文字に限らない。例えば、規定量以上の高周波数成分を有する文字を複雑な文字とし規定量未満の高周波数成分を有する文字を簡単な文字としても良い。
【００３６】
次に、上記のステップＳ４０８における処理の詳細について、図６のフローチャートを用いて説明する。ステップＳ６０１では、評価部２０６は、ステップＳ４０７で求めた複雑度特徴量に対応する認識信頼度の閾値、すなわち「正しい認識結果が得られたと十分に判断できる認識信頼度の閾値」を取得する。認識信頼度が高いほど、認識結果が正しい可能性も高い。ただし単純な文字では多少のボケが生じて認識信頼度が低下しても、正しく認識できることが多く、複雑な文字では少しでもボケが生じて認識信頼度が低下すると、正しく認識できないことが多い。このように文字の複雑さに応じて認識信頼度における正しく認識できたか否かの閾値が変わることから、「正しい認識結果が得られたと十分に判断できる認識信頼度の閾値」を複雑度特徴量を用いて推測する。この推測で用いる関数ｆは、例えば次のような方法によって予め求めておくことができる。関数ｆは、機械学習によって認識エンジン毎に学習する。関数ｆの学習では、まず様々な種類の文字の画像（ボケの度合いが異なる画像を含んでも良い）を学習用画像として用意し、それぞれの学習用画像に対して文字認識を行って、文字毎に、複雑度特徴量、認識信頼度、そして認識の成功／失敗、のセットを得る。そして、得たセット群のうち認識成功のセットを対象セットとし、それぞれの対象セット中の複雑度特徴量と認識信頼度とを用いて、複雑度特徴量から対応する認識信頼度を推定する関数ｆを学習する。例えば、対象セット群から複雑度特徴量の値が「１」に対応する認識信頼度の集合を取得し、該取得した認識信頼度の平均値、最大値、最小値などの統計値θ１を求める。また、対象セット群から複雑度特徴量の値が「０」に対応する認識信頼度の集合を取得し、該取得した認識信頼度の平均値、最大値、最小値などの統計値θ２（＜θ１）を求める。そして以下のような性質を有する関数ｆを得る。
【００３７】
θ１＝ｆ（１）
θ２＝ｆ（０）
然るにステップＳ６０１では、このような関数ｆの引数にステップＳ４０７で求めた複雑度特徴量を与えたときの関数ｆの出力値を、対応する閾値として取得する。なお、このような関数ｆはコンピュータプログラムにおける関数として実装しても良いし、テーブルデータとして実装しても良い。なお、ステップＳ４０７で求めた複雑度特徴量に対応する「正しい認識結果が得られたと十分に判断できる認識信頼度の閾値」の決定方法や取得方法は特定の決定方法、取得方法に限らない。
【００３８】
ステップＳ６０２では、評価部２０６は、ステップＳ４０６で求めた認識文字の認識信頼度がステップＳ６０１で取得した閾値よりも高いか否かを判断する。この判断の結果、ステップＳ４０６で求めた認識文字の認識信頼度がステップＳ６０１で取得した閾値よりも高い場合には、処理はステップＳ６０３に進む。一方、ステップＳ４０６で求めた認識文字の認識信頼度がステップＳ６０１で取得した閾値以下の場合には、処理はステップＳ６０４に進む。
【００３９】
ステップＳ６０３では、評価部２０６は、認識文字は正しい認識結果であると判断し、該認識文字を、選択文字に対する最終的な文字認識結果の候補に決定する（認識結果の統合に用いる）と判断する。複雑度特徴量を用いて閾値を推定するため、複雑な文字は認識できないようなボケが生じたとしても、正しく認識できる程に単純な文字については、認識結果統合に用いるべきと判定される。
【００４０】
一方、ステップＳ６０４では、評価部２０６は、認識文字は間違った認識結果であると判断し、該認識文字を、選択文字に対する最終的な文字認識結果の候補に決定しない（認識結果の統合に用いない）と判断する。
【００４１】
このように、本実施形態によれば、手ブレやフォーカスのずれ等に起因するボケが生じていても、認識結果を信頼するべきか否かを文字毎に正確に判断することができる。これにより、ボケが生じていても正しく認識できる単純な文字の認識結果を、統合に反映せずに破棄することが無くなるので、少ない認識時間で文書内の文字を認識できる。
【００４２】
［第２の実施形態］
本実施形態を含め、以下の各実施形態については、第１の実施形態との差分について重点的に説明し、以下で特に触れない限りは、第１の実施形態と同様であるものとする。第１の実施形態では、簡単な文字を数字のみとした。しかし、「ヘモグロビン」のように、カタカナであっても単純な文字であったりする場合があり、単純で正しく認識できる文字列を誤って複雑な文字と判断すると、認識信頼度の閾値を誤って高く推定してしまう。その場合、正しい認識結果を統合に反映せずに破棄する可能性があり、認識時間が増加してしまう。
【００４３】
本実施形態では、レイアウト特徴に加えて、選択文字の画像特徴をも参酌して、認識文字の複雑の度合いを表す複雑度特徴量を求める。本実施形態では、上記のステップＳ４０７において、図７のフローチャートに従った処理を行う。ステップＳ７０１〜Ｓ７０４のそれぞれのステップでは、上記のステップＳ５０１〜Ｓ５０４と同様の処理を行う。
【００４４】
ステップＳ７０５では、算出部２０５は、選択文字の画像領域における画像特徴として、該選択文字の孔数、該選択文字の連結成分の形状の分布、を求める。
【００４５】
選択文字の孔数について、図８を例にとり説明する。複雑な文字では孔が多く、単純な文字では孔が少ないことが多いため、１文字辺りの孔数によって文字の複雑度を表すことができる。例えば、「障」という文字を撮像して二値化した文字画像８０１では、孔８０２ａ〜孔８０２ｅの５つの孔が存在する。一般に良く用いられる非装飾フォント（ゴシック体等）のアラビア数字の場合、孔数は高々２（“８”）であり、文字画像８０１はアラビア数字と比べて複雑な形状の文字であることが分かる。なお、ステップＳ７０５で求める孔数は、実際の選択文字の総孔数を該選択文字を含む文字列の幅（若しくは高さ）で割って正規化した値とする。総孔数は画像サイズの影響を受けやすく、同じ文字であっても、画像サイズが小さい場合は文字潰れが生じるため総孔数が小さくなりやすい。そのため、正規化することで画像サイズに対する頑健性を保つことができる。
【００４６】
選択文字の連結成分の形状の分布について、図９を例にとり説明する。図９には、文字列画像９０１と、該文字列画像９０１中の黒画素連結成分の高さ、幅、頻度を示したヒストグラム９０２と、を示している。ヒストグラム９０２の第２軸“高さ”の上限値は文字列画像の縦幅である。第１軸“幅”の上限値は第２軸“高さ”の上限値と同値とする。これは横書きの場合、文字列画像の幅が文字列毎に大きく異なるためである。縦書きの場合は第１軸“幅”の上限値を文字列画像の横幅とし、第２軸“高さ”の上限値をこれと同値とする。ヒストグラム９０２の階級幅は１とする。ヒストグラム９０２を構成するビンのうち、要素数が０では無いビンの割合を特徴とする。図９では、第１軸“幅”、及び第２軸“高さ”の上限値は３０であり、要素数が０では無いビンの数は９である。よって、９／（３０×３０）＝０．０１が「連結成分の形状の分布」として得られる。文字列が単純なほど要素を持つビンの割合は少なく、文字列が複雑なほど要素を持つビンの割合は増加する。本実施形態では、１つの文字列について求めた「連結成分の形状の分布」を、該文字列を構成する各文字の「連結成分の形状の分布」として用いる。
【００４７】
「項目値」が設定されたレイアウト特徴の値を「０」、「項目値以外」が設定されたレイアウト特徴の値を「１」とすると、レイアウト特徴は１次元の値である。選択文字の孔数、該選択文字の連結成分の形状の分布のそれぞれも１次元の値である。算出部２０５は、｛レイアウト特徴、選択文字の孔数、該選択文字の連結成分の形状の分布｝を成分に有する３次元ベクトルを形成する。
【００４８】
ステップＳ７０６では、算出部２０５は、ステップＳ７０５で生成した３次元ベクトルから、複雑度特徴量の値を決定する。例えば、３次元ベクトルにおけるレイアウト特徴の値が「０」であれば、複雑度特徴量の値を「０」とする。また例えば、３次元ベクトルにおけるレイアウト特徴の値が「１」であっても、選択文字の孔数が規定の閾値未満であったり、選択文字の連結成分の形状の分布が規定の閾値未満であれば、複雑度特徴量の値を「０」とする。このようにして、３次元ベクトルのそれぞれの要素を活用して、複雑度特徴量を求めることで、単純で正しく認識できる文字列を誤って複雑な文字と判断することが無くなる。
【００４９】
このように本実施形態によれば、文字の属性だけでなくその画像特徴も参酌して該文字の複雑度特徴量を決定することができるので、単純で正しく認識できる文字列を誤って複雑な文字と判断するといった誤った判断を軽減することができる。そのため、認識信頼度を誤って高く推定し、正しい認識結果を統合に反映せずに破棄することが無くなる。したがって少ない認識時間で認識することができる。
【００５０】
［第３の実施形態］
第１の実施形態では、複雑度特徴量から認識信頼度の閾値を求め、該求めた閾値と認識文字の認識信頼度との大小比較を行っていた。認識信頼度は認識エンジンに大きく依存するため、認識信頼度に基づく第１の実施形態に係る方法では、認識エンジン毎に複雑度特徴量と認識信頼度との関係を学習する必要がある。学習で使用したものとは異なる認識エンジンを用いて認識した場合、認識信頼度の閾値を正しく求められず、正しい認識結果を統合に反映せずに破棄する可能性があり、認識時間が増加してしまう。
【００５１】
認識エンジンへの依存度が小さく認識結果の正しさに関係を持つ尺度として、画像のコントラストの大きさやエッジの鮮明さといった画質がある。画質が高い文字は認識結果が正しい可能性が高く、画質が低い文字は認識結果が正しくない可能性が高い。また単純な文字では多少のボケが生じて画質が低下しても正しく認識できることが多く、複雑な文字では少しでもボケが生じて画質が低下すると正しく認識できないことが多い。すなわち文字の複雑さに応じて、正しい認識結果が得られたか否かの画質の閾値は異なる。そこで本実施形態では、複雑度特徴量から文字画像の画質の閾値を求め、選択文字の画質と比較する。
【００５２】
本実施形態では、ステップＳ４０６では認識信頼度は算出せず、上記のステップＳ４０８において図１０のフローチャートに従った処理を行う。ステップＳ１００１では、評価部２０６は、選択文字の画質を求める。例えば選択文字の画像領域におけるコントラストの大きさやエッジの鮮明さ等、公知の方法により定義することができる。コントラストの大きさは、選択文字の画像領域内の輝度値の最大値をＬ＿ｍａｘ、最小値をＬ＿ｍｉｎとした場合に、Ｌ＿ｍａｘ／Ｌ＿ｍｉｎとして表すことができる。エッジの鮮明さは、選択文字の画像領域に対してＣａｎｎｙ法などの公知のエッジ抽出法によってエッジ画素を求め、該エッジ画素に隣接する画素の輝度勾配の平均として表すことができる。
【００５３】
ステップＳ１００２では、評価部２０６は、ステップＳ４０７で求めた複雑度特徴量に対応する画質の閾値、すなわち「正しい認識結果が得られたと十分に判断できる画質の閾値」を関数ｇを用いて取得する。関数ｇは、例えば次のような方法でもって生成することができる。まず様々な種類の文字の画像（ボケの度合いが異なる画像を含んでも良い）を学習用画像として用意し、それぞれの学習用画像に対して文字認識を行って、複雑度特徴量、画質、そして認識の成功／失敗、のセットを得る。そして、得たセット群のうち認識成功のセットを対象セットとし、それぞれの対象セット中の複雑度特徴量と画質とを用いて、複雑度特徴量から対応する画質を推定する関数ｇを学習する。例えば、対象セット群から複雑度特徴量の値が「１」に対応する画質の集合を取得し、該取得した画質の平均値、最大値、最小値などの統計値θ３を求める。また、対象セット群から複雑度特徴量の値が「０」に対応する画質の集合を取得し、該取得した画質の平均値、最大値、最小値などの統計値θ４（＜θ３）を求める。そして以下のような性質を有する関数ｇを得る。
【００５４】
θ３＝ｇ（１）
θ４＝ｇ（０）
然るにステップＳ１００２では、このような関数ｇの引数にステップＳ４０７で求めた複雑度特徴量を与えたときの関数ｇの出力値を、対応する閾値として取得する。なお、このような関数ｇはコンピュータプログラムにおける関数として実装しても良いし、テーブルデータとして実装しても良い。また、ステップＳ４０７で求めた複雑度特徴量に対応する「正しい認識結果が得られたと十分に判断できる画質の閾値」の決定方法や取得方法は特定の決定方法、取得方法に限らない。
【００５５】
ステップＳ１００３では、評価部２０６は、ステップＳ１００１で求めた選択文字の画質がステップＳ１００２で取得した閾値よりも高いか否かを判断する。この判断の結果、ステップＳ１００１で求めた選択文字の画質がステップＳ１００２で取得した閾値よりも高い場合には、処理はステップＳ１００４に進む。一方、ステップＳ１００１で求めた選択文字の画質がステップＳ１００２で取得した閾値以下の場合には、処理はステップＳ１００５に進む。
【００５６】
ステップＳ１００４では、評価部２０６は、認識文字は正しい認識結果であると判断し、該認識文字を、選択文字に対する最終的な文字認識結果の候補に決定する（認識結果の統合に用いる）と判断する。
【００５７】
一方、ステップＳ１００５では、評価部２０６は、認識文字は間違った認識結果であると判断し、該認識文字を、選択文字に対する最終的な文字認識結果の候補に決定しない（認識結果の統合に用いない）と判断する。
【００５８】
このように本実施形態によれば、文字の複雑さを考慮して、正しい認識結果が得られたと十分に判断できる画質の閾値を判断する。そのため、学習で使用したものとは異なる認識エンジンを用いて認識しても、正しい認識結果が得られたか否かの閾値を正しく求めることができる。そのため、正しい認識結果を統合に反映せずに破棄することがなくなる。したがって、学習で使用したものとは異なる認識エンジンを用いた場合であっても、少ない認識時間で文字を認識することができる。
【００５９】
［第４の実施形態］
図１では画像処理装置１００は撮影部１０１を内蔵しているが、撮影部１０１は画像処理装置１００の外部装置としても良い。この場合、画像処理装置１００は有線若しくは無線でもって撮影部１０１から撮像画像を取得する。また、このように撮影部１０１と画像処理装置１００とが通信を行う場合には、撮影部１０１と画像処理装置１００との間に１以上の装置を介在させても良い。このような場合、例えば、撮影部１０１が撮像した撮像画像は中間装置に対して送信し、画像処理装置１００は必要に応じて該中間装置から撮像画像を取得する。また、第１〜４の実施形態のそれぞれに係る構成の一部若しくは全部を、適宜組み合わせて使用しても良いし、選択的に使用しても良い。
【００６０】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６１】
２０１：入力部  ２０２：判定部  ２０３：同定部  ２０４：文字認識部  ２０５：算出部  ２０６：評価部  ２０７：統合部
【図１】
2018180606.tif 000003
【図２】
2018180606.tif 000004
【図３】
2018180606.tif 000005
【図４】
2018180606.tif 000006
【図５】
2018180606.tif 000007
【図６】
2018180606.tif 000008
【図７】
2018180606.tif 000009
【図８】
2018180606.tif 000010
【図９】
2018180606.tif 000011
【図１０】
2018180606.tif 000012