【実施例1】
【0016】
棄却方法を備える文字認識装置の実施例について、図表を参照しながら説明する。本実施例の文字認識装置は、入力文書画像中の文字を検知、認識し、文字をコード化することよって、入力文書を電子化する装置である。入力文書には、一般文書の他に、例えば、帳票、明細書などがある。
図2は、本実施例の文字認識装置の一例を示す構成図である。
本実施例の文字認識装置201は、例えば、押印認識および帳票認識を行うものであり、入力装置202、表示装置203、イメージ取得装置204、通信装置205、演算装置(CPU)206、外部記憶装置207を備える。外部記憶装置207は、正読画像データベース211及び棄却画像データベース212を含む。
入力装置202は、コマンド等を入力するためのキーボードやマウス等である。入力装置202は、演算装置(CPU)206で実行されるプログラムの制御や、その他、接続機器の制御のために実行されるコマンド等を入力するための装置である。
表示装置203は、処理内容を適宜表示するディスプレイ等の装置である。
イメージ取得装置204は、スキャナなどのイメージ取得用の装置である。取得したイメージは、外部記憶装置等に記憶してもよい。
通信装置205は、PCやサーバ等の外部機器からのデータのやりとりを行うために用いる。通信装置205は、外部機器からのユーザによる実行コマンドの取得や、画像やテキストなどの情報の外部機器からの取得等の目的に用いられる。また、通信装置205は、押印認識および帳票認識装置201での処理内容を外部機器に送信する等の目的にも用いられる。
演算装置(CPU)206は、文書画像中の文字認識に用いる認識用辞書の生成などの処理を実行する演算装置である。
外部記憶装置207は、HDD,メモリ等の外部記憶装置である。外部記憶装置207には、帳票画像、押印画像、押印認識用辞書などの各種データが保存されている。また、外部記憶装置には、演算装置(CPU)206によって実行される処理の途中で生成されるデータ等を一時的に記憶しておくためにも用いられる。
入力装置202、表示装置203、イメージ取得装置204、通信装置205はなくてもよい。入力装置202が無い場合には、処理の開始は、通信装置205を用いて外部機器から指示するか、または、時刻指定等により自動的に行う。表示装置203が無い場合には、処理結果は通信装置205を用いて外部機器に送信するか、外部記憶装置207に記憶しておく。
処理を実行するモジュールの出力と入力は、外部記憶装置207を介して行ってもよい。すなわち、処理部1が、処理結果を処理部2に出力し、処理部2は、その処理結果を入力として受け取る場合、実際には、処理部1が処理結果を外部記憶装置207に出力し記憶しておき、処理部2では、外部記憶装置207に記憶されている処理部1の出力結果を入力として取得してもよい。
【0017】
次に、本実施例における文字認識装置201によって実施される処理の説明に移る。
以下では、まず、本発明の関連技術による文字認識装置の処理を
図5を用いて説明する。なお、その後、本実施例の処理を
図1を用いて説明する。
まず、本発明の関連技術による文字認識装置の処理について説明する。
図5に、文字認識装置による文書電子化の流れの典型的な例を示す。
文書の画像化(スキャン)101では、文字認識装置201のCPU206は、スキャナ等により文書を読込み、画像化する。このときに、背景印刷がカラーで印字されている場合などは、CPU206は、特定の色の印字を光学的に除去するカラードロップアウト等の処理を行う場合もある。入力文書は、一般文書、帳票類、また、初めから文字認識装置で処理する目的で作成されているマークシート用紙等がある。
前処理102では、CPU206は、文書画像のカラー画像の二値化(白黒化)やノイズ除去、背景印刷などの不要部分の除去等の処理を行う。前処理後の二値画像は、例えば、
図6の帳票画像601のようになる。
レイアウト解析103で、CPU206は、二値画像のレイアウト解析を行い、図表の位置、段落構造、項目とデータの位置などを認識する。項目とデータの位置については、CPU206は、例えば、
図6の参照番号602の場合には、表構造の関係から参照番号602の欄の上にある支払金額が項目名で、その下の7,890,123が記載されている枠がデータ枠である、などと解析する。論文や技術報告書の場合などには、文書の構造と位置関係から、タイトル、著者、要旨、ページ番号などが書かれている位置を認識するなどのメタデータ抽出を行う場合もある。
文字列抽出104では、CPU206は、文書画像中から文字列単位の画像を抽出する。CPU206は、一般文書の場合には1行分の画像、表の場合には枠内の画像、など文字列単位の画像を抽出する。例えば、
図6の参照番号602のように、表の枠内の画像を抽出する。
文字切出105、文字認識503、認識結果選定114、の一連の処理では、抽出した各文字列画像中の文字を認識する。ここでの処理は、
図6の参照番号603のように、文字列画像を文字単位に分割して、各々の文字画像中の文字を認識することにより、最終的に参照番号604のように文字コード等の計算機が扱えるコードに変換する。
上記の文字列抽出104から後の、文字切出105から認識結果選定114までの処理を、例を挙げて説明する。
【0018】
図10は、文字切出処理を説明するための図である。
まず、文字切出105について説明する。例えば、文字列抽出によって、
図10の画像1001のような文字列画像が得られたとする。まず、文字切出105の処理では、CPU206は、文字線同士が交差する点や、文字線が途切れた点などを基に、切断候補点を作成する。
図10の画像1002が、切断候補点による分割を示す。この例では、4つの画像に分割されている。この各分割画像と、隣接した複数個の画像の合成が、文字画像候補となる。
図10の画像1003の例では、左から1つ目と2つ目の画像、左から2つ目と3つ目の画像も、それぞれ文字画像候補として、6つの文字画像候補を得ている。左端の点から右端の点に左から右に至る各ルートが、文字列1001の切出し候補となる。
図7は、文字識別の結果を説明するための図である。
次に、文字認識503では、CPU206は、候補となっている個々の文字画像中の文字を認識する。ここでは、例えば、
図7のように各文字画像に対する正解候補文字(1位候補文字種)と、その正解候補文字に対する類似度(尤度、信頼度)を得る。
次に、CPU206は、文字認識503で得た正解候補文字と類似度を基に、認識結果の候補となるネットワークを
図11の参照番号1101のように作成する。画像を除いたものが、参照番号1102である。左端の点から右端の点に左から右に至る各ルートが認識結果候補となる。また、ここでは、CPU206は、文字画像の認識結果の信頼性が低いと判断した場合、棄却処理を行い、認識結果に対して棄却フラグを立てるなどして、認識結果の信頼性が低いことを後の処理、またはユーザに知らせる。
この文字認識503の内部の処理について説明する。ここでは、CPU206は、個々の文字画像中に描かれている文字を認識する。また、認識結果の棄却処理も行う。
まず、文字識別106について説明する。ここでは、まず、CPU206は、文字画像をベクトル値に変換する特徴抽出処理を行う。ベクトル値の次元数をNとすると、特徴抽出処理によって、1つの文字画像はN次元ベクトルとして表現される。文字画像をベクトル値として表現することにより、文字画像の分布を統計的に扱うことが可能となる。
【0019】
図14は、特徴抽出の処理の例を示すための図である。
特徴抽出について、
図14を用いて説明する。まず、CPU206は、文字画像の正規化を行う。一般に入力文字画像は、サイズが異なる。そのため、正規化では、文字画像のサイズを揃えることによって、後の処理で統一的に扱えるようにする。また、入力文字画像は、筆記具、筆記者、フォントなどの違いによって同じ字種の文字であっても字形が大きくことなる場合がある。このことは、認識精度低下の原因となる。そこで、正規化処理では、入力文字画像のサイズの変形と字形の変形によって、サイズの統一や同一字種間での字形のばらつきを低減する。
図14の画像1401が入力文字画像の例で、画像1402は64×64のサイズに変形した画像である。正規化処理に関しては、様々な方法があり、例えば、非特許文献1に詳しく記載されている。
次に、正規化により生成された正規化画像をベクトル値に変換する特徴抽出を行う。特徴抽出にも様々な方法があり、例えば、非特許文献1に詳しく記載されている。ここでは、最も簡単な画素特徴抽出の例を用いて説明する。画素特徴抽出では、正規化画像を小領域に分割する。
図14の例では、正規化画像1402を64個の小領域に分割している。分割の様子を画像1403に示した。次に、各小領域の黒画素の個数を要素とするベクトル値に変換する。小領域が64個あるため、画像1404のように64次元のベクトル値が生成される。
広く用いられている特徴抽出の方法のもう一つ例として、勾配特徴抽出方法について説明する。
【0020】
図19及び
図20は、勾配特徴抽出方法についての説明図(1)及び(2)である。
ここでは、正規化により生成される正規化画像には、1画素分の白縁をつけているとする。また、画素点(i、j)の正規化画像の画素値をf(i、j)とおく。このとき、CPU206は、正規化画像の各画素点(i、j)において、勾配ベクトルg=(gx、gy)を以下のように計算する。これは、
図19に示すフィルタをかけることに相当する。
gx(i、j)={f(i+1、j+1)+2f(i、j+1)+f(i−1、j+1)−f(i+1、j−1)−2f(i、j−1)−f(i−1、j−1)}/8
gy(i、j)={f(i+1、j+1)+2f(i+1、j)+f(i+1、j−1)−f(i−1、j+1)−2f(i−1、j)−f(i−1、j−1)}/8
ただし、上記の式において、画素点(i、j)が画像の縁にある場合には、その周囲の画素点が画像の領域外となる場合がある。そのときは、画像外の領域におけるfの値は0と考えて、上記の式を計算する。これによって、各画素点(i、j)において、画素値の勾配ベクトルg=(gx、gy)が得られる。
次に、CPU206は、ベクトルg(i、j)を
図20の参照番号2001に示す45度間隔の8方向g0(i、j)、g1(i、j)、…、g7(i、j)に分解する。分解は、g(i、j)の方向に近接する2つの方向に分解する。但し、g(i、j)の方向が8方向のいずれかに完全に一致する場合には、分解の必要はなく、仮に方向0に一致した場合には、g0(i、j)=ベクトルg(i、j)の長さ、とし、他の方向については、g1(i、j)=…=g7(i、j)=0とおく。
図20の参照番号2002の図によって、分解の方法を説明する。CPU206は、g(i、j)が参照番号2002に示すように、方向0と方向1の間に存在する場合、ベクトルg(i、j)を方向0と方向1の成分に分解する。このとき、方向0の成分の長さをp0、方向1の成分の長さをp1とすると、g0(i、j)=p0、g1(i、j)=p1、p2(i、j)=…=p7(i、j)=0とする。
以上のようにして、8つの方向画像g0(i、j)、…、g7(i、j)が生成される。文字の変形に対する頑健性を高めるために、この画像にガウスフィルタによるぼかしを施す場合もある。その場合には、ぼかしをかけた方向画像をあたらめて、g0(i、j)、…、g7(i、j)とおく。次に、CPU206は、各方向画像gi(x、y)を小領域に分割し、各小領域の画素値の合計値を要素とするベクトルを生成する。いま、各方向画像を64の小領域に分割したとすると、各方向画像から64個の値が得られる。これが、各方向について得られるため、8方向で合計64×8=512個の値が得られる。これをベクトルの成分として、512次元のベクトルが生成される。
以上が、勾配特徴抽出方法の説明である。
【0021】
以上のようにして、CPU206は、文字画像をベクトル値に変換する。以下では、特徴抽出によって生成されるベクトル値の次元数をNとする。これによって、1つ1つの文字画像は、N次元空間上の点として表現され、同一文字種は近い領域に分布することになる。その様子を次の
図9に模式的に示した。
図9は、文字識別用の方式を説明するための図である。丸、三角、四角がそれぞれ、文字種A,文字種B、文字種Cに対応する各文字画像から抽出されたN次元ベクトル点を表している。例えば、一つ一つの○は、文字種Aの異なる画像から抽出されたベクトルを表している。
【0022】
次に、CPU206は、予め作成しておいた文字識別用辞書を参照し、文字画像から抽出されたベクトル値に基づいて、文字画像中に描かれている文字を識別する。
ここで、まず、文字識別辞書について説明しておく。文字識別用辞書には、例えば、各識別対象文字種kに対して、N次元ベクトルを引数にとり、実数値を値にとる識別関数fk(x)が保存されている。識別関数fk(x)は、文字種kが描かれている文字画像から生成されるN次元ベクトルxに対しては大きい値を、その他の字種が描かれている文字画像から生成されるN次元ベクトルxに対しては小さい値をとるように、予め、学習によって生成しておく。識別関数fk(x)の値は、ベクトルxの字種kに対する類似度、尤度などと呼ばれる。例えば、数字を対象とした認識の場合には、0〜9の10字種に対応して、10個の識別関数f0(x)、f1(x)、…、f9(x)が存在する。
CPU206は、この識別関数を、例えば、文字画像と文字ラベルから成る学習用文字画像データベースを用いて作成することができる。
図15は、学習用文字画像データベースの例を示すための図である。図示のように、文字ラベルは、文字画像中に描かれている文字を示すコード化されている正解ラベルである。学習用文字画像データベースは、例えば、指定の枠内に指定の文字を人に書いてもらうなどとして、文字画像を収集して作成することができる。CPU206は、この学習用文字画像データベースに含まれている各画像を上記と同様の方法によってN次元ベクトルに変換する。ここで、CPU206は、これらのN次元ベクトルと正解ラベルに基づいて、識別関数fk(x)を字種kに対応するN次元ベクトルに対しては大きな値を、それ以外の字種に対応するN次元ベクトルに対しては小さな値をとるように学習により生成する。識別関数の学習方法には、例えば、SVM(Support Vector Machine),ニューラルネットワーク、ガウスモデル、LVQ(Learning Vector Quantization)等の様々な方法を用いることができる。
文字の識別では、CPU206は、文字画像から抽出したN次元ベクトルxを用いて、各字種の識別関数fk(x)の値を計算する。識別関数fk(x)の値は、字種kに対する類似度であるため、fk(x)の値が最も大きい字種kが認識結果の第一位候補となる。同じように、二番目に値が大きい識別関数に対する字種kが認識結果の第二候補となる。このようにして第n候補まで認識結果が得られる。例えば、
図6の文字切出603によって切出した文字画像の認識は、
図7のようになる。以上により、
図6の参照番号604のように認識結果が得られ、計算機が扱える文字コードなどのコードに変換される。
以上が文字識別106の説明である。
【0023】
上記で説明した文字識別は、文字画像と各認識対象字種の類似度を計算し、それに基づいて、候補文字を得る処理である。OCR装置の有用性を高めるためには、この文字識別の精度が重要である。しかし、認識結果が疑わしい場合には、それを知らせる認識結果の棄却処理も重要である。
図12は、非文字と曖昧文字の例を示すための図である。棄却の対象となるものには、たとえば、
図12の参照番号1201に示すような非文字や参照番号1202に示すような曖昧文字がある。非文字は、たとえば、文字切出のミスによる文字の一部や複数文字が合わさった画像、汚れなどの外乱要因が混入したものなどがある。曖昧文字は、たとえば、参照番号1202の左端の画像のように7と9の区別がつかないものなどがある。
棄却処理が精緻であれば、いくつかの利点がある。ひとつは、もし、誤って文字を認識したまま結果が保存されると、誤ったままにするか、これを修正するためには、全認識結果を人手によって再チェックしなければならない。これに対して、認識結果が疑わしい場合に、これをユーザに知らせることができれば、ユーザはその部分のみ修正すればよい。また、棄却を精度良く行うことができれば、その要因として、前処理、文字行抽出、文字切出など、前の処理に失敗している可能性があると判断して、前のいずれかの処理から処理方法や処理条件などを変えて、再度、処理を試すことができる。これにより、認識精度を高めることができる。
以下では、正しく文字画像中の文字を認識する率を正読率、誤って認識する率を誤読率、認識結果を棄却する率を棄却率とよぶことにする。一般に、棄却を強くしすぎると、誤読していたものを棄却するようになるだけでなく、正しく読めていたもののうちいくつかは棄却してしまうため、正読率、誤読率ともに低くなる。そのため、棄却は、正読率をなるべく落とさないように、かつ、誤読率を減少させることが望ましい。
以下では棄却判定部の処理である非文字棄却501、曖昧文字棄却502について説明する。
非文字棄却501について説明する。入力文字画像から抽出されたN次元ベクトルをxとする。また、第一位候補文字k1に対応する識別関数をfk1とする。このとき、fk1(x)は文字種k1に対する類似度である。r1(x)=−fk1(x)とおくと、r1(x)は、文字種k1に対する非類似度とみなすことができる。そのため、CPU206は、閾値h1をあらかじめ定めておき、r1(x)>h1のとき、非類似度が高い(類似度が低い)として棄却の判断をする。これは、入力画像が非文字であったとき、第一位候補の文字に対しても類似度が低いことが想定されるため、非文字の棄却を想定したものである。
次に、曖昧文字棄却502について説明する。第二位候補文字k2に対応する識別関数をfk2とする。このとき、fk2(x)は文字種k2に対する類似度である。また、fk1(x)≧fk2(x)となる。r2(x)=fk2(x)−fk1(x)とおくと、このr2(x)の値が大きいほど、fk1(x)とfk2(x)の値が近いことになる。このとき、第一位候補文字と第二位候補文字の間で識別が曖昧であることを示している。そのため、CPU206は、閾値h2をあらかじめ定めておき、r2(x)>h2のとき、識別結果が曖昧であるとして棄却する。この処理は、非文字棄却501において、すでに棄却判定がされている場合には、スキップしてもよい。
【0024】
以上が、文字認識503での処理の説明である。この処理を各文字画像に対して行う。
認識結果選定114では、CPU206は、単語辞書等を参照し、各文字に対する認識の類似度(信頼度)を総合的に判断しながら、認識結果候補の中から、最終的な認識結果を選定する。単語辞書は、例えば、住所認識をしている場合には、予め、住所のリストを保存した辞書等とすることができる。一般文書の認識の場合には、単語などとなる。
以上が、文字切出105から認識結果選定114までの処理である。この処理を各文字列画像に対して行う。
【0025】
次に、リトライ判定115では、CPU206は、処理を変えて認識の再処理を行うかどうか判断する。再処理は、例えば、文書画像全体を対象とする場合もあるし、文字列画像単位、文字画像単位の場合もある。例えば、文字列認識結果に類似度(尤度、信頼度)が低い文字が存在する場合、単語辞書に合致する結果が得られなかった場合、読みとれなかった文字が存在する場合、などに、CPU206は、再処理を行う。再処理を行う場合には、CPU206は、これ以前のいずれかの処理から処理方式を変える、処理条件を変える、などして、再度認識を試す。例えば、前処理102の二値化やノイズ除去の方式を変えるなどである。最後に、認識後処理116では、CPU206は、認識結果を記憶装置等に保存する、ディスプレイに表示する、などの処理を行う。
以上が本発明の関連技術による文字認識装置の処理の流れである。
【0026】
図13は、棄却対象となる画像の例を示すための図である。棄却指標には、上記のr1、r2のほかにも、CPU206は、
図13の参照番号1301のような文字のかすれ度合いr3(x)や、参照番号1302のような文字のつぶれ度合いr4(x)を算出して、それを基に棄却判定を行う方法がある。あらかじめ閾値h3を定めておいて、r3(x)>h3となったときには、かすれが大きいため棄却する。また、あらかじめ閾値h4を定めておいて、r4(x)>h4となったときには、つぶれが大きいため棄却する。また、他にも、文字画像の重心位置や文字線の線幅の平均値なども使うことができる。例えば、重心位置の場合には、文字識別結果が8であるのに重心位置が中心から大きくずれている場合は、棄却する、などの判定を行う。
ここで、かすれ度合いr3(x)、つぶれ度合いr4(x)の例を挙げる。ただし、上記では、xは特徴抽出により抽出されるベクトルとしたが、ここでは、xは正規化画像であるとする。各字種ごとに、学習DBから正規化画像の平均合計画素値mを予め計算しておく。入力画像に対して、r3(x)は、mから入力画像の正規化画像の合計画素値を引いた値、r4(x)は、入力画素の正規化画像の合計画素値からmを引いた値とする。これによって、入力画像の正規化画像の合計画素値がmより小さい場合にはr3が大きく、逆に大きい場合にはr4が小さくなる。
しかし、これらの指標の組み合わせ方は従来明らかでない。従来技術では、いずれかの基準により棄却されたものを棄却とするなど単純な方法をとるか、人手で試行錯誤しながら複数の指標を組み合わせる、などの方法がとられる。
前者の単純な方法では、すべての棄却指標を算出する必要があるため、計算コストがかかる。その上、いずれかの棄却指標で閾値を超えた場合に棄却されるため、一般に棄却が強すぎて正読率が低下する場合が想定され、高い正読率、且つ低い誤読率を達成するという棄却の目的からしても、必ずしも適しているとは限らない。また、後者の人手での試行錯誤は、この指標の数が多くなると、相当コストのかかる方法であり、実現が困難である場合が想定される。
【0027】
3.文字認識
本実施例では、複数の棄却指標を効果的に組み合わせた棄却方式を自動的に構成することができる。これによって、複数の棄却指標を組み合わせるための人的コストを削減できる。また、正読率を高水準に維持したまま、誤読率を削減することができ、精緻かつ高速な棄却方式を構成することができる。
本実施例の文字認識装置の処理を図を用いて説明する。
図17は、本発明の実施例の文字認識装置の処理を説明するフローチャートの例である。
文書の画像化101、前処理102、レイアウト解析103、文字列抽出104、文字切出105、文字識別106、認識結果選定114、リトライ判定115、認識後処理116は
図5及びその説明箇所で記載したように、本発明の関連技術文字認識装置の処理と同様である。
【0028】
以下では、文字認識1707の内部の棄却判定部である処理1701から処理1706までの処理について説明する。棄却処理では、CPU206は、文字識別106の結果と、棄却値とを用いて、棄却判断を行う。CPU206は、棄却と判定された場合には、当該文字認識結果に棄却フラグを立てるなどして、後の処理や、ユーザに知らせ、その結果を利用できるようにする。
本実施例の棄却組合せの構成には、予め、棄却したい画像サンプルを集めた棄却画像データベースと正読させたい画像サンプルを集めた正読画像データベースを準備しておく。棄却画像データベースは、文字識別106で誤読してしまうサンプル、非文字画像、曖昧文字画像、かすれ画像、つぶれ画像など、棄却したい画像サンプルを集めたデータベースである。正読画像データベースは、文字識別106の処理で正しく文字識別できるものなど、正読させたい文字画像サンプルを集めたデータベースである。以下では、正読画像データベースのサンプルのうち棄却判定されるものの割合を誤棄却率、棄却画像データベースのサンプルのうち棄却判定されないものの割合を誤受理率とよぶことにする。誤棄却率、誤受理率がともに小さいほど、棄却判定の精度が良いことになる。
以下では、n個の棄却値算出部があるとして、棄却値に棄却値1、棄却値2、…、棄却値nのように、番号を付ける。また、画像xを入力として、棄却値を出力する関数(棄却関数)をr1(x)、r2(x)、…、rn(x)などと書くことにする。
棄却値の性質について簡単に説明しておく。棄却関数ri(x)は、棄却したいサンプルに対しては高い値をとり、棄却したくないサンプルに対しては低い値をとるような性質をもつように構成されたものである。例えば、すでに述べたように、かすれ度、つぶれ度や、識別関数の値を用いて計算される非文字度、曖昧度などである。閾値h1を設けておき、ri(x)>h1のときに棄却する、などとして用いる。このとき、h1が大きすぎると、十分に棄却することができず、誤読率が高くなる。一方で、h1が低すぎると、誤読率は小さくなるが、正読率も落ちてしまう。そのため、ユーザの要求に応じて、正読率をなるべく落とさないように、かつ、誤読率を減少させるように、h1を調整する。
【0029】
図16は、二つの棄却値に対して、いずれかの棄却値で閾値を超えたときに棄却と判断する場合に、棄却と判断される値の領域を斜線により示した。棄却値1が閾値1を超えた場合、または、棄却値2が閾値2を超えた場合に棄却されるので、棄却領域は
図16の斜線部のようになる。
本実施例では、これらn個の棄却値を棄却強度が強い順に配置する。棄却強度が強いとは、当該棄却値に基づく棄却判定の棄却率が高いことを意味する。棄却強度の定め方の例をいくつか挙げる。
一つ目の例を挙げる。まず、誤棄却率と誤受理率の和eを指定する。各棄却関数riに対して、ri(x)>hiによって棄却判定を行った場合の誤棄却率と誤受理率の和eが最も小さくなるように、hiを設定する。このとき、ri(x)>hiのときに棄却することによる棄却判定を行った場合の学習用文字画像データベースのサンプルの棄却率が高い順に、棄却値を選定する。
二つ目の例を挙げる。各棄却関数riに対して、予めユーザによって閾値hiが指定されているとする。このとき、ri(x)>hiのときに棄却することによる棄却判定を行った場合の学習用文字画像データベースの棄却率が高い順に、棄却値を選定する。
いま、棄却値が3つ存在し、r1、r2、r3の順に棄却率が高い、すなわち、棄却強度が高いとする。このとき、
図17の処理1701から処理1706のような順で処理を行う。つまり、棄却値1算出1701で入力画像xに対する棄却値r1(x)を算出し、棄却判定1(1702)で、r1(x)>h1であれば、棄却と判定し、そうでなければ、棄却しない。棄却と判定された場合には、後の棄却処理である処理1703から処理1706までの処理をスキップする。棄却と判定されなかった場合には、次の処理1703に移る。以下、同様にして、棄却判定2の処理、又は、棄却判定2と棄却判定3の処理を続ける。例では、棄却値が3つの場合について説明したが、2個以上のいずれの個数の棄却値がある場合にも同様である。
本実施例では、棄却と判定された時点で処理を終えることができる。さらに、棄却率が高い順番に先に配置されているため、計算コスト上、効率的である。
【実施例4】
【0033】
図2は、本実施例の文字認識装置の一例を示す構成図であり、実施例1と同様である。
図1に、本実施例の文字認識装置の処理の流れを示す。文書の画像化101、前処理102、レイアウト解析103、文字列抽出104、文字切出105、文字識別106、認識結果選定114、リトライ判定115、認識後処理116の文字認識装置の処理も、実施例1と同様である。また、文字識別106も実施例1と同様である。
本実施例では、文字認識117における棄却判定を行う処理の組み合わせ(107〜113の部分に相当)が異なる。
本実施例の棄却組合せの構成には、予め、棄却したい画像サンプルを集めた棄却画像データベースと正読させたい画像サンプルを集めた正読画像データベースを準備しておく。棄却画像データベースは、文字識別106で誤読してしまうサンプル、非文字画像、曖昧文字画像、かすれ画像、つぶれ画像など、棄却したい画像サンプルを集めたデータベースである。正読画像データベースは、文字識別106の処理で正しく文字識別できるものなど、正読させたい文字画像サンプルを集めたデータベースである。以下では、正読画像データベースのサンプルのうち棄却判定されるものの割合を誤棄却率、棄却画像データベースのサンプルのうち棄却判定されないものの割合を誤受理率とよぶことにする。誤棄却率、誤受理率がともに小さいほど、棄却判定の精度が良いことになる。
以下では、n個の棄却値算出部があるとして、棄却値に棄却値1、棄却値2、…、棄却値nのように、番号を付ける。また、画像xを入力として、棄却値を出力する関数をr1(x)、r2(x)、…、rn(x)などと書くことにする。
【0034】
本実施例では、これらn個の棄却値を棄却値同士の独立性の高さ、独立性の低さ(相関性の高さ)、棄却効率を考慮しながら、組み合わせる。本実施例の棄却値算出器の組み合わせの方針は、棄却値算出器を直列または並列につなぐ。その組み合わせ方は、独立性の高い棄却値算出器同士は直列に組合せ、独立性の低い(相関性の高い)棄却値算出器同士は並列に組合せ、棄却強度が強い棄却値算出器ほど先に配置する。また、並列に組み合わせる場合には、組み合わせた複数の棄却値に基づいて、新たな棄却値を定め、それに基づいて棄却判断を行う。さらに、棄却効率が高い処理ほど先に配置する。
図16は、二つの棄却値に対して、いずれかの棄却値で閾値を超えたときに棄却と判断する場合に、棄却と判断される値の領域を斜線により示した。棄却値1が閾値1を超えた場合、または、棄却値2が閾値2を超えた場合に棄却されるので、棄却領域は
図16の斜線部のようになる。
まず、
図3を用いて、棄却値同士の独立性について説明する。
図3は、2つの棄却値の値と、棄却したいサンプル、正読したいサンプルの分布を模式的に表したものである。三角が棄却画像データベースのサンプルを表し、丸が正読画像データベースのサンプルを表す。このような分布では、正読画像データベースのサンプルの分布と棄却画像データベースのサンプルの分布の境界線が、
図3のように、右上方向に大きく凸状になる。このような場合に、2つの棄却値は独立性が高いと呼ぶことにする。このような状況は、2つの棄却値が独立性の高い事象を基に棄却値を算出する場合に起こり得る。例えば、棄却値1は、文字のかすれ度を計算しており、棄却値2は、文字の重心位置の標準的な重心位置からの乖離の大きさを計算している場合などである。
【0035】
本実施例では、棄却値が独立性が高い場合には、棄却値1算出と棄却値2算出を直列に処理する。つまり、まず、棄却値1を算出した上で、閾値1より値が高い場合には棄却とする判断を行う。棄却と判定されれば、棄却処理を終える。棄却と判定されなかった場合には、棄却値2を算出した上で、閾値2より値が高い場合には棄却と判断する。棄却と判定されれば、棄却処理を終える。棄却と判定されなかった場合には、次の棄却処理に移る。
図3のように閾値1、閾値2を定め、棄却値1が閾値1を超えた場合、または、棄却値2が閾値2を超えた場合に棄却と判断することで、効率良く棄却することができる。このような棄却値は直列に処理すれば良い。
次に、
図4を用いて、棄却値同士の独立性の低さ(相関性の高さ)について説明する。
図4は、2つの棄却値の値と、棄却したいサンプル、正読したいサンプルの分布を模式的に表したものである。三角が棄却画像データベースのサンプルを表し、丸が正読画像データベースのサンプルを表す。このような分布では、正読画像データベースのサンプルの分布と棄却画像データベースのサンプルの分布の境界線が、
図4のように、
図3の場合ほど凸度が大きく無い場合、直線に近い場合、または、逆に左下方向に凸となる場合、2つの棄却値は独立性が低いと呼ぶことにする。このような状況は、2つの棄却値が相関性の高い事象を基に棄却値を算出する場合に起こり得る。例えば、棄却値1は、すでに説明したような識別関数に基づく非文字度を算出しており、棄却値2は、識別関数に基づく曖昧度を算出しているような場合である。このような場合には、どちらも識別関数を基にして棄却値を計算しているため、互いに関連性をもち、
図4のような分布となる。
本実施例では、棄却値の独立性が低い場合には、棄却値1算出と棄却値2算出を並列に処理する。つまり、棄却値1をx1、棄却値2をx2としたとき、これらを引数にとる関数f(x1、x2)により新たに棄却値を定め、f(x1、x2)の値が一定の閾値以上の場合に棄却する。棄却と判定されれば、棄却処理を終える。棄却と判定されなかった場合には、次の棄却処理に移る。関数fの定め方は、実施例3と同様である。
図4の分布の場合には、例えば、f(x1、x2)=x1+x2とすれば、左上から右下に斜め方向に閾値境界線を定めることができ、正読画像データベースのサンプルと棄却画像データベースのサンプルを分離することができる。
図4のような分布の場合には、棄却値を直列につなぐと、棄却値1が閾値1より大きいか、または、棄却値2が閾値2より大きい領域のみが棄却され、閾値1より左で、かつ、閾値2より下に分布している三角のサンプルが棄却できない。また、これらを棄却するために閾値1や閾値2の値を下げると、今度は、正読させたい丸のサンプルを多数棄却してしまうことになる。そのため、このような棄却値は並列に繋ぐ必要がある。
以上のように、本実施例では、独立性の高い棄却値同士は直列に処理し、並列性の高い棄却値同士は並列に処理する。
【0036】
ここで、2つの棄却値の独立性が高いか、独立性が低い(相関性が高い)か、判断するための方法の例を挙げる。2つの棄却値をそれぞれx1、x2とおく。この2個の棄却値を引数とする2つの関数g1(x1、x2)、g2(x1、x2)を定義する。
関数g1(x1、x2)は、実施例3と同様に二次関数で、正読画像データベースのサンプルに対して負の値をとり、棄却画像データベースのサンプルに対して正の値をとるように、コスト関数cに基づいて、機械学習により設定する。g1は、例えば、
図3、
図4に示すように、g1=0となる等高線が境界線となり、境界線より左下の領域で負、右上の領域で正となるような関数となる。
関数g2(x1、x2)は、2つの値h1、h2をパラメータとしてもち、x1>h1、またはx2>h2となる場合にg2(x1、x2)=1、その他の場合にg2(x1、x2)=−1となるような関数とする。すなわち、g2(x1、x2)>0となる領域が棄却領域である。ただし、全てのサンプルに対してこの条件を満たすようなパラメータを設定することは、一般には不可能であるので、パラメータを引数にとり、条件を満たさない度合いを示すコスト関数c(h1、h2)を定義し、この値が小さくなるように、機械学習によって学習する。c(h1、h2)は、例えば、棄却画像データベースのサンプルでg2=−1となるものの個数をv1、正読画像データベースのサンプルでg2=1となるものの個数をv2とし、c(h1、h2)=v1+v2(条件を満たさないサンプルの個数)などとする。例えば、ニューラルネットワークやSVMなどを用いることができる。このようにして作成したg2のg2=1とg2=−1の境界線は、棄却値1または棄却値2の軸に平行で、正読画像データベースの分布と棄却画像データベースのサンプルを分けるような境界となる。
図3、
図4の例では、閾値1がh1、閾値2がh2を示す点線であるとすると、g2は閾値1より左側でかつ、閾値2より下側の領域でg2=−1、閾値1より右側か、または閾値2より上側の領域でg2=1となる。
【0037】
上記の関数g2(x1、x2)によるg2=1とg2=−1の境界は、棄却処理を直列に繋いだ場合の棄却領域の境界に相当する。一方、関数g1(x1、x2)によるg1=0の等高線は、実施例3の方法により棄却処理を並列に繋いだ場合の棄却領域の境界に相当する。
ここで、関数g1により生成される棄却領域による精度と関数g2により生成される棄却領域による精度を比較する。棄却画像データベースのサンプルでg2=−1となるサンプルの個数をv1、正読画像データベースのサンプルでg2=1となるサンプルの個数をv2、棄却画像データベースのサンプルでg1<0となるサンプルの個数をw1、正読画像データベースのサンプルでg1≧0となるサンプルの個数をw2とする。v1、w1が誤受理の個数、v2、w2が誤棄却の個数に相当する。誤受理の個数p1、誤棄却の個数p2の場合の損失関数をh(p1、p2)とおく。hは、p1、p2の単調増加関数である。例えば、h(p1、p2)=p1+p2などとする。この場合は、誤受理数と誤棄却数の和である。hの値が小さいほど、棄却の精度が良いとみなすことができる。
次に、h(v1、v2)とh(w1、w2)を比較する。一般に、関数g1による棄却領域のほうが精度が良く、h(v1、v2)はh(w1、w2)より大きくなる。ここで、D=h(v1、v2)−h(w1、w2)は、直列に繋いだ場合と並列に繋いだ場合の損失の差を表している。これが一定以上、大きい場合には、g2による棄却領域では不十分であり、棄却値1と棄却値2の独立性が低いと判断する。逆に、D=h(v1、v2)−h(w1、w2)が一定の値以上、小さい場合には、棄却値1と棄却値2の独立性が高いと判断する。
以上、説明を簡単にするために、2つの棄却値について説明したが、3つ以上の場合にも同様である。
【0038】
本実施例では、独立性が高い処理は並列に、独立性が低い処理は直列に配置する。並列に配置した場合の棄却値には、実施例3と同じく上記の関数g1を用いることができる。また、実施例2と同じく、棄却効率が高いものほど先に配置する。
n個の棄却値がある場合に、棄却値の構成法について例を挙げる。
図22に、棄却値の構成処理のフローチャートを示す。この処理は、文字認識装置201のCPU206、又は、文字認識装置201以外の他の処理装置で実行するようにしてもよい。まず、CPU206又は他の処理装置は、n個の棄却値の中から最も独立性が低い(上記のDの値が大きい)ペアを選定する。CPU206又は他の処理装置は、この独立性を判定する値Dが予め定めた値より低い場合には、選定したペアは独立性が高いので、このn個の棄却値は直列に配置する。CPU206又は他の処理装置は、選定したペアの独立性が低いと判定された場合には、選定したペアは並列につなぎ、これらの棄却値に基づく新たな棄却値を実施例3の方法と同様にして定める。この並列に繋がれた棄却値を1つの棄却値とみなすと、n−1個の棄却値が存在する。同様にして、CPU206又は他の処理装置は、n−1個の棄却値の中から最も独立性が低いペアを選定する。選定したペアが独立性が高いと判定された場合には、CPU206又は他の処理装置は、このn−1個の棄却値は直列に配置する。選定したペアの独立性が低いと判定された場合には、CPU206又は他の処理装置は、選定したペアは並列につなぎ、これらの棄却値に基づく新たな棄却値を実施例3の方法と同様にして定める。このとき、もし、選定したペアを構成する棄却値(r1、r2とする)が複数の棄却値の並列から成っている場合には、CPU206又は他の処理装置は、その棄却値を構成する元の棄却値に分解し、それらの棄却値を並列につなぎ、これらの棄却値に基づく新たな棄却値を実施例3の方法と同様にして定める。たとえば、r1は、もともと2つの棄却値s1、s2を並列につなぐことで構成されていた場合、CPU206又は他の処理装置は、r1をもとの棄却値に分解し、s1、s2、r2を並列につなぐ。以上のようにして、CPU206又は他の処理装置は、最終的に、独立性が低いと判定されるペアがなくなるまで続ける。
【0039】
図1には、棄却値1と棄却値2が並列に繋がれ、棄却値3、棄却値4、棄却値5が並列に繋がれ、前者のセットと後者のセットが直列に繋がれている構成を示している。
図1の場合の棄却の構成を表で示すと
図21の表2103のようになる。表の各行(横方向)は並列の並びを示し、合成する棄却関数とその合成関数、列方向(縦方向)は直列での並びを示す。
図1の場合には、まず棄却値1と棄却値2が並列に繋がれ、棄却値3、棄却値4、棄却値5が並列に繋がれているため、最初の行には、棄却関数1と棄却関数2が、次の行には棄却関数1、棄却関数2、棄却関数3が並んでいる。合成関数f1、f2は、例えば、上記で説明したg1を作成した方法により作ることができる。