(57)【特許請求の範囲】
【請求項１】
複数行に配列された文字列の濃淡画像を、文字認識のために処理する方法であって、
前記濃淡画像中の文字列が分布する範囲の少なくとも一部をサーチ領域とし、
画像内の座標を表す２軸のうちの行の並びに対応する方の軸に沿って並ぶ複数の点毎に、その点を起点に前記サーチ領域を横切る複数のラインを設定して、各ラインにつきそれぞれサーチ領域内の当該ラインにおける画素データを累計し、
前記ラインの起点となった点毎にその点につき設定されたライン群における累計値の最大値を求めると共に、各点毎に求めた最大値をそれぞれの点の並びに従って配列した場合に生じる分布パターンにおける極大値を少なくとも１つ特定し、
前記特定された極大値に相当する累計値が得られたラインを文字列の間を通るラインとして、このラインに基づき前記画像中の文字列を行毎に検出する、
ことを特徴とする文字認識のための画像処理方法。
【請求項２】
複数行に配列された文字列の濃淡画像を、文字認識のために処理する方法であって、
前記濃淡画像中の文字列が分布する範囲の少なくとも一部をサーチ領域とし、
画像内の座標を表す２軸のうちの行の並びに対応する方の軸に沿って並ぶ複数の点毎に、その点を起点に前記サーチ領域を横切る複数のラインを設定して、各ラインにつきそれぞれサーチ領域内の当該ラインにおける画素データを累計し、
前記ラインの起点となった点毎にその点につき設定されたライン群における累計値の最小値を求めると共に、各点毎に求めた最小値をそれぞれの点の並びに従って配列した場合に生じる分布パターンにおける極小値を少なくとも１つ特定し、
前記特定された極小値に相当する累計値が得られたラインを文字列の間を通るラインとして、このラインに基づき前記画像中の文字列を行毎に検出する、
ことを特徴とする文字認識のための画像処理方法。
【請求項３】
請求項１または２に記載された方法において、
前記文字列の間を通るラインにより検出された文字列毎に、前記画像内の座標を表す２軸のうちの前記行の並びに対応しない方の軸に当該文字列の画像を投影する処理と、その投影結果に基づき当該文字列に含まれる文字を個別に検出する処理とを、さらに実行する、文字認識のための画像処理方法。
【請求項４】
請求項１または２に記載された方法において、
前記文字列の間を通るラインにより検出された文字列毎に、その検出に用いられたラインが前記画像内の座標を表す２軸のうちの前記行の並びに対応しない方の軸に沿うように当該文字列の画像を回転補正する処理と、補正後の画像を前記行の並びに対応しない方の軸に投影する処理と、その投影結果に基づき当該文字列に含まれる文字を個別に検出する処理とを、さらに実行する、文字認識のための画像処理方法。
【請求項５】
請求項１または２に記載された方法において、
前記画像中の文字列を行毎に検出する処理では、前記文字列の間を通るラインが前記画像内の座標を表す２軸のうちの前記行の並びに対応しない方の軸に沿うように処理対象の画像を回転補正してから、補正後の画像における前記文字列の間を通るラインに基づき行毎の文字列を検出し、
前記文字列の間を通るラインにより検出された文字列毎に、前記行の並びに対応しない方の軸に当該文字列の画像を投影する処理と、その投影結果に基づき当該文字列内に含まれる文字を個別に検出する処理とを、さらに実行する、文字認識のための画像処理方法。
【請求項６】
文字列の撮像により生成された濃淡画像を認識対象として入力して、当該画像中の文字列内の個々の文字を切り出した後に、切り出された文字をそれぞれあらかじめ登録されたモデルと照合して各文字を認識する文字認識装置において、
認識対象の濃淡画像にサーチ領域を設定する領域設定手段と、
画像内の座標を表す２軸のうちの一方に沿って並ぶ複数の点毎に、その点を起点に前記サーチ領域を横切る複数のラインを設定して、各ラインにつきそれぞれサーチ領域内の当該ラインにおける画素データを累計する累計手段と、
前記ラインの起点となった点毎にその点につき設定されたライン群における累計値の最大値を求めると共に、各点毎に求めた最大値をそれぞれの点の並びに従って配列した場合に生じる分布パターンにおける極大値を特定する特定手段と、
前記特定手段により特定された極大値に相当する累計値が得られたラインに基づき、前記画像中の文字列を行毎に検出する文字列検出手段と、
前記文字列検出手段により検出された文字列毎に、その文字列に含まれる文字を個別に切り出して前記モデルとの照合処理を実行する文字認識手段とを、
具備する文字認識装置。
【請求項７】
文字列の撮像により生成された濃淡画像を認識対象として入力して、当該画像中の文字列内の個々の文字を切り出した後に、切り出された文字をそれぞれあらかじめ登録されたモデルと照合して各文字を認識する文字認識装置において、
認識対象の濃淡画像にサーチ領域を設定する領域設定手段と、
画像内の座標を表す２軸のうちの一方に沿って並ぶ複数の点毎に、その点を起点に前記サーチ領域を横切る複数のラインを設定して、各ラインにつきそれぞれサーチ領域内の当該ラインにおける画素データを累計する累計手段と、
前記ラインの起点となった点毎にその点につき設定されたライン群における累計値の最小値を求めると共に、各点毎に求めた最小値をそれぞれの点の並びに従って配列した場合に生じる分布パターンにおける極小値を特定する特定手段と、
前記特定手段により特定された極小値に相当する累計値が得られたラインに基づき、前記画像中の文字列を行毎に検出する文字列検出手段と、
前記文字列検出手段により検出された文字列毎に、その文字列に含まれる文字を個別に切り出して前記モデルとの照合処理を実行する文字認識手段とを、
具備する文字認識装置。
【請求項８】
コンピュータを、文字列の撮像により生成されて当該コンピュータに入力された濃淡画像から、当該画像中の文字列内の個々の文字を切り出した後に、切り出された文字をそれぞれあらかじめ登録されたモデルと照合して各文字を認識する文字認識装置として動かすためのプログラムであって、
認識対象の濃淡画像にサーチ領域を設定する領域設定手段、
画像内の座標を表す２軸のうちの一方に沿って並ぶ複数の点毎に、その点を起点に前記サーチ領域を横切る複数のラインを設定して、各ラインにつきそれぞれサーチ領域内の当該ラインにおける画素データを累計する累計手段、
前記ラインの起点となった点毎にその点につき設定されたライン群における累計値の最大値を求めると共に、各点毎に求めた最大値をそれぞれの点の並びに従って配列した場合に生じる分布パターンにおける極大値を特定する特定手段、
前記特定手段により特定された極大値に相当する累計値が得られたラインに基づき、前記画像中の文字列を行毎に検出する文字列検出手段、
前記文字列検出手段により検出された文字列毎に、その文字列に含まれる文字を個別に切り出して前記モデルとの照合処理を実行する文字認識手段、
の各手段の機能を前記コンピュータに付与する、文字認識用のプログラム。
【請求項９】
コンピュータを、文字列の撮像により生成されて当該コンピュータに入力された濃淡画像から、当該画像中の文字列内の個々の文字を切り出した後に、切り出された文字をそれぞれあらかじめ登録されたモデルと照合して各文字を認識する文字認識装置として動かすためのプログラムであって、
認識対象の濃淡画像にサーチ領域を設定する領域設定手段、
画像内の座標を表す２軸のうちの一方に沿って並ぶ複数の点毎に、その点を起点に前記サーチ領域を横切る複数のラインを設定して、各ラインにつきそれぞれサーチ領域内の当該ラインにおける画素データを累計する累計手段、
前記ラインの起点となった点毎にその点につき設定されたライン群における累計値の最小値を求めると共に、各点毎に求めた最小値をそれぞれの点の並びに従って配列した場合に生じる分布パターンにおける極小値を特定する特定手段、
前記特定手段により特定された極小値に相当する累計値が得られたラインに基づき、前記画像中の文字列を行毎に検出する文字列検出手段、
前記文字列検出手段により検出された文字列毎に、その文字列に含まれる文字を個別に切り出して前記モデルとの照合処理を実行する文字認識手段、
の各手段の機能を前記コンピュータに付与する、文字認識用のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理による文字認識処理に関するもので、特に、複数行に配列された文字列の濃淡画像から各行の文字列を個別に検出するための方法、およびこの方法が適用された文字認識装置に関する。
【背景技術】
【０００２】
文字認識処理では、一般に、文字列の撮像により生成された濃淡画像から個々の文字を切り出し、切り出された文字毎に、各種文字モデルを用いたマッチング処理（モデルマッチング）を実施して文字列の内容を認識する。
【０００３】
文字列の画像から個々の文字を切り出すには、まず、画像内の座標を表す２軸のうちの文字列の長さ方向（文字が並ぶ方向を指す。）に直交する軸への画像投影処理を行い、生成された投影パターンから、各行の文字列に対応する範囲を行毎に検出する（以下、この検出処理を「行の切り分け処理」という。）。さらに、抽出された範囲毎に、文字列に沿う軸への画像投影処理を行い、生成された投影パターンから、個々の文字に対応する領域（以下、「文字領域」という。）を文字毎に検出する（たとえば特許文献１，２を参照。）。
【０００４】
具体的に、画像の横方向の軸をｘ軸とし、縦方向の軸をｙ軸として、横書きの文書を読み取る場合には、最初にｙ方向への投影処理により行の切り分け処理を実行し、切り分けられた行毎に、ｘ方向への投影処理を行って各文字領域を検出する。また、縦書きの文書を読み取る場合には、最初にｘ方向への投影処理により行の切り分け処理を実行し、切り分けられた行毎に、ｙ方向への投影処理を行って各文字領域を検出する。
【０００５】
また、各投影処理において濃淡データの累計値を投影する場合には、文字部分が背景より暗い場合には、投影パターンの谷部分を文字に対応する範囲として検出し、文字部分が背景より明るい場合には、投影パターン内の山部分を文字に対応する範囲として検出する。一方、しきい値より低い濃度を「１」として画像を２値化して、２値データの累計値を投影する場合には、文字部分が背景より暗い場合には、投影パターン内の山部分を文字に対応する範囲として検出し、文字部分が背景より明るい場合には、投影パターン内の谷部分を文字に対応する範囲として検出する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−６９５２４号公報
【特許文献２】特開２０００−３５７２８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のとおり、従来の行の切り分け処理では、認識対象の文字列がｘ軸またはｙ軸に対して平行に近い状態で撮影されていることを前提に、その文字列に近い軸に沿って延びるライン内の画像データを累計して、その累計値を他方の軸に投影する。しかし、この方法により各行の文字列を正しく切り分けるには、文字列を含む範囲の投影場所と背景部分の投影場所とが重ならないようにすることが必要になる。
【０００８】
文字列が傾いていない場合には、図９（１）に示すように、文字列に沿う軸方向（図示例ではｘ方向）に沿って文字列にかかることなく文字列間を通過するラインを設定することができる。よって、このライン内の画像データの投影によって、投影パターンに極大値を発生させ、各行を正しく切り分けることができる。
【０００９】
しかし、認識対象の画像が回転ずれした状態で入力されると、図９（２）に示すようにｘ軸方向に沿うラインでは文字列間を通過させることができなくなる。このため、文字列を含む範囲の投影場所と背景部分の投影場所との境界が曖昧になり、行の切り分けに失敗したり、切り分けの位置が不正確になる。特に、文字列の行間が狭くなると、わずかな傾きであっても文字列の間の通るラインを確保できない場合があるので、行の切り分けに失敗する可能性が高まる。
【００１０】
本発明は上記の問題点に着目し、簡単な処理によって、文字列の行の切り分け処理の精度を大幅に向上することを、課題とする。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、本発明の第１の方法では、濃淡画像中の文字列が分布する範囲の少なくとも一部をサーチ領域として、画像内の座標を表す２軸のうちの行の並びに対応する方の軸（たとえばｙ軸）に沿って並ぶ複数の点毎に、その点を起点にサーチ領域を横切る複数のラインを設定して、各ラインにつきそれぞれサーチ領域内の当該ラインにおける画像データを累計する。
また、ラインの起点となった点毎にその点につき設定されたライン群における累計値の最大値を求めると共に、各点毎に求めた最大値をそれぞれの点の並びに従って配列した場合に生じる分布パターンにおける極大値を少なくとも１つ特定する。そして、特定された極大値に相当する累計値が得られたラインを文字列の間を通るラインとして、このラインに基づき画像中の文字列を行毎に検出する。
【００１２】
たとえば、図９に示したような２行構成の横書き文字列が認識対象となる場合であれば、文字列間の隙間と各文字列それぞれの一部とが入るようにサーチ領域を設定し、このサーチ領域の内部または外部においてｙ軸方向に沿って並ぶ複数の点毎に、その点を起点として様々な方向に向かってサーチ領域を横切る複数のラインを設定する。
【００１３】
ここで、設定されるライン毎にサーチ領域に対応する範囲内における濃度の累計値を算出するものとすると、認識対象の画像における文字部分が背景より暗い場合には、背景部分を示す画素が占める割合が大きいラインほど累計値が高くなる。よって、各点毎に求めた最大値をそれぞれの点の並びに従って配列すると、生成された分布パターンでは、文字列の間を通過するラインが設定された点に対応する位置で極大値が生じると考えられる。第１の方法では、この極大値を特定して、この極大値に相当する累計値が得られたラインを文字列の間を通るラインとして、行の切り分け処理を行うので、各行の文字列を正しく検出することが可能になる。
【００１４】
また、文字部分が背景より明るい画像を認識対象とする場合でも、明るくなるほど濃度値が低くなるように画像データを変換してから上記の方法を実施すれば、同様に、各行の文字列を正しく検出することができる。また、累計する対象の画像データを２値画像データとする場合には、文字の部分が「０」で背景の部分が「１」となるように画像を２値化することによって、上記と同様の効果を得ることができる。
【００１５】
３行以上の文字列を認識対象とする場合にも、上記と同様に、行の並び方向に対応する軸に沿って並ぶ複数の点毎に様々な方向に向かってサーチ領域を横切る複数のラインを設定して、各点毎のライン群における画像データの累計値の中の最大値を各点の並びに従って配列した場合に生じる分布パターン中の極大値を複数特定する。そして、これらの極大値に相当する累計値を得たラインを文字列の間を通るラインとすることにより、各行を正しく切り分けることができる。
【００１６】
上記の方法では、ラインの起点とする点を１画素ずつ動かして、各点につき、それぞれあらかじめ定めた角度範囲内でラインの傾きを順に変更しながら累計値を求めることができる。また、サーチ領域の一辺に含まれる各点を起点として、起点毎に対向する側の辺の各点との間にラインを設定してもよい。
ただし、毎回の起点は必ずしも連続する必要はなく、数画素おきに設定してもよいし、サーチ領域の外にある点を起点としてもよい。
【００１７】
「各点毎に求めた最大値をそれぞれの点の並びに従って配列」する処理は、起点に設定された各点の並びに沿う軸に各最大値を投影することを意味すると考えることができる。この配列における極大値は、たとえば、起点とした複数の点毎に、ラインの設定および画像データの累計処理を繰り返しながら累計値の最大値を求めた後に、各最大値をそれぞれ対応する点の座標に投影し、生成された分布パターンから極大値を特定する、という手順により特定することができる。
【００１８】
しかしながら、必ずしもこの手順をふむ必要はない。たとえば、２行構成の文字列を認識する処理において行間の位置がばらつく範囲を推定できる場合には、その推定範囲を含むようにサーチ領域を設定した上で、ラインの起点を変更しながらラインの設定および画素データの累計を繰り返し、その間に取得した累計値の中の最大値を特定してもよい。この場合には、特定された最大値に相当する累計値が得られたラインを文字列の間を通るラインとする。
【００１９】
本発明の第２の画像処理方法でも、第１の方法と同様に、濃淡画像中の文字列が分布する範囲の少なくとも一部をサーチ領域として、画像内の座標を表す２軸のうちの行の並びに対応する方の軸に沿って並ぶ複数の点毎に、その点を起点にサーチ領域を横切る複数のラインを設定して、各ラインにつきそれぞれサーチ領域内の当該ラインにおける画素データを累計する。
【００２０】
さらに第２の画像処理方法では、ラインの起点となった点毎にその点につき設定されたライン群における累計値の最小値を求めると共に、各点毎に求めた最小値をそれぞれの点の並びに従って配列した場合に生じる分布パターンにおける極小値を少なくとも１つ特定する。そして特定された極小値に相当する累計値が得られたラインを文字列の間を通るラインとして、このラインに基づき画像中の文字列を行毎に検出する。
【００２１】
上記第２の方法は、たとえば、文字部分が背景より明るい濃淡画像を処理対象とする場合や、文字部分が「１」で背景部分が「０」となるように変換された２値画像を処理対象とする場合に、適用することができる。これらの場合には、第１の方法の場合とは逆に、背景部分を示す画素が占める割合が高いラインほど画像データの累計値が小さくなるので、ラインの起点となった点毎に求めた累計値の最小値をそれぞれの点の並びに従って並べた分布パターンにおける極小値を特定する。この極小値により、文字列の間を通るラインを正しく特定して、このラインに基づき各行の文字列を正しく切り分けることが可能になる。
【００２２】
上記第１および第２の方法に共通する実施形態の１つでは、行毎の文字列を検出した後は、さらに検出された文字列毎に、画像内の座標を表す２軸のうちの前記行の並びに対応しない方の軸（たとえばｘ軸）に当該文字列の画像を投影する処理と、その投影結果に基づき当該文字列に含まれる文字を個別に検出する処理とを、実行する。
【００２３】
上記の実施形態は、認識対象の文字列が大きく傾くおそれがないシーンに適用することができる。
文字列の傾きが僅かであれば、文字列を正しく切り分けた後は、その文字列の方向に近い軸への画像投影処理によって、個々の文字を正しく検出し、モデルとの照合処理を支障なく実施することができるからである。
【００２４】
文字列の傾きが大きくなる可能性がある場合には、以下の２つの実施形態のいずれかを採用するのが望ましい。
１つ目の形態では、文字列の間を通るラインにより検出された文字列毎に、その検出に用いられたラインが画像内の座標を表す２軸のうちの行の並びに対応しない方の軸に沿うように当該文字列の画像を回転補正する処理と、補正後の画像を行の並びに対応しない方の軸に投影する処理と、その投影結果に基づき当該文字列内に含まれる文字を個別に検出する処理とを、実行する。すなわち、各行を切り分けた後に、その行の傾きに応じて画像を回転補正して、補正後の画像を文字列に沿う軸に投影して、個々の文字を検出することになる。
【００２５】
２つ目の形態では、画像中の文字列を行毎に検出する処理において、文字列の間を通るラインが画像内の座標を表す２軸のうちの行の並びに対応しない方の軸に沿うように処理対象の画像を回転補正してから、補正後の画像における文字列の間を通るラインに基づき行毎の文字列を検出する。すなわち、行の切り分け処理を行うより前に、各行の文字列を含む範囲の画像全体を回転補正し、その後に行を切り分けて、行毎に文字列に沿う軸への画像投影処理を行って、個々の文字を検出することになる。
【００２６】
上記２つの実施形態では、いずれも、文字列の間を通るラインの傾きに基づいて、文字の切り出しのための投影の対象となる軸に文字列が沿う状態になるように画像を回転補正するので、個々の文字を正しく検出できる。また、その後のモデルとのマッチング処理でも、回転ずれのない文字をモデルに照合させることができるので、認識の精度や効率を大幅に向上することができる。
【００２７】
本発明による文字認識装置は、文字列の撮像により生成された濃淡画像を認識対象として入力して、当該画像中の文字列内の個々の文字を切り出した後に、切り出された文字をそれぞれあらかじめ登録されたモデルと照合して各文字を認識する機能を具備する。
第１の画像処理方法が適用される第１の文字認識装置は、認識対象の濃淡画像にサーチ領域を設定する領域設定手段；画像内の座標を表す２軸のうちの一方に沿って並ぶ複数の点毎に、その点を起点にサーチ領域を横切る複数のラインを設定して、各ラインにつきそれぞれサーチ領域内の当該ラインにおける画素データを累計する累計手段；ラインの起点となった点毎にその点につき設定されたライン群における累計値の最大値を求めると共に、各点毎に求めた最大値をそれぞれの点の並びに従って配列した場合に生じる分布パターンにおける極大値を特定する特定手段；特定手段により特定された極大値に相当する累計値が得られたラインに基づき、画像中の文字列を行毎に検出する文字列検出手段；文字列検出手段により検出された文字列毎に、その文字列に含まれる文字を個別に切り出してモデルとの照合処理を実行する文字認識手段；の各手段を具備する。
【００２８】
第２の画像処理方法が適用される第２の文字認識装置は、認識対象の濃淡画像にサーチ領域を設定する領域設定手段；画像内の座標を表す２軸のうちの一方に沿って並ぶ複数の点毎に、その点を起点にサーチ領域を横切る複数のラインを設定して、各ラインにつきそれぞれサーチ領域内の当該ラインにおける画素データを累計する累計手段；ラインの起点となった点毎にその点につき設定されたライン群における累計値の最小値を求めると共に、各点毎に求めた最小値をそれぞれの点の並びに従って配列した場合に生じる分布パターンにおける極小値を特定する特定手段；特定手段により特定された極小値に相当する累計値が得られたラインに基づき、前記画像中の文字列を行毎に検出する文字列検出手段；文字列検出手段により検出された文字列毎に、その文字列に含まれる文字を個別に切り出して前記モデルとの照合処理を実行する文字認識手段；の各手段を具備する。
【００２９】
第１および第２の文字認識装置の構成によれば、認識対象の画像内の文字列が分布する範囲にサーチ領域を設定すると共に、画像内の座標を表す２軸のうち、認識対象の文字列の行の並びに対応する方の軸をラインの起点となる点が並ぶ方向として設定することにより、各行の文字列を正しく切り分けることができる。よって、切り分けられた文字列毎に、文字の切り出し処理やモデルとの照合処理を実行して、各文字を精度良く認識することができる。
【００３０】
なお、上記の第１および第２の装置を１つにすることもできる。この場合、領域設定手段および累計手段は１つにまとめられると考えられるが、特定手段、文字列検出手段、文字認識手段については２とおりの形態が設けられ、文字列と背景との明暗の関係に応じていずれか一方の形態が選択される。
【００３１】
さらに、本発明は、第１および第２の文字認識装置が備える各手段の機能を、コンピュータに設定するためのプログラムを提供する。
【発明の効果】
【００３２】
本発明によれば、複数行に配列された文字列の濃淡画像から各行の文字列を切り分ける処理を、簡単な手順で精度良く実施することができる。また角度ずれが生じた文字列や行間が狭い文字列を認識対象とする場合にも、行の切り分け処理を安定して実施して、文字の認識精度を高めることができる。
【図面の簡単な説明】
【００３３】
【図１】文字認識装置の構成例を示すブロック図である。
【図２】文字認識処理の手順を示すフローチャートである。
【図３】境界ラインの特定、画像の回転補正、文字列の切り分けの各処理の具体例を示す図である。
【図４】一点から設定されるラインの概念を示す図である。
【図５】境界ラインの検出のためのサーチ領域の設定例を検出処理に用いられるパラメータと共に示す図である。
【図６】境界ラインの検出処理の前半部分を示すフローチャートである。
【図７】境界ラインの検出処理の後半部分を示すフローチャートである。
【図８】処理対象領域全体をサーチ領域として境界ラインを検出した例を示す図である。
【図９】行の切り分け処理のための投影ラインの方向と文字列の傾きとの関係を示す図である。
【発明を実施するための形態】
【００３４】
図１は、本発明が適用される文字認識処理装置の構成例を示す。
この文字認識処理装置は、文字列を対象にした撮像を行い、生成された画像中の文字を読み取ってその読み取り結果を出力するもので、制御部１０を含む本体部１，撮影用のカメラ２，表示部３，操作部４などにより構成される。表示部３は、たとえば液晶モニタにより構成され、操作部４にはマウスやキーボードが含まれる。なお、カメラ２はスキャナ装置に置き換えることもできる。
【００３５】
本体部１は、汎用のコンピュータ装置（パーソナルコンピュータ）であって、ＣＰＵを含む制御部１０のほか、主記憶部１１、画像メモリ１２、撮像インタフェース１３、表示用インタフェース１４、入力用インタフェース１５、外部インタフェース１６、外部ディスク用読取部１７などを有する。
【００３６】
主記憶部１１はたとえばハードディスクであり、画像メモリ１２はたとえばＲＡＭボードである。主記憶部１１には、外部ディスク用読取部１７により外部ディスク１８から読み取られた専用のプログラムや、文字認識処理に用いられるフォントデータなどが登録される。カメラ２から出力された画像は、撮像インタフェース１３に取り込まれてディジタル変換された後、変換後の画像データが画像メモリ１２に格納される
【００３７】
制御部１０には、主記憶部１１に格納されたプログラムによって、画像メモリ１２に格納された画像から文字を１文字ずつ切り出す機能と、切り出された文字を各種フォントデータと照合して文字を認識する機能とが設定される。また、制御部１０には、これらの処理でユーザに提示されるグラフィカルユーザインタフェースとしての機能も設定される。このグラフィカルユーザインタフェースでは、表示用インタフェース１４を介して表示部３に処理対象の画像を含む画面を表示し、入力用インタフェース１５を介して操作部４による操作を受け付ける。
【００３８】
図２は、文字認識のために制御部１０により実施される処理の概略手順を示す。
この処理は、画面に表示された画像に対して処理対象領域を指定する操作が行われ、さらに読み取り操作がなされたことに応じて開始される。この操作に応じて制御部１０は、処理対象領域内の画像を取得し（ステップＵ１）、文字列間の境界を示すライン（以下、これを「境界ライン」という、）を検出する処理（ステップＵ２）を実行する。
【００３９】
詳細は後述するが、境界ラインは、そのラインの一端点の座標と当該ラインの傾きを表す角度θ（ｘ軸に対する回転角度）とにより表される。ステップＵ３では、この角度θに基づき、境界ラインがｘ軸方向にほぼ平行になるように画像を回転補正する。ステップＵ４では、補正された画像を、補正後の境界ラインに沿って分割することにより文字列を行毎に検出する。
【００４０】
以下では、検出された行毎に、その行の文字列を含む範囲の画像をｘ軸に投影し（ステップＵ６）、生成された投影パターンを分析して、文字列に含まれる個々の文字に対応する領域（文字領域）を個別に検出する（ステップＵ７）。さらに切り出された各文字を登録されたフォントデータによる文字モデルと照合するマッチング処理によって、文字の内容を認識する（ステップＵ８）。
【００４１】
すべての行に対し、Ｕ６，Ｕ７，Ｕ８の各ステップが実行されると、ステップＵ５が「ＹＥＳ」となってステップＵ９に進み、認識結果を出力する。この出力をもって、ユーザの読取指示に対する処理は終了する。
【００４２】
なお、上記では、処理対象領域がユーザにより設定されるとしたが、これに限らず、あらかじめ登録された基準データに基づき、撮像の都度、基準データにより特定される範囲に処理対象領域を自動で設定してもよい。または、生成された画像全体を処理対象領域としてもよい。
【００４３】
図３は、２行構成の横書きの文字列を認識対象とする場合を例に、境界ラインの検出から文字列を行毎に切り分ける処理（図２のステップＵ２，Ｕ３，Ｕ４）までを具体的に示したものである。なお、図３以下の具体例では、図中の左から右に向かう方向をｘ軸の正方向とし、下から上に向かう方向をｙ軸の正方向とする。また、処理対象領域を、符号１００で示す。
【００４４】
図３の例の文字列は、ｘ軸に対してかなり回転ずれしているが、ステップＵ２では、後述する処理により文字列の間の隙間を通過するラインＫＬを精度良く検出することができる（図３（１））。この境界ラインＫＬは文字列の長さ方向に沿って延びているので、ステップＵ３で、境界ラインＫＬがｘ軸に平行になるように画像を回転補正することにより、図３（２）に示すように、文字列もｘ軸に沿った状態となる。さらに、ステップＵ４において補正後の画像をラインＫＬに沿って分割することにより、図３（３）に示すように、各行の文字列が正しく切り分けられる。
【００４５】
なお、回転補正は必須の処理ではなく、境界ラインＫＬのｘ軸に対する回転角度が許容値以内である場合には、回転補正をせずに、境界ラインＫＬに沿って画像を分割してもよい。
【００４６】
横書きの文字列の各行を切り分けるには、一般には、ｘ軸に沿うライン内の画像データの累計値をｙ軸に投影する。しかし、認識対象の文字列がｘ軸に対して傾いていると、文字列の間を通るラインが設定できない（前出の図９（２）を参照）ため、文字部分と背景部分とが明確に分かれた投影パターンを生成するのが困難になる。
【００４７】
そこでこの実施例では、処理対象領域１００の左辺の所定範囲に含まれる各点を対象点として、対象点毎に、その対象点を起点に様々な方向に向かうラインを複数設定して、これらのラインにおける濃度累計値を算出し、さらにそれらの中の最大値を求める。また、対象点毎の最大値を各対象点の並びに従って並べた配列を生成し、この配列における値の分布パターンから極大値を検出し、この極大値に相当する累計値を得たラインを境界ラインＫＬとして特定する。
【００４８】
濃淡画像では、一般に、明るくなるほど濃度値が大きくなるので、文字部分が背景より暗い画像において１つのライン内の濃度累計値を求めると、背景部分を示す画素が占める割合が大きいラインほど濃度累計値が高くなる。したがって、図４に示すように、処理対象領域１００の左辺にある点Ｐから様々な方向に向けてラインを設定して、各ラインの濃度累計値を求めると、文字列に交わらずに文字列の間を通過した境界ラインＫＬにおける濃度累計値が他のラインの濃度累計値より高くなると考えられる。したがって、上記配列内の極大値を求めることができれば、その極大値から境界ラインＫＬを特定することができる。
【００４９】
以下、図３，図４に示したような２行構成の文字列を対象として、文字列間の境界ラインＫＬを検出する場合の具体的な処理について、詳細に説明する。
【００５０】
まず、図５を参照して、この検出処理の概要および処理に使用されるパラメータを説明する。
この実施例では、処理対象領域１００のｙ方向の範囲のうち、上下の端縁からそれぞれ所定距離ＤＥだけ内側に入った位置のｙ座標をｙ１，ｙ２とし、これらのｙ座標と処理対象領域１００の左右端縁のｘ座標ｘ１，ｘ２とにより特定される領域１０１を、境界ラインを探すためのサーチ領域とする。
【００５１】
なお、上下の端縁からＤＥ以内をサーチ領域１０１から外したのは、文字列の上下の余白部分を文字列にかからずに通過するラインが設定されるのを防ぐためである。この実施例では、処理対象領域１００と同様に、ユーザの手操作によりサーチ領域１０１を設定するものとするが、これに限らず、行間の位置の想定されるばらつきに基づいてあらかじめ座標ｙ１，ｙ２を登録しておき、この登録データに基づきサーチ領域１０１を自動で設定してもよい。
【００５２】
この実施例では、サーチ領域１０１の左辺上の点Ｐｉを対象点Ｐｉとして、この対象点Ｐｉと右辺側の一点Ｐｊとを結ぶラインを設定する。点Ｐｉ，Ｐｊのｙ座標は、いずれもｙ１からｙ２までの範囲で移動する。以下では、対象点Ｐｉの座標を（ｘ１，ｙｉ）とし、右辺側の点Ｐｊの座標を（ｘ２，ｙｊ）とし、ｙｉとｙｊとの差の絶対値をｄとする。また、点Ｐｊを「（ラインの）終点Ｐｊ」と呼び、ｄを「変位量」という。
ｙｊ＝ｙ１＋ｄのときは、図中のラインＬＵに示すような右上がりのラインが設定され、ｙｊ＝ｙ１−ｄのときは、図中のラインＬＤのような右下がりのラインが設定される。
【００５３】
さらに、この実施例では、毎時の対象点Ｐｉにつき求めた濃度累計値の最大値を配列ＭＡＸ（ｉ）に格納すると共に、最大値ＭＡＸ（ｉ）を得たラインが設定されたときの変位量ｄまたは−ｄを、配列Ｄ（ｉ）に格納する。
【００５４】
図６および図７は、上記の各パラメータを用いて境界ラインを検出する処理（図３のステップＵ２）の詳細手順を示す。
以下、各図のステップ符号（ＳＴ１〜ＳＴ２４）を参照しながら、処理の流れを説明する。
【００５５】
この処理では、まず対象点Ｐｉを示す変数ｉに初期値として０を設定する（ステップＳＴ１）。さらに、ｙ１とｙ２との差（ｙ１−ｙ２）を、ｉの最大値ｉｍａｘに設定して（ステップＳＴ２）、ステップＳＴ３〜ＳＴ１２のループに入る。以下、このループを「前半ループ」という。
【００５６】
前半ループでは、ｉの現在値により特定されるＭＡＸ（ｉ）および変位量ｄに、それぞれ初期値として０を設定する（ステップＳＴ３）。また対象点Ｐｉのｙ座標ｙｉをｙ２＋ｉとし（ステップＳＴ４）、終点Ｐｊのｙ座標ｙｊをｙｉ＋ｄとする（ステップＳＴ５）。前半ループの開始直後は、ｉおよびｄが０であるので、ｙｉ＝ｙｊ＝ｙ２となる。
【００５７】
ｙｉおよびｙｊの値が定まると、ステップＳＴ６では、これらのｙ座標に基づき、座標（ｘ１，ｙｉ）に位置する点Ｐｉと座標（ｘ２，ｙｊ）に位置する点Ｐｊとを結ぶラインを設定し、このライン上の濃度累計値ＳＵＭ１を算出する。
算出された濃度累計値ＳＵＭ１がＭＡＸ（ｉ）より大きい場合には、ステップＳＴ７が「ＹＥＳ」となる。この「ＹＥＳ」判定がなされると、ステップＳＴ８において、最大値ＭＡＸ（ｉ）の値をＳＵＭ１に変更すると共に、現在のｄの値をＤ（ｉ）に格納する。ＳＵＭ１がＭＡＸ（ｉ）以下の場合には、ステップＳＴ７が「ＮＯ」となり、ステップＳＴ８はスキップされる。
【００５８】
以下、ｙｊがｙ１に達するまでｄの値を１ずつ加算して（ステップＳＴ９，ＳＴ１０）、そのｄの値により終点Ｐｊを１画素上に動かし（ステップＳＴ５）、対象点Ｐｉと終点Ｐｊとを結ぶラインを設定して濃度累計値ＳＵＭ１を求める（ステップＳＴ６）。そして、ＳＵＭ１の値が最大値ＭＡＸ（ｉ）より大きい場合には、ＭＡＸ（ｉ）およびＤ（ｉ）を更新する（ステップＳＴ７，８）。
【００５９】
この一連の処理において、初回（ｄ＝０のとき）のステップＳＴ６では、対象点Ｐｉを起点にｘ軸に平行になるラインが設定され、その後（ｄ＞１のとき）は、対象点Ｐｉから右上に延びるラインが設定される。そしてこれらのラインにおける濃度累計値の中の最大値が、ＭＡＸ（ｉ）に格納される。ｄの値が増えるにつれ、設定されるラインの傾きは急になる。
【００６０】
終点Ｐｊのｙ座標ｙｊが上限のｙ２に設定されて、その終点に対する処理が終了すると、ステップＳＴ１２においてｉの値を１つ増やす。この後はＳＴ３に戻って、更新後のｉにより特定されるＭＡＸ（ｉ）に初期値の０を設定すると共に、変位量ｄをゼロに戻す。さらに、更新後のｉを用いたステップＳＴ４によって、対象点Ｐｉを１画素上に移動させる。
その後は、新しい対象点Ｐｉに対し、前述したのと同じ手順で終点Ｐｊを１画素ずつ上に移動させながら、点Ｐｉと点Ｐｊとを結ぶラインを設定して、ライン内の濃度累計値を求める。また適宜、各点の最大値ＭＡＸ（ｉ）やＤ（ｉ）を更新する（ステップＳＴ５〜１０）。
【００６１】
以下、同様に、ｉ，ｄの値により対象点Ｐｉおよび終点Ｐｊの組み合わせを変更しながら前半ループを繰り返す。この処理により、サーチ領域１０１の左辺に位置する各点毎に、その点よりｘ軸に平行なライン、および右上りのラインが設定される（ｉ＝ｉｍａｘのときはｘ軸に平行なライン１本のみとなる。）。そして、各点毎のライン群で求められた濃度累計値の中の最大値がＭＡＸ（ｉ）に格納されると共に、この最大値ＭＡＸ（ｉ）が得られたラインの設定に用いられた変位量ｄがＤ（ｉ）に格納される。
【００６２】
ｉ＝ｉｍａｘとなって、このｉにより特定されるｙｉ（ｙｉ＝ｙ１となる。）に対する処理が終了すると、前半ループが終了して（ＳＴ１１が「ＮＯ」）、図７のステップＳＴ１３〜ＳＴ２２のループに入る。以下、このループを「後半ループ」という。
【００６３】
後半ループでは、変位量ｄを１に設定し（ＳＴ１３）、対象点Ｐｉのｙ座標ｙｉを
ｙ１−（ｉｍａｘ−ｉ）とし（ＳＴ１４）、終点Ｐｊのｙ座標ｙｊをｙｉ−ｄとする（ＳＴ１５）。後半ループの開始直後は、ｉ＝ｉｍａｘであるので、ｙｉ＝ｙ１，ｙｊ＝ｙ１−１となる。
【００６４】
ステップＳＴ１６では、上記の設定により特定された対象点Ｐｉ（ｘ１，ｙｉ）と終点Ｐｊ（ｘ２，ｙｊ）とを結ぶラインを設定して、このラインの濃度累計値ＳＵＭ２を算出する。この濃度累計値ＳＵＭ２がＭＡＸ（ｉ）より大きい場合には、ステップＳＴ１７が「ＹＥＳ」となる。この「ＹＥＳ」判定に対し、ステップＳＴ１８において、最大値ＭＡＸ（ｉ）の値をＳＵＭ２に変更すると共に、−ｄをＤ（ｉ）とする。ＳＵＭ２がＭＡＸ（ｉ）以下の場合には、ステップＳＴ１７が「ＮＯ」となって、ステップＳＴ１８はスキップされる。
【００６５】
以下、ｄの値を１ずつ増やして（ステップＳＴ１９，２０）、そのｄによりｙｊを更新（ステップＳＴ１５）した後に、ステップＳＴ１６〜ＳＴ１８を実行する。ステップＳＴ１６では、毎回、対象点Ｐｉから右下に延びるラインが設定され、しだいにその傾きが急になる。
ｙｊが下限値ｙ２に設定されて、そのｙｊに対する処理を終えると、ステップＳＴ１９が「ＮＯ」となる。これを受けて、ＳＴ２１からステップＳＴ２２に進んでｉを１減算した後に、ステップＳＴ１３に戻る。このステップＳＴ１３によりｄが１に戻り、さらにつぎのステップＳＴ１４によって、対象点Ｐｉが一画素下に移動する。
この後、新たな対象点Ｐｉに対し、終点Ｐｊの座標を変更しながらステップＳＴ１５〜ＳＴ２０のループを繰り返す。
【００６６】
上記のとおり、後半ループでは、前半ループで（ｘ１，ｙ１）の位置に到達した対象点Ｐｉを１画素ずつ下に移動させながら、毎時の対象点Ｐｉにつき、右下に延びるラインを複数設定して各ラインにおける濃度累計値を算出する。これらの濃度累計値の中に前半ループで求めた最大値ＭＡＸ（ｉ）を上回る値があれば、その濃度累計値により最大値ＭＡＸ（ｉ）が書き換えられる。また、その最大値ＭＡＸ（ｉ）を得たラインの設定に用いられた変位量−ｄがＤ（ｉ）に格納される。
【００６７】
このように、処理対象領域１００の左辺内の座標ｙ１からｙ２までの範囲にある各点を対象に、ＳＴ３〜１２による前半ループとＳＴ１３〜２２による後半ループとを実行することにより、各点毎に、その点を起点に設定されたライン群における濃度累計値の最大値がＭＡＸ（ｉ）に格納されると共に、その最大の濃度累計値が得られたラインの設定に用いられた変位量がＤ（ｉ）に格納される。
【００６８】
各点毎のＭＡＸ（ｉ）およびＤ（ｉ）が確定すると、ステップＳＴ２３，ＳＴ２４，ＳＴ２５を順に実行する。
ステップＳＴ２３では、配列ＭＡＸ（ｉ）が示す分布パターン中の極大値を検出する。ステップＳＴ２４では、検出された極大値に対応するｉの値ｉｏにより、この極大値を得たラインの起点の座標（ｘ１，ｙ２＋ｉ０）を特定する。
ステップＳＴ２５では、ｉｏに対応する変位量Ｄ（ｉ０）を用いた以下の演算により、極大値を得たときのラインの傾きを示す角度θを算出する。
【００６９】
【数１】
0005884560.tif 000002
【００７０】
図６，７に示した処理により図５に示した画像を処理すれば、サーチ領域１０１の左右の辺の各点が全て組み合わせられて、これらの組み合わせによるライン群の中で文字列の間の隙間を通過したラインで濃度累計値が最も高くなって、これが境界ラインＫＬとして特定される。さらにこの境界ラインＫＬの起点の座標とラインの傾斜角度θとが求められるので、これらを用いて、画像の回転補正や行の切り分け処理のための演算を実施することができる。
以下、上記の実施例に対する変形例について、説明する。
【００７１】
（１）まず、ラインの設定では、必ずしもサーチ領域１０１の左右の辺の全ての点を組み合わせる必要はない。たとえば、認識対象の文字列の傾き角度の上限を想定できる場合には、その上限の角度に応じて変位量ｄの範囲を定め、この上限値までの範囲の変位量で終点Ｐｊを動かしてもよい。この場合には、ステップＳＴ９およびＳＴ１９の判定内容を、ｄを上限値と比較するものに変更し、ｄが上限値に達するまでステップＳＴ１０，ＳＴ２０においてｄの値を加算すればよい。
【００７２】
（２）図６，７の手順では、終点Ｐｊを動かす位置をサーチ領域１０１内に限定したが、（１）に記載したように、変位量ｄを指標にラインの設定範囲を決めるのであれば、ラインの終点の位置をサーチ領域外まで広げてもよい。そうすれば、文字列が大きく傾いている場合や、サーチ領域１０１の幅が十分でないような場合でも、境界ラインを正しく特定することが可能になる。
【００７３】
（３）２行構成の文字列のみを認識対象とする場合には、各対象点毎に濃度累計値の最大値を求めて、それらの配列における極大値を求める方法に代えて、対象点毎にラインの設定およびライン内の濃度累計値の算出を行いながら、全ての濃度累計値の中の最大値を求めるようにしてもよい。
【００７４】
（４）上記の実施例では、２行構成の文字列の上下の余白部分にラインが設定されて、そのラインで高い濃度累計値が算出されるのを防ぐために、処理対象領域の上下端縁よりＤＥだけ内側に入った位置をサーチ領域１０１としたが、任意の行数の文字列を認識対象とする場合には、図８に示すように、処理対象領域１００の全体をサーチ領域１０１としてもよい。そうすると、ＭＡＸ（ｉ）の分布パターンの端部に余白を表す高い値が生じる可能性があるが、その場合には、高い値が分布する範囲と隣の低い値の分布範囲との境界位置を検出し、境界位置より内側の範囲に生じている極大値を全て検出する。そして、極大値毎にその極大値に相当する累計値を得たラインを特定する。この方法によれば、図８中のＫＬ１，ＫＬ２，ＫＬ３のように、文字列の間を通過するラインを全て検出することができる。さらに境界位置に対応する累計値を得たラインを特定すれば、図８中のＣＬ１，ＣＬ２に示すように、文字列の分布範囲の上端縁と下端縁とを検出することもできる。
【００７５】
（５）図８の例のように、複数の境界ラインが検出された場合には、画像の回転補正には、各境界ラインの回転角度の平均値を用いると良い。ただし、これに限らず、補正を行う前に、各境界ラインに沿って文字列の画像を行毎に切り分け、その後、行毎に、その上または下の境界ラインの回転角度に基づいて回転補正を行ってもよい。
【００７６】
（６）図６，７に示した手順は、文字部分が背景より暗い画像を対象とするものであったが、文字部分が背景より明るい画像を認識対象とする場合には、処理に先立ち、暗くなるほど濃度値が高くなるように、画像を変換する。画像を変換しない場合には、対象点毎の処理において、設定されたライン群で算出した濃度累計値の中の最小値を求め、各最小値による配列が示す分布パターンの中の極小値を特定し、この極小値に相当する累計値を得たラインを境界ラインとする。
【００７７】
（７）上記の実施例では、設定されたライン毎に濃度累計値を求めたが、これに限らず、処理対象領域内の画像を２値化し、ライン内の２値データの累計値を求めてもよい。たとえば、文字部分が「１」で背景部分が「０」となるように画像を２値化する場合には、対象点毎にその点につき算出した累計値の中の最小値を求め、各最小値による配列が示す分布パターンの中の極小値を特定し、この極小値に相当する累計値を得たラインを境界ラインとする。反対に、文字部分が「０」で背景部分が「１」となるように画像を２値化する場合には、対象点毎にその点につき算出した累計値の中の最大値を求め、各最大値による配列が示す分布パターンの中の極大値を特定し、この極大値に相当する累計値を得たラインを境界ラインとする。
【００７８】
以上に説明したように、この実施例による境界ラインの検出処理によれば、認識対象の文字列の回転ずれが生じている場合でも、文字列の間を通過するラインを精度良く検出することができる。よって、この境界ラインに基づき、各行の画像を補正してから文字の切り出し処理やマッチング処理を実施することにより、文字の認識精度を大幅に向上することができる。
【００７９】
また、この境界ラインの検出処理によれば、行間が狭い文字列を認識する場合にも、その僅かな回転ずれに影響されることなく、行の切り分け処理を安定して実施することが可能になる。
【符号の説明】
【００８０】
１    本体部
２    カメラ
１０  制御部
１１  主記憶部  
１００  処理対象領域
１０１  サーチエリア
Ｐｉ  対象点
Ｐｊ  終点
ＬＵ，ＬＤ  濃度累計値が算出されるライン
ＫＬ，ＫＬ１，ＫＬ２，ＫＬ３  境界ライン
【図１】
0005884560.tif 000003
【図２】
0005884560.tif 000004
【図３】
0005884560.tif 000005
【図４】
0005884560.tif 000006
【図５】
0005884560.tif 000007
【図６】
0005884560.tif 000008
【図７】
0005884560.tif 000009
【図８】
0005884560.tif 000010
【図９】
0005884560.tif 000011