(57)【特許請求の範囲】
【請求項１】
文字認識の対象となる文字列の上下を検出する文字認識前処理装置において、
文字認識の対象となる文字列の画像を抽出する抽出手段と、
上記抽出手段の抽出した文字列画像を囲む最小矩形を設定する設定手段と、
上記設定手段の設定した矩形内における文字位置を特定する特定手段と、
上記特定手段の特定した文字位置毎に、上記矩形下線と文字部分との最小距離を検出するとともに、上記矩形上線と文字部分との最小距離を検出する検出手段と、
上記検出手段の検出した２種類の最小距離のそれぞれについて分散値を求めて、それに基づいて、上記抽出手段の抽出した文字列の上下を判定する判定手段とを備えることを、
特徴とする文字認識前処理装置。
【請求項２】
請求項１に記載の文字認識前処理装置において、
上記特定手段は、文字と文字との間に存在する空白を検出することで、文字位置を特定することを、
特徴とする文字認識前処理装置。
【請求項３】
請求項１に記載の文字認識前処理装置において、
上記特定手段は、上記設定手段の設定した矩形の規定する文字高さから文字幅を推定して、それを使って文字位置を特定することを、
特徴とする文字認識前処理装置。
【請求項４】
請求項１ないし３のいずれか１項に記載の文字認識前処理装置において、
上記判定手段は、文字属性により文字列の上下が決められないことがあることを考慮しつつ、文字列の上下を判定することを、
特徴とする文字認識前処理装置。
【請求項５】
請求項１ないし４のいずれか１項に記載の文字認識前処理装置において、
文字認識の対象となる画像が複数の文字列を記載するときに、上記判定手段の判定した文字列の上下情報から画像の上下を判定する第２の判定手段を備えることを、
特徴とする文字認識前処理装置。
【請求項６】
文字認識の対象となる文字列の上下を検出する文字認識前処理方法において、
文字認識の対象となる文字列の画像を抽出する第１の処理過程と、
第１の処理過程で抽出した文字列画像を囲む最小矩形を設定する第２の処理過程と、
第２の処理過程で設定した矩形内における文字位置を特定する第３の処理過程と、
第３の処理過程で特定した文字位置毎に、上記矩形下線と文字部分との最小距離を検出するとともに、上記矩形上線と文字部分との最小距離を検出する第４の処理過程と、
第４の処理過程で検出した２種類の最小距離のそれぞれについて分散値を求めて、それに基づいて、第１の処理過程で抽出した文字列の上下を判定する第５の処理過程とを備えることを、
特徴とする文字認識前処理方法。
【請求項７】
文字認識の対象となる文字列の上下を検出する文字認識前処理装置の実現に用いられるプログラムが記録されるプログラム記録媒体であって、
文字認識の対象となる文字列の画像を抽出する抽出処理と、
上記抽出処理で抽出した文字列画像を囲む最小矩形を設定する設定処理と、
上記設定処理で設定した矩形内における文字位置を特定する特定処理と、
上記特定処理で特定した文字位置毎に、上記矩形下線と文字部分との最小距離を検出するとともに、上記矩形上線と文字部分との最小距離を検出する検出処理と、
上記検出処理で検出した２種類の最小距離のそれぞれについて分散値を求めて、それに基づいて、上記抽出処理で抽出した文字列の上下を判定する判定処理とをコンピュータに実行させるプログラムが記録されることを、
特徴とするプログラム記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、文字認識の対象となる文字列の上下を検出する文字認識前処理装置及び方法と、その装置の実現に用いられるプログラムが記録されるプログラム記録媒体とに関し、特に、英文字などのような文字を処理対象とするときに、高速かつ高精度に文字列の上下を検出できるようにする文字認識前処理装置及び方法と、その装置の実現に用いられるプログラムが記録されるプログラム記録媒体とに関する。
【０００２】
原稿などに記載される文字を認識する場合には、先ず最初に、文字認識の対象となる文字列を切り出した後に、その文字列における文字の上下を検出し、その後に、それらの文字列から各文字を切り出して文字認識を行うという手順を踏む。
【０００３】
原稿などに記載される文字を高速かつ高精度に認識できるようにするためには、この文字列の上下の検出処理を高速かつ高精度に実行できる技術を構築していく必要がある。
【０００４】
【従来の技術】
文字列の上下を検出する方法として、従来では、▲１▼先ず最初に、文字列が正立しているものと見なして文字認識を行って、各文字の認識結果の評価値（点数）を取得して、それらの平均値などを算出することで総合的な評価値を算出し、▲２▼続いて、文字列が反転（１８０度回転）していると見なして文字認識を行って、各文字の認識結果の評価値を取得して、それらの平均値などを算出することで総合的な評価値を算出し、▲３▼続いて、この２つの総合評価値から高い文字認識を示す方を特定することで、文字列が正立しているのか反転しているのかを検出するという方法を用いている。
【０００５】
【発明が解決しようとする課題】
しかしながら、この従来技術に従うと、文字認識を使って文字列の上下を検出するという構成を採っていることから、ＣＰＵの負荷が大きいという問題点がある。
【０００６】
更に、文字認識の対象となる文字が英文字などである場合に、その検出精度が低いという問題点がある。
【０００７】
すなわち、英文字では、「Ｈ」や「Ｉ」や「Ｎ」や「Ｏ」や「Ｓ」や「Ｘ」や「Ｚ」で見られるように、１８０度回転しても同じ形（ほぼ同じ形）を示すものがあったり、また、「Ｍ」と「Ｗ」とで見られるように、１８０度回転した形が別の文字にかなり近い形を示すものがあるといった性質があり、これがために、文字列の上下を間違えても、それなりに高い文字認識結果が得られてしまうという性質がある。
【０００８】
これから、従来技術に従っていると、文字認識の対象となる文字がこのような性質を持つ英文字などのような場合に、文字列の上下の検出精度が低いという問題点がある。
【０００９】
本発明はかかる事情に鑑みてなされたものであって、高速かつ高精度に文字列の上下を検出できるようにする新たな文字認識前処理装置及び方法の提供と、その装置の実現に用いられるプログラムが記録される新たなプログラム記録媒体の提供とを目的とする。
【００１０】
【課題を解決するための手段】
図１に本発明の原理構成を図示する。
【００１１】
図中、１は本発明の文字認識前処理装置であって、文字認識の対象となる文字列の上下を検出するものである。
【００１２】
本発明の文字認識前処理装置１は、抽出手段１０と、設定手段１１と、特定手段１２と、検出手段１３と、第１の判定手段１４と、第２の判定手段１５とを備える。
【００１３】
この抽出手段１０は、文字認識の対象となる文字列の画像を抽出する。設定手段１１は、抽出手段１０の抽出する文字列画像を囲む最小矩形を設定する。特定手段１２は、設定手段１１の設定する最小矩形内における各文字の文字位置を特定する。
【００１４】
検出手段１３は、特定手段１２の特定する文字位置毎に、設定手段１１の設定する最小矩形の下線と文字部分との最小距離を検出するとともに、その最小矩形の上線と文字部分との最小距離を検出する。
【００１５】
第１の判定手段１４は、検出手段１３の検出する最小矩形下線からの最小距離の分散値を求めるとともに、検出手段１３の検出する最小矩形上線からの最小距離の分散値を求めて、それらの分散値に基づいて、抽出手段１０の抽出する文字列の上下を判定する。
【００１６】
第２の判定手段１５は、文字認識の対象となる画像が複数の文字列を記載するときに、第１の判定手段１４の判定する文字列の上下情報から画像の上下を判定する。
【００１７】
ここで、本発明の文字認識前処理装置１の持つ機能は具体的にはプログラムで実現されるものであり、このプログラムは、フロッピィディスクなどに格納されたり、サーバなどのディスクなどに格納され、それらから本発明の文字認識前処理装置１にインストールされてメモリ上で動作することで、本発明を実現することになる。
【００１８】
このように構成される本発明の文字認識前処理装置１では、抽出手段１０が文字認識の対象となる文字列の画像を抽出すると、設定手段１１は、その抽出された文字列画像を囲む最小矩形を設定する。
【００１９】
この設定結果を受けて、特定手段１２は、文字と文字との間に存在する空白を検出することで、設定された最小矩形内における各文字の文字位置を特定したり、設定された最小矩形の規定する文字高さから文字幅を推定して、それを使って、設定された最小矩形内における各文字の文字位置を特定することなどにより、設定された最小矩形内における各文字の文字位置を特定する。
【００２０】
この特定結果を受けて、検出手段１３は、特定された文字位置毎に、設定された最小矩形の下線と文字部分との最小距離を検出するとともに、その最小矩形の上線と文字部分との最小距離を検出する。
【００２１】
この検出結果を受けて、第１の判定手段１４は、文字属性により文字列の上下が決められないことがあることを考慮しつつ、検出された最小矩形下線からの最小距離の分散値を求めるとともに、検出された最小矩形上線からの最小距離の分散値を求めて、それらの分散値に基づいて、例えば、分散値の大きい方を文字列の上として判定することで、抽出された文字列の上下を判定する。
【００２２】
そして、この判定結果を受けて、第２の判定手段１５は、文字認識の対象となる画像が複数の文字列を記載するときに、第１の判定手段１４の判定する文字列の上下情報から画像の上下を判定する。
【００２３】
このように、本発明の文字認識前処理装置１では、英文字などのように、文字列の下側に形成される包絡線の変動と、文字列の上側に形成される包絡線の変動とに差異があるような文字を認識対象とする場合に、文字認識を使わずに、その２つの変動を検出することで文字列の上下を検出する構成を採ることから、小さなＣＰＵ負荷で文字列の上下を検出できるようになる。
【００２４】
そして、英文字などのように、１８０度回転した形が別の文字にかなり近い形を示すものがある性質を持つ文字を認識対象とする場合に、高い精度でもって文字列の上下を検出できるようになる。
【００２５】
【発明の実施の形態】
以下、実施の形態に従って本発明を詳細に説明する。
【００２６】
図２に、本発明を具備する名刺自動整理装置２０の一実施例を図示する。
【００２７】
この本発明を具備する名刺自動整理装置２０は、イメージスキャナ４０により読み取られる図３に示すような英文字で記載される名刺を文字認識し、その認識結果に従って図４に示すような名刺データベースを作成することで、名刺を自動整理するものである。
【００２８】
名刺自動整理装置２０は、この処理を実現するために、画像入力プログラム２１と、画像メモリ２２と、名刺画像抽出プログラム２３と、傾き補正プログラム２４と、上下判定プログラム２５と、第２の上下判定プログラム２６と、文字認識用辞書２７と、文字認識プログラム２８と、名刺整理用辞書２９と、名刺整理プログラム３０と、名刺データベース３１とを備える。
【００２９】
この画像入力プログラム２１は、イメージスキャナ４０により読み取られる画像を入力する。画像メモリ２２は、画像入力プログラム２１の入力する画像を格納する。
【００３０】
名刺画像抽出プログラム２３は、イメージスキャナ４０に載置される名刺が複数となることがあることを考慮して、図５に示すように、背景と分離することで、イメージスキャナ４０の読み取った画像から各名刺画像（図中の▲１▼〜▲９▼に示すもの）を抽出する処理を行う。
【００３１】
傾き補正プログラム２４は、名刺画像抽出プログラム２３の抽出した各名刺画像を処理対象として、図６に示すように、名刺に記載される文字列の文字の並び方向が文字の認識方向と一致することになるようにと、名刺画像を回転させる処理を行う。
【００３２】
上下判定プログラム２５は、傾き補正プログラム２４により姿勢の正規された各名刺画像を処理対象として、名刺画像に含まれる文字列の画像を抽出し、それらの各文字列の上下を判定することで、名刺画像が正立しているのか反転しているのかを判断して、反転している場合には正立するようにと、名刺画像を１８０度回転させる処理を行う。
【００３３】
第２の上下判定プログラム２６は、上下判定プログラム２５が名刺画像の正立反転を判定できないときに起動されて、文字認識手法を使って、名刺画像が正立しているのか反転しているのかを判断して、反転している場合には正立するようにと、名刺画像を１８０度回転させる処理を行う。
【００３４】
文字認識用辞書２７は、名刺に記載される可能性のある氏名や会社名や所属名や職位名や住所などの表記の一覧を管理する。
【００３５】
文字認識プログラム２８は、上下判定プログラム２５や第２の上下判定プログラム２６により正立された名刺画像を処理対象として、文字認識用辞書２７の辞書データを参照しつつ、名刺に記載される文字を認識する。
【００３６】
名刺整理用辞書２９は、氏名や会社名や所属名や職位名や住所などの表記の持つキーワードや、それが名刺に記載されるときの特徴情報（記載位置など）を、それらのデータ項目毎に管理する。
【００３７】
名刺整理プログラム３０は、名刺整理用辞書２９の辞書データを参照しつつ、文字認識プログラム２８により認識された文字のデータ項目（氏名であるのか、会社名であるのかというデータ項目）を決定する。
【００３８】
名刺データベース３１は、名刺整理プログラム３０により登録され、図４に示すデータ構造を有して、文字認識プログラム２８により認識された名刺の情報を管理する。
【００３９】
ここで、画像入力プログラム２１や名刺画像抽出プログラム２３や傾き補正プログラム２４や上下判定プログラム２５や第２の上下判定プログラム２６や文字認識プログラム２８や名刺整理プログラム３０は、フロッピィディスクや回線などを介してインストールされて、メモリ上で動作することになる。
【００４０】
図７及び図８に、傾き補正プログラム２４の実行する処理フローの一実施例、図９及び図１０に、上下判定プログラム２５の実行する処理フローの一実施例を図示する。次に、これらの処理フローに従って、このように構成される名刺自動整理装置２０の実行する処理について詳細に説明する。
【００４１】
傾き補正プログラム２４は、名刺画像抽出プログラム２３の処理が終了することで起動されると、名刺画像抽出プログラム２３の抽出した各名刺画像を処理対象として、図７及び図８の処理フローを実行することで、名刺に記載される文字列の文字の並びが文字の認識方向（以下、説明の便宜上、Ｘ軸方向とし、これに直交する軸をＹ軸とする）と一致することになるようにと、名刺画像を回転させる処理を行う。
【００４２】
すなわち、傾き補正プログラム２４は、名刺画像抽出プログラム２３の抽出した名刺画像を１つ選択すると、図７及び図８の処理フローに示すように、先ず最初に、ステップ１で、回転角度を示す変数θに０度を代入する。
【００４３】
続いて、ステップ２で、選択した名刺画像のＸ軸周辺分布（Ｘ軸に射影した画素数のヒストグラム分布）と、Ｙ軸周辺分布（Ｙ軸に射影した画素数のヒストグラム分布）とを生成し、その分散値を算出して、大きい方の分散値（周辺分布の起伏が大きい程、分散値は大きくなる）を特定するとともに、その大きい方の分散値を持つ周辺分布の軸を作成軸として決定する。
【００４４】
すなわち、図１１に示すように、選択した名刺画像のＸ軸周辺分布とＹ軸周辺分布とを生成し、その分散値を算出して、大きい方の分散値を特定するとともに、その大きい方の分散値を持つ周辺分布の軸を作成軸として決定するのである。この図の例では、Ｘ軸を周辺分布の作成軸として決定することになる。
【００４５】
続いて、ステップ３で、「回転角度」という変数に“θ”を代入するとともに、「最大分散値」という変数にステップ２で特定した分散値を代入する。続いて、ステップ４で、変数θの値を“θ＋Δθ（Δθ＞０）”だけ増加させ、続くステップ５で、変数θの値が規定の最大値θmax(例えば１０度）を超えたのか否かを判断する。
【００４６】
この判断処理で、変数θの値が最大値θmax を超えていないことを判断するときには、ステップ６に進んで、選択した名刺画像をθ度（θ＞０）回転させる。続いて、ステップ７で、その回転した名刺画像の作成軸に対する周辺分布（Ｘ軸が作成軸ならばＸ軸周辺分布、Ｙ軸が作成軸ならばＹ軸周辺分布）を生成して、その分散値を算出する。
【００４７】
続いて、ステップ８で、ステップ７で算出した分散値が変数「最大分散値」の分散値よりも大きいのか否かを判断して、大きくないことを判断するときには、ステップ４に戻り、大きいことを判断するときには、ステップ９に進んで、変数「回転角度」に変数θの値を代入するとともに、変数「最大分散値」にステップ７で算出した分散値を代入してから、ステップ４に戻る。
【００４８】
このようにして、ステップ４ないしステップ９の処理を繰り返し実行していくときに、ステップ５で、変数θの値が最大値θmax を超えたことを判断するときには、ステップ１０（図８の処理フロー）に進んで、変数θの値を回転開始角度である０度に戻す。
【００４９】
続いて、ステップ１１で、変数θの値を“θ−Δθ（Δθ＞０）”だけ減少させ、続くステップ１２で、変数θの値の絶対値が規定の最大値θmax を超えたのか否かを判断する。
【００５０】
このステップ１２の判断処理で、変数θの値の絶対値が最大値θmax を超えていないことを判断するときには、ステップ１３に進んで、選択した名刺画像をθ度（θ＜０）回転させる。続いて、ステップ１４、その回転した名刺画像の作成軸に対する周辺分布を生成して、その分散値を算出する。
【００５１】
続いて、ステップ１５で、ステップ１４で算出した分散値が変数「最大分散値」の分散値よりも大きいのか否かを判断して、大きくないことを判断するときには、ステップ１１に戻り、大きいことを判断するときには、ステップ１６に進んで、変数「回転角度」に変数θの値を代入するとともに、変数「最大分散値」にステップ１４で算出した分散値を代入してから、ステップ１１に戻る。
【００５２】
このようにして、ステップ１１ないしステップ１６の処理を繰り返して実行していくときに、ステップ１２で、変数θの値の絶対値が最大値θmax を超えたことを判断するときには、ステップ１７に進んで、選択した名刺画像を変数「回転角度」の角度だけ回転させる。
【００５３】
すなわち、選択した名刺画像を周辺分布の分散値が最大値となる角度だけ回転させることで、名刺に記載される文字列の文字の並び方向が文字の認識方向と一致する方向になるようにと、選択した名刺画像を回転させるか、あるいは、図１２に示すように、名刺に記載される文字列の文字の並び方向が文字の認識方向に直交する方向と一致することになるようにと、選択した名刺画像を回転させるのである。
【００５４】
なお、最大分散値を示す回転画像（ステップ６／ステップ１３で算出する回転画像）を残して保持していくという構成を採る場合には、このステップ１７で行う回転処理は不要なものとなる。
【００５５】
続いて、ステップ１８で、周辺分布の作成軸がＹ軸であったのか否かを判断して、Ｙ軸であったことを判断するときには、そのまま処理を終了し、Ｙ軸ではなくてＸ軸であったことを判断するときには、ステップ１９に進んで、選択した名刺画像を９０度回転させてから、処理を終了する。
【００５６】
すなわち、図１２に示すように、Ｘ軸周辺分布の起伏がＹ軸周辺分布の起伏よりも大きいことで、Ｘ軸周辺分布の示す分散値がＹ軸周辺分布の示す分散値よりも大きくなり、これにより、Ｘ軸が周辺分布の作成軸として設定される場合には、名刺に記載される文字列の文字の並び方向が文字の認識方向に直交する方向と一致することになるので、選択した名刺画像を９０度回転させることで、名刺に記載される文字列の文字の並び方向が文字の認識方向と一致する方向になるようにと、選択した名刺画像を９０度回転させるのである。
【００５７】
このようにして、傾き補正プログラム２４は、名刺画像抽出プログラム２３の抽出した各名刺画像を処理対象として、図６に示したように、名刺に記載される文字列の文字の並び方向が文字の認識方向と一致することになるようにと、名刺画像を回転させる処理を行うのである。
【００５８】
次に、上下判定プログラム２５の実行する処理について説明する。
【００５９】
傾き補正プログラム２４により得られる名刺画像は、図１３に示すように、正立している場合と反転（１８０度回転している）している場合とがある。そこで、上下判定プログラム２５は、傾き補正プログラム２４の処理が終了することで起動されると、図９及び１０の処理フローに従って、傾き補正プログラム２４により得られる名刺画像が正立しているのか反転しているのを判定して、反転している場合には、正立するようにと１８０度回転させる処理を行う。
【００６０】
すなわち、上下判定プログラム２５は、傾き補正プログラム２４の処理が終了することで起動されると、図９及び１０の処理フローに示すように、先ず最初に、ステップ１で、「正立」という変数に“０”、「反転」という変数に“０”、「不定」という変数に“０”を代入する。
【００６１】
続いて、ステップ２で、処理対象として選択した名刺画像（傾き補正プログラム２４により得られる名刺画像の中から順番に１つずつ選択する）に対して、画像処理で用いられているラベリング処理を使って、連結する黒画素（文字部分）に同じラベルを割り付けていくことで文字部分を抽出するとともに、規定の距離離れていない文字部分を同じ文字列に属するものとしてマージしていくことで、その選択した名刺画像に記載される文字列を抽出する。
【００６２】
すなわち、図１４に示す名刺画像で説明するならば、ラベリング処理を使って、図中に示す四角（後述する最小矩形）で囲われる８つの文字列を抽出するのである。
【００６３】
続いて、ステップ３で、ステップ２で抽出した全ての文字列を選択したのか否かを判断して、全ての文字列を選択していないことを判断するときには、ステップ４に進んで、ステップ２で抽出した文字列の中から未選択の文字列を１つ選択する。続いて、ステップ５で、その選択した文字列を囲む最小矩形を設定する。すなわち、図１４に示すように、選択した文字列を囲む最小矩形を設定するのである。
【００６４】
続いて、ステップ６で、設定した最小矩形内における各文字の文字位置を特定する。すなわち、図１５（ａ）の例で説明するならば、「Ｈ」、「ｏ」、「ｗ」、「ａ」、「ｒ」、「ｄ」、「Ｂ」、「ｒ」、「ｏ」、「ｗ」、「ｎ」という各文字の文字位置を特定するのである。
【００６５】
この文字位置の特定処理は、文字と文字との間に存在する空白を使って行うことになる。このとき、文字と文字との間に空白が存在しないこともあるので、他のものよりも長い文字となるものについては、設定した最小矩形の高さ（文字の並び方向と直交する方向の長さとなる）を文字の高さとして見なし、それから１文字の幅を推定して、その推定値を使って強制的な切り出しを行ったり、最も出現回数の多い文字長さを１文字の幅と決定して、その決定値を使って強制的な切り出しを行うことなどにより、各文字の文字位置を特定するように処理する。
【００６６】
続いて、ステップ７で、ステップ６で特定した各文字位置で、例えば５本といった等間隔の複数のサンプリング線を設定し、これらのサンプリング線上における最小矩形下線と文字部分との距離を検出して、その中の最小距離を特定することで、ステップ６で特定した各文字位置毎に、最小矩形下線と文字部分との最小距離を算出する。そして、それらの最小距離の分散値を算出する。
【００６７】
すなわち、図１５（ｂ）の例で説明するならば、「Ｈ」の文字部分と最小矩形下線との最小距離ＸH 、「ｏ」の文字部分と最小矩形下線との最小距離Ｘo 、「ｗ」の文字部分と最小矩形下線との最小距離Ｘw 、「ａ」の文字部分と最小矩形下線との最小距離Ｘa 、「ｒ」の文字部分と最小矩形下線との最小距離Ｘr 、「ｄ」の文字部分と最小矩形下線との最小距離Ｘd 、「Ｂ」の文字部分と最小矩形下線との最小距離ＸB 、「ｒ」の文字部分と最小矩形下線との最小距離Ｘr 、「ｏ」の文字部分と最小矩形下線との最小距離Ｘo 、「ｗ」の文字部分と最小矩形下線との最小距離Ｘw 、「ｎ」の文字部分と最小矩形下線との最小距離Ｘn を算出して、これらの最小距離の分散値を算出するのである。
【００６８】
このようにして算出する分散値は、最小距離の変動が少ない場合には小さな値を示し、最小距離の変動が大きい場合には大きな値を示すことになる。
【００６９】
続いて、ステップ８で、ステップ６で特定した各文字位置で、ステップ７で設定したサンプリング線上における最小矩形上線と文字部分との距離を検出して、その中の最小距離を特定することで、ステップ６で特定した各文字位置毎に、最小矩形上線と文字部分との最小距離を算出する。そして、それらの最小距離の分散値を算出する。
【００７０】
すなわち、図１５（ｂ）の例で説明するならば、「Ｈ」の文字部分と最小矩形上線との最小距離ＸH 、「ｏ」の文字部分と最小矩形上線との最小距離Ｘo 、「ｗ」の文字部分と最小矩形上線との最小距離Ｘw 、「ａ」の文字部分と最小矩形上線との最小距離Ｘa 、「ｒ」の文字部分と最小矩形上線との最小距離Ｘr 、「ｄ」の文字部分と最小矩形上線との最小距離Ｘd 、「Ｂ」の文字部分と最小矩形上線との最小距離ＸB 、「ｒ」の文字部分と最小矩形上線との最小距離Ｘr 、「ｏ」の文字部分と最小矩形上線との最小距離Ｘo 、「ｗ」の文字部分と最小矩形上線との最小距離Ｘw 、「ｎ」の文字部分と最小矩形上線との最小距離Ｘn を算出して、これらの最小距離の分散値を算出するのである。
【００７１】
このようにして算出する分散値は、最小距離の変動が少ない場合には小さな値を示し、最小距離の変動が大きい場合には大きな値を示すことになる。
【００７２】
続いて、ステップ９で、ステップ７で算出した分散値と、ステップ８で算出した分散値とに有為な差があるのか否かを判断して、有為な差がないことを判断するときには、ステップ１０に進んで、変数「不定」の値を１つインクリメントしてから、次の文字列の処理に進むべくステップ３に戻る。
【００７３】
すなわち、文字列を構成する英文字が全て大文字である場合には、図１６（ｂ）に示すように、ステップ７で算出する分散値（最小矩形下線と各文字部分との最小距離の示す分散値）と、ステップ８で算出する分散値（最小矩形上線と各文字部分との最小距離の示す分散値）とは概略同じ大きさとなる。このような場合には、変数「不定」の値を１つインクリメントするのである。
【００７４】
一方、ステップ９で、ステップ７で算出した分散値と、ステップ８で算出した分散値とに有為な差があることを判断するときには、ステップ１１（図１０の処理フロー）に進んで、ステップ８で算出した分散値の方が大きいのか否かを判断して、大きいことを判断するときには、ステップ１２に進んで、変数「正立」の値を１つインクリメントしてから、次の文字列の処理に進むべくステップ３に戻る。
【００７５】
すなわち、文字列を構成する英文字に小文字が含まれる場合にあって、文字列が正立している場合には、最小矩形の下線が文字のベースラインとなっていることで、図１６（ａ)(ｃ)(ｄ）に示すように、ステップ８で算出する分散値（最小矩形上線と各文字部分との最小距離の示す分散値）の方が、ステップ７で算出する分散値（最小矩形下線と各文字部分との最小距離の示す分散値）よりも大きくなるので、このような場合には、変数「正立」の値を１つインクリメントするのである。
【００７６】
一方、ステップ１１で、ステップ８で算出した分散値の方が小さいことを判断するときには、ステップ１３に進んで、変数「反転」の値を１つインクリメントしてから、次の文字列の処理に進むべくステップ３に戻る。
【００７７】
すなわち、文字列が反転（１８０度回転）していると、最小矩形の上線が文字のベースラインとなっていることで、ステップ８で算出する分散値（最小矩形上線と各文字部分との最小距離の示す分散値）の方が、ステップ７で算出する分散値（最小矩形下線と各文字部分との最小距離の示す分散値）よりも小さくなるので、このような場合には、変数「反転」の値を１つインクリメントするのである。
【００７８】
このようにして、ステップ３ないしステップ１３の処理を繰り返し実行していくときに、ステップ３で、名刺画像の持つ全ての文字列に対しての処理が終了したことを判断すると、ステップ１４に進んで、変数「正立」のカウント値と、変数「反転」のカウント値とに有為な差があるのか否かを判断して、有為な差があることを判断するときには、ステップ１５に進んで、変数「正立」のカウント値の方が大きいのか否かを判断する。
【００７９】
この判断処理により、変数「正立」のカウント値の方が大きいことを判断するときには、処理対象として選択した名刺画像が正立している状態（図１３（ａ）に示した状態）にあることを判断し、そのまま文字認識できる状態にあることに対応して、ステップ１６に進んで、処理対象として選択した名刺画像の文字認識を指示すべく、文字認識プログラム２８を起動していくように処理する。
【００８０】
一方、ステップ１５で、変数「正立」のカウント値の方が小さいことを判断するとき、すなわち、変数「反転」のカウント値の方が大きいことを判断するときには、処理対象として選択した名刺画像が反転している状態（図１３（ｂ）に示した状態）にあることを判断して、ステップ１７に進んで、処理対象として選択した名刺画像を１８０度回転させることで正立させてから、その正立させた名刺画像の文字認識を指示すべく、文字認識プログラム２８を起動していくように処理する。
【００８１】
一方、ステップ１４で、変数「正立」のカウント値と、変数「反転」のカウント値とに有為な差がないことを判断するときには、文字列を構成する英文字が全て大文字であることなどにより、文字列が正立しているのか反転しているのかを判定できない状態にあることを判断して、ステップ１８に進んで、第２の上下判定プログラム２６を起動していくように処理する。
【００８２】
このようにして、上下判定プログラム２５は、傾き補正プログラム２４により姿勢の正規された名刺画像を処理対象として、名刺画像に含まれる文字列を抽出し、それらの文字列を囲む最小矩形と文字部分との最小距離の動きから、文字列のベースラインがどちらにあるのかを検出することで、名刺画像が正立しているのか反転しているのかを判断して、反転している場合には正立するようにと、名刺画像を１８０度回転させる処理を行うのである。
【００８３】
第２の上下判定プログラム２６は、上下判定プログラム２５が名刺画像の正立反転を判定できないことで起動されると、上下判定プログラム２５により抽出された各文字列に対して、それが正立しているものと見なして文字認識を行って、各認識文字の評価値を得てその平均値（あるいは合計値など）を算出するとともに、それが反転しているものと見なして文字認識を行って、各認識文字の評価値を得てその平均値（あるいは合計値など）を算出する。
【００８４】
そして、その２つの平均値（あるいは合計値など）から各文字列の正立反転を判断し、名刺画像に記載される各文字列についてその判断結果を集計することで、名刺画像が正立しているのか反転しているのかを判定して、名刺画像が正立していることを判定するときには、名刺画像の文字認識を指示すべく文字認識プログラム２８を起動し、名刺画像が反転していることを判定するときには、名刺画像を１８０度回転させることで正立させてから、名刺画像の文字認識を指示すべく文字認識プログラム２８を起動する。
【００８５】
このようにして、上下判定プログラム２５や第２の上下判定プログラム２６から起動されると、文字認識プログラム２８は、名刺に記載される可能性のある氏名や会社名や所属名や職位名や住所の表記の一覧を管理する文字認識用辞書２７の辞書データを参照しつつ、上下判定プログラム２５や第２の上下判定プログラム２６により正立された各名刺画像を処理対象として、名刺に記載される文字を認識する。
【００８６】
この文字認識結果を受けて、名刺整理プログラム３０は、氏名や会社名や所属名や職位名や住所などの表記の持つキーワードや、それが名刺に記載されるときの特徴情報（記載位置など）を管理する名刺整理用辞書２９の辞書データを参照しつつ、文字認識プログラム２８により認識された文字のデータ項目を決定して、それに従って文字認識プログラム２８により認識された文字を名刺データベース３１に登録することで、図４に示すようなデータ構造を持つ名刺データベース３０に構築する。
【００８７】
例えば、manager やpresident やdirector等のキーワードが含まれている場合には、それは職位（役職）であると判断して、名刺データベース３１に職位を登録したり、LIMITED やLTD やINC 等のキーワードが含まれている場合には、それは会社名であると判断して、名刺データベース３１に会社名を登録するのである。
【００８８】
図示実施例に従って本発明を説明したが、本発明はこれに限定されるものではない。例えば、実施例では名刺を処理対象として本発明について具体的に説明したが、本発明はその適用が名刺に記載される文字列に限られるものではない。
【００８９】
また、実施例では英文字を認識対象として本発明について具体的に説明したが、本発明はその適用が英文字に限られるものではない。
【００９０】
また、実施例では、分散値を使って、最小矩形線と各文字部分との最小距離の示す変動を検出するという構成を採ったが、その他の統計値を用いることも可能である。
【００９１】
【発明の効果】
以上説明したように、本発明では、英文字などのように、文字列の下側に形成される包絡線の変動と、文字列の上側に形成される包絡線の変動とに差異があるような文字を認識対象とする場合に、文字認識を使わずに、その２つの変動を検出することで文字列の上下を検出する構成を採ることから、小さなＣＰＵ負荷で文字列の上下を検出できるようになる。
【００９２】
そして、英文字などのように、１８０度回転した形が別の文字にかなり近い形を示すものがある性質を持つ文字を認識対象とする場合に、高い精度でもって文字列の上下を検出できるようになる。
【図面の簡単な説明】
【図１】本発明の原理構成図である。
【図２】本発明の一実施例である。
【図３】名刺の説明図である。
【図４】名刺データベースの説明図である。
【図５】名刺画像抽出プログラムの処理説明図である。
【図６】傾き補正プログラムの処理説明図である。
【図７】傾き補正プログラムの処理フローである。
【図８】傾き補正プログラムの処理フローである。
【図９】上下判定プログラムの処理フローである。
【図１０】上下判定プログラムの処理フローである。
【図１１】傾き補正プログラムの処理説明図である。
【図１２】傾き補正プログラムの処理説明図である。
【図１３】名刺画像の説明図である。
【図１４】文字列の抽出の説明図である。
【図１５】上下判定プログラムの処理説明図である。
【図１６】上下判定プログラムの処理説明図である。
【符号の説明】
１    文字認識前処理装置
１０  抽出手段
１１  設定手段
１２  特定手段
１３  検出手段
１４  第１の判定手段
１５  第２の判定手段
【図１】
0003854024.tif 000002
【図２】
0003854024.tif 000003
【図３】
0003854024.tif 000004
【図４】
0003854024.tif 000005
【図５】
0003854024.tif 000006
【図６】
0003854024.tif 000007
【図７】
0003854024.tif 000008
【図８】
0003854024.tif 000009
【図９】
0003854024.tif 000010
【図１０】
0003854024.tif 000011
【図１１】
0003854024.tif 000012
【図１２】
0003854024.tif 000013
【図１３】
0003854024.tif 000014
【図１４】
0003854024.tif 000015
【図１５】
0003854024.tif 000016
【図１６】
0003854024.tif 000017