(58)【調査した分野】(Int.Cl.,DB名)
前記認識結果出力手段は、前記認識結果判定手段により誤認識されている可能性がないと判定された文字を出力し、前記認識結果判定手段により誤認識されている可能性があると判定された文字を出力しないことを特徴とする請求項1〜4の何れか1項に記載の文字認識装置。
前記認識結果出力工程は、前記認識結果判定工程により誤認識されている可能性がないと判定された文字を出力し、前記認識結果判定工程により誤認識されている可能性があると判定された文字を出力しないことを特徴とする請求項6〜9の何れか1項に記載の文字認識方法。
【発明を実施するための形態】
【0012】
以下、図面を参照しながら、本発明の実施形態を説明する。
(第1の実施形態)
まず、本発明の第1の実施形態について説明する。
本実施形態では、自動マーキング装置からスラブの一面(の予め設定された領域)に、ドット単位で塗料を吐出させることにより当該スラブの一面に形成された、所望の文字列からなるスラブNoを認識する場合を例に挙げて説明する。また、本実施形態では、スラブNoに用いられる文字として、数字やアルファベット等、切れ目のない(相互に分離された領域がない)文字が選択される。具体的に、本実施形態では、スラブNoは、複数桁の数字が横一列に並べられたものであるとする。スラブNoを構成する各数字の形・大きさと、スラブNoが形成される(全体の)領域の大きさ・位置と、当該領域内で各桁が配置される個々の領域の大きさ・位置と、が予め定められており、これらの内容が、オペレータによる操作等に基づいて文字認識装置100に予め設定されている。このようなスラブNoを含む所定の領域が撮像装置により撮像される。文字認識装置100は、撮像装置により撮像されたデジタル画像データを取り込んで、スラブNoを認識して出力するものである。
【0013】
図1は、文字認識装置100の機能的な構成の一例を示す図である。文字認識装置100のハードウェアは、例えば、CPU、ROM、RAM、HDD、及び各種のインターフェースを備えた情報処理装置(例えばパーソナルコンピュータ)を用いることにより実現できる。
<画像取込部101>
画像取込部101は、撮像装置から、スラブNoを含むデジタル画像データを取り込む。以下の説明では、「スラブNoを含むデジタル画像データ」を必要に応じて「文字列画像」と称する。
画像取込部101は、例えば、CPU、ROM、RAM、HDD、及び通信インターフェースを用いることにより実現される。
【0014】
<文字列エリア切出部102>
文字列エリア切出部102は、画像取込部101により取り込まれた文字列画像から文字列がある領域を判定して当該領域を切り出す。以下の説明では、このようにして切り出された画像を必要に応じて「文字列切出画像」と称する。
文字列エリア切出部102は、例えば、CPU、ROM、RAM、及びHDDを用いることにより実現される。
【0015】
<文字エリア切出部103>
文字エリア切出部103は、文字列エリア切出部102により切り出された文字列切出画像から、スラブNoを構成する文字をそれぞれ切り出す。以下の説明では、このようにして切り出された画像を必要に応じて「文字画像」と称する。
図2は、文字列切出画像201の一例を示す図である。
文字エリア切出部103は、認識対象のスラブNoのどの桁に数字が配置されるのかを認識するためのフォーマット情報を、オペレータによる操作等に基づいて予め入力して記憶している。
図2に示す例では、「1桁、4桁、2桁、2桁」の数字の組み合わせによりスラブNoが構成されていることを示すフォーマット情報が文字エリア切出部103に記憶される。文字エリア切出部103は、このフォーマット情報により、1桁目、3〜6桁目、8、9桁目、11、12桁目にそれぞれ数字が配置されることを事前に認識している。また、前述したように、スラブNoが形成される(全体の)領域の大きさ・位置と、当該領域内で各桁が配置される個々の領域の大きさ・位置と、が予め定められている。本実施形態では、文字エリア切出部103は、これらの情報に基づいて、文字列エリア切出部102により切り出された文字列切出画像から、スラブNoを構成する文字をそれぞれ切り出す。
文字エリア切出部103は、例えば、CPU、ROM、RAM、及びHDDを用いることにより実現される。
【0016】
<二値化部104>
二値化部104は、文字エリア切出部103により切り出された文字画像のそれぞれについて、二値化処理を行う。具体的に説明すると、二値化部104は、輝度値(画素値)が閾値以上である画素に対して「1」を与え、輝度値(画素値)が閾値未満である画素に対して「0」を与えることを文字画像の全ての画素について行う。以下の説明では、このような二値化処理により得られた画像を必要に応じて「二値化画像」と称する。
図3は、二値化画像301の一例を示す図である。
図3に示す例では、文字列切出画像201に含まれるスラブNoのうち、「0」の文字画像に対応する二値化画像301を示している。
図2に示すその他の「2」、「6」、「5」、「2」、「5」、「1」、「4」、「8」の文字画像及び二値化画像も、文字エリア切出部103及び二値化部104により個別に生成される。
二値化部104は、例えば、CPU、ROM、RAM、及びHDDを用いることにより実現される。
【0017】
<文字認識部105>
文字認識部105は、二値化部104により得られた二値化画像のそれぞれについて、文字認識処理を行う。文字認識部105の具体例を説明する。文字認識部105は、文字のパターンを記憶した辞書を予め記憶している。文字認識部105は、二値化画像と辞書とのパターンマッチングを行って、二値化画像において画素値として「1」が与えられている領域のパターンとの一致度が最も高い文字を辞書から抽出する。文字認識部105は、抽出した文字の一致度が予め設定されている値よりも高い場合に、当該文字を、二値化画像に示されている文字として仮決めする。
文字認識部105は、例えば、CPU、ROM、RAM、及びHDDを用いることにより実現される。
【0018】
尚、画像取込部101、文字列エリア切出部102、文字エリア切出部103、二値化部104、及び文字認識部105で行われる処理は、例えば、OCR(Optical Character Recognition)に関する一般的な処理(市販のOCRソフト)で実現できる。したがって、ここでは、これらの処理の詳細な説明を省略する。また、画像取込部101、文字列エリア切出部102、文字エリア切出部103、二値化部104、及び文字認識部105で行われる処理は、前述した処理に限定されるものではなく、OCRに関するその他の一般的な処理によっても実現することができる。
【0019】
<輝度分布作成部106>
輝度分布作成部106は、文字認識部105により文字の仮決めがされた二値化画像のそれぞれについて、x軸方向の輝度分布とy軸方向の輝度分布を作成する。
図4Aは、x軸方向の輝度分布とy軸方向の輝度分布の第1の例を示す図である。
図4Aに示す例では、本来は「0」である文字から得られた二値化画像に対するx軸方向の輝度分布とy軸方向の輝度分布を示す。尚、
図4Aに示す二値化画像401aは
図3に示した二値化画像301と同じものである。
図4Bは、x軸方向の輝度分布とy軸方向の輝度分布の第2の例を示す図である。
図4Bに示す例では、本来は「9」である文字から得られた二値化画像に対するx軸方向の輝度分布とy軸方向の輝度分布を示す。
【0020】
x軸方向の輝度分布とは、二値化画像401a、401bの水平方向(x軸方向)の画素の位置と、二値化画像401a、401bの当該位置において画素値が「1」である画素の数(画素数)との関係を示すものである。
図4A及び
図4Bに示すx軸方向の輝度分布402a、402bでは、二値化画像401a、401bの水平方向(x軸方向)のそれぞれの画素が存在している位置が横軸(x軸)に対応し、二値化画像401a、401bの当該位置において画素値が「1」である画素の総数が縦軸(画素数)に対応する。
【0021】
y軸方向の輝度分布とは、二値化画像401a、401bの垂直方向(y軸方向)の画素の位置と、二値化画像401a、401bの当該位置において画素値が「1」である画素の数(画素数)との関係を示すものである。
図4A及び
図4Bに示すy軸方向の輝度分布403a、403bでは、二値化画像401a、401bの垂直方向(y軸方向)のそれぞれの画素が存在している位置が縦軸(y軸)に対応し、二値化画像401a、401bの当該位置において画素値が「1」である画素の総数が横軸(画素数)に対応する。
輝度分布作成部106は、例えば、CPU、ROM、RAM、及びHDDを用いることにより実現される。
【0022】
<文字欠け判定部107>
文字欠け判定部107は、輝度分布作成部106により作成された「x軸方向の輝度分布とy軸方向の輝度分布」のそれぞれに基づいて、二値化部104で得られた二値化画像で示される文字の一部が欠落していることにより、文字認識部105で仮決めされた文字が誤認識されている可能性があるか否かを判定する。
例えば、自動マーキング装置の不具合により、一部分から塗料を吐出させることができなくなっている場合や、文字を形成するスラブの面の凹凸や自動マーキング装置のハンドリングにより、本来塗料が付着されるべきところに塗料が付着されない場合に、このような文字の欠落が発生する。
【0023】
文字欠け判定部107は、オペレータによる操作等に基づいて、x軸方向の輝度分布の画素数に対する画素数閾値と、y軸方向の輝度分布の画素数に対する画素数閾値と、を予め入力して記憶している。これらの画素数閾値は、二値化画像において画素値が「0」となるべき画素の画素値が、ノイズ等の影響により「1」となっているような場合には、当該画素の画素値を「0」と見なして処理するためのものである。このような観点から、これらの画素数閾値として、0を上回る値ではあるが、0を大きく上回らない値(0に近い値)が設定される。
【0024】
尚、本実施形態では、x軸方向の輝度分布の画素数に対する画素数閾値と、y軸方向の輝度分布の画素数に対する画素数閾値は、文字認識部105で認識された文字に関わらず一定であるとしている。ただし、文字認識部105で認識された文字に応じてこれらの値を変えてもよい。また、本実施形態では、x軸方向の輝度分布の画素数に対する画素数閾値と、y軸方向の輝度分布の画素数に対する画素数閾値を異ならせている。ただし、これらは同じであってもよい。
【0025】
文字欠け判定部107は、x軸方向の輝度分布の画素数が減少から増加に転じている領域(下に凸となる領域)であって、x軸方向の輝度分布の画素数が当該x軸方向の輝度分布に対する画素数閾値以下となる領域のx軸方向の長さが、予め定められた一定長以上であるか否かを判定する。以下の説明では、「x軸方向の輝度分布の画素数が減少から増加に転じている領域(下に凸となる領域)であって、x軸方向の輝度分布の画素数が当該x軸方向の輝度分布に対する画素数閾値以下となる領域のx軸方向の長さ」を必要に応じて「x軸方向の輝度分布における閾値以下区間長」と称する。この判定の結果、x軸方向の輝度分布における閾値以下区間長が、一定長以上である場合、二値化部104で得られた二値化画像で示される文字の一部が欠落していることにより、文字認識部105で仮決めされた文字が誤認識されている可能性があることになる。
前記一定長としては、文字として確実に欠落していると判断できる長さが設定される。
【0026】
同様に、文字欠け判定部107は、y軸方向の輝度分布の画素数が減少から増加に転じている領域(下に凸となる領域)であって、y軸方向の輝度分布の画素数が当該y軸方向の輝度分布に対する画素数閾値以下となる領域のy軸方向の長さが、予め定められた一定長以上であるか否かを判定する。以下の説明では、「y軸方向の輝度分布の画素数が減少から増加に転じている領域(下に凸となる領域)であって、y軸方向の輝度分布の画素数が当該y軸方向の輝度分布に対する画素数閾値以下となる領域のy軸方向の長さ」を必要に応じて「y軸方向の輝度分布における閾値以下区間長」と称する。この判定の結果、y軸方向の輝度分布における閾値以下区間長が、一定長以上である場合、二値化部104で得られた二値化画像で示される文字の一部が欠落していることにより、文字認識部105で仮決めされた文字が誤認識されている可能性があることになる。
y軸方向の輝度分布における閾値以下区間長と比較される一定長は、x軸方向の輝度分布における閾値以下区間長と比較される一定長と同様の観点で設定される(すなわち、0を上回る値ではあるが、0を大きく上回らない値(0に近い値)が設定される)。本実施形態では、これらの一定長が異なる場合を例に挙げて説明するが、これらの一定長は同じであってもよい。
【0027】
図4Aに示す例では、x軸方向の輝度分布402aの画素数が減少から増加に転じている領域(下に凸となる領域)は、x軸方向の輝度分布402aの谷間となっている領域に対応する。この領域において、x軸方向の輝度分布に対する画素数閾値404a以下となる領域のx軸方向の長さXが、x軸方向の輝度分布における閾値以下区間長に対応する。
図4Aにおいて、x軸方向の輝度分布における閾値以下区間長Xは、前記一定長以上であるとする。そうすると、文字欠け判定部107は、x軸方向の輝度分布402aから、二値化画像401aに示される文字の一部が欠落していることにより、文字認識部105で仮決めされた文字が誤認識されている可能性があると判定することになる。
一方、y軸方向の輝度分布403aの画素数が減少から増加に転じている領域(下に凸となる領域)において、y軸方向の輝度分布に対する画素数閾値405a以下となる位置は存在しない。したがって、文字欠け判定部107は、y軸方向の輝度分布403aからでは、二値化画像401aに示される文字の一部が欠落していないと判定する。
【0028】
また、
図4Bに示す例では、x軸方向の輝度分布402bの画素数が減少から増加に転じている領域(下に凸となる領域)において、x軸方向の輝度分布に対する画素数閾値404b以下となる位置は存在しない。さらに、y軸方向の輝度分布403bの画素数が減少から増加に転じている領域(下に凸となる領域)において、y軸方向の輝度分布に対する画素数閾値405b以下となる位置も存在しない。したがって、文字欠け判定部107は、二値化画像401bに示される文字の一部が欠落していないと判定する。
文字欠け判定部107は、例えば、CPU、ROM、RAM、及びHDDを用いることにより実現される。
【0029】
<文字つぶれ判定部108>
文字つぶれ判定部108は、文字欠け判定部107により、二値化画像で示される文字の一部が欠落していないと判定された場合に、二値化部104により得られた二値化画像に基づいて、二値化部104で得られた二値化画像で示される文字がつぶれていることにより、文字認識部105で仮決めされた文字が誤認識されている可能性があるか否かを判定する。
例えば、自動マーキング装置の不具合により、塗料を吐出量が多くなっている場合や、文字を形成するスラブの面の凹凸や自動マーキング装置のハンドリングにより、必要以上の量の塗料が付着された場合に、このような文字のつぶれが発生する。
【0030】
文字つぶれ判定部108は、オペレータによる操作等に基づいて、二値化画像の全画素数に対する、画素値が「1」である画素数の割合を示す面積割合の閾値を予め入力して記憶している。本実施形態では、この面積割合の閾値が、文字認識部105で仮決めされた文字毎に定められるものとしている。ただし、この面積割合の閾値は、文字認識部105で仮決めされた文字に関わらず一定の値であってもよい。
【0031】
文字つぶれ判定部108は、二値化画像の全画素数に対する、画素値が「1」である画素数の割合が、面積割合の閾値を上回るか否かを判定する。この判定の結果、二値化画像の全画素数に対する、画素値が「1」である画素数の割合が、面積割合の閾値を上回る場合、二値化画像で示される文字がつぶれていることにより、文字認識部105で仮決めされた文字が誤認識されている可能性があることになる。
例えば、面積割合の閾値が80[%]であるとする。また、
図4Bに示す二値化画像401bの全体の画素数が65536であり、画素値が「1」の(白色の領域の)画素数が52500であるとする。そうすると、二値化画像401bの全画素数に対する、画素値が「1」である画素数の割合は80.1[%]となり、面積割合の閾値を上回るので、二値化画像で示される文字がつぶれていると判定する。
文字つぶれ判定部108は、例えば、CPU、ROM、RAM、及びHDDを用いることにより実現される。
【0032】
<認識結果確定部109>
認識結果確定部109は、文字認識部105により仮決めされた文字を確定するのか、それとも削除するのかを、文字欠け判定部107及び文字つぶれ判定部108の判定結果に基づき決定する。
具体的に説明すると、文字欠け判定部107により、二値化画像で示される文字の一部が欠落していると判定された場合、又は、文字つぶれ判定部108により、二値化画像で示される文字がつぶれていると判定された場合に、認識結果確定部109は、文字認識部105により仮決めされた文字は読取不能として、当該文字認識部105により仮決めされた文字を削除する。
【0033】
一方、文字つぶれ判定部108により、二値化画像で示される文字がつぶれていないと判定された場合には、認識結果確定部109は、文字認識部105により仮決めされた文字を、認識された文字として確定する。尚、前述したように、本実施形態では、文字欠け判定部107により、二値化画像で示される文字の一部が欠落していない場合にのみ文字つぶれ判定部108が起動する。したがって、文字つぶれ判定部108により、二値化画像で示される文字がつぶれていないと判定された場合には、文字欠け判定部107により、二値化画像で示される文字の一部が欠落していないと判定されていることになる。
認識結果確定部109は、例えば、CPU、ROM、RAM、及びHDDを用いることにより実現される。
【0034】
<認識結果出力部110>
認識結果出力部110は、文字エリア切出部103により切り出された全ての文字について、認識結果確定部109による処理が行われると、認識結果確定部109により確定された文字のみを出力する。具体的に本実施形態では、認識結果出力部110は、当該文字を、文字列画像において配置されている位置に配置し、当該文字以外の削除された文字が配置されている領域を空欄にする。
出力形態としては、例えば、コンピュータディスプレイへの表示が挙げられる。ただし、これに加えて、又はこれに代えて、外部装置への送信や記憶媒体への記憶を行ってもよい。本実施形態では、このように、文字認識部105で仮決めされた文字のうち、認識結果確定部109により削除された文字の出力を行わないことにより、当該文字が読取不能であることを示す。
認識結果出力部110は、例えば、CPU、ROM、RAM、HDD、及び通信インターフェースを用いることにより実現される。
【0035】
<動作フローチャート>
次に、
図5のフローチャートを参照しながら、文字認識装置100の動作の一例を説明する。
まず、ステップS501において、画像取込部101は、撮像装置から、文字列画像を取り込む。
次に、ステップS502において、文字列エリア切出部102は、ステップS501で取り込まれた文字列画像から文字列がある領域(文字列切出画像)を切り出す(
図2を参照)。
【0036】
次に、ステップS503において、文字エリア切出部103は、ステップS502で切り出された文字列切出画像から、未だ切出していない文字画像の1つ(スラブNoを構成する文字の1つ)を切り出す。本実施形態では、先頭の文字から順に文字画像を切り出すものとする。
次に、ステップS504において、二値化部104は、ステップS503で切り出された文字画像に対して二値化処理を行って二値化画像を作成する(
図3を参照)。
次に、ステップS505において、文字認識部105は、ステップS504で作成された二値化画像に対して文字認識処理を行う。
【0037】
次に、ステップS506において、文字認識部105は、ステップS505で行った文字認識処理の結果、二値化画像に示されている文字を認識することができたか否かを判定する。この判定の結果、二値化画像に示されている文字を認識することができなかった場合には、当該文字は読取不能であるので、ステップS507〜S515の処理を省略して後述するステップS516の処理に進む。
一方、二値化画像に示されている文字を認識することができた場合には、ステップS507に進む。ステップS507に進むと、文字認識部105は、認識した文字を、二値化画像に示されている文字として仮決めする。
【0038】
次に、ステップS508において、輝度分布作成部106は、ステップS504で作成された二値化画像のx軸方向の輝度分布を作成する(
図4A及び
図4Bのx軸方向の輝度分布402a、402bを参照)。
次に、ステップS509において、文字欠け判定部107は、ステップS508で作成されたx軸方向の輝度分布における閾値以下区間長が、一定長以上であるか否かを判定する(
図4Aの閾値以下区間長Xを参照)。この判定の結果、x軸方向の輝度分布における閾値以下区間長が、一定長以上でない場合には、x軸方向の輝度分布からでは、文字の一部が欠落していないと判定し、y軸方向の輝度分布についての調査を行うために後述するステップS511に進む。
【0039】
一方、x軸方向の輝度分布における閾値以下区間長が、一定長以上である場合には、文字の一部が欠落していると判定し、ステップS510に進む。
ステップS510に進むと、認識結果確定部109は、ステップS507で仮決めされた文字は読取不能であるとして、当該文字を削除する。そして、後述するステップS516に進む。
前述したように、ステップS509において、x軸方向の輝度分布における閾値以下区間長が、一定長以上でないと判定された場合には、ステップS511に進む。ステップS511に進むと、輝度分布作成部106は、ステップS504で作成された二値化画像のy軸方向の輝度分布を作成する(
図4A及び
図4Bのy軸方向の輝度分布403a、403bを参照)。
【0040】
次に、ステップS512において、文字欠け判定部107は、ステップS511で作成されたy軸方向の輝度分布における閾値以下区間長が、一定長以上であるか否かを判定する。この判定の結果、y軸方向の輝度分布における閾値以下区間長が、一定長以上である場合には、文字の一部が欠落していると判定し、前述したステップS510に進み、認識結果確定部109は、ステップS507で仮決めされた文字は読取不能であるとして、当該文字を削除する。
一方、y軸方向の輝度分布における閾値以下区間長が、一定長以上でない場合には、文字の一部が欠落していないと判定し、文字のつぶれがあるか否かについての調査を行うためにステップS513に進む。
【0041】
ステップS513に進むと、文字つぶれ判定部108は、二値化画像の全画素数に対する、画素値が「1」である画素数の割合を導出する。
次に、ステップS514において、文字つぶれ判定部108は、ステップS513で導出された「二値化画像の全画素数に対する、画素値が「1」である画素数の割合」が、面積割合の閾値を上回るか否かを判定する。
この判定の結果、二値化画像の全画素数に対する、画素値が「1」である画素数の割合」が、面積割合の閾値を上回る場合には、文字がつぶれていると判定し、前述したステップS510に進み、認識結果確定部109は、ステップS507で仮決めされた文字は読取不能であるとして、当該文字を削除する。
【0042】
一方、二値化画像の全画素数に対する、画素値が「1」である画素数の割合」が、面積割合の閾値を上回らない場合には、ステップS515に進む。ステップS515に進むと、認識結果確定部109は、ステップS505で仮決めされた文字を、認識された文字として確定する。そして、ステップS516に進む。
ステップS516に進むと、文字エリア切出部103は、ステップS502で切り出された文字列切出画像から、全ての文字画像を切り出したか否かを判定する。この判定の結果、文字列切出画像から、全ての文字画像を切り出していない場合には、ステップS503の処理に戻り、次の文字画像についての処理を行う。
【0043】
一方、文字列切出画像から、全ての文字画像を切り出した場合には、ステップS517に進む。ステップS517に進むと、認識結果出力部110は、ステップS505で仮決めされた文字のうち、ステップS515で確定された文字のみを、文字列画像において当該文字が配置されている位置に配置して、出力する。
そして、
図5のフローチャートによる処理を終了する。
【0044】
<まとめ>
以上のように本実施形態では、二値化画像からOCRの技術を使って認識された文字を仮決めする。その後、当該二値化画像から、x軸方向の輝度分布402・y軸方向の輝度分布403を作成する。そして、x軸方向の輝度分布における閾値以下区間長・y軸方向の輝度分布における閾値以下区間長が一定長以上である場合には、文字の一部が欠落していることにより、仮決めされた文字が誤認識されている可能性があるとして当該文字を出力しないようにする。また、当該二値化画像の全画素数に対する、画素値が「1」である画素数の割合が、面積割合の閾値を上回る場合には、文字がつぶれていることにより、仮決めされた文字が誤認識されている可能性があるとして当該文字を出力しないようにする。
【0045】
したがって、スラブに印字されている文字が誤認識された場合に、誤認識された結果がそのまま出力されることを確実に防止することができる。例えば、一般的なOCRの技術を用いて、
図3に示す二値化画像301について文字認識処理を行うと、二値化画像301から「1」が認識される(可能性が高い)。しかし、
図3に示す二値化画像301は、「0」の文字画像に対応するものである。
図4Aを参照しながら説明したように、本実施形態では、
図3に示す二値化画像301により仮決めされた文字は削除されるので、誤認識された文字(この場合には「1」)がそのまま出力されることを防止することができる。
【0046】
<変形例>
本実施形態では、スラブに形成されたスラブNoを認識する場合を例に挙げて説明した。しかしながら、文字列はスラブNoに限定されるものではない。また、文字列が形成される対象はスラブに限定されない。すなわち、製造現場において最終製品又は中間製品に形成された1つ以上の切れ目のない文字を認識するものであればよい。また、認識対象の文字の数は、1文字でもよい。このようにした場合には、文字エリア切出部103の処理は不要になる。また、文字列切出画像の範囲を撮像範囲として撮像された場合、又は、撮像装置等によって文字列切出画像が得られている場合には、文字列エリア切出部102の処理は不要になる。
【0047】
また、本実施形態では、x(y)軸方向の輝度分布に対する画素数閾値が0を上回る値である場合を例に挙げて説明した。このようにすれば、例えば、ノイズ等の影響によって、x(y)軸方向の輝度分布において、当該影響がなければ画素数が0となる領域の画素が1以上存在していても、文字の欠落を確実に抽出することができるので好ましい。しかしながら、x(y)軸方向の輝度分布に対する画素数閾値は0であってもよい。このようにした場合には、x(y)軸方向の輝度分布の画素数が減少から増加に転じている領域(下に凸となる領域)であって、x(y)軸方向の輝度分布の画素数が当該x(y)軸方向の輝度分布に対する画素数閾値(=0)である領域(すなわち、x(y)軸方向の輝度分布の画素数が0である領域)のx(y)軸方向の長さを一定長と比較することになる。
【0048】
また、本実施形態では、「x(y)軸方向の輝度分布の画素数が減少から増加に転じている領域(下に凸となる領域)であって、x(y)軸方向の輝度分布の画素数が当該x(y)軸方向の輝度分布に対する画素数閾値以下となる領域のx(y)軸方向の長さ」を「x(y)軸方向の輝度分布における閾値以下区間長」とした。しかしながら、前記において、「画素数閾値以下」を「画素数閾値未満」に置き換えたものを「x(y)軸方向の輝度分布における閾値以下区間長」としてもよい。
また、本実施形態では、二値化画像の全画素数に対する、画素値が「1」である画素数の割合が、面積割合の閾値を上回るか否かを判定するようにした。しかしながら、二値化画像の全画素数に対する、画素値が「1」である画素数の割合が、面積割合の閾値以上であるか否かを判定するようにしてもよい。
【0049】
また、本実施形態では、文字認識部105で仮決めされた文字のうち、認識結果確定部109により削除された文字についての出力を行わないことにより、当該文字が読取不能であることを示すようにした。しかしながら、当該文字が読取不能であることを示す方法は、このような方法に限定されない。例えば、当該文字については、他の文字(認識された文字として確定された文字)とは異なる形態で表示することにより、当該文字が読取不能であることを示してもよい。
【0050】
また、本実施形態では、文字つぶれ判定部108は、文字欠け判定部107により、二値化画像で示される文字の一部が欠落していないと判定された場合に起動し、そうでない場合には起動しないようにした。しかしながら、必ずしもこのようにする必要はない。例えば、これとは逆に、文字つぶれ判定部108により、二値化画像で示される文字がつぶれていないと判定された場合に文字欠け判定部107が起動し、そうでない場合には起動しないようにしてもよい。また、文字欠け判定部107による判定と文字つぶれ判定部108による判定の双方を必ず行うようにしてもよい。
【0051】
また、本実施形態では、x軸方向の輝度分布に対する処理を行ってから、y軸方向の輝度分布に対する処理を行ったが、これとは逆に、y軸方向の輝度分布に対する処理を行ってから、x軸方向の輝度分布に対する処理を行ってもよい。
【0052】
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。第1の実施形態では、x(y)軸方向の輝度分布における閾値以下区間長が一定長以上であるか否かを判定して、文字の欠落の有無を判定すると共に、二値化画像の全画素数に対する、画素値が「1」である画素数の割合が、面積割合の閾値を上回るか否かを判定して、文字のつぶれの有無を判定する場合を例に挙げて説明した。これに対し、本実施形態では、x(y)軸方向の輝度分布と、仮決めされた文字に応じた基準となる輝度分布との差分をとった結果に基づいて、仮決めされた文字が正しいか否かを判定する。このように本実施形態と第1の実施形態とは、x(y)軸方向の輝度分布を用いた処理の一部が主として異なる。したがって、本実施形態の説明において、第1の実施形態と同一の部分については、
図1〜
図5に付した符号を付す等して詳細な説明を省略する。本実施形態でも、第1の実施形態と同様に、スラブNoを認識する場合を例に挙げて説明する。
【0053】
図6は、文字認識装置600の機能的な構成の一例を示す図である。
画像取込部101、文字列エリア切出部102、文字エリア切出部103、二値化部104、文字認識部105、及び輝度分布作成部106は、それぞれ第1の実施形態の文字認識装置100に備わっているものと同じである。
【0054】
<差分輝度分布作成部601、標準輝度分布記憶部602>
標準輝度分布記憶部602は、スラブNoとして想定される文字毎に、x軸方向の標準輝度分布と、y軸方向の標準輝度分布を、オペレータによる操作等に基づいて予め記憶している。
x(y)軸方向の標準輝度分布とは、x(y)軸方向の輝度分布として標準的な輝度分布をいう。すなわち、或る文字について、当該文字であれば、x(y)軸方向の輝度分布としてとるであろうと想定される輝度分布が、当該文字に対するx(y)軸方向の標準輝度分布となる。
【0055】
差分輝度分布作成部601は、文字認識部105により仮決めされた文字に対応する「x軸方向の標準輝度分布と、y軸方向の標準輝度分布」を標準輝度分布記憶部602から読み出す。
次に、差分輝度分布作成部601は、輝度分布作成部106で作成されたx軸方向の輝度分布からx軸方向の標準輝度分布を引いて、これらの差分であるx軸方向の差分輝度分布を作成する。また、差分輝度分布作成部601は、輝度分布作成部106で作成されたy軸方向の輝度分布からy軸方向の標準輝度分布を引いて、これらの差分であるy軸方向の差分輝度分布を作成する。
【0056】
図7は、二値化画像701と、x軸方向の輝度分布702と、x軸方向の標準輝度分布703と、x軸方向の差分輝度分布704の一例を示す図である。
図7に示す二値化画像701は、
図3、
図4Aに示した二値化画像301、401aと同じものであり。「0」の文字画像に対応するものである。また、
図7に示すx軸方向の輝度分布702は、
図4Aに示したx軸方向の輝度分布402aと同じものである。
第1の実施形態で説明したように、輝度分布作成部106によって、二値化画像701からx軸方向の輝度分布702が作成される。
また、ここでは、一般的なOCRの技術を用いて、二値化画像701について文字認識処理を行うと、二値化画像701から「1」が認識されるものとする。そうすると、差分輝度分布作成部601は、標準輝度分布記憶部602から「1」に対応するx軸方向の標準輝度分布703を読み出す。
【0057】
そして、差分輝度分布作成部601は、相互に同一の位置にある画素数を、x軸方向の輝度分布702とx軸方向の標準輝度分布703とからそれぞれ読み出し、読み出したx軸方向の輝度分布702の画素数から、x軸方向の標準輝度分布703の画素数を引いて、x軸方向の差分輝度分布704を作成する。
差分輝度分布作成部601は、例えば、CPU、ROM、RAM、及びHDDを用いることにより実現される。また、標準輝度分布記憶部602は、例えば、HDDを用いることにより実現される。
【0058】
<認識良否判定部603>
認識良否判定部603は、差分輝度分布作成部601により作成された「x軸方向の差分輝度分布、y軸方向の差分輝度分布」に基づいて、文字認識部105で仮決めされた文字が誤認識されている可能性があるか否かを判定する。
認識良否判定部603は、オペレータによる操作等に基づいて、x軸方向の差分輝度分布の画素数に対する画素数閾値と、y軸方向の差分輝度分布の画素数に対する画素数閾値と、を予め入力して記憶している。これらの画素数閾値には、正の値である第1の画素数閾値と、負の値である第2の画素数閾値とが含まれる(
図7に示す第1の画素数閾値705aと、第2の画素数閾値705bを参照)。本実施形態では、画素数閾値は、文字認識部105で認識された文字に関わらず一定である。ただし、文字認識部105で認識された文字に応じて画素数閾値(第1の画素数閾値と第2の画素数閾値との少なくとも何れか一方)を変えてもよい。
【0059】
認識良否判定部603は、x軸方向の差分輝度分布において、第1の画素数閾値以上となる領域のx軸方向の長さが一定長以上であるか否かを判定する。また、x軸方向の差分輝度分布において、第2の画素数閾値以下となる領域のx軸方向の長さが一定長以上であるか否かを判定する。
以下の説明では、「x軸方向の差分輝度分布において、第1の画素数閾値以上となる領域のx軸方向の長さ」を必要に応じて「x軸方向の差分輝度分布における閾値以上区間長」と称し、「x軸方向の差分輝度分布において、第2の画素数閾値以下となる領域のx軸方向の長さ」を必要に応じて「x軸方向の差分輝度分布における閾値以下区間長」と称する。
前記一定長は、x(y)軸方向の差分輝度分布において、ノイズ等の影響により、第1の画素数閾値以上の領域(第2の画素数閾値以下の領域)が局所的にある場合には、当該領域を、第1の画素数閾値以上の領域(第2の画素数閾値以下の領域)として見なさないようにするためのものである。前記一定長は、このような観点から設定される。
【0060】
同様に、認識良否判定部603は、y軸方向の差分輝度分布において、第1の画素数閾値以上となる領域のy軸方向の長さが一定長以上であるか否かを判定する。また、y軸方向の差分輝度分布において、第2の画素数閾値以下となる領域のy軸方向の長さが一定長以上であるか否かを判定する。
以下の説明では、「y軸方向の差分輝度分布において、第1の画素数閾値以上となる領域のy軸方向の長さ」を必要に応じて「y軸方向の差分輝度分布における閾値以上区間長」と称し、「y軸方向の差分輝度分布において、第2の画素数閾値以下となる領域のy軸方向の長さ」を必要に応じて「y軸方向の差分輝度分布における閾値以下区間長」と称する。
【0061】
認識良否判定部603は、x軸方向の差分輝度分布における閾値以上区間長、x軸方向の差分輝度分布における閾値以下区間長、y軸方向の差分輝度分布における閾値以上区間長、及びy軸方向の差分輝度分布における閾値以下区間長の少なくとも何れか1つが一定長以上である場合、文字認識部105で仮決めされた文字が誤認識されている可能性があると判定する。一方、x軸方向の差分輝度分布における閾値以上区間長、x軸方向の差分輝度分布における閾値以下区間長、y軸方向の差分輝度分布における閾値以上区間長、及びy軸方向の差分輝度分布における閾値以下区間長の全てが0である場合、又はそれらの全てが一定長未満である場合、認識良否判定部603は、文字認識部105で仮決めされた文字は誤認識されていないと判定する。
【0062】
図7において、x軸方向の差分輝度分布における閾値以上区間長X1、X2は、一定長以上であり、x軸方向の差分輝度分布における閾値以下区間長X3も、一定長以上であるとする。そうすると、認識良否判定部603は、文字認識部105で仮決めされた文字が誤認識されている可能性があると判定することになる。
認識良否判定部603は、例えば、CPU、ROM、RAM、及びHDDを用いることにより実現される。
【0063】
<認識結果確定部604>
認識結果確定部604は、文字認識部105により仮決めされた文字を確定するのか、それとも削除するのかを、認識良否判定部603の判定結果に基づき決定する。
具体的に説明すると、認識良否判定部603により、文字認識部105で仮決めされた文字が誤認識されている可能性があると判定された場合に、認識結果確定部604は、文字認識部105により仮決めされた文字は読取不能として、当該文字認識部105により仮決めされた文字を削除する。
一方、認識良否判定部603により、文字認識部105で仮決めされた文字が誤認識されている可能性がないと判定された場合には、認識結果確定部604は、文字認識部105により仮決めされた文字を、認識された文字として確定する。
認識結果確定部604は、例えば、CPU、ROM、RAM、及びHDDを用いることにより実現される。
【0064】
そして、第1の実施形態で説明したように、認識結果出力部110は、文字エリア切出部103により切り出された全ての文字について、認識結果確定部604による処理が行われると、認識結果確定部604により確定された文字のみを出力する。このとき、認識結果出力部110は、当該文字を、文字列画像において配置されている位置に配置し、当該文字以外の削除された文字が配置されている領域を空欄にする。
【0065】
<動作フローチャート>
次に、
図8のフローチャートを参照しながら、文字認識装置600の動作の一例を説明する。
まず、ステップS801〜S808は、それぞれ、
図5のステップS501〜S508と同じ処理である。
すなわち、ステップS801において、画像取込部101は、撮像装置から、文字列画像を取り込み、ステップS802において、文字列エリア切出部102は、文字列切出画像を切り出し、ステップS803において、文字エリア切出部103は、未だ切出していない文字画像の1つを切り出し、ステップS804において、二値化部104は、切り出された文字画像から二値化画像を作成する。
【0066】
そして、文字認識部105は、ステップS805において、二値化画像に対して文字認識処理を行い、ステップS806において、文字認識処理の結果から、二値化画像に示されている文字を認識することができたか否かを判定する。この判定の結果、二値化画像に示されている文字を認識することができなかった場合には、ステップS807〜S817の処理を省略して後述するステップS818の処理に進む。
一方、二値化画像に示されている文字を認識することができた場合には、ステップS807に進み、文字認識部105は、認識した文字を、二値化画像に示されている文字として仮決めする。
【0067】
次に、ステップS808において、輝度分布作成部106は、ステップS804で作成された二値化画像のx軸方向の輝度分布を作成する(
図7のx軸方向の輝度分布702を参照)。
次に、ステップS809において、差分輝度分布作成部601は、ステップS805で仮決めされた文字に対応するx軸方向の標準輝度分布を標準輝度分布記憶部602から読み出す(
図7のx軸方向の標準輝度分布703を参照)。
次に、ステップS810において、差分輝度分布作成部601は、ステップS808で作成されたx軸方向の輝度分布から、ステップS809で読み出したx軸方向の標準輝度分布を引いて、これらの差分であるx軸方向の差分輝度分布を作成する(
図7のx軸方向の差分輝度分布704を参照)。
【0068】
次に、ステップS811において、認識良否判定部603は、ステップS810で作成されたx軸方向の差分輝度分布において、x軸方向の差分輝度分布における閾値以上区間長と、x軸方向の差分輝度分布における閾値以下区間長と、の少なくとも1つが一定長以上であるか否かを判定する。この判定の結果、x軸方向の差分輝度分布における閾値以上区間長と、x軸方向の差分輝度分布における閾値以下区間長と、の少なくとも1つが一定長以上である場合には、ステップS805で仮決めされた文字が誤認識されているとしてステップS812に進む。
【0069】
ステップS812に進むと、認識結果確定部604は、ステップS805で仮決めされた文字は読取不能であるとして、当該文字を削除する。そして、後述するステップS818に進む。
一方、ステップS811において、x軸方向の差分輝度分布における閾値以上区間長と、x軸方向の差分輝度分布における閾値以下区間長と、の全てが一定長以上でない場合には、x軸方向の差分輝度分からでは、ステップS805で仮決めされた文字は誤認識されていないと判定し、ステップS813に進む。
【0070】
ステップS813に進むと、輝度分布作成部106は、ステップS804で作成された二値化画像のy軸方向の輝度分布を作成する。
次に、ステップS814において、差分輝度分布作成部601は、ステップS805で仮決めされた文字に対応するy軸方向の標準輝度分布を標準輝度分布記憶部602から読み出す。
次に、ステップS815において、差分輝度分布作成部601は、ステップS813で作成されたy軸方向の輝度分布から、ステップS814で読み出したy軸方向の標準輝度分布を引いて、これらの差分であるy軸方向の差分輝度分布を作成する。
【0071】
次に、ステップS816において、認識良否判定部603は、ステップS815で作成されたy軸方向の差分輝度分布において、y軸方向の差分輝度分布における閾値以上区間長と、y軸方向の差分輝度分布における閾値以下区間長と、の少なくとも1つが一定長以上であるか否かを判定する。この判定の結果、y軸方向の差分輝度分布における閾値以上区間長と、y軸方向の差分輝度分布における閾値以下区間長と、の少なくとも1つが一定長以上である場合には、ステップS805で仮決めされた文字が誤認識されているとして前述したステップS812に進む。そして、ステップS812に進むと、認識結果確定部604は、ステップS805で仮決めされた文字は読取不能であるとして、当該文字を削除する。そして、後述するステップS818に進む。
【0072】
一方、ステップS816において、y軸方向の差分輝度分布における閾値以上区間長と、y軸方向の差分輝度分布における閾値以下区間長と、の全てが一定長以上でない場合には、ステップS805で仮決めされた文字は誤認識されていないと判定し、ステップS817に進む。
ステップS817に進むと、認識結果確定部604は、ステップS805で仮決めされた文字を、認識された文字として確定する。そして、ステップS818に進む。ステップS818に進むと、文字エリア切出部103は、ステップS802で切り出された文字列切出画像から、全ての文字画像を切り出したか否かを判定する。この判定の結果、文字列切出画像から、全ての文字画像を切り出していない場合には、ステップS803の処理に戻り、次の文字画像についての処理を行う。
【0073】
一方、文字列切出画像から、全ての文字画像を切り出した場合には、ステップS819に進む。ステップS819に進むと、認識結果出力部110は、ステップS805で仮決めされた文字のうち、ステップS817で確定された文字のみを、文字列画像において当該文字が配置されている位置に配置して、出力する。
そして、
図8のフローチャートによる処理を終了する。
【0074】
<まとめ>
以上のように本実施形態では、x軸方向の輝度分布・y軸方向の輝度分布から、x軸方向の標準輝度分布・y軸方向の標準輝度分布を引いてx軸方向の差分輝度分布・y軸方向の差分輝度分布を作成する。そして、x軸方向の差分輝度分布における閾値以上区間長・x軸方向の差分輝度分布における閾値以下区間長・y軸方向の差分輝度分布における閾値以上区間長・y軸方向の差分輝度分布における閾値以下区間長の少なくとも1つが一定長以上である場合には、仮決めされた文字が誤認識されている可能性があるとして当該文字を出力しないようにする。したがって、文字毎に、標準輝度分布を記憶しておく必要はあるものの、第1の実施形態のように、文字の欠落の有無の判定と文字のつぶれの判定を個別に行う必要がなくなる。
【0075】
<変形例>
本実施形態では、x(y)軸方向の輝度分布から、x(y)軸方向の標準輝度分布を引いたものをx(y)軸方向の差分輝度分布とした。しかしながら、x(y)軸方向の標準輝度分布からx(y)軸方向の輝度分布を引いたものをx(y)軸方向の差分輝度分布としてもよい。
また、本実施形態では、x軸方向の差分輝度分布における閾値以上区間長・x軸方向の差分輝度分布における閾値以下区間長・y軸方向の差分輝度分布における閾値以上区間長・y軸方向の差分輝度分布における閾値以下区間長のそれぞれを、一定長とを比較した。しかしながら、必ずしもこのようにする必要はない。例えば、x(y)軸方向の差分輝度分布の絶対値をとり、絶対値をとったx(y)軸方向の差分輝度分布において、画素数閾値以上となる領域のx(y)軸方向の長さが一定値以上であるか否かを判定してもよい。このようにすれば、x(y)軸方向の差分輝度分布に対して2つの閾値(第1の画素数閾値、第2の画素数閾値)を設定する必要がなくなる。
【0076】
また、本実施形態では、x軸方向の差分輝度分布における閾値以上区間長・x軸方向の差分輝度分布における閾値以下区間長・y軸方向の差分輝度分布における閾値以上区間長・y軸方向の差分輝度分布における閾値以下区間長のそれぞれが、一定長以上であるか否かを判定した。しかしながら、一定長以上であるか否かではなく、一定長を上回るか否かを判定してもよい。
【0077】
また、本実施形態では、「x(y)軸方向の差分輝度分布において、第1の画素数閾値以上となる領域のx(y)軸方向の長さ」を「x(y)軸方向の差分輝度分布における閾値以上区間長」とし、「x(y)軸方向の差分輝度分布において、第2の画素数閾値以下となる領域のx(y)軸方向の長さ」を「x(y)軸方向の差分輝度分布における閾値以下区間長」とした。しかしながら、前記において、「第1の画素数閾値以上」を「第1の画素数閾値超」に置き換えたものを「x(y)軸方向の差分輝度分布における閾値以上区間長」とし、「第2の画素数閾値以下」を「第2の画素数閾値未満」に置き換えたものを「x(y)軸方向の差分輝度分布における閾値以下区間長」としてもよい。
【0078】
また、本実施形態では、x軸方向の差分輝度分布に対する処理を行ってから、y軸方向の差分輝度分布に対する処理を行ったが、これとは逆に、y軸方向の差分輝度分布に対する処理を行ってから、x軸方向の差分輝度分布に対する処理を行ってもよい。
この他、第1の実施形態と同一の部分については、第1の実施形態で説明した種々の変形例を本実施形態においても採用することができる。
【0079】
尚、以上説明した本発明の実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、前記プログラムを記録したコンピュータ読み取り可能な記録媒体及び前記プログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、以上説明した本発明の実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【0080】
<請求項との関係>
二値化手段(工程)は、例えば、二値化部104が
図5のステップS503、
図8のステップS803の処理を実行することにより実現される。
文字認識手段(工程)は、例えば、文字認識部105が
図5のステップS505、
図8のステップS805の処理を実行することにより実現される。
輝度分布作成手段(工程)は、例えば、輝度分布作成部106が
図5のステップS508、S511、
図8のステップS808、S813の処理を実行することにより実現される。
認識結果判定手段(工程)は、第1の実施形態では、例えば、文字欠け判定部107が
図5のステップS509、S512の処理を行うことにより実現される。第2の実施形態では、例えば、差分輝度分布作成部601が
図8のステップS809、S810、S814、S815の処理を行い、認識良否判定部603が
図8のステップS811、S816の処理を行うことにより実現される。
認識結果出力手段(工程)は、例えば、認識結果出力部110が
図5のステップS617、
図8のステップS819の処理を実行することにより実行される。
第1の認識結果判定手段(工程)は、例えば、文字欠け判定部107が
図5のステップS509、S512の処理を実行することにより実現される。
第2の認識結果判定手段(工程)は、例えば、文字つぶれ判定部108が
図5のステップS514の処理を実行することにより実現される。
第1の輝度分布は、例えば、x軸方向の輝度分布により実現され、第2の輝度分布は、例えばy軸方向の輝度分布により実現される。
水平方向認識結果判定手段(工程)は、文字欠け判定部107が
図5のステップS509の処理を実行することにより実現される。
垂直方向認識結果判定手段(工程)は、文字欠け判定部107が
図5のステップS512の処理を実行することにより実現される。