文字認識装置、文字認識方法、及びプログラム
【課題】高い精度で文字を認識することができる文字認識装置等を提供する。
【解決手段】制御部は、入力文字を示す文字データからベクトル化データを生成して入力文字の輪郭を抽出し(ステップS4)、これを最適化して得られた最適化ベクトルデータが示す入力文字の輪郭内に、この輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する(ステップS6)。続いて、複数の三角形の内部のそれぞれにこの三角形の各辺の中点のうちの少なくとも一つを含む線分を示す線分データを生成して入力文字の骨格を示す芯線データを生成し(ステップS7)、これが示す芯線と略合致する芯線を示す芯線データを知識DBのうちから検出し(ステップS8)、この芯線データに対応する文字コードが示す登録文字を認識結果として表示部に表示する(ステップS9)。
【解決手段】制御部は、入力文字を示す文字データからベクトル化データを生成して入力文字の輪郭を抽出し(ステップS4)、これを最適化して得られた最適化ベクトルデータが示す入力文字の輪郭内に、この輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する(ステップS6)。続いて、複数の三角形の内部のそれぞれにこの三角形の各辺の中点のうちの少なくとも一つを含む線分を示す線分データを生成して入力文字の骨格を示す芯線データを生成し(ステップS7)、これが示す芯線と略合致する芯線を示す芯線データを知識DBのうちから検出し(ステップS8)、この芯線データに対応する文字コードが示す登録文字を認識結果として表示部に表示する(ステップS9)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、文字認識装置、文字認識方法、及びプログラムに関し、特に高い精度で文字を認識することができる文字認識装置、文字認識方法、及びプログラムに関する。
【背景技術】
【0002】
現在、イメージスキャナにて読み取った文書の画像データから、一文字分の画像データを切り出した後、これを解析して特徴パラメータを抽出し、この特徴パラメータを予め用意した各文字の属する特徴パラメータの辞書と照合することによって、読み取った文字を認識する文字認識装置が広く用いられている(例えば特許文献1参照)。
【特許文献1】特開平7−52238号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上述のような文字認識装置を用いて文字を認識する際には、読み取った文字の太さも考慮しなければならなかったため、太さが不均一な文字、とりわけ手書きの文字については、その認識ができない場合が多く存在した。
【0004】
本発明は、上記実状に鑑みてなされたものであり、高い精度で文字を認識することができる文字認識装置、文字認識方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0005】
上記目的を達成するため、本発明の第1の観点に係る文字認識装置は、登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段と、入力文字から該入力文字の輪郭を抽出する輪郭抽出手段と、前記輪郭抽出手段によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手段と、前記三角形形成手段によって形成した複数の略二等辺三角形の内部のそれぞれに、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手段と、前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手段によって生成した入力文字の骨格と略合致するものを検出する骨格検出手段と、前記骨格検出手段によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手段と、を備える。
【0006】
また、上記文字認識装置において、前記三角形形成手段は、前記入力文字の輪郭内に既に形成した第1の略二等辺三角形の一辺と、該第1の略二等辺三角形の頂点とは異なる前記輪郭上の点と、から構成される三角形のうちで、三つの内角のうち最小のものが最大値となる三角形を第2の略二等辺三角形として取得する処理を繰り返すことによって、前記入力文字の輪郭内に複数の略二等辺三角形を形成する、ものであってもよい。
【0007】
さらに、上記文字認識装置において、前記骨格生成手段は、他と共有する辺が一つの略二等辺三角形の内部に該他と共有する辺の中点と該辺と対向する頂点とを結ぶ線分を形成し、他と共有する辺が二つの略二等辺三角形の内部に該他と共有する二辺の中点同士を結ぶ線分を形成し、他と共有する辺が三つの場合の略二等辺三角形の内部に該略二等辺三角形の重心と各辺とを結ぶ三つの線分を形成することによって、前記入力文字の骨格を生成する、ものであってもよい。
【0008】
また、上記文字認識装置において、前記骨格検出手段は、前記登録文字記憶手段に記憶されている登録文字の骨格のうちの一つを読み出す骨格読出手段と、前記骨格読出手段によって読み出した登録文字の骨格を構成する複数の線分の始点の座標と、前記骨格生成手段によって生成した入力文字の骨格を構成する複数の線分の始点の座標と、の差分が全て所定の数値範囲内に収まっているか否かを判別する骨格判別手段と、前記骨格判別手段によって差分が全て所定の数値範囲内に収まっていると判別した場合、前記骨格読出手段によって読み出した登録文字の骨格を前記入力文字の骨格に略合致するものとして取得する骨格取得手段と、を含むものであってもよい。
【0009】
さらに、本発明の第2の観点に係る文字認識方法は、登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備える文字認識装置における文字認識方法であって、入力文字から該入力文字の輪郭を抽出する輪郭抽出ステップと、前記輪郭抽出ステップによって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成ステップと、前記三角形形成ステップによって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成ステップと、前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成ステップによって生成した入力文字の骨格と略合致するものを検出する骨格検出ステップと、前記骨格検出ステップによって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力ステップと、を備えることを特徴とする。
【0010】
さらに、本発明の第3の観点に係るプログラムは、登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備えるコンピュータに、入力文字から該入力文字の輪郭を抽出する輪郭抽出手順と、前記輪郭抽出手順によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手順と、前記三角形形成手順によって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手順と、前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手順によって生成した入力文字の骨格と略合致するものを検出する骨格検出手順と、前記骨格検出手順によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手順と、を実行させる。
【発明の効果】
【0011】
本発明によれば、高い精度で文字を認識することができる文字認識装置、文字認識方法、及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【0012】
以下、本発明を実施するための最良の形態について説明する。
【0013】
まず、本実施形態に係る文字認識装置の構成について図面を参照しつつ説明する。文字認識システム1は、図1に示すように、イメージ入力装置10と、データ処理装置20と、から概略構成されており、これらは、LAN(Local Area Network)等により相互に接続されている。
【0014】
イメージ入力装置10は、例えばイメージスキャナや、スキャン機能を含む複合機等から構成されており、データ処理装置20による制御の下、コンタクトガラスにセットされた原稿に光を当ててその反射光をCCD(Charge Coupled Device)等の撮像素子にて光電変換した後、A/D(Analog/Digital)変換するなどして画像データを生成し、LANを介してデータ処理装置20に供給する。
【0015】
データ処理装置20は、例えば汎用コンピュータ等から構成されており、通信部21と、操作部22と、表示部23と、記憶部24と、制御部25と、を備え、これらは、バス等により相互に接続されている。
【0016】
通信部21は、例えばNIC(Network Interface Card)のような通信装置を含んで構成されており、制御部25による制御の下、LANを介してイメージ入力装置10との間でデータの送受信を行う。
【0017】
操作部22は、例えばマウスやキーボード等から構成されており、ユーザによって操作される。
【0018】
表示部23は、例えばLCD(Liquid Crystal Display)のような液晶表示装置等から構成されており、制御部25による制御の下、データ処理装置20による種々の動作を実行するための画像や、イメージ入力装置10から供給された画像データに基づく画像等を表示する。
【0019】
記憶部24は、例えばハードディスクドライブ等から構成されており、OS(Operating System)や、各種アプリケーションプログラムを記憶している。
【0020】
本実施形態において、記憶部24には、アプリケーションプログラムとして、原稿に記載された文字(入力文字)を認識する文字認識処理を実行する文字認識プログラムが記憶されており、また、そのサブルーチンプログラムとして、入力文字の輪郭内に複数の略二等辺三角形が形成されるようにメッシュを入れる三角形メッシュ処理を実行する三角メッシュプログラムや、入力文字の骨格(芯線)を示す芯線データを生成する芯線データ生成プログラム、知識DB240に記憶されている芯線データのうちから、芯線データ生成プログラムによって生成された芯線データと略合致する芯線を示すものを検出する芯線データ検出プログラムなどが記憶されている。
【0021】
また、記憶部24は、知識DB(Data Base)240を備えている。知識DB240は、図2に示すように、後述する芯線ポインタのポイント値と、予め登録された文字(登録文字)を特定可能な文字コードと、登録文字の芯線を示す芯線データと、が対応付けられて記憶されている。
【0022】
知識DB240に記憶されている芯線データは、登録文字の芯線を構成する複数の線分の始点(あるいは終点)の座標(ベクトル)を示すデータから構成されている。例えば「田」という登録文字の芯線は、図3(a)に示すような複数の線分から構成されており、そして、この芯線を示す芯線データ(図2に示す例では芯線データ#i)は、図3(b)に示すような座標(ベクトル)を示すデータから構成されている。
【0023】
制御部25は、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)、及びRAM(Random Access Memory)等から構成されており、CPUがRAMをワークメモリとして用いてROMや記憶部24等に記憶されている各種プログラムを適宜実行することによって、データ処理装置20の各部の動作を制御する。
【0024】
本実施形態において、RAMには、三角形カウンタや、分岐点カウンタ、芯線ポインタ、三角形バッファ、分岐点バッファなどが設けられている。
【0025】
三角形カウンタは、入力文字の輪郭内部に形成された三角形をカウントするもので、カウンタ初期値として“1”がセットされる。分岐点カウンタは、入力文字の辺同士が交わる部分(分岐点)をカウントするもので、カウンタ初期値として“0”がセットされる。芯線ポインタは、知識DB240から、芯線データや文字コードを読み出す際に用いられるもので、ポイント初期値として“1”がセットされる。
【0026】
三角形バッファは、図4(a)に示すように、三角形カウンタのカウント値と、入力文字の輪郭内部に形成された三角形の頂点の座標と、他の三角形と共有する辺の個数を示す共有辺数と、を対応付けて記憶している。分岐点バッファは、図4(b)に示すように、分岐点カウンタのカウント値と、分岐点における三角形の座標と、を対応付けて記憶している。
【0027】
次に、上記構成を備える文字認識システム1の具体的動作について図面を参照しつつ説明する。
【0028】
認識対象となる文字が記載された原稿がイメージ入力装置10のコンタクトガラスにセットされた状態で、ユーザによる操作部22の操作によって文字の認識が指示されたことに応答して、データ処理装置20の制御部25は、記憶部24に記憶されている文字認識プログラムを読み出して実行することにより、図5に示す文字認識処理を開始する。
【0029】
この文字認識処理が開始すると、制御部25は、まず、図5に示すように、原稿の読取の指示する読取指示信号を、通信部21からLANを介してイメージ入力装置10に対して送信する(ステップS1)。イメージ入力装置10では、かかる読取指示信号を受信したことに応答して、コンタクトガラスにセットされた原稿の画像データが生成され、LANを介してデータ処理装置20の制御部25に送信される。
【0030】
制御部25は、イメージ入力装置10から送信された画像データを通信部21にて受信する(ステップS2)。続いて、制御部25は、ステップS4の処理にて受信した画像データをBMPファイル形式で変換することにより、図6に示すような入力文字を示す文字データを生成する(ステップS3)。
【0031】
さらに、制御部25は、ステップS3の処理にて生成した文字データのノイズ除去などを行った後、ラスタベクタ変換することにより、図7(a)に示すような入力文字の輪郭を示すベクトル化データを生成する(ステップS4)。このベクトル化データは、図7(a)に示すように、入力文字の輪郭上の座標点を示す複数のベクトルデータから構成されている。
【0032】
続いて、制御部25は、ステップS4の処理にて生成したベクトル化データを最適化、図7(b)に示すような最適化ベクトルデータを生成する(ステップS5)。具体的には、ベクトル化データに含まれる複数のベクトルデータに基づいて、入力文字の輪郭上の座標点を細分化してより多くのベクトルデータを取得し、このベクトルデータから構成される最適化データを生成する。
【0033】
そして、制御部25は、記憶部24に記憶されている三角形メッシュプログラムを呼び出して実行することにより、ステップS5の処理にて生成した最適化ベクトルデータが示す入力文字の輪郭内に、複数のベクトルデータが示す座標点をその頂点とする複数の略二等辺三角形が形成されるようにメッシュを入れる三角形メッシュ処理を実行する(ステップS6)。
【0034】
図8及び図9は、三角形メッシュ処理の詳細を示すフローチャートである。この三角形メッシュ処理において、制御部25は、まず、図8に示すように、RAMに設けられた三角形カウンタにカウンタ初期値“1”をセットするとともに、分岐点カウンタにカウンタ初期値“0”をセットした後に(ステップS11)、最適化ベクトルデータが示す入力文字の輪郭から、所定範囲の長さの略直線部分のうち、例えば最短のものを三角形の一辺として取得する(ステップS12)。図10(a)に示す例では、ステップS12の処理にて辺Lが取得される。
【0035】
次に、制御部25は、ステップS12の処理にて取得した辺とベクトルデータが示す座標点をその頂点の一つとする三角形のうち、その内角が最小のものが最大値となる三角形を検出する(ステップS13)。図10(a)に示す例では、ベクトルデータが示す座標点Pが選択された場合に、三角形の内角のうち最小のものが最大値となる。
【0036】
続いて、制御部25は、ステップS13の処理にて検出した三角形の頂点の座標を取得して、RAMに設けられた三角形バッファのうち、カウント値“1”に対応する記憶領域に格納するとともに(ステップS14)、共有辺数に“1”をセットする(ステップS15)。
【0037】
そして、制御部25は、三角形バッファのうち、三角形カウンタのカウント値に対応して格納されている三角形の頂点の座標のうちの2つを頂点とし、これとベクトルデータが示す座標点をもう一つの頂点とする三角形のうち、その内角が最小のものが最大値となる三角形を検出した後(図9のステップS16)、三角形カウンタのカウント値を“1”インクリメントして更新する(ステップS17)。
【0038】
ステップS16の処理にて検出した三角形が2つの場合には(ステップS18;Yes)、分岐点カウンタのカウント値を“1”インクリメントして更新した後(ステップS19)、ステップS16の処理にて検出した2つの三角形の頂点の座標を取得し、そのうちの一つを、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納するとともに、もう一つを、分岐点バッファのうち、分岐点カウンタのカウント値に対応する記憶領域に格納する(ステップS20)。その後、制御部25は、三角形バッファのうち、三角形カウンタのカウント値に対応する共有辺数に“3”をセットした後(ステップS21)、ステップS16の処理へとリターンする。
【0039】
一方、ステップS16の処理にて検出した三角形が1つの場合には(ステップS18;No、ステップS22;Yes)、ステップS16の処理にて検出した2つの三角形の頂点の座標を取得し、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納するとともに(ステップS23)、共有辺数に“2”をセットした後(ステップS24)、ステップS16の処理へとリターンする。
【0040】
他方、ステップS16の処理にて三角形が一つも検出できなかった場合には(ステップS18;No、ステップS22;No)、三角形バッファのうち、三角形カウンタのカウント値に対応する共有辺数に“1”をセットする(ステップS25)。
【0041】
続いて、制御部25は、分岐点カウンタのカウント値が“0”か否かを判別し(ステップS26)、“0”以外の数値であれば(ステップS26;No)、三角形カウンタのカウント値を“1”インクリメントして更新した後(ステップS27)、分岐点バッファのうち、分岐点カウンタのカウント値に対応する記憶領域に格納されている三角形の頂点の座標を、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納する(ステップS28)。その後、制御部25は、分岐点カウンタのカウント値を“1”デクリメントして更新した後(ステップS29)、ステップS16の処理へとリターンする。
【0042】
これに対して、ステップS26の処理にて分岐点カウンタのカウント値が“0”であれば(ステップS26;No)、この三角形メッシュ処理を終了する。この三角形メッシュ処理により、ステップS5の処理にて生成した最適化ベクトルデータが示す入力文字の輪郭内部には、図10(b)に示すように、複数の略二等辺三角形が形成される。
【0043】
続いて、制御部25は、記憶部24に記憶されている芯線データ生成プログラムを呼び出して実行することにより、図5に示すステップS6の三角形メッシュ処理にて形成した複数の略二等辺三角形に基づいて、入力文字の芯線を示す芯線データを生成する芯線データ生成処理を実行する(ステップS7)。
【0044】
図11は、芯線データ生成処理の詳細を示すフローチャートである。この芯線データ生成処理において、制御部25は、まず、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納されている三角形の頂点の座標と共有辺数とを読み出す(ステップS31)。
【0045】
ここで、ステップS31の処理にて読み出した共有辺数が“1”の場合には(ステップS32;Yes)、ステップS31の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する辺の中点を求め、その中点と対頂点とを結ぶ線分を示す線分データを生成してRAMの所定領域に展開する(ステップS33)。
【0046】
一方、ステップS31の処理にて読み出した共有辺数が“2”の場合には(ステップS32;No、ステップS34;Yes)、ステップS31の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する2つの辺の中点を求め、その中点同士を結ぶ線分を示す線分データを生成してRAMの所定領域に展開する(ステップS35)。
【0047】
他方、ステップS31の処理にて読み出した共有辺数が“3”の場合には(ステップS32;No、ステップS34;No)、ステップS31の処理にて読み出した三角形の頂点の座標から、三角形の重心と、他の三角形と共有する3つの辺の中点と、を求め、重心と3つの中点とを結ぶ3つの線分を示す線分データを生成してRAMの所定領域に展開する(ステップS36)。
【0048】
ステップS33、S35、又はS36の処理の実行後、制御部25は、三角形カウンタのカウント値を“1”デクリメントして更新し(ステップS37)、更新後のカウント値が“0”になったか否かを判別する(ステップS38)。ここで、三角形カウンタのカウント値が“0”以外の数値である場合には(ステップS38;No)、ステップS31の処理へとリターンする。このような処理を繰り返すことにより、RAMの所定領域には、図12(a)に示すような入力文字を構成する線分群を示す複数の線分データが展開される。
【0049】
これに対して、三角形カウンタのカウント値が“0”である場合には(ステップS38;No)、RAMの所定領域に展開された線分データが示す線分群をスムージングして芯線データを生成して(ステップS39)、この芯線データ生成処理を終了する。
【0050】
具体的には、図12(a)に示す線分データが示す線分群のうち、分岐点付近の線分群が直線化するなどしてスムージングが行われることにより、図12(b)に示すような芯線データが生成される。
【0051】
続いて、制御部25は、記憶部24に記憶されている芯線データ検出プログラムを呼び出して実行することにより、図5に示すステップS7の芯線データ生成処理にて生成した芯線データが示す芯線と略合致する芯線を示すものを、知識DB240に記憶されている芯線データのうちから検出する芯線データ検出処理を実行する(ステップS8)。
【0052】
図13は、芯線データ検出処理の詳細を示すフローチャートである。この芯線データ検出処理において、制御部25は、まず、図13に示すように、RAMに設けられた芯線ポインタにポインタ初期値“1”をセットした後(ステップS41)、ステップS7の芯線データ生成処理にて生成した芯線データが示す線分の始点(あるいは終点)の座標を検出する(ステップS42)。
【0053】
続いて、制御部25は、知識DB240から、芯線ポインタのポイント値に対応する芯線データが示す線分の始点(あるいは終点)の座標を読み出し(ステップS43)、その座標とステップS42の処理にて検出した座標との差分が全て所定の数値範囲内に収まっているか否かを判別する(ステップS44)。
【0054】
具体的には、ステップS44の処理において、図14に示すように、ステップS43の処理にて読み出した座標点を中心とし、所定の半径を有する複数の円のいずれかの内部に、ステップS42の処理にて検出した座標が全てあれば、ステップS43の処理にて読み出した座標とステップS42の処理にて検出した座標との差分が所定の数値範囲内に収まっているものと判別される。
【0055】
ここで、差分の全てが所定の数値範囲内に収まっていない場合には(ステップS44;No)、芯線ポインタのポイント値を“1”インクリメントして更新した後(ステップS45)、更新後のポイント値が所定の上限値、具体的には知識DB240に記憶されている芯線データの数に合致したか否かを判別する(ステップS46)。ここで、更新後のポイント値が所定の上限値に合致していない場合には(ステップS46;No)、ステップS42の処理へとリターンする。
【0056】
一方、ステップS46の処理にて更新後のポイント値が所定の上限値に合致していた場合には(ステップS46;Yes)、略合致する芯線を示す芯線データを検出できなかったとして、芯線ポインタのポイント値を“0”に更新した後(ステップS47)、この芯線データ検出処理を終了する。
【0057】
これに対して、ステップS44の処理にて差分の全てが所定の数値範囲内に収まっていた場合には(ステップS44;Yes)、略合致する芯線を示す芯線データを検出できたとして、そのままこの芯線データ検出処理を終了する。
【0058】
続いて、制御部25は、芯線ポインタのポインタ値をチェックして、ポインタ値が“0”であれば、文字を認識できなかった旨のメッセージを表示部23に表示し、ポインタ値が“0”以外の数値であれば、知識DB240から、ポインタ値に対応する文字コードを読み出して、その文字コードが示す登録文字を認識結果として表示部に表示する(図5のステップS9)。
【0059】
以上説明したように、本実施形態に係る文字認識システム1によれば、データ処理装置20の制御部25は、入力文字を示す文字データから、入力文字の輪郭上の座標点を示す複数のベクトルデータを含むベクトル化データを生成することにより、入力文字の輪郭を抽出する(ステップS4)。
【0060】
次に、制御部25は、このベクトル化データを最適化した最適化ベクトルデータが示す入力文字の輪郭内に、この輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する(ステップS6)。具体的には、三角形バッファのうち、三角形カウンタのカウント値に対応して格納されている三角形の頂点の座標のうちの2つを頂点とし、これとベクトルデータが示す座標点をもう一つの頂点とする三角形のうち、その内角が最小のものが最大値となる三角形を検出するステップS16の処理を繰り返すことによって、入力文字の輪郭内に複数の略二等辺三角形を形成する。
【0061】
続いて、制御部25は、ステップS6の三角形メッシュ処理にて形成した複数の三角形の内部のそれぞれに、この三角形の各辺の中点のうちの少なくとも一つを含む線分を示す線分データを生成することによって、入力文字の骨格(芯線)を示す芯線データを生成する(ステップS7)。具体的には、ステップS31の処理にて読み出した共有辺数が“1”の場合(ステップS32;Yes)、即ち、他の三角形と共有する辺が一つの場合には、ステップS31の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する辺の中点を求め、その中点と対頂点とを結ぶ線分を示す線分データを生成し、共有辺数が“2”の場合(ステップS32;No、ステップS34;No)、即ち、他の三角形と共有する辺が一つの場合には、ステップS31の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する2つの辺の中点を求め、その中点同士を結ぶ線分を示す線分データを生成し(ステップS35)、共有辺数が“3”の場合には(ステップS32;No、ステップS34;No)、ステップS31の処理にて読み出した三角形の頂点の座標から、三角形の重心と、他の三角形と共有する3つの辺の中点と、を求め、重心と3つの中点とを結ぶ3つの線分を示す線分データを生成する(ステップS36)。そして、制御部25は、このようにして生成した線分データが示す線分群をスムージングすることによって、入力文字の芯線を示す芯線データを生成する(ステップS39)。
【0062】
その後、ステップS7の芯線データ生成処理にて生成した芯線データが示す芯線と略合致する芯線を示すものを、知識DB240に記憶されている芯線データのうちから検出する(ステップS8)。具体的には、ステップS7の芯線データ生成処理にて生成した芯線データが示す線分の始点(あるいは終点)の座標を検出するとともに(ステップS42)、知識DB240から、芯線ポインタのポイント値に対応する芯線データが示す線分の始点(あるいは終点)の座標を読み出す(ステップS43)。そして、制御部25は、ステップS43の処理にて読み出した座標とステップS42の処理にて検出した座標との差分が全て所定の数値範囲内に収まっているか否かを判別し(ステップS44)、差分の全てが所定の数値範囲内に収まっていれば(ステップS44;Yes)、ステップS43の処理にて読み出した芯線データを、ステップS7の芯線データ生成処理にて生成した芯線データに略合致するものとして取得する。
【0063】
最後に、制御部25は、知識DB240から、ポインタ値に対応する文字コードを読み出して、その文字コードが示す登録文字を認識結果として表示部に表示して出力する(ステップS9)。
【0064】
このように入力文字と登録文字との骨格(芯線)を用いることにより、文字の太さを考慮することなく、入力文字を認識することが可能となるため、太さが不均一な文字、とりわけ手書きの文字についても、高い精度で認識することができる。
【0065】
なお、本発明は、上記実施形態に限定されず、種々の変形、応用が可能である。以下、本発明に適用可能な上記実施形態の変形態様について、説明する。
【0066】
上記実施形態において、制御部25のCPUが実行するプログラムは、予めROM等に記憶されていた。しかしながら、本発明は、これに限定されず、上述の処理を実行させるためのプログラムを、既存の汎用コンピュータに適用することで、上記実施形態に係るデータ処理装置20として機能させてもよい。
【0067】
このようなプログラムの提供方法は任意であり、例えばコンピュータが読取可能な記録媒体(フレキシブルディスク、CD(Compact Disc)−ROM、DVD(Digital Versatile Disc)−ROM等)に格納して配布してもよいし、インターネット等のネットワーク上のストレージにプログラムを格納しておき、これをダウンロードさせることにより提供してもよい。
【0068】
また、上記の処理をOSとアプリケーションプログラムとの分担、又はOSとアプリケーションプログラムとの協働によって実行する場合には、アプリケーションプログラムのみを記録媒体やストレージに格納してもよい。また、搬送波にプログラムを重畳し、ネットワークを介して配信することも可能である。例えば、ネットワーク上の掲示板(BBS:Bulletin Board System)に上記プログラムを掲示し、ネットワークを介してプログラムを配信してもよい。そして、このプログラムを起動し、OSの制御下で、他のアプリケーションプログラムと同様に実行することにより、上記の処理を実行できるように構成してもよい。
【図面の簡単な説明】
【0069】
【図1】文字認識システムの構成例を示すブロック図である。
【図2】知識BDの構成例を示すブロック図である。
【図3】(a)は芯線の一例を示す図であり、(b)は芯線データの構成例を示すブロック図である。
【図4】(a)は三角形バッファの構成例を示すブロック図であり、(b)は分岐点バッファの構成例を示すブロック図である。
【図5】文字認識処理の一例を示すフローチャートである。
【図6】文字データの一例を示す図である。
【図7】(a)はベクトル化データの一例を示す図であり、(b)は最適化ベクトルデータの一例を示す図である。
【図8】三角形メッシュ処理の一例を示すフローチャートである。
【図9】三角形メッシュ処理の一例を示すフローチャートである。
【図10】三角形メッシュ処理の詳細を説明するための図である。
【図11】芯線データ生成処理の一例を示すフローチャートである。
【図12】芯線データ生成処理の詳細を説明するための図である。
【図13】芯線データ検出処理の一例を示すフローチャートである。
【図14】芯線データ検出処理の詳細を説明するための図である。
【符号の説明】
【0070】
1 文字認識システム
10 イメージ入力装置
20 データ処理装置
21 通信部
22 操作部
23 表示部
24 記憶部
25 制御部
240 知識DB
【技術分野】
【0001】
本発明は、文字認識装置、文字認識方法、及びプログラムに関し、特に高い精度で文字を認識することができる文字認識装置、文字認識方法、及びプログラムに関する。
【背景技術】
【0002】
現在、イメージスキャナにて読み取った文書の画像データから、一文字分の画像データを切り出した後、これを解析して特徴パラメータを抽出し、この特徴パラメータを予め用意した各文字の属する特徴パラメータの辞書と照合することによって、読み取った文字を認識する文字認識装置が広く用いられている(例えば特許文献1参照)。
【特許文献1】特開平7−52238号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上述のような文字認識装置を用いて文字を認識する際には、読み取った文字の太さも考慮しなければならなかったため、太さが不均一な文字、とりわけ手書きの文字については、その認識ができない場合が多く存在した。
【0004】
本発明は、上記実状に鑑みてなされたものであり、高い精度で文字を認識することができる文字認識装置、文字認識方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0005】
上記目的を達成するため、本発明の第1の観点に係る文字認識装置は、登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段と、入力文字から該入力文字の輪郭を抽出する輪郭抽出手段と、前記輪郭抽出手段によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手段と、前記三角形形成手段によって形成した複数の略二等辺三角形の内部のそれぞれに、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手段と、前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手段によって生成した入力文字の骨格と略合致するものを検出する骨格検出手段と、前記骨格検出手段によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手段と、を備える。
【0006】
また、上記文字認識装置において、前記三角形形成手段は、前記入力文字の輪郭内に既に形成した第1の略二等辺三角形の一辺と、該第1の略二等辺三角形の頂点とは異なる前記輪郭上の点と、から構成される三角形のうちで、三つの内角のうち最小のものが最大値となる三角形を第2の略二等辺三角形として取得する処理を繰り返すことによって、前記入力文字の輪郭内に複数の略二等辺三角形を形成する、ものであってもよい。
【0007】
さらに、上記文字認識装置において、前記骨格生成手段は、他と共有する辺が一つの略二等辺三角形の内部に該他と共有する辺の中点と該辺と対向する頂点とを結ぶ線分を形成し、他と共有する辺が二つの略二等辺三角形の内部に該他と共有する二辺の中点同士を結ぶ線分を形成し、他と共有する辺が三つの場合の略二等辺三角形の内部に該略二等辺三角形の重心と各辺とを結ぶ三つの線分を形成することによって、前記入力文字の骨格を生成する、ものであってもよい。
【0008】
また、上記文字認識装置において、前記骨格検出手段は、前記登録文字記憶手段に記憶されている登録文字の骨格のうちの一つを読み出す骨格読出手段と、前記骨格読出手段によって読み出した登録文字の骨格を構成する複数の線分の始点の座標と、前記骨格生成手段によって生成した入力文字の骨格を構成する複数の線分の始点の座標と、の差分が全て所定の数値範囲内に収まっているか否かを判別する骨格判別手段と、前記骨格判別手段によって差分が全て所定の数値範囲内に収まっていると判別した場合、前記骨格読出手段によって読み出した登録文字の骨格を前記入力文字の骨格に略合致するものとして取得する骨格取得手段と、を含むものであってもよい。
【0009】
さらに、本発明の第2の観点に係る文字認識方法は、登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備える文字認識装置における文字認識方法であって、入力文字から該入力文字の輪郭を抽出する輪郭抽出ステップと、前記輪郭抽出ステップによって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成ステップと、前記三角形形成ステップによって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成ステップと、前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成ステップによって生成した入力文字の骨格と略合致するものを検出する骨格検出ステップと、前記骨格検出ステップによって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力ステップと、を備えることを特徴とする。
【0010】
さらに、本発明の第3の観点に係るプログラムは、登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備えるコンピュータに、入力文字から該入力文字の輪郭を抽出する輪郭抽出手順と、前記輪郭抽出手順によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手順と、前記三角形形成手順によって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手順と、前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手順によって生成した入力文字の骨格と略合致するものを検出する骨格検出手順と、前記骨格検出手順によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手順と、を実行させる。
【発明の効果】
【0011】
本発明によれば、高い精度で文字を認識することができる文字認識装置、文字認識方法、及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【0012】
以下、本発明を実施するための最良の形態について説明する。
【0013】
まず、本実施形態に係る文字認識装置の構成について図面を参照しつつ説明する。文字認識システム1は、図1に示すように、イメージ入力装置10と、データ処理装置20と、から概略構成されており、これらは、LAN(Local Area Network)等により相互に接続されている。
【0014】
イメージ入力装置10は、例えばイメージスキャナや、スキャン機能を含む複合機等から構成されており、データ処理装置20による制御の下、コンタクトガラスにセットされた原稿に光を当ててその反射光をCCD(Charge Coupled Device)等の撮像素子にて光電変換した後、A/D(Analog/Digital)変換するなどして画像データを生成し、LANを介してデータ処理装置20に供給する。
【0015】
データ処理装置20は、例えば汎用コンピュータ等から構成されており、通信部21と、操作部22と、表示部23と、記憶部24と、制御部25と、を備え、これらは、バス等により相互に接続されている。
【0016】
通信部21は、例えばNIC(Network Interface Card)のような通信装置を含んで構成されており、制御部25による制御の下、LANを介してイメージ入力装置10との間でデータの送受信を行う。
【0017】
操作部22は、例えばマウスやキーボード等から構成されており、ユーザによって操作される。
【0018】
表示部23は、例えばLCD(Liquid Crystal Display)のような液晶表示装置等から構成されており、制御部25による制御の下、データ処理装置20による種々の動作を実行するための画像や、イメージ入力装置10から供給された画像データに基づく画像等を表示する。
【0019】
記憶部24は、例えばハードディスクドライブ等から構成されており、OS(Operating System)や、各種アプリケーションプログラムを記憶している。
【0020】
本実施形態において、記憶部24には、アプリケーションプログラムとして、原稿に記載された文字(入力文字)を認識する文字認識処理を実行する文字認識プログラムが記憶されており、また、そのサブルーチンプログラムとして、入力文字の輪郭内に複数の略二等辺三角形が形成されるようにメッシュを入れる三角形メッシュ処理を実行する三角メッシュプログラムや、入力文字の骨格(芯線)を示す芯線データを生成する芯線データ生成プログラム、知識DB240に記憶されている芯線データのうちから、芯線データ生成プログラムによって生成された芯線データと略合致する芯線を示すものを検出する芯線データ検出プログラムなどが記憶されている。
【0021】
また、記憶部24は、知識DB(Data Base)240を備えている。知識DB240は、図2に示すように、後述する芯線ポインタのポイント値と、予め登録された文字(登録文字)を特定可能な文字コードと、登録文字の芯線を示す芯線データと、が対応付けられて記憶されている。
【0022】
知識DB240に記憶されている芯線データは、登録文字の芯線を構成する複数の線分の始点(あるいは終点)の座標(ベクトル)を示すデータから構成されている。例えば「田」という登録文字の芯線は、図3(a)に示すような複数の線分から構成されており、そして、この芯線を示す芯線データ(図2に示す例では芯線データ#i)は、図3(b)に示すような座標(ベクトル)を示すデータから構成されている。
【0023】
制御部25は、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)、及びRAM(Random Access Memory)等から構成されており、CPUがRAMをワークメモリとして用いてROMや記憶部24等に記憶されている各種プログラムを適宜実行することによって、データ処理装置20の各部の動作を制御する。
【0024】
本実施形態において、RAMには、三角形カウンタや、分岐点カウンタ、芯線ポインタ、三角形バッファ、分岐点バッファなどが設けられている。
【0025】
三角形カウンタは、入力文字の輪郭内部に形成された三角形をカウントするもので、カウンタ初期値として“1”がセットされる。分岐点カウンタは、入力文字の辺同士が交わる部分(分岐点)をカウントするもので、カウンタ初期値として“0”がセットされる。芯線ポインタは、知識DB240から、芯線データや文字コードを読み出す際に用いられるもので、ポイント初期値として“1”がセットされる。
【0026】
三角形バッファは、図4(a)に示すように、三角形カウンタのカウント値と、入力文字の輪郭内部に形成された三角形の頂点の座標と、他の三角形と共有する辺の個数を示す共有辺数と、を対応付けて記憶している。分岐点バッファは、図4(b)に示すように、分岐点カウンタのカウント値と、分岐点における三角形の座標と、を対応付けて記憶している。
【0027】
次に、上記構成を備える文字認識システム1の具体的動作について図面を参照しつつ説明する。
【0028】
認識対象となる文字が記載された原稿がイメージ入力装置10のコンタクトガラスにセットされた状態で、ユーザによる操作部22の操作によって文字の認識が指示されたことに応答して、データ処理装置20の制御部25は、記憶部24に記憶されている文字認識プログラムを読み出して実行することにより、図5に示す文字認識処理を開始する。
【0029】
この文字認識処理が開始すると、制御部25は、まず、図5に示すように、原稿の読取の指示する読取指示信号を、通信部21からLANを介してイメージ入力装置10に対して送信する(ステップS1)。イメージ入力装置10では、かかる読取指示信号を受信したことに応答して、コンタクトガラスにセットされた原稿の画像データが生成され、LANを介してデータ処理装置20の制御部25に送信される。
【0030】
制御部25は、イメージ入力装置10から送信された画像データを通信部21にて受信する(ステップS2)。続いて、制御部25は、ステップS4の処理にて受信した画像データをBMPファイル形式で変換することにより、図6に示すような入力文字を示す文字データを生成する(ステップS3)。
【0031】
さらに、制御部25は、ステップS3の処理にて生成した文字データのノイズ除去などを行った後、ラスタベクタ変換することにより、図7(a)に示すような入力文字の輪郭を示すベクトル化データを生成する(ステップS4)。このベクトル化データは、図7(a)に示すように、入力文字の輪郭上の座標点を示す複数のベクトルデータから構成されている。
【0032】
続いて、制御部25は、ステップS4の処理にて生成したベクトル化データを最適化、図7(b)に示すような最適化ベクトルデータを生成する(ステップS5)。具体的には、ベクトル化データに含まれる複数のベクトルデータに基づいて、入力文字の輪郭上の座標点を細分化してより多くのベクトルデータを取得し、このベクトルデータから構成される最適化データを生成する。
【0033】
そして、制御部25は、記憶部24に記憶されている三角形メッシュプログラムを呼び出して実行することにより、ステップS5の処理にて生成した最適化ベクトルデータが示す入力文字の輪郭内に、複数のベクトルデータが示す座標点をその頂点とする複数の略二等辺三角形が形成されるようにメッシュを入れる三角形メッシュ処理を実行する(ステップS6)。
【0034】
図8及び図9は、三角形メッシュ処理の詳細を示すフローチャートである。この三角形メッシュ処理において、制御部25は、まず、図8に示すように、RAMに設けられた三角形カウンタにカウンタ初期値“1”をセットするとともに、分岐点カウンタにカウンタ初期値“0”をセットした後に(ステップS11)、最適化ベクトルデータが示す入力文字の輪郭から、所定範囲の長さの略直線部分のうち、例えば最短のものを三角形の一辺として取得する(ステップS12)。図10(a)に示す例では、ステップS12の処理にて辺Lが取得される。
【0035】
次に、制御部25は、ステップS12の処理にて取得した辺とベクトルデータが示す座標点をその頂点の一つとする三角形のうち、その内角が最小のものが最大値となる三角形を検出する(ステップS13)。図10(a)に示す例では、ベクトルデータが示す座標点Pが選択された場合に、三角形の内角のうち最小のものが最大値となる。
【0036】
続いて、制御部25は、ステップS13の処理にて検出した三角形の頂点の座標を取得して、RAMに設けられた三角形バッファのうち、カウント値“1”に対応する記憶領域に格納するとともに(ステップS14)、共有辺数に“1”をセットする(ステップS15)。
【0037】
そして、制御部25は、三角形バッファのうち、三角形カウンタのカウント値に対応して格納されている三角形の頂点の座標のうちの2つを頂点とし、これとベクトルデータが示す座標点をもう一つの頂点とする三角形のうち、その内角が最小のものが最大値となる三角形を検出した後(図9のステップS16)、三角形カウンタのカウント値を“1”インクリメントして更新する(ステップS17)。
【0038】
ステップS16の処理にて検出した三角形が2つの場合には(ステップS18;Yes)、分岐点カウンタのカウント値を“1”インクリメントして更新した後(ステップS19)、ステップS16の処理にて検出した2つの三角形の頂点の座標を取得し、そのうちの一つを、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納するとともに、もう一つを、分岐点バッファのうち、分岐点カウンタのカウント値に対応する記憶領域に格納する(ステップS20)。その後、制御部25は、三角形バッファのうち、三角形カウンタのカウント値に対応する共有辺数に“3”をセットした後(ステップS21)、ステップS16の処理へとリターンする。
【0039】
一方、ステップS16の処理にて検出した三角形が1つの場合には(ステップS18;No、ステップS22;Yes)、ステップS16の処理にて検出した2つの三角形の頂点の座標を取得し、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納するとともに(ステップS23)、共有辺数に“2”をセットした後(ステップS24)、ステップS16の処理へとリターンする。
【0040】
他方、ステップS16の処理にて三角形が一つも検出できなかった場合には(ステップS18;No、ステップS22;No)、三角形バッファのうち、三角形カウンタのカウント値に対応する共有辺数に“1”をセットする(ステップS25)。
【0041】
続いて、制御部25は、分岐点カウンタのカウント値が“0”か否かを判別し(ステップS26)、“0”以外の数値であれば(ステップS26;No)、三角形カウンタのカウント値を“1”インクリメントして更新した後(ステップS27)、分岐点バッファのうち、分岐点カウンタのカウント値に対応する記憶領域に格納されている三角形の頂点の座標を、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納する(ステップS28)。その後、制御部25は、分岐点カウンタのカウント値を“1”デクリメントして更新した後(ステップS29)、ステップS16の処理へとリターンする。
【0042】
これに対して、ステップS26の処理にて分岐点カウンタのカウント値が“0”であれば(ステップS26;No)、この三角形メッシュ処理を終了する。この三角形メッシュ処理により、ステップS5の処理にて生成した最適化ベクトルデータが示す入力文字の輪郭内部には、図10(b)に示すように、複数の略二等辺三角形が形成される。
【0043】
続いて、制御部25は、記憶部24に記憶されている芯線データ生成プログラムを呼び出して実行することにより、図5に示すステップS6の三角形メッシュ処理にて形成した複数の略二等辺三角形に基づいて、入力文字の芯線を示す芯線データを生成する芯線データ生成処理を実行する(ステップS7)。
【0044】
図11は、芯線データ生成処理の詳細を示すフローチャートである。この芯線データ生成処理において、制御部25は、まず、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納されている三角形の頂点の座標と共有辺数とを読み出す(ステップS31)。
【0045】
ここで、ステップS31の処理にて読み出した共有辺数が“1”の場合には(ステップS32;Yes)、ステップS31の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する辺の中点を求め、その中点と対頂点とを結ぶ線分を示す線分データを生成してRAMの所定領域に展開する(ステップS33)。
【0046】
一方、ステップS31の処理にて読み出した共有辺数が“2”の場合には(ステップS32;No、ステップS34;Yes)、ステップS31の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する2つの辺の中点を求め、その中点同士を結ぶ線分を示す線分データを生成してRAMの所定領域に展開する(ステップS35)。
【0047】
他方、ステップS31の処理にて読み出した共有辺数が“3”の場合には(ステップS32;No、ステップS34;No)、ステップS31の処理にて読み出した三角形の頂点の座標から、三角形の重心と、他の三角形と共有する3つの辺の中点と、を求め、重心と3つの中点とを結ぶ3つの線分を示す線分データを生成してRAMの所定領域に展開する(ステップS36)。
【0048】
ステップS33、S35、又はS36の処理の実行後、制御部25は、三角形カウンタのカウント値を“1”デクリメントして更新し(ステップS37)、更新後のカウント値が“0”になったか否かを判別する(ステップS38)。ここで、三角形カウンタのカウント値が“0”以外の数値である場合には(ステップS38;No)、ステップS31の処理へとリターンする。このような処理を繰り返すことにより、RAMの所定領域には、図12(a)に示すような入力文字を構成する線分群を示す複数の線分データが展開される。
【0049】
これに対して、三角形カウンタのカウント値が“0”である場合には(ステップS38;No)、RAMの所定領域に展開された線分データが示す線分群をスムージングして芯線データを生成して(ステップS39)、この芯線データ生成処理を終了する。
【0050】
具体的には、図12(a)に示す線分データが示す線分群のうち、分岐点付近の線分群が直線化するなどしてスムージングが行われることにより、図12(b)に示すような芯線データが生成される。
【0051】
続いて、制御部25は、記憶部24に記憶されている芯線データ検出プログラムを呼び出して実行することにより、図5に示すステップS7の芯線データ生成処理にて生成した芯線データが示す芯線と略合致する芯線を示すものを、知識DB240に記憶されている芯線データのうちから検出する芯線データ検出処理を実行する(ステップS8)。
【0052】
図13は、芯線データ検出処理の詳細を示すフローチャートである。この芯線データ検出処理において、制御部25は、まず、図13に示すように、RAMに設けられた芯線ポインタにポインタ初期値“1”をセットした後(ステップS41)、ステップS7の芯線データ生成処理にて生成した芯線データが示す線分の始点(あるいは終点)の座標を検出する(ステップS42)。
【0053】
続いて、制御部25は、知識DB240から、芯線ポインタのポイント値に対応する芯線データが示す線分の始点(あるいは終点)の座標を読み出し(ステップS43)、その座標とステップS42の処理にて検出した座標との差分が全て所定の数値範囲内に収まっているか否かを判別する(ステップS44)。
【0054】
具体的には、ステップS44の処理において、図14に示すように、ステップS43の処理にて読み出した座標点を中心とし、所定の半径を有する複数の円のいずれかの内部に、ステップS42の処理にて検出した座標が全てあれば、ステップS43の処理にて読み出した座標とステップS42の処理にて検出した座標との差分が所定の数値範囲内に収まっているものと判別される。
【0055】
ここで、差分の全てが所定の数値範囲内に収まっていない場合には(ステップS44;No)、芯線ポインタのポイント値を“1”インクリメントして更新した後(ステップS45)、更新後のポイント値が所定の上限値、具体的には知識DB240に記憶されている芯線データの数に合致したか否かを判別する(ステップS46)。ここで、更新後のポイント値が所定の上限値に合致していない場合には(ステップS46;No)、ステップS42の処理へとリターンする。
【0056】
一方、ステップS46の処理にて更新後のポイント値が所定の上限値に合致していた場合には(ステップS46;Yes)、略合致する芯線を示す芯線データを検出できなかったとして、芯線ポインタのポイント値を“0”に更新した後(ステップS47)、この芯線データ検出処理を終了する。
【0057】
これに対して、ステップS44の処理にて差分の全てが所定の数値範囲内に収まっていた場合には(ステップS44;Yes)、略合致する芯線を示す芯線データを検出できたとして、そのままこの芯線データ検出処理を終了する。
【0058】
続いて、制御部25は、芯線ポインタのポインタ値をチェックして、ポインタ値が“0”であれば、文字を認識できなかった旨のメッセージを表示部23に表示し、ポインタ値が“0”以外の数値であれば、知識DB240から、ポインタ値に対応する文字コードを読み出して、その文字コードが示す登録文字を認識結果として表示部に表示する(図5のステップS9)。
【0059】
以上説明したように、本実施形態に係る文字認識システム1によれば、データ処理装置20の制御部25は、入力文字を示す文字データから、入力文字の輪郭上の座標点を示す複数のベクトルデータを含むベクトル化データを生成することにより、入力文字の輪郭を抽出する(ステップS4)。
【0060】
次に、制御部25は、このベクトル化データを最適化した最適化ベクトルデータが示す入力文字の輪郭内に、この輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する(ステップS6)。具体的には、三角形バッファのうち、三角形カウンタのカウント値に対応して格納されている三角形の頂点の座標のうちの2つを頂点とし、これとベクトルデータが示す座標点をもう一つの頂点とする三角形のうち、その内角が最小のものが最大値となる三角形を検出するステップS16の処理を繰り返すことによって、入力文字の輪郭内に複数の略二等辺三角形を形成する。
【0061】
続いて、制御部25は、ステップS6の三角形メッシュ処理にて形成した複数の三角形の内部のそれぞれに、この三角形の各辺の中点のうちの少なくとも一つを含む線分を示す線分データを生成することによって、入力文字の骨格(芯線)を示す芯線データを生成する(ステップS7)。具体的には、ステップS31の処理にて読み出した共有辺数が“1”の場合(ステップS32;Yes)、即ち、他の三角形と共有する辺が一つの場合には、ステップS31の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する辺の中点を求め、その中点と対頂点とを結ぶ線分を示す線分データを生成し、共有辺数が“2”の場合(ステップS32;No、ステップS34;No)、即ち、他の三角形と共有する辺が一つの場合には、ステップS31の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する2つの辺の中点を求め、その中点同士を結ぶ線分を示す線分データを生成し(ステップS35)、共有辺数が“3”の場合には(ステップS32;No、ステップS34;No)、ステップS31の処理にて読み出した三角形の頂点の座標から、三角形の重心と、他の三角形と共有する3つの辺の中点と、を求め、重心と3つの中点とを結ぶ3つの線分を示す線分データを生成する(ステップS36)。そして、制御部25は、このようにして生成した線分データが示す線分群をスムージングすることによって、入力文字の芯線を示す芯線データを生成する(ステップS39)。
【0062】
その後、ステップS7の芯線データ生成処理にて生成した芯線データが示す芯線と略合致する芯線を示すものを、知識DB240に記憶されている芯線データのうちから検出する(ステップS8)。具体的には、ステップS7の芯線データ生成処理にて生成した芯線データが示す線分の始点(あるいは終点)の座標を検出するとともに(ステップS42)、知識DB240から、芯線ポインタのポイント値に対応する芯線データが示す線分の始点(あるいは終点)の座標を読み出す(ステップS43)。そして、制御部25は、ステップS43の処理にて読み出した座標とステップS42の処理にて検出した座標との差分が全て所定の数値範囲内に収まっているか否かを判別し(ステップS44)、差分の全てが所定の数値範囲内に収まっていれば(ステップS44;Yes)、ステップS43の処理にて読み出した芯線データを、ステップS7の芯線データ生成処理にて生成した芯線データに略合致するものとして取得する。
【0063】
最後に、制御部25は、知識DB240から、ポインタ値に対応する文字コードを読み出して、その文字コードが示す登録文字を認識結果として表示部に表示して出力する(ステップS9)。
【0064】
このように入力文字と登録文字との骨格(芯線)を用いることにより、文字の太さを考慮することなく、入力文字を認識することが可能となるため、太さが不均一な文字、とりわけ手書きの文字についても、高い精度で認識することができる。
【0065】
なお、本発明は、上記実施形態に限定されず、種々の変形、応用が可能である。以下、本発明に適用可能な上記実施形態の変形態様について、説明する。
【0066】
上記実施形態において、制御部25のCPUが実行するプログラムは、予めROM等に記憶されていた。しかしながら、本発明は、これに限定されず、上述の処理を実行させるためのプログラムを、既存の汎用コンピュータに適用することで、上記実施形態に係るデータ処理装置20として機能させてもよい。
【0067】
このようなプログラムの提供方法は任意であり、例えばコンピュータが読取可能な記録媒体(フレキシブルディスク、CD(Compact Disc)−ROM、DVD(Digital Versatile Disc)−ROM等)に格納して配布してもよいし、インターネット等のネットワーク上のストレージにプログラムを格納しておき、これをダウンロードさせることにより提供してもよい。
【0068】
また、上記の処理をOSとアプリケーションプログラムとの分担、又はOSとアプリケーションプログラムとの協働によって実行する場合には、アプリケーションプログラムのみを記録媒体やストレージに格納してもよい。また、搬送波にプログラムを重畳し、ネットワークを介して配信することも可能である。例えば、ネットワーク上の掲示板(BBS:Bulletin Board System)に上記プログラムを掲示し、ネットワークを介してプログラムを配信してもよい。そして、このプログラムを起動し、OSの制御下で、他のアプリケーションプログラムと同様に実行することにより、上記の処理を実行できるように構成してもよい。
【図面の簡単な説明】
【0069】
【図1】文字認識システムの構成例を示すブロック図である。
【図2】知識BDの構成例を示すブロック図である。
【図3】(a)は芯線の一例を示す図であり、(b)は芯線データの構成例を示すブロック図である。
【図4】(a)は三角形バッファの構成例を示すブロック図であり、(b)は分岐点バッファの構成例を示すブロック図である。
【図5】文字認識処理の一例を示すフローチャートである。
【図6】文字データの一例を示す図である。
【図7】(a)はベクトル化データの一例を示す図であり、(b)は最適化ベクトルデータの一例を示す図である。
【図8】三角形メッシュ処理の一例を示すフローチャートである。
【図9】三角形メッシュ処理の一例を示すフローチャートである。
【図10】三角形メッシュ処理の詳細を説明するための図である。
【図11】芯線データ生成処理の一例を示すフローチャートである。
【図12】芯線データ生成処理の詳細を説明するための図である。
【図13】芯線データ検出処理の一例を示すフローチャートである。
【図14】芯線データ検出処理の詳細を説明するための図である。
【符号の説明】
【0070】
1 文字認識システム
10 イメージ入力装置
20 データ処理装置
21 通信部
22 操作部
23 表示部
24 記憶部
25 制御部
240 知識DB
【特許請求の範囲】
【請求項1】
登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段と、
入力文字から該入力文字の輪郭を抽出する輪郭抽出手段と、
前記輪郭抽出手段によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手段と、
前記三角形形成手段によって形成した複数の略二等辺三角形の内部のそれぞれに、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手段と、
前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手段によって生成した入力文字の骨格と略合致するものを検出する骨格検出手段と、
前記骨格検出手段によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手段と、
を備える文字認識装置。
【請求項2】
前記三角形形成手段は、前記入力文字の輪郭内に既に形成した第1の略二等辺三角形の一辺と、該第1の略二等辺三角形の頂点とは異なる前記輪郭上の点と、から構成される三角形のうちで、三つの内角のうち最小のものが最大値となる三角形を第2の略二等辺三角形として取得する処理を繰り返すことによって、前記入力文字の輪郭内に複数の略二等辺三角形を形成する、
ことを特徴とする請求項1に記載の文字認識装置。
【請求項3】
前記骨格生成手段は、他と共有する辺が一つの略二等辺三角形の内部に該他と共有する辺の中点と該辺と対向する頂点とを結ぶ線分を形成し、他と共有する辺が二つの略二等辺三角形の内部に該他と共有する二辺の中点同士を結ぶ線分を形成し、他と共有する辺が三つの場合の略二等辺三角形の内部に該略二等辺三角形の重心と各辺とを結ぶ三つの線分を形成することによって、前記入力文字の骨格を生成する、
ことを特徴とする請求項1又は2に記載の文字認識装置。
【請求項4】
前記骨格検出手段は、前記登録文字記憶手段に記憶されている登録文字の骨格のうちの一つを読み出す骨格読出手段と、
前記骨格読出手段によって読み出した登録文字の骨格を構成する複数の線分の始点の座標と、前記骨格生成手段によって生成した入力文字の骨格を構成する複数の線分の始点の座標と、の差分が全て所定の数値範囲内に収まっているか否かを判別する骨格判別手段と、
前記骨格判別手段によって差分が全て所定の数値範囲内に収まっていると判別した場合、前記骨格読出手段によって読み出した登録文字の骨格を前記入力文字の骨格に略合致するものとして取得する骨格取得手段と、
を含むことを特徴とする請求項1、2、又は3に記載の文字認識装置。
【請求項5】
登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備える文字認識装置における文字認識方法であって、
入力文字から該入力文字の輪郭を抽出する輪郭抽出ステップと、
前記輪郭抽出ステップによって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成ステップと、
前記三角形形成ステップによって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成ステップと、
前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成ステップによって生成した入力文字の骨格と略合致するものを検出する骨格検出ステップと、
前記骨格検出ステップによって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力ステップと、
を備えることを特徴とする文字認識方法。
【請求項6】
登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備えるコンピュータに、
入力文字から該入力文字の輪郭を抽出する輪郭抽出手順と、
前記輪郭抽出手順によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手順と、
前記三角形形成手順によって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手順と、
前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手順によって生成した入力文字の骨格と略合致するものを検出する骨格検出手順と、
前記骨格検出手順によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手順と、
を実行させるためのプログラム。
【請求項1】
登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段と、
入力文字から該入力文字の輪郭を抽出する輪郭抽出手段と、
前記輪郭抽出手段によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手段と、
前記三角形形成手段によって形成した複数の略二等辺三角形の内部のそれぞれに、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手段と、
前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手段によって生成した入力文字の骨格と略合致するものを検出する骨格検出手段と、
前記骨格検出手段によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手段と、
を備える文字認識装置。
【請求項2】
前記三角形形成手段は、前記入力文字の輪郭内に既に形成した第1の略二等辺三角形の一辺と、該第1の略二等辺三角形の頂点とは異なる前記輪郭上の点と、から構成される三角形のうちで、三つの内角のうち最小のものが最大値となる三角形を第2の略二等辺三角形として取得する処理を繰り返すことによって、前記入力文字の輪郭内に複数の略二等辺三角形を形成する、
ことを特徴とする請求項1に記載の文字認識装置。
【請求項3】
前記骨格生成手段は、他と共有する辺が一つの略二等辺三角形の内部に該他と共有する辺の中点と該辺と対向する頂点とを結ぶ線分を形成し、他と共有する辺が二つの略二等辺三角形の内部に該他と共有する二辺の中点同士を結ぶ線分を形成し、他と共有する辺が三つの場合の略二等辺三角形の内部に該略二等辺三角形の重心と各辺とを結ぶ三つの線分を形成することによって、前記入力文字の骨格を生成する、
ことを特徴とする請求項1又は2に記載の文字認識装置。
【請求項4】
前記骨格検出手段は、前記登録文字記憶手段に記憶されている登録文字の骨格のうちの一つを読み出す骨格読出手段と、
前記骨格読出手段によって読み出した登録文字の骨格を構成する複数の線分の始点の座標と、前記骨格生成手段によって生成した入力文字の骨格を構成する複数の線分の始点の座標と、の差分が全て所定の数値範囲内に収まっているか否かを判別する骨格判別手段と、
前記骨格判別手段によって差分が全て所定の数値範囲内に収まっていると判別した場合、前記骨格読出手段によって読み出した登録文字の骨格を前記入力文字の骨格に略合致するものとして取得する骨格取得手段と、
を含むことを特徴とする請求項1、2、又は3に記載の文字認識装置。
【請求項5】
登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備える文字認識装置における文字認識方法であって、
入力文字から該入力文字の輪郭を抽出する輪郭抽出ステップと、
前記輪郭抽出ステップによって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成ステップと、
前記三角形形成ステップによって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成ステップと、
前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成ステップによって生成した入力文字の骨格と略合致するものを検出する骨格検出ステップと、
前記骨格検出ステップによって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力ステップと、
を備えることを特徴とする文字認識方法。
【請求項6】
登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備えるコンピュータに、
入力文字から該入力文字の輪郭を抽出する輪郭抽出手順と、
前記輪郭抽出手順によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手順と、
前記三角形形成手順によって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手順と、
前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手順によって生成した入力文字の骨格と略合致するものを検出する骨格検出手順と、
前記骨格検出手順によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手順と、
を実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2009−48417(P2009−48417A)
【公開日】平成21年3月5日(2009.3.5)
【国際特許分類】
【出願番号】特願2007−213921(P2007−213921)
【出願日】平成19年8月20日(2007.8.20)
【出願人】(507092573)A・Tコミュニケーションズ株式会社 (15)
【Fターム(参考)】
【公開日】平成21年3月5日(2009.3.5)
【国際特許分類】
【出願日】平成19年8月20日(2007.8.20)
【出願人】(507092573)A・Tコミュニケーションズ株式会社 (15)
【Fターム(参考)】
[ Back to top ]