(57)【特許請求の範囲】
【請求項１】
登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段と、
入力文字から該入力文字の輪郭を抽出する輪郭抽出手段と、
前記輪郭抽出手段によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手段と、
前記三角形形成手段によって形成した複数の略二等辺三角形の内部のそれぞれに、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手段と、
前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手段によって生成した入力文字の骨格と略合致するものを検出する骨格検出手段と、
前記骨格検出手段によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手段と、
を備える文字認識装置。
【請求項２】
前記三角形形成手段は、前記入力文字の輪郭内に既に形成した第１の略二等辺三角形の一辺と、該第１の略二等辺三角形の頂点とは異なる前記輪郭上の点と、から構成される三角形のうちで、三つの内角のうち最小のものが最大値となる三角形を第２の略二等辺三角形として取得する処理を繰り返すことによって、前記入力文字の輪郭内に複数の略二等辺三角形を形成する、
ことを特徴とする請求項１に記載の文字認識装置。
【請求項３】
前記骨格生成手段は、他と共有する辺が一つの略二等辺三角形の内部に該他と共有する辺の中点と該辺と対向する頂点とを結ぶ線分を形成し、他と共有する辺が二つの略二等辺三角形の内部に該他と共有する二辺の中点同士を結ぶ線分を形成し、他と共有する辺が三つの場合の略二等辺三角形の内部に該略二等辺三角形の重心と各辺とを結ぶ三つの線分を形成することによって、前記入力文字の骨格を生成する、
ことを特徴とする請求項１又は２に記載の文字認識装置。
【請求項４】
前記骨格検出手段は、前記登録文字記憶手段に記憶されている登録文字の骨格のうちの一つを読み出す骨格読出手段と、
前記骨格読出手段によって読み出した登録文字の骨格を構成する複数の線分の始点の座標と、前記骨格生成手段によって生成した入力文字の骨格を構成する複数の線分の始点の座標と、の差分が全て所定の数値範囲内に収まっているか否かを判別する骨格判別手段と、
前記骨格判別手段によって差分が全て所定の数値範囲内に収まっていると判別した場合、前記骨格読出手段によって読み出した登録文字の骨格を前記入力文字の骨格に略合致するものとして取得する骨格取得手段と、
を含むことを特徴とする請求項１、２、又は３に記載の文字認識装置。
【請求項５】
登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備える文字認識装置における文字認識方法であって、
入力文字から該入力文字の輪郭を抽出する輪郭抽出ステップと、
前記輪郭抽出ステップによって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成ステップと、
前記三角形形成ステップによって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成ステップと、
前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成ステップによって生成した入力文字の骨格と略合致するものを検出する骨格検出ステップと、
前記骨格検出ステップによって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力ステップと、
を備えることを特徴とする文字認識方法。
【請求項６】
登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備えるコンピュータに、
入力文字から該入力文字の輪郭を抽出する輪郭抽出手順と、
前記輪郭抽出手順によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手順と、
前記三角形形成手順によって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手順と、
前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手順によって生成した入力文字の骨格と略合致するものを検出する骨格検出手順と、
前記骨格検出手順によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手順と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字認識装置、文字認識方法、及びプログラムに関し、特に高い精度で文字を認識することができる文字認識装置、文字認識方法、及びプログラムに関する。
【背景技術】
【０００２】
現在、イメージスキャナにて読み取った文書の画像データから、一文字分の画像データを切り出した後、これを解析して特徴パラメータを抽出し、この特徴パラメータを予め用意した各文字の属する特徴パラメータの辞書と照合することによって、読み取った文字を認識する文字認識装置が広く用いられている（例えば特許文献１参照）。
【特許文献１】特開平７−５２２３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述のような文字認識装置を用いて文字を認識する際には、読み取った文字の太さも考慮しなければならなかったため、太さが不均一な文字、とりわけ手書きの文字については、その認識ができない場合が多く存在した。
【０００４】
本発明は、上記実状に鑑みてなされたものであり、高い精度で文字を認識することができる文字認識装置、文字認識方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、本発明の第１の観点に係る文字認識装置は、登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段と、入力文字から該入力文字の輪郭を抽出する輪郭抽出手段と、前記輪郭抽出手段によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手段と、前記三角形形成手段によって形成した複数の略二等辺三角形の内部のそれぞれに、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手段と、前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手段によって生成した入力文字の骨格と略合致するものを検出する骨格検出手段と、前記骨格検出手段によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手段と、を備える。
【０００６】
また、上記文字認識装置において、前記三角形形成手段は、前記入力文字の輪郭内に既に形成した第１の略二等辺三角形の一辺と、該第１の略二等辺三角形の頂点とは異なる前記輪郭上の点と、から構成される三角形のうちで、三つの内角のうち最小のものが最大値となる三角形を第２の略二等辺三角形として取得する処理を繰り返すことによって、前記入力文字の輪郭内に複数の略二等辺三角形を形成する、ものであってもよい。
【０００７】
さらに、上記文字認識装置において、前記骨格生成手段は、他と共有する辺が一つの略二等辺三角形の内部に該他と共有する辺の中点と該辺と対向する頂点とを結ぶ線分を形成し、他と共有する辺が二つの略二等辺三角形の内部に該他と共有する二辺の中点同士を結ぶ線分を形成し、他と共有する辺が三つの場合の略二等辺三角形の内部に該略二等辺三角形の重心と各辺とを結ぶ三つの線分を形成することによって、前記入力文字の骨格を生成する、ものであってもよい。
【０００８】
また、上記文字認識装置において、前記骨格検出手段は、前記登録文字記憶手段に記憶されている登録文字の骨格のうちの一つを読み出す骨格読出手段と、前記骨格読出手段によって読み出した登録文字の骨格を構成する複数の線分の始点の座標と、前記骨格生成手段によって生成した入力文字の骨格を構成する複数の線分の始点の座標と、の差分が全て所定の数値範囲内に収まっているか否かを判別する骨格判別手段と、前記骨格判別手段によって差分が全て所定の数値範囲内に収まっていると判別した場合、前記骨格読出手段によって読み出した登録文字の骨格を前記入力文字の骨格に略合致するものとして取得する骨格取得手段と、を含むものであってもよい。
【０００９】
さらに、本発明の第２の観点に係る文字認識方法は、登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備える文字認識装置における文字認識方法であって、入力文字から該入力文字の輪郭を抽出する輪郭抽出ステップと、前記輪郭抽出ステップによって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成ステップと、前記三角形形成ステップによって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成ステップと、前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成ステップによって生成した入力文字の骨格と略合致するものを検出する骨格検出ステップと、前記骨格検出ステップによって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力ステップと、を備えることを特徴とする。
【００１０】
さらに、本発明の第３の観点に係るプログラムは、登録文字を特定可能な文字コードと、該登録文字の骨格と、を対応付けて記憶する登録文字記憶手段を備えるコンピュータに、入力文字から該入力文字の輪郭を抽出する輪郭抽出手順と、前記輪郭抽出手順によって抽出した入力文字の輪郭内に、該輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する三角形形成手順と、前記三角形形成手順によって形成した複数の略二等辺三角形の内部に、該略二等辺三角形の各辺の中点のうちの少なくとも一つを含む線分を形成することによって、前記入力文字の骨格を生成する骨格生成手順と、前記登録文字記憶手段に記憶されている登録文字の骨格のうちから、前記骨格生成手順によって生成した入力文字の骨格と略合致するものを検出する骨格検出手順と、前記骨格検出手順によって検出した登録文字の骨格に対応する文字コードから特定される登録文字を認識結果として出力する認識結果出力手順と、を実行させる。
【発明の効果】
【００１１】
本発明によれば、高い精度で文字を認識することができる文字認識装置、文字認識方法、及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を実施するための最良の形態について説明する。
【００１３】
まず、本実施形態に係る文字認識装置の構成について図面を参照しつつ説明する。文字認識システム１は、図１に示すように、イメージ入力装置１０と、データ処理装置２０と、から概略構成されており、これらは、ＬＡＮ（Local Area Network）等により相互に接続されている。
【００１４】
イメージ入力装置１０は、例えばイメージスキャナや、スキャン機能を含む複合機等から構成されており、データ処理装置２０による制御の下、コンタクトガラスにセットされた原稿に光を当ててその反射光をＣＣＤ（Charge Coupled Device）等の撮像素子にて光電変換した後、Ａ／Ｄ（Analog/Digital）変換するなどして画像データを生成し、ＬＡＮを介してデータ処理装置２０に供給する。
【００１５】
データ処理装置２０は、例えば汎用コンピュータ等から構成されており、通信部２１と、操作部２２と、表示部２３と、記憶部２４と、制御部２５と、を備え、これらは、バス等により相互に接続されている。
【００１６】
通信部２１は、例えばＮＩＣ（Network Interface Card）のような通信装置を含んで構成されており、制御部２５による制御の下、ＬＡＮを介してイメージ入力装置１０との間でデータの送受信を行う。
【００１７】
操作部２２は、例えばマウスやキーボード等から構成されており、ユーザによって操作される。
【００１８】
表示部２３は、例えばＬＣＤ（Liquid Crystal Display）のような液晶表示装置等から構成されており、制御部２５による制御の下、データ処理装置２０による種々の動作を実行するための画像や、イメージ入力装置１０から供給された画像データに基づく画像等を表示する。
【００１９】
記憶部２４は、例えばハードディスクドライブ等から構成されており、ＯＳ（Operating System）や、各種アプリケーションプログラムを記憶している。
【００２０】
本実施形態において、記憶部２４には、アプリケーションプログラムとして、原稿に記載された文字（入力文字）を認識する文字認識処理を実行する文字認識プログラムが記憶されており、また、そのサブルーチンプログラムとして、入力文字の輪郭内に複数の略二等辺三角形が形成されるようにメッシュを入れる三角形メッシュ処理を実行する三角メッシュプログラムや、入力文字の骨格（芯線）を示す芯線データを生成する芯線データ生成プログラム、知識ＤＢ２４０に記憶されている芯線データのうちから、芯線データ生成プログラムによって生成された芯線データと略合致する芯線を示すものを検出する芯線データ検出プログラムなどが記憶されている。
【００２１】
また、記憶部２４は、知識ＤＢ（Data Base）２４０を備えている。知識ＤＢ２４０は、図２に示すように、後述する芯線ポインタのポイント値と、予め登録された文字（登録文字）を特定可能な文字コードと、登録文字の芯線を示す芯線データと、が対応付けられて記憶されている。
【００２２】
知識ＤＢ２４０に記憶されている芯線データは、登録文字の芯線を構成する複数の線分の始点（あるいは終点）の座標（ベクトル）を示すデータから構成されている。例えば「田」という登録文字の芯線は、図３（ａ）に示すような複数の線分から構成されており、そして、この芯線を示す芯線データ（図２に示す例では芯線データ＃ｉ）は、図３（ｂ）に示すような座標（ベクトル）を示すデータから構成されている。
【００２３】
制御部２５は、例えばＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、及びＲＡＭ（Random Access Memory）等から構成されており、ＣＰＵがＲＡＭをワークメモリとして用いてＲＯＭや記憶部２４等に記憶されている各種プログラムを適宜実行することによって、データ処理装置２０の各部の動作を制御する。
【００２４】
本実施形態において、ＲＡＭには、三角形カウンタや、分岐点カウンタ、芯線ポインタ、三角形バッファ、分岐点バッファなどが設けられている。
【００２５】
三角形カウンタは、入力文字の輪郭内部に形成された三角形をカウントするもので、カウンタ初期値として“１”がセットされる。分岐点カウンタは、入力文字の辺同士が交わる部分（分岐点）をカウントするもので、カウンタ初期値として“０”がセットされる。芯線ポインタは、知識ＤＢ２４０から、芯線データや文字コードを読み出す際に用いられるもので、ポイント初期値として“１”がセットされる。
【００２６】
三角形バッファは、図４（ａ）に示すように、三角形カウンタのカウント値と、入力文字の輪郭内部に形成された三角形の頂点の座標と、他の三角形と共有する辺の個数を示す共有辺数と、を対応付けて記憶している。分岐点バッファは、図４（ｂ）に示すように、分岐点カウンタのカウント値と、分岐点における三角形の座標と、を対応付けて記憶している。
【００２７】
次に、上記構成を備える文字認識システム１の具体的動作について図面を参照しつつ説明する。
【００２８】
認識対象となる文字が記載された原稿がイメージ入力装置１０のコンタクトガラスにセットされた状態で、ユーザによる操作部２２の操作によって文字の認識が指示されたことに応答して、データ処理装置２０の制御部２５は、記憶部２４に記憶されている文字認識プログラムを読み出して実行することにより、図５に示す文字認識処理を開始する。
【００２９】
この文字認識処理が開始すると、制御部２５は、まず、図５に示すように、原稿の読取の指示する読取指示信号を、通信部２１からＬＡＮを介してイメージ入力装置１０に対して送信する（ステップＳ１）。イメージ入力装置１０では、かかる読取指示信号を受信したことに応答して、コンタクトガラスにセットされた原稿の画像データが生成され、ＬＡＮを介してデータ処理装置２０の制御部２５に送信される。
【００３０】
制御部２５は、イメージ入力装置１０から送信された画像データを通信部２１にて受信する（ステップＳ２）。続いて、制御部２５は、ステップＳ４の処理にて受信した画像データをＢＭＰファイル形式で変換することにより、図６に示すような入力文字を示す文字データを生成する（ステップＳ３）。
【００３１】
さらに、制御部２５は、ステップＳ３の処理にて生成した文字データのノイズ除去などを行った後、ラスタベクタ変換することにより、図７（ａ）に示すような入力文字の輪郭を示すベクトル化データを生成する（ステップＳ４）。このベクトル化データは、図７（ａ）に示すように、入力文字の輪郭上の座標点を示す複数のベクトルデータから構成されている。
【００３２】
続いて、制御部２５は、ステップＳ４の処理にて生成したベクトル化データを最適化、図７（ｂ）に示すような最適化ベクトルデータを生成する（ステップＳ５）。具体的には、ベクトル化データに含まれる複数のベクトルデータに基づいて、入力文字の輪郭上の座標点を細分化してより多くのベクトルデータを取得し、このベクトルデータから構成される最適化データを生成する。
【００３３】
そして、制御部２５は、記憶部２４に記憶されている三角形メッシュプログラムを呼び出して実行することにより、ステップＳ５の処理にて生成した最適化ベクトルデータが示す入力文字の輪郭内に、複数のベクトルデータが示す座標点をその頂点とする複数の略二等辺三角形が形成されるようにメッシュを入れる三角形メッシュ処理を実行する（ステップＳ６）。
【００３４】
図８及び図９は、三角形メッシュ処理の詳細を示すフローチャートである。この三角形メッシュ処理において、制御部２５は、まず、図８に示すように、ＲＡＭに設けられた三角形カウンタにカウンタ初期値“１”をセットするとともに、分岐点カウンタにカウンタ初期値“０”をセットした後に（ステップＳ１１）、最適化ベクトルデータが示す入力文字の輪郭から、所定範囲の長さの略直線部分のうち、例えば最短のものを三角形の一辺として取得する（ステップＳ１２）。図１０（ａ）に示す例では、ステップＳ１２の処理にて辺Ｌが取得される。
【００３５】
次に、制御部２５は、ステップＳ１２の処理にて取得した辺とベクトルデータが示す座標点をその頂点の一つとする三角形のうち、その内角が最小のものが最大値となる三角形を検出する（ステップＳ１３）。図１０（ａ）に示す例では、ベクトルデータが示す座標点Ｐが選択された場合に、三角形の内角のうち最小のものが最大値となる。
【００３６】
続いて、制御部２５は、ステップＳ１３の処理にて検出した三角形の頂点の座標を取得して、ＲＡＭに設けられた三角形バッファのうち、カウント値“１”に対応する記憶領域に格納するとともに（ステップＳ１４）、共有辺数に“１”をセットする（ステップＳ１５）。
【００３７】
そして、制御部２５は、三角形バッファのうち、三角形カウンタのカウント値に対応して格納されている三角形の頂点の座標のうちの２つを頂点とし、これとベクトルデータが示す座標点をもう一つの頂点とする三角形のうち、その内角が最小のものが最大値となる三角形を検出した後（図９のステップＳ１６）、三角形カウンタのカウント値を“１”インクリメントして更新する（ステップＳ１７）。
【００３８】
ステップＳ１６の処理にて検出した三角形が２つの場合には（ステップＳ１８；Ｙｅｓ）、分岐点カウンタのカウント値を“１”インクリメントして更新した後（ステップＳ１９）、ステップＳ１６の処理にて検出した２つの三角形の頂点の座標を取得し、そのうちの一つを、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納するとともに、もう一つを、分岐点バッファのうち、分岐点カウンタのカウント値に対応する記憶領域に格納する（ステップＳ２０）。その後、制御部２５は、三角形バッファのうち、三角形カウンタのカウント値に対応する共有辺数に“３”をセットした後（ステップＳ２１）、ステップＳ１６の処理へとリターンする。
【００３９】
一方、ステップＳ１６の処理にて検出した三角形が１つの場合には（ステップＳ１８；Ｎｏ、ステップＳ２２；Ｙｅｓ）、ステップＳ１６の処理にて検出した２つの三角形の頂点の座標を取得し、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納するとともに（ステップＳ２３）、共有辺数に“２”をセットした後（ステップＳ２４）、ステップＳ１６の処理へとリターンする。
【００４０】
他方、ステップＳ１６の処理にて三角形が一つも検出できなかった場合には（ステップＳ１８；Ｎｏ、ステップＳ２２；Ｎｏ）、三角形バッファのうち、三角形カウンタのカウント値に対応する共有辺数に“１”をセットする（ステップＳ２５）。
【００４１】
続いて、制御部２５は、分岐点カウンタのカウント値が“０”か否かを判別し（ステップＳ２６）、“０”以外の数値であれば（ステップＳ２６；Ｎｏ）、三角形カウンタのカウント値を“１”インクリメントして更新した後（ステップＳ２７）、分岐点バッファのうち、分岐点カウンタのカウント値に対応する記憶領域に格納されている三角形の頂点の座標を、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納する（ステップＳ２８）。その後、制御部２５は、分岐点カウンタのカウント値を“１”デクリメントして更新した後（ステップＳ２９）、ステップＳ１６の処理へとリターンする。
【００４２】
これに対して、ステップＳ２６の処理にて分岐点カウンタのカウント値が“０”であれば（ステップＳ２６；Ｎｏ）、この三角形メッシュ処理を終了する。この三角形メッシュ処理により、ステップＳ５の処理にて生成した最適化ベクトルデータが示す入力文字の輪郭内部には、図１０（ｂ）に示すように、複数の略二等辺三角形が形成される。
【００４３】
続いて、制御部２５は、記憶部２４に記憶されている芯線データ生成プログラムを呼び出して実行することにより、図５に示すステップＳ６の三角形メッシュ処理にて形成した複数の略二等辺三角形に基づいて、入力文字の芯線を示す芯線データを生成する芯線データ生成処理を実行する（ステップＳ７）。
【００４４】
図１１は、芯線データ生成処理の詳細を示すフローチャートである。この芯線データ生成処理において、制御部２５は、まず、三角形バッファのうち、三角形カウンタのカウント値に対応する記憶領域に格納されている三角形の頂点の座標と共有辺数とを読み出す（ステップＳ３１）。
【００４５】
ここで、ステップＳ３１の処理にて読み出した共有辺数が“１”の場合には（ステップＳ３２；Ｙｅｓ）、ステップＳ３１の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する辺の中点を求め、その中点と対頂点とを結ぶ線分を示す線分データを生成してＲＡＭの所定領域に展開する（ステップＳ３３）。
【００４６】
一方、ステップＳ３１の処理にて読み出した共有辺数が“２”の場合には（ステップＳ３２；Ｎｏ、ステップＳ３４；Ｙｅｓ）、ステップＳ３１の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する２つの辺の中点を求め、その中点同士を結ぶ線分を示す線分データを生成してＲＡＭの所定領域に展開する（ステップＳ３５）。
【００４７】
他方、ステップＳ３１の処理にて読み出した共有辺数が“３”の場合には（ステップＳ３２；Ｎｏ、ステップＳ３４；Ｎｏ）、ステップＳ３１の処理にて読み出した三角形の頂点の座標から、三角形の重心と、他の三角形と共有する３つの辺の中点と、を求め、重心と３つの中点とを結ぶ３つの線分を示す線分データを生成してＲＡＭの所定領域に展開する（ステップＳ３６）。
【００４８】
ステップＳ３３、Ｓ３５、又はＳ３６の処理の実行後、制御部２５は、三角形カウンタのカウント値を“１”デクリメントして更新し（ステップＳ３７）、更新後のカウント値が“０”になったか否かを判別する（ステップＳ３８）。ここで、三角形カウンタのカウント値が“０”以外の数値である場合には（ステップＳ３８；Ｎｏ）、ステップＳ３１の処理へとリターンする。このような処理を繰り返すことにより、ＲＡＭの所定領域には、図１２（ａ）に示すような入力文字を構成する線分群を示す複数の線分データが展開される。
【００４９】
これに対して、三角形カウンタのカウント値が“０”である場合には（ステップＳ３８；Ｎｏ）、ＲＡＭの所定領域に展開された線分データが示す線分群をスムージングして芯線データを生成して（ステップＳ３９）、この芯線データ生成処理を終了する。
【００５０】
具体的には、図１２（ａ）に示す線分データが示す線分群のうち、分岐点付近の線分群が直線化するなどしてスムージングが行われることにより、図１２（ｂ）に示すような芯線データが生成される。
【００５１】
続いて、制御部２５は、記憶部２４に記憶されている芯線データ検出プログラムを呼び出して実行することにより、図５に示すステップＳ７の芯線データ生成処理にて生成した芯線データが示す芯線と略合致する芯線を示すものを、知識ＤＢ２４０に記憶されている芯線データのうちから検出する芯線データ検出処理を実行する（ステップＳ８）。
【００５２】
図１３は、芯線データ検出処理の詳細を示すフローチャートである。この芯線データ検出処理において、制御部２５は、まず、図１３に示すように、ＲＡＭに設けられた芯線ポインタにポインタ初期値“１”をセットした後（ステップＳ４１）、ステップＳ７の芯線データ生成処理にて生成した芯線データが示す線分の始点（あるいは終点）の座標を検出する（ステップＳ４２）。
【００５３】
続いて、制御部２５は、知識ＤＢ２４０から、芯線ポインタのポイント値に対応する芯線データが示す線分の始点（あるいは終点）の座標を読み出し（ステップＳ４３）、その座標とステップＳ４２の処理にて検出した座標との差分が全て所定の数値範囲内に収まっているか否かを判別する（ステップＳ４４）。
【００５４】
具体的には、ステップＳ４４の処理において、図１４に示すように、ステップＳ４３の処理にて読み出した座標点を中心とし、所定の半径を有する複数の円のいずれかの内部に、ステップＳ４２の処理にて検出した座標が全てあれば、ステップＳ４３の処理にて読み出した座標とステップＳ４２の処理にて検出した座標との差分が所定の数値範囲内に収まっているものと判別される。
【００５５】
ここで、差分の全てが所定の数値範囲内に収まっていない場合には（ステップＳ４４；Ｎｏ）、芯線ポインタのポイント値を“１”インクリメントして更新した後（ステップＳ４５）、更新後のポイント値が所定の上限値、具体的には知識ＤＢ２４０に記憶されている芯線データの数に合致したか否かを判別する（ステップＳ４６）。ここで、更新後のポイント値が所定の上限値に合致していない場合には（ステップＳ４６；Ｎｏ）、ステップＳ４２の処理へとリターンする。
【００５６】
一方、ステップＳ４６の処理にて更新後のポイント値が所定の上限値に合致していた場合には（ステップＳ４６；Ｙｅｓ）、略合致する芯線を示す芯線データを検出できなかったとして、芯線ポインタのポイント値を“０”に更新した後（ステップＳ４７）、この芯線データ検出処理を終了する。
【００５７】
これに対して、ステップＳ４４の処理にて差分の全てが所定の数値範囲内に収まっていた場合には（ステップＳ４４；Ｙｅｓ）、略合致する芯線を示す芯線データを検出できたとして、そのままこの芯線データ検出処理を終了する。
【００５８】
続いて、制御部２５は、芯線ポインタのポインタ値をチェックして、ポインタ値が“０”であれば、文字を認識できなかった旨のメッセージを表示部２３に表示し、ポインタ値が“０”以外の数値であれば、知識ＤＢ２４０から、ポインタ値に対応する文字コードを読み出して、その文字コードが示す登録文字を認識結果として表示部に表示する（図５のステップＳ９）。
【００５９】
以上説明したように、本実施形態に係る文字認識システム１によれば、データ処理装置２０の制御部２５は、入力文字を示す文字データから、入力文字の輪郭上の座標点を示す複数のベクトルデータを含むベクトル化データを生成することにより、入力文字の輪郭を抽出する（ステップＳ４）。
【００６０】
次に、制御部２５は、このベクトル化データを最適化した最適化ベクトルデータが示す入力文字の輪郭内に、この輪郭上に頂点を有し、他と少なくとも一辺を共有する複数の略二等辺三角形を形成する（ステップＳ６）。具体的には、三角形バッファのうち、三角形カウンタのカウント値に対応して格納されている三角形の頂点の座標のうちの２つを頂点とし、これとベクトルデータが示す座標点をもう一つの頂点とする三角形のうち、その内角が最小のものが最大値となる三角形を検出するステップＳ１６の処理を繰り返すことによって、入力文字の輪郭内に複数の略二等辺三角形を形成する。
【００６１】
続いて、制御部２５は、ステップＳ６の三角形メッシュ処理にて形成した複数の三角形の内部のそれぞれに、この三角形の各辺の中点のうちの少なくとも一つを含む線分を示す線分データを生成することによって、入力文字の骨格（芯線）を示す芯線データを生成する（ステップＳ７）。具体的には、ステップＳ３１の処理にて読み出した共有辺数が“１”の場合（ステップＳ３２；Ｙｅｓ）、即ち、他の三角形と共有する辺が一つの場合には、ステップＳ３１の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する辺の中点を求め、その中点と対頂点とを結ぶ線分を示す線分データを生成し、共有辺数が“２”の場合（ステップＳ３２；Ｎｏ、ステップＳ３４；Ｎｏ）、即ち、他の三角形と共有する辺が一つの場合には、ステップＳ３１の処理にて読み出した三角形の頂点の座標から、他の三角形と共有する２つの辺の中点を求め、その中点同士を結ぶ線分を示す線分データを生成し（ステップＳ３５）、共有辺数が“３”の場合には（ステップＳ３２；Ｎｏ、ステップＳ３４；Ｎｏ）、ステップＳ３１の処理にて読み出した三角形の頂点の座標から、三角形の重心と、他の三角形と共有する３つの辺の中点と、を求め、重心と３つの中点とを結ぶ３つの線分を示す線分データを生成する（ステップＳ３６）。そして、制御部２５は、このようにして生成した線分データが示す線分群をスムージングすることによって、入力文字の芯線を示す芯線データを生成する（ステップＳ３９）。
【００６２】
その後、ステップＳ７の芯線データ生成処理にて生成した芯線データが示す芯線と略合致する芯線を示すものを、知識ＤＢ２４０に記憶されている芯線データのうちから検出する（ステップＳ８）。具体的には、ステップＳ７の芯線データ生成処理にて生成した芯線データが示す線分の始点（あるいは終点）の座標を検出するとともに（ステップＳ４２）、知識ＤＢ２４０から、芯線ポインタのポイント値に対応する芯線データが示す線分の始点（あるいは終点）の座標を読み出す（ステップＳ４３）。そして、制御部２５は、ステップＳ４３の処理にて読み出した座標とステップＳ４２の処理にて検出した座標との差分が全て所定の数値範囲内に収まっているか否かを判別し（ステップＳ４４）、差分の全てが所定の数値範囲内に収まっていれば（ステップＳ４４；Ｙｅｓ）、ステップＳ４３の処理にて読み出した芯線データを、ステップＳ７の芯線データ生成処理にて生成した芯線データに略合致するものとして取得する。
【００６３】
最後に、制御部２５は、知識ＤＢ２４０から、ポインタ値に対応する文字コードを読み出して、その文字コードが示す登録文字を認識結果として表示部に表示して出力する（ステップＳ９）。
【００６４】
このように入力文字と登録文字との骨格（芯線）を用いることにより、文字の太さを考慮することなく、入力文字を認識することが可能となるため、太さが不均一な文字、とりわけ手書きの文字についても、高い精度で認識することができる。
【００６５】
なお、本発明は、上記実施形態に限定されず、種々の変形、応用が可能である。以下、本発明に適用可能な上記実施形態の変形態様について、説明する。
【００６６】
上記実施形態において、制御部２５のＣＰＵが実行するプログラムは、予めＲＯＭ等に記憶されていた。しかしながら、本発明は、これに限定されず、上述の処理を実行させるためのプログラムを、既存の汎用コンピュータに適用することで、上記実施形態に係るデータ処理装置２０として機能させてもよい。
【００６７】
このようなプログラムの提供方法は任意であり、例えばコンピュータが読取可能な記録媒体（フレキシブルディスク、ＣＤ（Compact Disc）−ＲＯＭ、ＤＶＤ（Digital Versatile Disc）−ＲＯＭ等）に格納して配布してもよいし、インターネット等のネットワーク上のストレージにプログラムを格納しておき、これをダウンロードさせることにより提供してもよい。
【００６８】
また、上記の処理をＯＳとアプリケーションプログラムとの分担、又はＯＳとアプリケーションプログラムとの協働によって実行する場合には、アプリケーションプログラムのみを記録媒体やストレージに格納してもよい。また、搬送波にプログラムを重畳し、ネットワークを介して配信することも可能である。例えば、ネットワーク上の掲示板（ＢＢＳ：Bulletin Board System）に上記プログラムを掲示し、ネットワークを介してプログラムを配信してもよい。そして、このプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、上記の処理を実行できるように構成してもよい。
【図面の簡単な説明】
【００６９】
【図１】文字認識システムの構成例を示すブロック図である。
【図２】知識ＢＤの構成例を示すブロック図である。
【図３】（ａ）は芯線の一例を示す図であり、（ｂ）は芯線データの構成例を示すブロック図である。
【図４】（ａ）は三角形バッファの構成例を示すブロック図であり、（ｂ）は分岐点バッファの構成例を示すブロック図である。
【図５】文字認識処理の一例を示すフローチャートである。
【図６】文字データの一例を示す図である。
【図７】（ａ）はベクトル化データの一例を示す図であり、（ｂ）は最適化ベクトルデータの一例を示す図である。
【図８】三角形メッシュ処理の一例を示すフローチャートである。
【図９】三角形メッシュ処理の一例を示すフローチャートである。
【図１０】三角形メッシュ処理の詳細を説明するための図である。
【図１１】芯線データ生成処理の一例を示すフローチャートである。
【図１２】芯線データ生成処理の詳細を説明するための図である。
【図１３】芯線データ検出処理の一例を示すフローチャートである。
【図１４】芯線データ検出処理の詳細を説明するための図である。
【符号の説明】
【００７０】
１  文字認識システム
１０  イメージ入力装置
２０  データ処理装置
２１  通信部
２２  操作部
２３  表示部
２４  記憶部
２５  制御部
２４０  知識ＤＢ
【図１】
0005069063.tif 000002
【図２】
0005069063.tif 000003
【図３】
0005069063.tif 000004
【図４】
0005069063.tif 000005
【図５】
0005069063.tif 000006
【図６】
0005069063.tif 000007
【図７】
0005069063.tif 000008
【図８】
0005069063.tif 000009
【図９】
0005069063.tif 000010
【図１０】
0005069063.tif 000011
【図１１】
0005069063.tif 000012
【図１２】
0005069063.tif 000013
【図１３】
0005069063.tif 000014
【図１４】
0005069063.tif 000015