本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
[実施の形態1]
<構成について>
(ハードウェア構成)
はじめに、本発明の実施の形態1に係る文字認識装置1000のハードウェア構成について説明する。文字認識装置1000としては、代表的にPC(Personal Computer)が採用されてよい。
図1は、本発明の実施の形態1に係る文字認識装置1000のハードウェア構成を示すブロック図である。
図1を参照して、文字認識装置1000は、各種演算処理を実行するためのCPU(Central Processing Unit)210と、CPU210で実行されるプログラムや各種の情報を不揮発的に記憶するためのハードディスク部(HDD:Hard Disk Drive)212と、各種データを一時的に記憶するためのメモリ部214と、ユーザからの指示の入力を受付けるための入力部211と、各種情報を表示するためのディスプレイ部213と、画像を入力するための画像読取部216と、光学媒体たとえばCD−ROM(Compact Disk-Read Only Memory)215aに記憶されたデータやプログラムを読み出すためのCD−ROMドライブ215と、外部機器との間でデータの授受を行なうための通信インターフェイス部217とを含む。また、上述の各部は、内部バス218を介して相互にデータを授受する。
画像読取部216は、たとえばスキャナ、あるいは、カメラを含む。
(機能構成)
次に、本実施の形態に係る文字認識装置1000の機能構成について説明する。
図2は、本発明の実施の形態1に係る文字認識装置1000の機能ブロック図である。
図2を参照して、文字認識装置1000は、画像を取り込むための画像入力部1001と、文字認識結果を出力するための出力部1002と、各ハードウェアの動作を制御するとともに、各種演算処理を行なう制御部1003と、辞書データ蓄積メモリ1020と、合成方式情報メモリ1030とを備える。
画像入力部1001は、たとえば画像読取部216に対応する。なお、通信インターフェイス部217やCD−ROMドライブ215などに対応してもよい。
出力部1002は、たとえばディスプレイ部213に対応する。なお、通信インターフェイス部217やCD−ROMドライブ215などに対応してもよい。
制御部1003は、CPU210に対応する。
辞書データ蓄積メモリ1020および合成方式情報メモリ1030は、たとえばハードディスク部212に対応する。なお、CD−ROM215aに対応し、CD−ROMドライブ215によって読み出されてもよい。
文字認識装置1000は、画像入力部1001により入力された画像における文字領域を入力パターンとして抽出し、入力パターンの合成方式が、所定の複数の合成方式のうちいずれであるかを判定する。また、判定された合成方式に従い2以上の辞書パターンを合成して合成辞書パターンを生成することができる。
本実施の形態において、各「辞書パターン」は、1つの文字を表わし、「文字」とは、ひらがな,カタカナ,アルファベットなどの本来の文字の他、“#”,“○”などの記号、および、図形等をも含む。
また、「合成方式」とは、1つの文字領域に、複数の辞書パターンのうちの2以上の辞書パターンを合成する仕方を表わし、「所定の複数の合成方式」は、垂直組文字、水平組文字、かぎ型(L字,逆L字)組文字、円枠文字、多角形枠文字、分数文字のいずれかを含むものとする。垂直組文字は、1文字分の領域に、上下に2以上の文字が集約された文字、あるいは、斜めに2以上の文字が集約された文字をいう。水平組文字は、1文字分の領域に、左右に2以上の文字が集約された文字をいう。かぎ型組文字は、1文字分の領域を4つに分割した場合に1つの空白領域を含むように集約された文字をいう。円枠文字は、1以上の文字が円枠(○)で囲まれた合成文字(円枠と1以上の文字とが組み合わせられた文字)をいう。多角形枠文字は、1以上の文字が四角形などの多角形の枠で囲まれた合成文字(多角形枠と1以上の文字とが組み合わせられた文字)をいう。分数文字は、文字と文字との間に斜線(または水平線)が挟まれた文字(2以上の文字と直線とが組み合わせられた文字)をいう。
本実施の形態において、複数の合成方式は、これら6つの合成方式を含み、垂直組文字、水平組文字、かぎ型組文字、円枠文字、多角形枠(たとえば四角枠)文字および分数文字は、それぞれ、合成方式1〜6に対応するものとして説明する。
また、「合成文字」とは、いずれかの合成方式により2以上の辞書パターンが合成された文字パターンをいう。なお、本実施の形態において「合成する」とは、集約する、組合せる、重ね合わせる、とも捉えることができる。
辞書データ蓄積メモリ1020は、オリジナル辞書領域1021と、合成辞書領域1022とを含む。
オリジナル辞書領域1021には、予め、複数の辞書パターンが記憶されている。
合成辞書領域1022には、後述する合成処理が実行された場合に、合成辞書パターンが記憶される。したがって、出荷時には、何も記憶されていなくてよい。
合成方式情報メモリ1030は、文字セット対応テーブル1031と、合成方法対応テーブル1032とを含む。文字セット対応テーブル1031には、合成方式ごとの、辞書パターンの合成の仕方を表わす合成方法が、合成方式と対応付けられて予め記憶される。合成方法対応テーブル1032には、複数の合成方式それぞれに対応付けて、複数組の辞書パターンの組合せが予め記憶される。なお、これらのテーブルの内容例については、後述する。
制御部1003は、切り出し部1004と、特徴抽出部1005と、第1マッチング部1006と、合成方式判定部1007と、辞書合成部1008と、第2マッチング部1009と、比較部1010と、出力制御部1011とを含む。
切り出し部1004は、画像入力部1001から入力された画像から文字領域(文字画像)を切り出す(抽出する)。切り出された文字領域は、入力パターンとして特徴抽出部1005に出力される。
特徴抽出部1005は、入力パターンごとの特徴を抽出する。抽出された入力パターンは、マッチング部1006に出力される。
第1マッチング部1006は、オリジナル辞書領域1021を検索して、入力パターンごとに、複数の辞書パターンそれぞれとマッチングを行なう。つまり、入力パターンの特徴と辞書パターンの特徴とのマッチングを行なう。そして、類似度が最も高い辞書パターンを、第1のマッチング結果として抽出する。
上記した切り出し部1004、特徴抽出部1005および第1マッチング部1006の処理は、従来の手法により実現されてよい。
なお、第1のマッチング結果に対応する辞書パターンの類似度が、所定値以上であれば、当該入力パターンは、オリジナル辞書領域1021に記憶された文字の可能性が高い(合成文字ではない可能性が高い)と判定され、第1のマッチング結果が、出力制御部1011に出力されるものとする。
これに対し、上記類似度が、所定値未満であれば、当該入力パターンは、合成文字の可能性が高いと判定され、以降の処理が行なわれる。この場合、第1のマッチング結果に関する情報は、比較部1010に出力される。
合成方式判定部1007は、上述の複数の合成方式のうち、入力パターンの合成方式を判定する。つまり、入力パターンを構成する文字の合成方式が判定される。判定された合成方式は、辞書合成部1008に出力される。
辞書合成部1008は、文字セット対応テーブル1031および合成方法対応テーブル1032に基づき、2以上の辞書パターンを合成して1以上の合成辞書パターンを生成する。生成された合成辞書パターンは、合成辞書領域1022に記録される。
第2マッチング部1009は、合成辞書領域1022を参照して、合成辞書パターンごとに、入力パターンとのマッチングを行なう。また、第2マッチング部1009は、合成辞書パターンごとの類似度を算出し、類似度が最も高い合成辞書パターンを、第2のマッチング結果として抽出する。抽出された第2のマッチング結果に関する情報は、比較部1010に出力される。
比較部1010は、第2のマッチング結果の類似度と、第1のマッチング結果の類似度とを比較して、前者の方が後者よりも高いか否かを判断する。なお、両者の類似度が同程度の値であれば、第1のマッチング結果を出力することが好ましい。したがって、比較部1010は、第2のマッチング結果の類似度が、第1のマッチング結果の類似度よりも所定の閾値以上高いか否かを判断することが好ましい。比較部1010は、比較の結果に応じて、第1のマッチング結果に関する情報、または、第2のマッチング結果に関する情報を出力制御部1011に出力する。
出力制御部1011は、マッチング結果の後処理を行なう。つまり、出力制御部1011は、第1または第2のマッチング結果に基づく文字情報を出力するための処理を行なう。これにより、出力部1002は、第1または第2のマッチング結果に基づく文字情報を出力する。
なお、制御部1003に含まれる各ブロックの動作は、たとえばハードディスク部212中に格納されたソフトウェアを実行することで実現されてもよいし、これらのブロックのうち少なくとも1つについては、ハードウェアで実現されてもよい。
また、文字認識装置1000は、必ずしも画像入力部1001を備えている必要はなく、画像を記憶する装置(たとえばハードディスク部212)を備えていればよい。その場合、記憶された画像に対して、上述のような処理が実行される。
<動作について>
次に、本発明の実施の形態1に係る文字認識装置1000の動作について説明する。
図3は、本発明の実施の形態1に係る文字認識装置1000が実行する文字認識処理を示すフローチャートである。図3のフローチャートに示す処理は、予めプログラムとしてハードディスク部212に格納されており、制御部1003がこのプログラムを読み出して実行することにより、文字認識処理の機能が実現される。
図3を参照して、画像入力部1001が、原稿などを読取り、文字画像を入力する(ステップS101)。
次に、切り出し部1004は、入力された画像データから、文字を1文字のパターン(入力パターン)として矩形に切り出す(ステップS102)。特徴抽出部1005は、切出された入力パターンの特徴を抽出する(ステップS103)。
第1マッチング部1006は、オリジナル辞書領域1021を検索して入力パターンと辞書パターンとのマッチングを行なう(ステップS104)。そして、第1マッチング部1006は、類似度が最も高い辞書パターン(以下「類似辞書パターン」という)を抽出し、その類似辞書パターンに関する情報を、第1のマッチング結果情報としてメモリ部214に一時的に記録する。第1のマッチング結果情報には、類似辞書パターンと、その類似度とが含まれる。
制御部1003は、入力パターンと類似辞書パターンとの類似度が閾値Th0以上でああるか否かを判断する(ステップS105)。「閾値Th0」とは、入力パターンと辞書パターンとの類似度がマッチすると確定できる値を表わし、用途や類似度計算方法によって適切な値が設定されてよい。
具体的には、たとえば、一度、文字認識が行なわれた文書を編集するなどして再利用する場合には、文書を精度良く認識することが望まれる。したがって、そのような場合に、閾値Th0は比較的低く設定されることが好ましい。これに対し、一度、文字認識が行なわれたテキストを検索用にPDF(Portable Document Format)に貼り付ける場合などには、合成文字を認識する必要性は低い。そのような場合には、閾値Th0は比較的高く設定されることが好ましい。そうすることで、文字認識速度が速くなる。
類似度が閾値Th0以上であれば(ステップS105においてYES)、ステップS112に進む。一方、類似度が閾値Th0未満であれば(ステップS105においてNO)、合成方式判定処理が実行される(ステップS106)。合成方式判定処理については、図4に示したサブルーチンを用いて後述する。
合成方式判定処理が終わると、合成方式判定部1007は、入力パターンを構成する文字がいずれかの合成方式に合致したか否かを判断する(ステップS107)。入力パターンが、どの合成方式とも判定されなかった場合は(ステップS107においてNO)、ステップS112に進む。この場合、ステップS112において、ステップS104で抽出された第1のマッチング結果情報が出力バッファにセットされる。
一方、入力パターンがいずれかの合成パターンと判定された場合は(ステップS107においてYES)、辞書合成部1008は辞書合成処理を行なう(ステップS108)。辞書合成処理については、図15に示すサブルーチンを用いて後述する。
辞書合成処理において1以上の合成辞書パターンが合成辞書領域1022に格納されると、第2マッチング部1009は、合成辞書パターンと入力パターンとのマッチングを行なう(ステップS109)。第2マッチング部1009は、合成辞書パターンごとに、入力パターンとの類似度を算出し、その類似度が最も高い合成辞書パターン(以下「特定パターン」という)を第2のマッチング結果情報として抽出する。
比較部1010は、第1のマッチング結果情報と第2のマッチング結果情報とを比較する(ステップS110)。つまり、特定パターン(合成辞書)との類似度が、類似辞書パターン(オリジナル辞書)との類似度よりも所定値以上高いか否かを判断する。特定パターンとの類似度の方が所定値以上高いと判断された場合(ステップS110においてYES)、ステップS111に進む。一方、特定パターンとの類似度が所定値以上高くないと判断された場合(ステップS110においてNO)、ステップS112に進む。
ステップS111において、第2のマッチング結果情報すなわち、特定パターンのマッチング結果が出力バッファにセットされる。つまり、出力バッファにセットされていた第1のマッチング結果情報に第2のマッチング結果情報が上書きされる。
ステップS112において、第1のマッチング結果情報すなわち、類似辞書パターンのマッチング結果が出力バッファにセットされる。
なお、出力バッファに記憶されるマッチング結果情報の具体例については、後述する。
ステップS111またはS112の処理が終わるとステップS114に進む。
ステップS114において、出力バッファの内容が入力パターンのマッチング結果として出力制御部1011に出力される。出力制御部1011は、入力されたマッチング結果を出力(表示)するための処理を行なう(ステップS115)。処理されたマッチング結果は、出力部1002に出力(表示)される(ステップS116)。
以上で、文字認識処理は終了される。
本実施の形態によると、文字パターンが入力されると、まず、合成文字である可能性が高いかどうかが判定される。合成文字である可能性が高いと判定された場合に、判定された合成方式に基づき、既存の辞書パターンから合成辞書パターンが作成される。このように、合成文字である可能性が高い場合にのみ合成文字の認識処理を実行することで、文字認識の処理速度の低下を防止することができる。
また、既存の辞書パターンを組み合わせることにより合成辞書が作成されるため、予め、あらゆる合成文字の辞書パターンをオリジナル辞書領域1021に記憶する必要がない。
また、判定された合成方式に基づいて、辞書パターンが合成されるため、精度良く合成文字を認識することができる。
また、既存の辞書パターンの類似度と合成辞書パターンの類似度とを比較し、後者の方が高い場合にのみ、合成辞書パターンのマッチング結果を出力する。これにより、合成辞書パターンの類似度が辞書パターンの類似度よりも低いにもかかわらず、合成辞書パターンのマッチング結果が出力されてしまうことを防止することができる。
(合成方式判定処理について)
次に、図3のステップS108に示した合成方式判定処理について説明する。
図4は、合成方式判定処理を示すフローチャートである。
図4を参照して、入力パターンが入力されると(ステップS301)、まず、この入力パターンが合成方式1かどうかを判定するための合成方式1判定処理が実行される(ステップS302)。入力パターンが合成方式1と判定されれば(ステップS303においてYES)、入力パターンは合成方式1だというフラグ(フラグ=1)をたてる(ステップS304)。これに対し、入力パターンが合成方式1でないと判定された場合(ステップS303においてNO)、ステップS305に進む。
ステップS305において、入力パターンが合成方式2かどうかを判定するための合成方式2判定処理が実行される。合成方式1の場合と同様に、入力パターンが合成方式2と判定されれば(ステップS306においてYES)、入力パターンは合成方式2だというフラグ(フラグ=2)を立てる(ステップS307)。これに対し、入力パターンが合成方式2でないと判定された場合(ステップS306においてNO)、ステップS308に進む。
以降も同様に、ステップS308において、合成方式3判定処理が実行される。入力パターンが合成方式3と判定されれば(ステップS309においてYES)、入力パターンは合成方式3だというフラグ(フラグ=3)を立てる(ステップS310)。これに対し、入力パターンが合成方式3でないと判定された場合(ステップS309においてNO)、ステップS311に進む。
また、ステップS311において、合成方式4判定処理が実行される。入力パターンが合成方式4と判定されれば(ステップS312においてYES)、入力パターンは合成方式4だというフラグ(フラグ=4)を立てる(ステップS313)。これに対し、入力パターンが合成方式4でないと判定された場合(ステップS312においてNO)、ステップS314に進む。
また、ステップS314において、合成方式5判定処理が実行される。入力パターンが合成方式5と判定されれば(ステップS315においてYES)、入力パターンは合成方式5だというフラグ(フラグ=5)を立てる(ステップS316)。これに対し、入力パターンが合成方式5でないと判定された場合(ステップS315においてNO)、ステップS317に進む。
さらに、ステップS317において、合成方式6判定処理が実行される。入力パターンが合成方式6と判定されれば(ステップS318においてYES)、入力パターンは合成方式6だというフラグ(フラグ=6)を立てる(ステップS319)。これに対し、入力パターンが合成方式6でないと判定された場合(ステップS318においてNO)、いずれの合成方式にも該当しないことを表わすフラグ(フラグ=0)を立てる(ステップS320)。
このように、全ての合成方式についての判定処理が終わると、処理はメインルーチンに戻される。
したがって、メインルーチンの上記ステップS107において、合成方式判定部1007は、フラグの値が1〜6であるか否かに基づいて、入力パターンを構成する文字がいずれかの合成方式に合致したか否かを判断する。
なお、合成方式判定処理において、全ての合成方式の判定が実行されれば、判定順番は特に限定されるものではない。たとえば、任意の順番であってもよいし、判定順序を定義するルールを設定し、順序を変えられるようにしてもよい。ただし、処理の効率化の観点からは、合成方式として採用される可能性が高いものから順に判定されることが好ましい。
以下に、さらに、合成方式ごとの具体的な判定処理の例について説明する。
図5は、合成方式1(垂直組文字)判別処理を示すフローチャートである。
図5を参照して、入力パターンの画像情報が入力されると(ステップS401)、合成方式判定部1007は、画像のX方向について黒画素数のヒストグラムを計算する(ステップS402)。
次に、合成方式判定部1007は、黒画素数のヒストグラムの値が閾値Th1より小さい箇所が、入力パターンの横幅の中点付近に1つか否かを判断する(ステップS403)。そうであった場合(ステップS403でYES)、この入力パターンは、合成方式1だと判定する(ステップS404)。そうでなければ(ステップS403でNO)、合成方式1ではないと判定し(ステップS405)、この処理を終了する。
このように、垂直組文字は、たとえば、入力パターンの垂直方向の分断の可否により判定可能である。
図6は、合成方式2(水平組文字)判別処理を示すフローチャートである。
図6を参照して、入力パターンの画像情報が入力されると(ステップS501)、合成方式判定部1007は、画像のY方向について黒画素数のヒストグラムを計算する(ステップS502)。
次に、合成方式判定部1007は、黒画素数のヒストグラムの値が閾値Th2より小さい箇所が、入力パターンの高さの中点付近に1つか否かを判断する(ステップS503)。そうであった場合(ステップS503でYES)、この入力パターンは合成方式2だと判定する(ステップS504)。そうでなければ(ステップS503でNO)、合成方式2ではないと判定し(ステップS505)、この処理を終了する。
このように、水平組文字は、たとえば、入力パターンの水平方向の分断の可否により判定可能である。
図7は、合成方式3(かぎ型組文字)判別処理を示すフローチャートである。
図7を参照して、入力パターンの画像情報が入力されると(ステップS601)、合成方式判定部1007は、画像を4つの領域に分割し、それぞれの領域の画素数をカウントする(ステップS602)。
図8に画像が4つの領域に分割された様子を示す。図8に示されるように、画像が水平垂直両方向に等しく4つの領域1,2,3,4に分割される。そして、それぞれの領域1,2,3,4の画素数がカウントされる。カウントされた値は、内部メモリに各領域に対応付けられて一時記録される。
図9は、図8に示した4つの領域それぞれの画素数の記録例を示す図である。図9を参照して、領域1,2,3,4の黒画素数は、それぞれ、280,200,278,60であることが示されている。
次に、合成方式判定部1007は、4つの領域の画素数が閾値Th3より小さい領域が左下に1つあるか否かを判断する(ステップS603)。そのような領域が左下にあると判断された場合(ステップS603においてYES)、ステップS605に進む。そのような領域が左下にないと判断された場合(ステップS603においてNO)、ステップS604に進む。
ステップS604において、合成方式判定部1007は、4つの領域の画素数が閾値Th3より小さい領域が右下に1つあるか否かを判断する。そのような領域が右下にあると判断された場合(ステップS604においてYES)、ステップS605に進む。そのような領域が右下にないと判断された場合(ステップS604においてNO)、ステップS606に進む。
ステップS605において、合成方式判定部1007は、入力された画像は、合成方式3と判定し、この処理を終了する。
ステップS606において、合成方式判定部1007は、入力された画像は、合成方式3でないと判定し、この処理を終了する。
図8および図9に示した例では、領域4の画素数のみが閾値Th3より小さくなり、合成方式3と判定される。
なお、入力画像が合成方式3であるかを、閾値Th3を用いて判定したが、このような判定方法に限定されない。たとえば、各領域の画素数が全体の画素数に占める割合などで、判定してもよい。
このように、かぎ型組文字は、たとえば、入力パターンの空白部分の位置に基づいて判定可能である。
図10は、合成方式4(円枠文字)判別処理を示すフローチャートである。
図10を参照して、入力パターンの画像情報が入力されると(ステップS701)、合成方式判定部1007は、Hough変換あるいは回帰分析を行なう(ステップS702)。その結果、画像に円枠があるかどうかを判定する(ステップS703)。
円枠があると判定された場合(ステップS703でYES)、合成方式判定部1007は、入力パターンは合成方式4と判定し(ステップS704)、処理を終了する。
一方、円枠が存在しないと判断された場合(ステップS703でNO)、入力パターンは合成方式4ではないと判定し(ステップS705)、処理を終了する。
このように、円枠文字は、たとえば、入力パターンからの円枠の抽出の可否により判定可能である。
図11は、合成方式5(四角枠文字)判別処理を示すフローチャートである。
図11を参照して、入力パターンの画像情報が入力されると(ステップS801)、合成方式判定部1007は、画像の外接矩形における4つの辺の周辺領域に白画素がある数をカウントする(ステップS802)。外接矩形における4つの辺の周辺領域は、たとえば、図12においてハッチングで示されている領域に相当する。
次に、合成方式判定部1007は、カウントした白画素数が閾値未満であるか否かを判断する(ステップS803)。この閾値は、たとえば、入力パターン画像の外接矩形の面積(外接矩形の高さと幅とを乗じた値)の一定割合であってよい。
白画素数が閾値未満であると判断された場合(ステップS803においてYES)、四角枠があると判別される。つまり、合成方式判定部1007は、入力パターンは合成方式5と判定し(ステップS804)、処理を終了する。
一方、白画素数が閾値以上であると判断された場合(ステップS803においてNO)、四角枠がないと判別される。つまり、合成方式判定部1007は、入力パターンは合成方式5ではないと判定し(ステップS805)、処理を終了する。
このように、四角枠文字などの多角形枠文字は、たとえば、入力パターンからの多角形枠の抽出の可否により判定可能である。
図13は、合成方式6(分数文字)判別処理を示すフローチャートである。
図13を参照して、入力パターンの画像情報が入力されると(ステップS901)、合成方式判定部1007は、連結画素のラベリング処理を実行する(ステップS902)。
次に、ラベリングの結果の基づき、画像の矩形の右上から左下に直線があるかどうかを判断する(ステップS903)。そのような直線があると判定された場合(ステップS903においてYES)、入力パターンは合成方式6と判定し(ステップS904)、処理を終了する。
一方、そのような直線がないと判定された場合(ステップS903においてNO)、入力パターンは合成方式6ではないと判定し(ステップS905)、処理を終了する。
上述の処理により、図14に示されるような画像(1/4)は、分数と判定される。
このように、分数文字は、たとえば、入力パターンからの斜線の抽出の可否により判定可能である。
なお、分数文字は、斜線を含む分数の合成文字として説明したが、水平線を含む分数文字(水平線の上下に数字が記載される形式の分数文字)であってもよい。このような分数文字は、たとえば、入力パターン(矩形)の中心に横方向の直線が抽出されたか否かで判定可能である。
(辞書合成処理)
次に、図3のステップS108に示された辞書合成処理について説明する。
図15は、辞書合成処理を示すフローチャートである。
図15を参照して、合成方式判定部1007により判定された合成方式が入力されると(ステップS1001)、辞書合成部1008は、判定された合成方式に対応する文字セットを文字セット対応テーブル1031から読み出す(ステップS1002)。
その後、読み出された文字セットに含まれる文字の辞書パターンを、オリジナル辞書領域1021から読み出す(ステップS1003)。また、合成方式に対応するパターン合成方法を、合成方法対応テーブル1032から読み出す(ステップS1004)。
次に、辞書合成部1008は、読み出されたパターン合成方法に基づいて、文字セットの辞書パターンを合成する(ステップS1005)。辞書合成部1008は、合成された辞書パターンを、合成辞書として、辞書データ蓄積メモリ1020の合成辞書領域1022に格納する(ステップS1006)。
(データ構造例)
図16は、文字セット対応テーブル1031の記憶内容の一例を示す図である。
図16を参照して、文字セット対応テーブル1031は、2つの項目、すなわち、合成方式の項目1031Aと、合成対象となる文字セットの項目1031Bとを有しており、これらの項目が互いに対応付けられて記憶されている。たとえば合成方式1(垂直組文字)には、(平,成)、(昭,和)などの文字セットが対応付けられている。また、合成方式4(円枠文字)には、(○,問)、(○,月)などの文字セットが対応付けられて記憶されている。
なお、文字セットの項目1031Bには、任意の文字種類のセットが格納されてもよい。たとえば、(カタカナ任意、カタカナ任意)、(数字任意、数字任意)、(アルファベット任意、アルファベット任意)などが格納されてよい。このように、すべてのカタカナの組み合わせ、すべての数字組み合わせ、すべてのアルファベットの組み合わせといった任意の文字種類のセットを記憶させておくことで、任意の文字種類の辞書パターンの作成を指定することも可能である。
また、それぞれの合成方式1〜6に対応する文字セットは、認識対象とする文書の種類に応じて予め定めてもよい。たとえば、歴史書でない場合には、「平成」と「昭和」だけに絞ってもよいし、歴史書である場合には、さらに「神武」や「慶長」を含めてもよい。
このような文字セットは、ユーザが予め定めたものであってもよい。
また、文字セットは、JISコードのような体系的に定義されている文字コードだけでなく、図17のように、「細長い○(楕円枠)」と「出」,「席」の2文字とを含む文字セットや、「爆発模様の枠」と「O」,「K」の2文字とを含む文字セットなどを記憶してもよい。あるいは、1つの文字領域を4つに分割してそれぞぞれの領域に4つの文字が含まれるような文字セット(たとえば「メートル」)を記憶してもよい。
ただし、合成文字の要素となり得るJISコードにない細長い○や、爆発模様などは、外字コードと共に、オリジナル辞書領域1021に辞書パターンとして登録されている必要がある。なお、図16には、上記したような楕円枠により文字が囲まれる方式を合成方式7、爆発模様枠により文字が囲まれる方式を合成方式8として、それぞれの合成方法についての文字セットも示されている。
なお、合成方式7は、たとえば、合成方式4と同様に、Hough変換や回帰分析により楕円枠を抽出することで判定可能である。
合成方式8は、たとえば、黒画素の連結を追跡することにより(分岐が無く、もとの所に戻る)、あるいは、線分の角度を測ることにより(鋭角と鈍角とを複数個有する)、爆発模様枠を抽出することで判定可能である。
また、4つの文字が集約された合成文字は、次のようにして判定可能である。たとえば、入力パターンの画像が入力されると、画像のX方向について黒画素数のヒストグラムを取る処理と、画像のY方向について黒画素数のヒストグラムを取る処理とを行なう。そして、両方の処理について、黒画素数のヒストグラムの値が閾値Th1より小さい箇所が、入力パターンの横幅あるいは縦幅の中点付近に1つか否かを判断することで判定される。
図18は、合成方法対応テーブル1032の記憶内容の一例を示す図である。
合成方法対応テーブル1032は、2つの項目、すなわち、合成方式を記憶する項目1032Aと、合成方法を記憶する項目1032Bとを有しており、これらの項目が互いに対応付けられて記憶されている。以下、合成方式ごとの合成方法について簡単に説明する。
合成方式1に対応する合成方法の項目1032Bには、2つの矩形が垂直に(上下に)並べられている。これにより、合成方式1の合成方法は、2つの文字を横に2行で(つまり、上下に)合成させる方法であることが示される。
合成方式2に対応する合成方法の項目1032Bには、2つの矩形が水平に(左右に)並べられている。これにより、合成方式2の合成方法は、2つの文字を縦に2列で(つまり、左右に)合成させる方法であることが示される。
合成方式3に対応する合成方法の項目1032Bには、3つの矩形がかぎ状に並べられている。つまり、4つの領域のうちの1つ(右下または左下)に空白部分がつくられている。これにより、合成方式3の合成方法は、3つの文字をかぎ状に合成させる方法であることが示される。
合成方式4に対応する合成方法の項目1032Bには、1つの矩形と、その矩形を囲むように丸枠が配置されている。これにより、合成方式4の合成方法は、1つの文字と丸枠とを合成させる方法であることが示される。
合成方式5に対応する合成方法の項目1032Bには、1つの矩形と、その矩形を囲むように四角枠が配置されている。これにより、合成方式5の合成方法は、1つの文字と四角枠とを合成させる方法であることが示される。
合成方式6に対応する合成方法の項目1032Bには、2つの矩形が、斜線(/)を境にして分数形式になるよう配置されている。これにより、合成方式6の合成方法は、2つの文字と斜線とを合成させる方法であることが示される。
なお、図18には、上記したような楕円枠により文字が囲まれる方式を合成方式7、爆発模様枠により文字が囲まれる方式を合成方式8として、それぞれの合成方法についても示されている。
合成方式7に対応する合成方法の項目1032Bには、楕円枠の中に2つの矩形が左右に並べられて(つまり、外側が○(楕円枠)で、その中を2分割した形式で)配置されている。これにより、合成方式7の合成方法は、2つの文字と楕円枠とを合成させる方法であることが示される。
合成方式8に対応する合成方法の項目1032Bには、爆発模様枠の中に2つの矩形が左右に並べられて(つまり、外側が爆発模様枠で、その中を2分割した形式で)配置されている。これにより、合成方式8の合成方法は、2つの文字と爆発模様枠とを合成させる方法であることが示される。
なお、ここでは、各合成方式に対応して1組の合成方法のみが記憶されることとしたが、2組以上の合成方法が記憶されてもよい。
図19は、出力バッファに蓄積されるマッチング結果情報のデータフォーマットの一例を示す図である。
図19を参照して、マッチング結果情報は、マッチング結果11と、合成フラグ12と、類似度13とを含む。マッチング結果11には、最終的に類似度が最も高いと判定された(複数の)文字、すなわち、類似辞書パターン、または、特定パターンに基づく文字が格納される。合成フラグ12は、合成文字として判定されたか否かを示すためのフラグであり、合成文字として判定された場合に「1」が格納され、合成文字ではないと判定された場合に「0」が格納される。類似度13は、マッチング結果11に格納された文字の入力パターンとの類似度が格納される。
<具体例について>
次に、図20〜22を参照して、本実施の形態における文字認識処理の具体例を説明する。
図20は、入力パターンが合成方式4(円枠文字)と判定された場合のマッチング処理例を示す図である。
図20には、入力パターン21が円枠で囲まれた「問」である場合のマッチング処理例が示されている。したがって、入力パターン21は、合成方式判定部1007により合成方式4と判定されていることを前提とする。
この場合、辞書合成部1008により、文字セット対応テーブル1031のうち合成方式4に対応付けられた文字セットが読み出され(ステップS1002)、読み出された文字セットに含まれる文字(○、問、月、交、地、英数字任意、漢数字)の辞書パターン(オリジナル辞書パターン)22が、オリジナル辞書領域1021から読み出される(ステップS1003)。また、合成方式4に対応するパターン合成方法が、合成方法対応テーブル1032から読み出される(ステップS1004)。
合成方式4のパターン合成方法は、(1つの)文字と円枠とを合成させる方法である。したがって、オリジナル辞書パターン22のうちの「○」と他の文字とを合成させて複数の合成辞書パターン23が生成され、合成辞書領域1022に格納される(ステップS1005,S1006)。
その状態で、第2マッチング部1009は、入力パターン21と合成辞書パターン23とのマッチングを行なう(ステップS109)。
入力パターン21の第1のマッチング結果情報の一例を、図21(a)に示す。図21(a)を参照して、合成前のマッチング結果の1位、すなわち類似辞書パターンは、“○で囲まれた「8」”であり、その類似度はたとえば30000である。なお、この例における上記「閾値Th0」(ステップS105)は、たとえば40000〜45000程度であるものと仮定する。
入力パターン21の第2のマッチング結果情報の一例を、図21(b)に示す。図21(b)を参照して、合成後のマッチング結果の1位、すなわち特定パターンは、“○で囲まれた「問」”であり、その類似度はたとえば52000である。
比較部1010により、類似辞書パターンである“○で囲まれた「8」”の類似度と、特定パターンである“○で囲まれた「問」”の類似度とが比較される。
後者の方が前者よりも所定値以上高くないと判定された場合、つまり、入力パターン21が合成文字ではないと判定された場合、第1のマッチング結果情報が、最終的に出力バッファに記憶される。第1のマッチング結果情報の内容例を図22(a)に示す。
図22(a)に示されるように、マッチング結果11には、“○で囲まれた「8」”で示される類似辞書パターンが格納される。合成フラグ12には、合成文字ではないことを示す「0」が格納される。類似度13には、入力パターンとの類似度「30000」が格納される。
これに対し、後者の方が前者よりも所定値以上高いと判定された場合、つまり、入力パターン21が合成文字であると判定された場合、第2のマッチング結果情報が、最終的に出力バッファに記憶される。第2のマッチング結果情報の内容例を図22(b)に示す。
図22(b)に示されるように、マッチング結果11には、特定パターンを構成する2つの文字、すなわち、“○”で示される辞書パターンと、“問”で示される辞書パターンとがそれぞれ格納される。このように、特定パターンを構成する文字セットが別々に格納されるのは、このような合成文字がオリジナル辞書領域1021に存在しないため、合成文字として出力することができないことに基づく。合成フラグ12には、文字ごとに、合成文字であることを示す「1」が格納される。類似度13には、文字ごとに、入力パターンとの類似度「52000」が格納される。
なお、当該具体例においては、上記「所定値」(ステップS110)はたとえば5000程度であって、入力パターン21は合成文字と判定されるものとする。したがって、図22(b)に示した第2のマッチング結果情報が出力バッファに記憶されるものとする(ステップS111)。
また、出力制御部1011は、合成フラグ12が「1」のデータが連続して存在していれば、マッチング結果11に格納された文字(辞書パターン)に応じた出力を行なう。図22(b)のようなマッチング結果情報の場合、合成フラグ12が「1」である文字「○」と「問」とが連続してマッチング結果情報に存在する。このような場合、出力制御部1011は、たとえば、「問」のみを出力する。これは、出力部1002のコード体系に“○で囲まれた「問」”が存在しないためである。
したがって、たとえば、合成フラグ12が「1」である文字「平」と「成」とが連続してマッチング結果情報に存在する場合には、出力部1002のコード体系に、全角1文字領域に「平成」が集約された文字パターンが存在すれば、入力パターンどおりの合成文字(全角1文字領域に「平成」)を出力する。なお、出力制御部1011が行なう処理については、本実施の形態では限定されない。
[実施の形態2]
上記実施の形態1では、文字認識装置は、判定された合成方式に応じた合成辞書パターンを生成し、入力パターンと合成辞書パターンとのマッチングを行なうことで、入力パターンを構成する文字を認識するものであった。しかしながら、オリジナル辞書領域に格納されていない合成文字についての文字認識方法はこのような形態に限定されるものではない。
実施の形態2では、判定された合成方式に応じて入力パターンを分割し、分割後の入力パターン(以下「分割入力パターン」という)と、オリジナル辞書パターンとのマッチングを行なうことで、入力パターンを構成する文字を認識する。
以下に、実施の形態1との相違点について説明する。
<構成について>
本発明の実施の形態2に係る文字認識装置2000のハードウェア構成については実施の形態1と同様である。
図23は、本発明の実施の形態2に係る文字認識装置2000の機能ブロック図である。
図2に示した文字認識装置1000と比較すると、文字認識装置2000の制御部2003は、辞書合成部1008に代えて、入力パターン分割部2008を含む。また、実施の形態1における第2マッチング1009および比較部1010は、それぞれ、第2マッチング部2009および比較部2010に代わる。また、辞書データ蓄積メモリ1020#に、合成辞書領域1022は含まれない。
入力パターン分割部2008は、合成方法対応テーブル1032を参照して、入力パターンを判定された合成方式に応じて分割する。分割入力パターンは、第2マッチング部2009に出力される。
第2マッチング部2009は、文字セット対応テーブル1031に、判定された合成方式と対応付けられた文字セットに含まれる複数の辞書パターンを読み出し、分割入力パターンごとに、読み出した複数の辞書パターンとの類似度を算出する。そして、分割入力パターンごとの特定パターン(類似度が最も高い辞書パターン)を第2のマッチング結果情報として抽出する。さらに、第2マッチング部2009は、特定パターンの類似度の統計値、たとえば平均値を算出する。抽出された第2のマッチング結果情報および類似度の平均値は、比較部2010に出力される。
比較部2010は、上述の類似辞書パターンの類似度と、特定パターンの類似度の平均値とを比較する。比較の方法およびその後処理については、実施の形態1と同様である。
<動作について>
図24は、本発明の実施の形態2に係る文字認識装置2000が実行する文字認識処理を示すフローチャートである。図24のフローチャートに示す処理は、予めプログラムとしてハードディスク部212に格納されており、制御部1003がこのプログラムを読み出して実行することにより、文字認識処理の機能が実現される。なお、図3に示したフローチャートと同じ処理については、同じステップ番号を付してある。したがって、これらの処理についての説明は繰返さない。
実施の形態2では、実施の形態1のステップS108〜S112に代えて、ステップS208〜S212の処理が実行される。
図24を参照して、ステップS101〜S107の処理が終わると、入力パターン分割部2008は、入力パターン分割処理を実行する(ステップS208)。入力パターン分割処理については、図25を参照して説明する。
図25は、入力パターン分割処理を示すフローチャートである。
はじめに、合成方式判定部1007により判定された合成方式が入力されると(ステップS1001)、入力パターン分割部2008は、判定された合成方式に対応する合成方法を、合成方法対応テーブル1032から読み出す(ステップS1102)。
その後、読み出された合成方法に基づいて、入力パターン分割部2008は、入力パターンを分割する(ステップS1103)。入力パターンが分割されると、処理はメインに戻される。分割後の各領域(文字に対応)は、分割入力パターンとして、第2マッチング部2009に出力される。
再び図24を参照して、第2マッチング部2009は、それぞれの分割入力パターンと辞書パターンとのマッチングを行なう(ステップS209)。マッチングの結果、分割入力パターンごとの類似度はたとえばメモリ部214に一時的に記録される。また、第2マッチング部2009は、類似度の平均値を算出し、その値もメモリ部214に一時的に記録する。
辞書パターンとのマッチングは、文字セット対応テーブル1031に定義されている、合成方式ごとの合成対象文字に対応する辞書パターンとのみマッチングを行なうものとする。なお、オリジナル辞書領域1021に含まれる全ての辞書パターンとマッチングを行ってもよい。その場合、文字セット対応テーブル1031は、合成方式情報メモリ1030に含まれなくてよい。
比較部2010は、類似度の平均値と類似辞書パターンの類似度とを比較する(ステップS210)。つまり、分割入力パターンの類似度の平均値が、類辞書パターンの類似度よりも所定値以上高いか否かを判断する。
平均値が所定値以上高いと判断された場合(ステップS210においてYES)、分割入力パターンそれぞれのマッチング結果(第2のマッチング結果情報)を出力バッファにセットする(ステップS211)。一方、平均値が所定値未満であると判断された場合には(ステップS210においてNO)、第1のマッチング結果情報が出力バッファにセットされる(ステップS212)。
ステップS211またはステップS212の処理が終わると、実施の形態1と同様の処理(ステップS114〜S116)が実行される。
本実施の形態によると、入力パターンが、判定された合成方式に基づいて分割されるため、予め、あらゆる合成文字の辞書パターンをオリジナル辞書領域1021に記憶する必要がない。
また、既存の辞書パターンの類似度と分割入力パターンの類似度の平均値とを比較し、後者の方が高い場合にのみ、分割入力パターンのマッチング結果を出力する。これにより、分割入力パターンの類似度の平均値が辞書パターンの類似度よりも低いにもかかわらず、分割入力パターンのマッチング結果が出力されてしまうことを防止することができる。
なお、本実施の形態では、分割入力パターンの類似度の平均値(統計値)と既存の辞書パターンの類似度とを比較することとした。しかしながら、たとえば、2以上の分割入力パターンの類似度それぞれと、既存の辞書パターンの類似度とを比較し、2以上の分割入力パターンの類似度のうち1つでも、既存の辞書パターンの類似度よりも低い場合には、既存の辞書パターン(類似辞書パターン)に関するマッチング結果を出力することとしてもよい。
<具体例について>
図26は、入力パターンが合成方式4と判定された場合の分割パターンの一例を示す図である。
図26には、入力パターン41が円枠で囲まれた「問」である場合のマッチング処理例が示されている。したがって、入力パターン41は、合成方式判定部1007により合成方式4と判定されていることを前提とする。
この場合、入力パターン分割部2008により、合成方法対応テーブル1032に基づいて、入力パターン41は2つの分割パターン42a,42bに分割される(ステップS1103)。つまり、分割パターン42aおよび42bは、それぞれ、合成方法対応テーブル1032の定義に従い切り出された、円枠領域、および、その円枠領域に囲まれた領域に対応している。この場合、分割パターン42aの文字は「○」であり、分割パターン42bの文字は「問」である。
各分割パターン42a,42bは、オリジナル辞書領域1021に含まれる文字パターンとマッチングされ、それぞれの類似度の平均値が計算される(ステップS209)。
入力パターン41の第1マッチング部1006によるマッチング結果の一例を、図27(a)に示す。図27(a)を参照して、分割前のマッチング結果の1位は、“○で囲まれた「8」”であり、その類似度はたとえば30000である。
入力パターン41の第2マッチング部2009によるマッチング結果の一例を、図27(b)に示す。図27(b)を参照して、分割パターン42a(分割パターン1)のマッチング結果は、“○”であり、その類似度はたとえば52000である。また、分割パターン42b(分割パターン2)のマッチング結果は、“問”であり、その類似度はたとえば48000である。この場合の分割パターン1と分割パターン2との類似度の平均値は、50000となる。
比較部2010により、オリジナル辞書領域1021とのマッチング結果1位の文字である“○で囲まれた「8」”の類似度と、分割パターン42a,42bの類似度の平均値とが比較される。
後者の方が前者よりも所定値以上高くないと判定された場合、つまり、入力パターン21が合成文字ではないと判定された場合、オリジナル辞書領域1021とのマッチング結果1位の文字である“○で囲まれた「8」”についてのマッチング結果情報が出力バッファに記憶される。その場合のマッチング結果情報の一例を図28(a)に示す。図28(a)に示されるように、マッチング結果11には、“○で囲まれた「8」”のオリジナル辞書パターンが格納される。合成フラグ12には、「0」が格納される。類似度13には、「30000」が格納される。
これに対し、後者の方が前者よりも所定値以上高いと判定された場合、つまり、入力パターン21が合成文字であると判定された場合、2つの分割パターン“○”および“問”についてのマッチング結果情報が出力バッファに記憶される。その場合のマッチング結果情報の一例を図28(b)に示す。図28(b)に示されるように、マッチング結果11には、“○”と“問”とが格納される。マッチング結果11の文字パターンが“○”の行の合成フラグ12および類似度13には、それぞれ、「1」および「52000」が格納される。また、マッチング結果11の文字パターンが“問”の行の合成フラグ12および類似度13には、それぞれ、「1」および「48000」が格納される。
なお、当該具体例においても、上記「所定値」はたとえば5000程度であることが好ましく、入力パターン21は合成文字と判定されるものとする。したがって、図28(b)に示したマッチング結果情報が出力バッファに記憶されるものとする(ステップS211)。
本発明の文字認識装置が行なう、文字認識方法を、プログラムとして提供することもできる。このようなプログラムは、CD−ROMなどの光学媒体や、メモリカードなどのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
なお、本発明にかかるプログラムは、コンピュータのオペレーティングシステム(OS)の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずOSと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明にかかるプログラムに含まれ得る。
また、本発明にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明にかかるプログラムに含まれ得る。
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記憶された記憶媒体とを含む。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
11 マッチング結果、12 合成フラグ、13 類似度、21 入力パターン、22 オリジナル辞書パターン、23 合成辞書パターン、41 入力パターン、42a,42b 分割パターン、211 入力部、212 ハードディスク部、213 ディスプレイ部、214 メモリ部、215 CD−ROMドライブ、215a CD−ROM、216 画像読取部、217 通信インターフェイス部、218 内部バス、1000,2000 文字認識装置、1001 画像入力部、1002 出力部、1003,2003 制御部、1004 切り出し部、1005 特徴抽出部、1006 第1マッチング部、1007 合成方式判定部、1008 辞書合成部、1009,2009 第2マッチング部、1010,2010 比較部、1011 出力制御部、1020 辞書データ蓄積メモリ、1021 オリジナル辞書領域、1022 合成辞書領域、1030 合成方式情報メモリ、1031 文字セット対応テーブル、1032 合成方法対応テーブル、2008 入力パターン分割部。