(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-27
(45)【発行日】2022-05-11
(54)【発明の名称】文字認識装置
(51)【国際特許分類】
G06V 30/18 20220101AFI20220428BHJP
【FI】
G06K9/46 D
(21)【出願番号】P 2019184330
(22)【出願日】2019-10-07
【審査請求日】2020-07-14
(31)【優先権主張番号】P 2018211069
(32)【優先日】2018-11-09
(33)【優先権主張国・地域又は機関】JP
【新規性喪失の例外の表示】特許法第30条第2項適用 令和1年7月26日に「東洋学へのコンピュータ利用」第31回研究セミナーにて発表
(73)【特許権者】
【識別番号】518399265
【氏名又は名称】大久保 克彦
(74)【代理人】
【識別番号】100105212
【氏名又は名称】保坂 延寿
(72)【発明者】
【氏名】大久保 克彦
【審査官】宮島 潤
(56)【参考文献】
【文献】特開2000-231602(JP,A)
【文献】特開平4-88489(JP,A)
【文献】特開2010-231529(JP,A)
【文献】特開2000-293633(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06K 9/00 - 9/03
G06K 9/46 - 9/52
G06K 9/62 - 9/82
(57)【特許請求の範囲】
【請求項1】
文字コードが付与された複数の標準文字の各々について当該標準文字の輪郭線に沿って抽出された複数の輪郭点を記憶した記憶装置にアクセス可能な文字認識装置であって、
ビットマップ画像である認識対象文字の画像をベクタ画像に変換し、前記ベクタ画像から当該認識対象文字の輪郭線に沿って第1の密度の複数の輪郭点を抽出する第1のモジュールと、
前記第1のモジュールで抽出された複数の輪郭点に含まれる第1の輪郭点と、前記複数の標準文字の各々についての複数の輪郭点に含まれる第2の輪郭点と、の組み合わせであって前記第1及び第2の輪郭点間の距離が最も近い組み合わせにおける当該距離の平均及び分散を当該標準文字と当該認識対象文字との差の第1の評価値として算出し、前記第1の評価値が予め設定された第1の所定値以下である標準文字を抽出する第2のモジュールと、
前記第2のモジュールで複数の標準文字が抽出された場合に、前記ベクタ画像から当該認識対象文字の輪郭線に沿って前記第1の密度より高い第2の密度の複数の輪郭点を抽出する第3のモジュールと、
前記第3のモジュールで抽出された複数の輪郭点に含まれる第3の輪郭点と、前記第2のモジュールで抽出された標準文字の各々についての複数の輪郭点に含まれる第4の輪郭点と、の組み合わせであって前記第3及び第4の輪郭点間の距離が最も近い組み合わせにおける当該距離の平均及び分散を当該標準文字と当該認識対象文字との差の第2の評価値として算出し、前記第2の評価値が前記第1の所定値未満の予め設定された第2の所定値以下である標準文字を認識結果とする第4のモジュールと、
を備えた、文字認識装置。
【請求項2】
文字コードが付与された複数の標準文字の各々について当該標準文字の輪郭線に沿って抽出された複数の輪郭点の位置と各輪郭点における前記輪郭線の方向とを記憶した記憶装置にアクセス可能な文字認識装置であって、
ビットマップ画像である認識対象文字の画像
をベクタ画像に変換し、前記ベクタ画像から当該認識対象文字の輪郭線に沿って抽出された複数の輪郭点の位置と各輪郭点における前記輪郭線の方向とを取得する第1のモジュールと、
前記第1のモジュールで取得された複数の輪郭点に含まれる第1の輪郭点と、前記複数の標準文字の各々についての複数の輪郭点に含まれる第2の輪郭点と、の組み合わせであって前記第1及び第2の輪郭点間の距離が最も近い組み合わせにおいて当該距離に各輪郭線の方向の違いを加味した輪郭点差の平均及び分散を、当該標準文字と当該認識対象文字との差の評価値として算出し、前記評価値が予め設定された所定値以下である標準文字を認識結果とする第2のモジュールと、
を備えた、文字認識装置。
【請求項3】
文字コードが付与された複数の標準文字の各々について当該標準文字の輪郭線に沿って抽出された複数の輪郭点の位置と各輪郭点における前記輪郭線の方向とを記憶した記憶装置にアクセス可能な文字認識装置であって、
ビットマップ画像である認識対象文字の画像
をベクタ画像に変換し、前記ベクタ画像から当該認識対象文字の輪郭線に沿って抽出された複数の輪郭点の位置と各輪郭点における前記輪郭線の方向とを取得する第1のモジュールと、
前記第1のモジュールで取得された複数の輪郭点に含まれる第1の輪郭点と、前記複数の標準文字の各々についての複数の輪郭点に含まれる第2の輪郭点と、の組み合わせであって前記第1及び第2の輪郭点間の距離が最も近い組み合わせにおいて当該距離に各輪郭線の方向の違いを加味した輪郭点差の平均及び分散を、当該標準文字と当該認識対象文字との差の第1の評価値として算出し、前記第1の評価値が予め設定された第1の所定値以下である標準文字を抽出する第2のモジュールと、
前記第2のモジュールで複数の標準文字が抽出された場合に、当該認識対象文字の一部分であって前記第2のモジュールで抽出された複数の標準文字のいずれかについての前記第2の輪郭点との前記輪郭点差が予め設定された第3の所定値より大きい前記第1の輪郭点が連続する部分を含む前記一部分を、注目部分として抽出する第3のモジュールと、
前記注目部分における前記輪郭点差の平均及び分散を当該標準文字と当該認識対象文字との差の第2の評価値として算出し、前記第2の評価値が予め設定された第2の所定値以下である標準文字を認識結果とする第4のモジュールと、
を備えた、文字認識装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、認識対象文字の画像に基づいて文字認識を行う文字認識装置に関する。
【背景技術】
【0002】
諸橋轍次著「大漢和辞典」(大修館書店)の全文電子テキスト化が長年望まれている。「大漢和辞典」は、全15巻、約18000ページに及び、全文の文字数は延べ約5000万字と推定される。
【0003】
日本工業規格(JIS)が規定する漢字は、第1~第4水準の漢字をすべて合計しても約1万字である。これに対し、「大漢和辞典」の親文字は約5万字である。少なくともこれだけの文字種を文字認識装置が認識できないと、「大漢和辞典」を全文電子テキスト化することはできない。
【0004】
文字認識装置を使って「大漢和辞典」を全文電子テキスト化したとしても、認識結果すべてを査読、修正することは容易ではない。日本漢字能力検定(漢検)1級の出題レベルは約6000字(JIS第1、第2水準相当)であり、毎年の合格者は数十名、合格率は5%程度である。これに対し、約5万字の漢字を読み分ける高度の知見をもった人間はきわめて少ない。そのなかで、延べ約5000万字という膨大な量の査読に時間を割ける人間はほぼいない。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2000-076378号公報
【文献】特開平11-031195号公報
【発明の概要】
【0006】
本発明の1つの観点に係る文字認識装置は、
文字コードが付与された複数の標準文字の各々について当該標準文字の輪郭線に沿って抽出された複数の輪郭点を記憶した記憶装置にアクセス可能な文字認識装置であって、
ビットマップ画像である認識対象文字の画像をベクタ画像に変換し、前記ベクタ画像から当該認識対象文字の輪郭線に沿って第1の密度の複数の輪郭点を抽出する第1のモジュールと、
前記第1のモジュールで抽出された複数の輪郭点に含まれる第1の輪郭点と、前記複数の標準文字の各々についての複数の輪郭点に含まれる第2の輪郭点と、の組み合わせであって前記第1及び第2の輪郭点間の距離が最も近い組み合わせにおける当該距離の平均及び分散を当該標準文字と当該認識対象文字との差の第1の評価値として算出し、前記第1の評価値が予め設定された第1の所定値以下である標準文字を抽出する第2のモジュールと、
前記第2のモジュールで複数の標準文字が抽出された場合に、前記ベクタ画像から当該認識対象文字の輪郭線に沿って前記第1の密度より高い第2の密度の複数の輪郭点を抽出する第3のモジュールと、
前記第3のモジュールで抽出された複数の輪郭点に含まれる第3の輪郭点と、前記第2のモジュールで抽出された標準文字の各々についての複数の輪郭点に含まれる第4の輪郭点と、の組み合わせであって前記第3及び第4の輪郭点間の距離が最も近い組み合わせにおける当該距離の平均及び分散を当該標準文字と当該認識対象文字との差の第2の評価値として算出し、前記第2の評価値が前記第1の所定値未満の予め設定された第2の所定値以下である標準文字を認識結果とする第4のモジュールと、
を備える。
【0007】
本発明の他の1つの観点に係る文字認識装置は、
文字コードが付与された複数の標準文字の各々について当該標準文字の輪郭線に沿って抽出された複数の輪郭点の位置と各輪郭点における前記輪郭線の方向とを記憶した記憶装置にアクセス可能な文字認識装置であって、
ビットマップ画像である認識対象文字の画像をベクタ画像に変換し、前記ベクタ画像から当該認識対象文字の輪郭線に沿って抽出された複数の輪郭点の位置と各輪郭点における前記輪郭線の方向とを取得する第1のモジュールと、
前記第1のモジュールで取得された複数の輪郭点に含まれる第1の輪郭点と、前記複数の標準文字の各々についての複数の輪郭点に含まれる第2の輪郭点と、の組み合わせであって前記第1及び第2の輪郭点間の距離が最も近い組み合わせにおいて当該距離に各輪郭線の方向の違いを加味した輪郭点差の平均及び分散を、当該標準文字と当該認識対象文字との差の評価値として算出し、前記評価値が予め設定された所定値以下である標準文字を認識結果とする第2のモジュールと、
を備える。
本発明の他の1つの観点に係る文字認識装置は、
文字コードが付与された複数の標準文字の各々について当該標準文字の輪郭線に沿って抽出された複数の輪郭点の位置と各輪郭点における前記輪郭線の方向とを記憶した記憶装置にアクセス可能な文字認識装置であって、
ビットマップ画像である認識対象文字の画像をベクタ画像に変換し、前記ベクタ画像から当該認識対象文字の輪郭線に沿って抽出された複数の輪郭点の位置と各輪郭点における前記輪郭線の方向とを取得する第1のモジュールと、
前記第1のモジュールで取得された複数の輪郭点に含まれる第1の輪郭点と、前記複数の標準文字の各々についての複数の輪郭点に含まれる第2の輪郭点と、の組み合わせであって前記第1及び第2の輪郭点間の距離が最も近い組み合わせにおいて当該距離に各輪郭線の方向の違いを加味した輪郭点差の平均及び分散を、当該標準文字と当該認識対象文字との差の第1の評価値として算出し、前記第1の評価値が予め設定された第1の所定値以下である標準文字を抽出する第2のモジュールと、
前記第2のモジュールで複数の標準文字が抽出された場合に、当該認識対象文字の一部分であって前記第2のモジュールで抽出された複数の標準文字のいずれかについての前記第2の輪郭点との前記輪郭点差が予め設定された第3の所定値より大きい前記第1の輪郭点が連続する部分を含む前記一部分を、注目部分として抽出する第3のモジュールと、
前記注目部分における前記輪郭点差の平均及び分散を当該標準文字と当該認識対象文字との差の第2の評価値として算出し、前記第2の評価値が予め設定された第2の所定値以下である標準文字を認識結果とする第4のモジュールと、
を備える。
【図面の簡単な説明】
【0008】
【
図1】本発明の実施形態に係る文字認識装置30及びその周辺装置のブロック図である。
【
図2】記憶装置40に記憶された標準文字nの輪郭点の例を示す。
【
図3】第1の実施形態に係る文字認識装置30のフローチャートである。
【
図4】認識対象文字のビットマップ画像の例を示す。
【
図5】ビットマップ画像をベクタ画像に変換して得られた認識対象文字の輪郭線の例を示す。
【
図6】
図3に示される輪郭点を抽出する処理(S110)の詳細を示すフローチャートである。
【
図7】輪郭線に沿って抽出された複数の点の例を示す。
【
図8】複数の点について取得された座標の例を示す。
【
図10】標準文字nの輪郭点と認識対象文字の輪郭点とを重ねて示す。
【
図11】
図3に示される標準文字nの輪郭点と認識対象文字の輪郭点との差を算出する処理(S130)の詳細を示すフローチャートである。
【
図12】認識対象文字の輪郭点iから最も近い標準文字nの輪郭点までの距離について説明した図である。
【
図13】標準文字nの輪郭点jから最も近い認識対象文字の輪郭点までの距離について説明した図である。
【
図14】第2の実施形態に係る文字認識装置30のフローチャートである。
【
図15】
図14に示される第1の密度の輪郭点を抽出する処理(S110a)の詳細を示すフローチャートである。
【
図16】標準文字nの第3の密度の輪郭点と認識対象文字の第1の密度の輪郭点とを重ねて示す。
【
図17】
図14に示される第2の密度の輪郭点を抽出する処理(S180a)の詳細を示すフローチャートである。
【
図18】標準文字mの第4の密度の輪郭点と認識対象文字の第2の密度の輪郭点とを重ねて示す。
【
図19】第3の実施形態に係る文字認識装置30のフローチャートである。
【
図21】
図19に示される標準文字mの輪郭点の座標及び方向と認識対象文字の輪郭点の座標及び方向との差を算出する処理(S210b)の詳細を示すフローチャートである。
【
図22】
図21に示されるベクトル差VDiを算出する処理(S213b)の詳細を示すフローチャートである。
【
図23】輪郭線の方向の違いADi及びベクトル差VDiについて説明した図である。
【
図24】
図21に示されるベクトル差VDjを算出する処理(S218b)の詳細を示すフローチャートである。
【
図25】符号「■」で示される認識対象文字の輪郭点を2つの標準文字の輪郭点とそれぞれ比較した結果を示す。
【
図26】第4の実施形態に係る文字認識装置30のフローチャートである。
【
図27】
図26に示される輪郭点の抽出と座標及び方向の取得とを行う処理(S110c)の詳細を示すフローチャートである。
【
図28】
図26に示される標準文字nの輪郭点の座標及び方向と認識対象文字の輪郭点の座標及び方向との差を算出する処理(S130c)の詳細を示すフローチャートである。
【
図29】
図28に示されるベクトル差VDiを算出する処理(S133c)の詳細を示すフローチャートである。
【
図30】
図28に示されるベクトル差VDjを算出する処理(S138c)の詳細を示すフローチャートである。
【
図31】認識対象文字の輪郭点を符号「□」で示される標準文字の輪郭点と比較した結果を示す。
【
図32】
図31の画像の中から抽出された注目部分XXXIIを示す。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態を、図面を参照しながら詳細に説明する。以下に説明される各実施形態は、本発明の一例を示すものであって、本発明の内容を限定するものではない。また、各実施形態で説明される構成及び動作のすべてが本発明の構成及び動作として必須であるとは限らない。なお、同一の構成要素には同一の参照符号を付して、重複する説明を省略する。
【0010】
<1.実施形態の概要>
記憶装置40は、複数の標準文字の各々について、複数の輪郭点を記憶している(
図2)。
文字認識装置30は、認識対象文字の画像から複数の輪郭点を抽出する(
図3のS100、S110)。
文字認識装置30は、認識対象文字の複数の輪郭点と、複数の標準文字の各々についての複数の輪郭点と、の差を算出し(
図3のS120~S160)、この差が所定値以下である標準文字を、認識結果とする(
図3のS240)。
【0011】
<2.構成>
図1は、本発明の実施形態に係る文字認識装置30及びその周辺装置のブロック図である。
図1に示される構成は、後述の第1の実施形態と第2の実施形態とで共通である。
文字認識装置30は、輪郭点抽出モジュール31と、判定モジュール32と、を含む。輪郭点抽出モジュール31は、認識対象文字の画像から複数の輪郭点を抽出する。判定モジュール32は、認識対象文字の複数の輪郭点と、複数の標準文字の各々についての複数の輪郭点と、の差を算出し、この差が所定値以下である標準文字を認識結果とする。なお、輪郭点抽出モジュール31は、本発明における「第1のモジュール」及び「第3のモジュール」の一例である。判定モジュール32は、本発明における「第2のモジュール」及び「第4のモジュール」の一例である。
文字認識装置30は、文書1ページ分の画像から、認識対象文字ごとのビットマップ画像を切り出すモジュールなどをさらに含んでもよい。
【0012】
文字認識装置30は、入出力装置10と、撮像装置20と、記憶装置40と、に接続されている。
入出力装置10は、例えば、オペレーターがコマンドを入力するためのキーボードあるいはマウスを含む。また入出力装置10は、例えば、文字の認識結果を出力するためのディスプレイ装置、あるいは他のコンピューターとの通信装置を含む。
撮像装置20は、文書から認識対象文字をビットマップ画像として読み取るためのスキャナーあるいはカメラを含む。
記憶装置40は、認識対象文字と比較される複数の標準文字の輪郭点のデータを記憶している。標準文字の輪郭点のデータについては
図2を参照しながら後述する。記憶装置40は、さらに、文字認識装置30が行う各種処理のためのパラメーターを記憶している。文字認識装置30は、記憶装置40にアクセスして各種データを読み出すことができる。
【0013】
図2は、記憶装置40に記憶された標準文字の輪郭点の例を示す。
記憶装置40は複数の標準文字についてデータを記憶している。標準文字の総数は、例えば上記「大漢和辞典」を全文電子テキスト化する場合には、例えば5万字以上が必要である。「大漢和辞典」の親文字は上述の通り約5万字であり、全文電子テキスト化するためには親文字以外の文字も認識する必要があるためである。標準文字の集合をNとし、集合Nに属する複数の標準文字の各々を識別する番号をnとする。集合Nに属する標準文字の総数Nmaxは例えば5万以上の値となる。
【0014】
図2は、1つの標準文字nについて、複数の輪郭点を示している。複数の輪郭点は、文字の形状の輪郭線に沿って、ほぼ等間隔に配置されている。なお、輪郭点は、本発明における「特徴点」の一例である。輪郭点の代わりに、例えば、文字のストロークの中心線に沿って配置された点が用いられてもよい。
標準文字nの輪郭点のデータは、以下の方法で取得することが望ましい。まず、全文電子テキスト化しようとする文書そのものの一部を撮像装置20で撮像し、ビットマップ画像を取得する。このビットマップ画像から、標準文字nとして登録すべき文字の画像を切り出す。そして、切り出された文字の画像から複数の輪郭点を抽出する。文字の画像から複数の輪郭点を抽出する手順は、認識対象文字の画像から複数の輪郭点を抽出する手順と同様でよく、その詳細は
図4~
図9を参照しながら後述する。
鋳造された活字を使って印刷された文書であれば、少なくともその文書内で、同一の文字に関しては同一の字形であることが期待できる。この字形の画像から標準文字nの輪郭点を抽出すれば、認識対象文字の輪郭点と高精度で一致することが期待できる。なお、同一の文字に関して異なる字形の活字が用いられている場合には、それぞれの字形の画像から標準文字nの輪郭点を別々に抽出すればよい。ここでは鋳造された活字を使って印刷された場合について説明したが、同一の写植原版を使って印刷された場合でも、同一のデジタルフォントを使って印刷された場合でも同様である。
【0015】
記憶装置40は、標準文字nの輪郭点のデータの他に、当該標準文字nに付与される文字コードのデータ、当該標準文字nのフォントを構成する曲線のデータ等を記憶している。これにより、当該標準文字nが認識結果として特定されたときに、その認識結果を記憶装置に記憶させたりディスプレイ装置に表示させたりすることができる。
【0016】
<3.第1の実施形態の動作>
図3は、第1の実施形態に係る文字認識装置30のフローチャートである。文字認識装置30は、以下の処理を行う。
(ベクタ画像へ変換)
S100:認識対象文字のビットマップ画像をベクタ画像に変換する。
(輪郭点を抽出)
S110:認識対象文字のベクタ画像から複数の輪郭点を抽出する。
(認識対象文字と標準文字との差を算出)
S120~S160:認識対象文字の複数の輪郭点と、複数の標準文字の各々についての複数の輪郭点と、の差を算出する。
(認識結果を決定)
S240:差が所定値以下である標準文字を認識結果とする。
以下、詳細に説明する。
【0017】
<3.1 ベクタ画像へ変換>
S100において、文字認識装置30は、輪郭点抽出モジュール31により、認識対象文字のビットマップ画像をベクタ画像に変換する。
【0018】
認識対象文字のビットマップ画像は、撮像装置20によって読み取られた画像である。あるいは、撮像装置20で読み取られた文書1ページ分の画像から、認識対象文字のビットマップ画像が切り出されてもよい。
図4に、認識対象文字のビットマップ画像の例(一部のみ)が示されている。
図4に示されるマス目の各々は、例えば、1200dpiの1ドットに相当する。以下に計算するように、1200dpiの1ドット分の長さ(ビットマップ画像の座標軸方向に隣接する2ドットの中心間の距離)は、1インチ(25.4mm)の1200分の1であるので、約0.021mmである。
25.4mm/1200 = 0.021mm
図4において、0.1mmは、約4.72ドット分の長さに相当し、0.05mmは、約2.36ドット分の長さに相当する(後述の
図5、
図7、
図8においても同様である)。
0.1mm/0.021mm = 約4.72ドット
0.05mm/0.021mm = 約2.36ドット
図4において、ハッチングされたドットが黒(暗色)のドットであり、ハッチングされていないドットが白(明色)のドットである。
【0019】
なお、
図4には、ビットマップ画像の解像度が1200dpiである例が示されているが、本発明はこれに限定されない。他の解像度であってもよい。
また、例えば、3.5mm角の文字の画像を1200dpiで読み取り、7.0mm角の文字の画像を600dpiで読み取るというように、文字の大きさに応じて解像度を変更することにより、1文字分のドット数を一致させることが望ましい。あるいは、7.0mm角の文字の画像を1200dpiで読み取ってから、その画像の解像度を600dpiに落とすことにより、1文字分のドット数を一致させてもよい。
【0020】
S100においてビットマップ画像を変換して得られるベクタ画像は、認識対象文字の輪郭線のデータを含む。
図5に、ビットマップ画像をベクタ画像に変換して得られた認識対象文字の輪郭線の例(一部のみ)が示されている。ベクタ画像に含まれる輪郭線は、なめらかな曲線で構成される。ベクタ画像に含まれる輪郭線は、例えば、ベジェ曲線として記述される。ここでは白黒二値のビットマップ画像から輪郭線のデータを得る場合について説明したが、カラー又はグレースケールのビットマップ画像から輪郭線のデータを得てもよい。例えば、カラー又はグレースケールのビットマップ画像において微分値が大きい部分を検出して輪郭線としてもよい。
【0021】
<3.2 輪郭点を抽出>
S110において、文字認識装置30は、輪郭点抽出モジュール31により、認識対象文字のベクタ画像から複数の輪郭点を抽出する。
【0022】
図6は、
図3に示される輪郭点を抽出する処理(S110)の詳細を示すフローチャートである。
図6は、S110のサブルーチンに相当する。
【0023】
S111において、文字認識装置30は、輪郭点抽出モジュール31により、認識対象文字のベクタ画像に含まれる輪郭点に沿って、複数の点を抽出する。
図7に、輪郭線に沿って抽出された複数の点の例(一部のみ)を示す。複数の点は、ほぼ等間隔で、例えば約3.5ドットおきに抽出される。
【0024】
次に、S112において、文字認識装置30は、輪郭点抽出モジュール31により、複数の点についてそれぞれの座標を、認識対象文字の輪郭点として取得する。このとき、例えば小数第1位を四捨五入した値(0.5ドット加算して1ドット未満の端数を切り捨てた値)をそれぞれの座標とする。
図8に、複数の点について取得された座標の例(一部のみ)を示す。
図8に示されるように、ビットマップ画像において黒(暗色)のドットであったか、白(明色)のドットであったかという区別に縛られることなく、なめらかなベクタ画像の輪郭線上の点が輪郭点として抽出される。
図9に、認識対象文字の輪郭点の例を示す。
S112の後、文字認識装置30は輪郭点抽出モジュール31による
図6の処理を終了し、
図3の処理に戻る。
【0025】
<3.3 認識対象文字と標準文字との差を算出>
図3を再び参照して説明を続ける。
S120において、文字認識装置30は、判定モジュール32により、標準文字の各々を識別する番号nの値を1にセットする。nの値は後述のS160において1ずつ加算され、nの値が集合Nに属する標準文字の総数Nmaxに達するまで、S130~S160の処理が繰り返される。
【0026】
S130において、文字認識装置30は、判定モジュール32により、記憶装置40から標準文字nの複数の輪郭点を読み出し、認識対象文字の複数の輪郭点との差を算出する。
図10に、標準文字nの輪郭点と認識対象文字の輪郭点とを重ねて示す。文字認識装置30は、判定モジュール32により、これらの輪郭点の位置の差を以下の処理により算出する。
【0027】
図11は、
図3に示される標準文字nの輪郭点と認識対象文字の輪郭点との差を算出する処理(S130)の詳細を示すフローチャートである。
図11は、S130のサブルーチンに相当する。
【0028】
S131において、文字認識装置30は、記憶装置40から標準文字nの複数の輪郭点を読み出す。
【0029】
次に、S132において、文字認識装置30は、認識対象文字の輪郭点の各々を識別する番号iの値を1にセットする。iの値は後述のS135において1ずつ加算され、iの値が認識対象文字の輪郭点の総数Imaxに達するまで、S133~S135の処理が繰り返される。
【0030】
S133において、文字認識装置30は、判定モジュール32により、認識対象文字の輪郭点iから最も近い標準文字nの輪郭点までの距離Diを算出する。
図12は、認識対象文字の輪郭点iから最も近い標準文字nの輪郭点までの距離について説明した図である。
図12には、i=1からi=14までの認識対象文字の輪郭点iが示されている。それぞれの輪郭点iから最も近い標準文字nの輪郭点が選ばれ、その距離が算出される。i=7とi=8のように、最も近い標準文字nの輪郭点として同じ輪郭点が選ばれることもある。最も近い標準文字nの輪郭点として1度も選ばれない輪郭点があってもよい。輪郭点間の距離の単位は、例えばドット数である。例えば、輪郭点間の座標の差に三平方の定理を適用することにより、ユークリッド距離が算出される。
【0031】
次に、S134において、文字認識装置30は、番号iの値が認識対象文字の輪郭点の総数Imaxに達したか否かを判定する。番号iの値がImaxに達していない場合(S134:NO)、文字認識装置30は、処理をS135に進める。番号iの値がImaxに達した場合(S134:YES)、文字認識装置30は、処理をS136に進める。
【0032】
S135において、文字認識装置30は、番号iの値に1を加算して番号iの値を更新する。
その後、文字認識装置30は、処理をS133に戻す。S133~S135の処理を繰り返すことにより、認識対象文字の輪郭点の各々について、最も近い標準文字nの輪郭点までの距離Diが算出される。
【0033】
S136において、文字認識装置30は、判定モジュール32により、距離Diの平均DIavgと分散DIσ^2を以下の式で算出する。
DIavg = {Σ(Di)}/Imax
DIσ^2 = {Σ((Di-DIavg)2)}/Imax
ここで、Σ(X)は、Xをi=1からi=Imaxまで合計した値を示す。
【0034】
S137~S141の処理は、標準文字nの輪郭点jから最も近い認識対象文字の輪郭点までの距離Djを算出する点で、S132~S136の処理と異なる。
【0035】
図13は、標準文字nの輪郭点jから最も近い認識対象文字の輪郭点までの距離について説明した図である。
図13には、j=1からj=15までの標準文字nの輪郭点jが示されている。それぞれの輪郭点jから最も近い認識対象文字の輪郭点が選ばれ、その距離が算出される。j=10とj=11のように、最も近い認識対象文字の輪郭点として同じ輪郭点が選ばれることもある。最も近い認識対象文字の輪郭点として1度も選ばれない輪郭点があってもよい。
【0036】
S141において、文字認識装置30は、判定モジュール32により、距離Djの平均DJavgと分散DJσ^2を以下の式で算出する。
DJavg = {Σ(Dj)}/Jmax
DJσ^2 = {Σ((Dj-DJavg)2)}/Jmax
ここで、Σ(X)は、Xをj=1からj=Jmaxまで合計した値を示す。Jmaxは標準文字nの輪郭点の総数である。
【0037】
他の点については、S137~S141の処理はS132~S136の処理と同様である。
以上のように、S132~S136で認識対象文字の輪郭点iから最も近い標準文字nの輪郭点までの距離Diを算出するだけでなく、S137~S141で標準文字nの輪郭点jから最も近い認識対象文字の輪郭点までの距離Djを算出する理由は、以下の通りである。
例えば、「大」と「犬」のように、一方の文字の構成要素のすべてを他方の文字が含んでいるような場合に、「大」の輪郭点から最も近い「犬」の輪郭点までの距離を算出するだけでは「犬」の構成要素の一部が無視されてしまい、正確な判定ができない可能性がある。「犬」の輪郭点から最も近い「大」の輪郭点までの距離も算出すれば、より正確な判定が可能となる。
S141の後、文字認識装置30は
図11の処理を終了し、
図3の処理に戻る。
【0038】
図3を再び参照して説明を続ける。
次に、S150において、文字認識装置30は、判定モジュール32により、番号nの値が標準文字の総数Nmaxに達したか否かを判定する。番号nの値がNmaxに達していない場合(S150:NO)、文字認識装置30は、処理をS160に進める。番号nの値がNmaxに達した場合(S150:YES)、文字認識装置30は、処理をS240に進める。
【0039】
S160において、文字認識装置30は、判定モジュール32により、番号nの値に1を加算して番号nの値を更新する。
その後、文字認識装置30は、処理をS130に戻す。S130~S160の処理を繰り返すことにより、集合Nに属する標準文字の各々について、認識対象文字との差が算出される。ここでは集合Nに属するNmax個の標準文字すべてについて認識対象文字との差を算出する場合について説明したが、本発明はこれに限定されない。例えば、一部の標準文字について認識対象文字との差を算出した時点で、明らかに認識対象文字と一致する標準文字が見つかった場合に、残りの標準文字については認識対象文字との差を算出しなくてもよい。また、認識対象文字との差を算出する前に、明らかに除外できる標準文字nがある場合には、そのような標準文字nを除外して他の標準文字のみについて認識対象文字との差を算出するようにしてもよい。
【0040】
<3.4 認識結果を決定>
S240において、文字認識装置30は、判定モジュール32により、認識対象文字との差が所定値以下である標準文字を認識結果として出力する。
この所定値は、人間の解像限界未満であることが望ましい。視力の定義(視角1分を視認する視力を1.0とする)から、例えば、視力1.5の人が250mmの距離にある物体を見るときの解像限界は0.1mmである。そして、上述のように、0.1mmは、1200dpiの約4.72ドット分の長さに相当する。
認識対象文字との差は、例えば、平均(DIavg及びDJavg)及び分散(DIσ^2及びDJσ^2)で評価される。平均DIavg及びDJavgがいずれも所定値Tavg以下であり、分散DIσ^2及びDJσ^2がいずれも所定値Tσ^2以下である場合に、認識対象文字との差が所定値以下であると判定される。
平均とは別に分散を評価することにより、外れ値を強調できる。これにより、認識対象文字と一部だけ一致するが他の一部は一致しないような標準文字を、認識結果から除外することができる。
【0041】
所定値Tavg及び所定値Tσ^2は、以下の範囲内の値であることが望ましい(Tσ^2は1200dpiの画像における距離Di又はDjの分散に対する閾値である。Tavgはミリメートルに換算した距離Di又はDjの平均に対する閾値である。)。
0.05mm ≦ Tavg < 0.10mm
1 ≦ Tσ^2 ≦ 3.5
所定値Tavg及び所定値Tσ^2は、以下の範囲内の値であることがさらに望ましい。
0.06mm ≦ Tavg ≦ 0.08mm
1.5 ≦ Tσ^2 ≦ 2.5
【0042】
人間の解像限界未満の所定値を設定することにより、同一の文字以外を認識結果とする誤りが防止されると考えられる。本実施形態によれば、文字認識装置30が認識結果として出力した文字に関して、人間による査読は必要とされなくなる。人間による査読が必要なのは、印刷のずれ、傾き、インクのにじみ、かすれ等により、文字認識装置30が認識結果を出力できなかった認識対象文字のみに限定される。従って、膨大な量の難字を含む文書であっても、全文電子テキスト化と、その査読が可能となる。
所定値をあまりに小さく設定しすぎると、同一活字であっても同一文字と判定されなくなる可能性が高くなり、人間による査読の負担が大きくなり得る。上述の数値範囲は、認識テストの試行錯誤を繰り返しながら経験的に得られたものである。
S240の後、文字認識装置30は、第1の実施形態に係る文字認識の処理を終了する。
【0043】
<4.第2の実施形態の動作>
図14は、第2の実施形態に係る文字認識装置30のフローチャートである。第2の実施形態は、認識対象文字との差が所定値以下である標準文字を1つに絞れなかった場合に、認識対象文字の輪郭点を取り直す点で、第1の実施形態と異なる。
【0044】
第2の実施形態において、文字認識装置30は、以下の処理を行う。
(ベクタ画像へ変換)
S100:認識対象文字のビットマップ画像をベクタ画像に変換する。
(第1の密度の輪郭点を抽出)
S110a:認識対象文字のベクタ画像から第1の密度の複数の輪郭点を抽出する。
(標準文字との差を算出(第1の密度))
S120~S160:認識対象文字の第1の密度の複数の輪郭点と、複数の標準文字の各々についての複数の輪郭点と、の差を算出する。
(第2の密度の輪郭点を抽出)
S165a~S180a:差が第1の所定値以下である標準文字が1つの場合、その標準文字を認識結果とする。差が第1の所定値以下である標準文字が複数ある場合、認識対象文字のベクタ画像から第1の密度より高い第2の密度の複数の輪郭点を抽出する。
(標準文字との差を算出(第2の密度))
S200a~S230a:認識対象文字の第2の密度の複数の輪郭点と、複数の標準文字の各々についての複数の輪郭点と、の差を算出する。
(認識結果を決定)
S240a:差が第2の所定値以下である標準文字を認識結果とする。
以下、詳細に説明する。
【0045】
<4.1 ベクタ画像へ変換>
S100において、認識対象文字のビットマップ画像をベクタ画像に変換する処理は、
図3~
図5を参照しながら説明した第1の実施形態の処理と同様である。
【0046】
<4.2 第1の密度の輪郭点を抽出>
S110aにおいて、文字認識装置30は、輪郭点抽出モジュール31により、認識対象文字のベクタ画像から第1の密度の複数の輪郭点を抽出する。
【0047】
図15は、
図14に示される第1の密度の輪郭点を抽出する処理(S110a)の詳細を示すフローチャートである。
図15は、S110aのサブルーチンに相当する。
S111aにおいて、文字認識装置30は、輪郭点抽出モジュール31により、認識対象文字のベクタ画像に含まれる輪郭点に沿って、複数の点を抽出する。複数の点は、認識対象文字のベクタ画像に含まれる輪郭点に沿って、例えば約3.5ドットおきに抽出される。S111aの処理は、
図6及び
図7を参照しながら説明した第1の実施形態のS111の処理と同様である。
次に、S112aにおいて、文字認識装置30は、輪郭点抽出モジュール31により、複数の点についてそれぞれの座標を、認識対象文字の輪郭点として取得する。このとき、例えば小数第1位を四捨五入した値をそれぞれの座標とする。S112aの処理は、
図6及び
図8を参照しながら説明した第1の実施形態のS112の処理と同様である。
S112aの後、文字認識装置30は輪郭点抽出モジュール31による
図15の処理を終了し、
図14の処理に戻る。
【0048】
<4.3 標準文字との差を算出(第1の密度)>
図14を再び参照して説明を続ける。
S120~S160において、文字認識装置30は、判定モジュール32により、集合Nに属する標準文字の総数Nmaxに達するまで番号nの値を更新しながら、標準文字nと認識対象文字との差を算出する。S120、S150、S160において、標準文字の総数Nmaxに達するまで番号nの値を更新する処理は、
図3を参照しながら説明した第1の実施形態の処理と同様である。
【0049】
S130aにおいて、文字認識装置30は、判定モジュール32により、記憶装置40から標準文字nの第3の密度の複数の輪郭点を読み出し、認識対象文字の第1の密度の複数の輪郭点との差を算出する。S130aの処理の詳細は、
図11~
図13を参照しながら説明した第1の実施形態の処理と同様であり、図示を省略する。なお、第3の密度は第1の密度と同一でもよいし、異なっていてもよい。
【0050】
図16に、標準文字nの第3の密度の輪郭点と認識対象文字の第1の密度の輪郭点とを重ねて示す。
輪郭点の記号「□」で示される文字は、例として「いち」という文字を撮像装置20で読み取って認識対象文字としたものである(なべぶた+「巾」)。これに対し、輪郭点の記号「◆」で示される文字は、例として「ひざかけ」という文字を撮像装置20で読み取って標準文字としたものである(「一」+「巾」)。これらは別の文字なので区別して認識されなければならないが、極めてよく似た形であるため、輪郭点の差が小さく、区別できない可能性がある。
そこで、第2の実施形態においては、S165a以降の処理により、認識対象文字の輪郭点を取り直して判定を行う。
【0051】
<4.4 第2の密度の輪郭点を抽出>
S165aにおいて、文字認識装置30は、判定モジュール32により、認識対象文字との差が第1の所定値以下である標準文字が1つだけであるか否かを判定する。この第1の所定値は、第1の実施形態において説明した人間の解像限界未満であることが望ましい。
認識対象文字との差が第1の所定値以下である標準文字が1つだけである場合(S165a:YES)、文字認識装置30は、処理をS170aに進める。
S170aにおいて、文字認識装置30は、判定モジュール32により、認識対象文字との差が第1の所定値以下である標準文字を認識結果として出力する。
認識対象文字との差が第1の所定値以下である標準文字が1つだけではない場合(S165a:NO)、文字認識装置30は、処理をS180aに進める。このとき、認識対象文字との差が第1の所定値以下である標準文字の集合をMとし、集合Mに属する複数の標準文字の各々を識別する番号をmとする。例えば、認識対象文字との差が第1の所定値以下である標準文字が上述の「いち」と「ひざかけ」の2つである場合、集合Mに属する標準文字の総数Mmaxは2である。集合Mは集合Nの真部分集合である。
【0052】
S180aにおいて、文字認識装置30は、輪郭点抽出モジュール31により、認識対象文字のベクタ画像から第2の密度の複数の輪郭点を抽出する。第2の密度は、第1の密度よりも高い密度である。
【0053】
図17は、
図14に示される第2の密度の輪郭点を抽出する処理(S180a)の詳細を示すフローチャートである。
図17は、S180aのサブルーチンに相当する。
S181aにおいて、文字認識装置30は、輪郭点抽出モジュール31により、認識対象文字のベクタ画像に含まれる輪郭点に沿って、複数の点を抽出する。複数の点は、認識対象文字のベクタ画像に含まれる輪郭点に沿って、例えば約0.35ドットおきに抽出される。他の点については、S181aの処理は、
図15を参照しながら説明したS111aの処理と同様である。
【0054】
次に、S182aにおいて、文字認識装置30は、輪郭点抽出モジュール31により、複数の点についてそれぞれの座標を、認識対象文字の輪郭点として取得する。このとき、例えば小数第2位を四捨五入した値をそれぞれの座標とする。他の点については、S182aの処理は、
図15を参照しながら説明したS112aの処理と同様である。
【0055】
図17の処理により抽出された輪郭点は、
図15の処理により抽出された輪郭点の10倍の密度を有する。
図17の処理によれば、高精細のビットマップ画像を取り直さなくても、S100で得られたベクタ画像に基づいて、精密な輪郭点を抽出できる。
S182aの後、文字認識装置30は輪郭点抽出モジュール31による
図17の処理を終了し、
図14の処理に戻る。
【0056】
<4.5 標準文字との差を算出(第2の密度)>
図14を再び参照して説明を続ける。
S200a~S230aにおいて、文字認識装置30は、判定モジュール32により、集合Mに属する標準文字の総数Mmaxに達するまで番号mの値を更新しながら、標準文字mと認識対象文字との差を算出する。S200a、S220a、S230aにおいて、集合Mに属する標準文字の総数Mmaxに達するまで番号mの値を更新する処理は、S120、S150、S160と同様である。
【0057】
S210aにおいて、文字認識装置30は、判定モジュール32により、記憶装置40から標準文字mの第4の密度の複数の輪郭点を読み出し、認識対象文字の第2の密度の複数の輪郭点との差を算出する。S210aの処理の詳細は、標準文字mとの差を算出する点を除いて、
図11~
図13を参照しながら説明した第1の実施形態の処理と同様であり、図示を省略する。なお、第4の密度は第2の密度と同一でもよいし、異なっていてもよい。
【0058】
図18に、標準文字mの第4の密度の輪郭点と認識対象文字の第2の密度の輪郭点とを重ねて示す。
【0059】
上述の「いち」と「ひざかけ」のように、きわめてよく似た文字の組み合わせが既にわかっている場合には、集合Mに属する標準文字mの第4の密度の輪郭点を、予め抽出して記憶装置40に記憶させておくことができる。第4の密度は、第3の密度より高い密度であることが望ましい。
あるいは、
図18に示される例と異なり、第4の密度は、第3の密度と同じでもよい。その場合、集合Nの真部分集合である集合Mに属する標準文字mについては、記憶装置40には第3の密度の輪郭点を記憶していればよく、第4の密度の輪郭点を記憶していなくてもよい。
【0060】
また、上述の「いち」と「ひざかけ」のように、きわめてよく似た文字の組み合わせが既にわかっている場合には、これらの文字を見分けるための決め手となる一部分の輪郭点だけを記憶装置40に記憶させておいてもよい。さらに、上述のS180aにおいて、認識対象文字の第2の密度の輪郭点を抽出する際にも、上記一部分の輪郭点だけを抽出してもよい。「いち」と「ひざかけ」の例においては、
図16の破線枠内における輪郭線の膨らみ(墨だまり)の有無が決め手となる。膨らみ(墨だまり)があれば「いち」であり、膨らみ(墨だまり)がなければ「ひざかけ」である。そこで、
図18に示されるように、上記一部分の輪郭点だけを比較することにより、わずかに形の異なる文字であっても高精度に判別することができる。
【0061】
以上のS200a~S230aの処理により、集合Mに属する標準文字の各々について、認識対象文字との差が算出される。
【0062】
<4.6 認識結果を決定>
次に、S240aにおいて、文字認識装置30は、判定モジュール32により、S210aにおいて算出された認識対象文字との差が第2の所定値以下であった標準文字を認識結果として出力する。この第2の所定値は、人間の解像限界未満であり、且つ、第1の所定値未満であることが望ましい。
他の点については、S240aの処理は、
図3を参照しながら説明した第1の実施形態のS240の処理と同様である。
S240aの後、文字認識装置30は、第2の実施形態に係る文字認識の処理を終了する。
【0063】
<5.第3の実施形態の動作>
図19は、第3の実施形態に係る文字認識装置30のフローチャートである。第3の実施形態は、認識対象文字との差が所定値以下である標準文字を1つに絞れなかった場合に、輪郭点の座標と輪郭点における輪郭線の方向とを用いて認識を行う点で、第1の実施形態と異なる。
【0064】
第3の実施形態において、文字認識装置30は、以下の処理を行う。
S100~S160までの処理は、第1の実施形態と同様である。
(輪郭線の方向を取得)
S165a~S180b:差が第1の所定値以下である標準文字が1つの場合、その標準文字を認識結果とする。差が第1の所定値以下である標準文字が複数ある場合、認識対象文字の複数の輪郭点のそれぞれにおける輪郭線の方向Aiを取得する。
(輪郭点の座標と輪郭点における輪郭線の方向とを用いて標準文字との差を算出)
S200a~S230a:認識対象文字の複数の輪郭点と、複数の標準文字の各々についての複数の輪郭点と、のベクトル差を算出する。
(認識結果を決定)
S240a:差が第2の所定値以下である標準文字を認識結果とする。
以下、詳細に説明する。
【0065】
<5.1 ベクタ画像へ変換>
S100において、認識対象文字のビットマップ画像をベクタ画像に変換する処理は、
図3~
図5を参照しながら説明した第1の実施形態の処理と同様である。
【0066】
<5.2 輪郭点を抽出>
S110において、認識対象文字のベクタ画像から複数の輪郭点を抽出する処理は、
図3及び
図6~
図9を参照しながら説明した第1の実施形態の処理と同様である。
【0067】
<5.3 標準文字との差を算出>
S120~S160において、認識対象文字の複数の輪郭点と、複数の標準文字の各々についての複数の輪郭点と、の差を算出する処理は、
図3及び
図10~
図13を参照しながら説明した第1の実施形態の処理と同様である。
【0068】
<5.4 輪郭線の方向を取得>
S165aにおいて、文字認識装置30は、判定モジュール32により、認識対象文字との差が第1の所定値以下である標準文字が1つだけであるか否かを判定する。
【0069】
認識対象文字との差が第1の所定値以下である標準文字が1つだけである場合(S165a:YES)、文字認識装置30は、処理をS170aに進める。
S170aにおいて、文字認識装置30は、判定モジュール32により、認識対象文字との差が第1の所定値以下である標準文字を認識結果として出力する。
【0070】
認識対象文字との差が第1の所定値以下である標準文字が1つだけではない場合(S165a:NO)、文字認識装置30は、処理をS180bに進める。このとき、認識対象文字との差が第1の所定値以下である標準文字の集合をMとし、集合Mに属する複数の標準文字の各々を識別する番号をmとする。例えば、認識対象文字との差が第1の所定値以下である標準文字が「н」(エヌ)と「и」(イー)の2つ(後述)である場合、集合Mに属する標準文字の総数Mmaxは2である。集合Mは集合Nの真部分集合である。
なお、S165aにおいて認識対象文字との差が第1の所定値以下である標準文字が0個であった場合、別の認識処理が行われてもよい。例えば、認識対象文字との差が第1の所定値より大きい第3の所定値以下である標準文字を、仮の認識結果として出力してもよい。また例えば、認識対象文字の画像に含まれる微小なドットを除去して標準文字と比較し、仮の認識結果を出力してもよい。
【0071】
S180bにおいて、文字認識装置30は、輪郭点抽出モジュール31により、S110で抽出された認識対象文字の複数の輪郭点について、それぞれの輪郭点iにおける輪郭線の方向Aiを取得する。
【0072】
図20は、輪郭線の方向Aiの例を示す図である。輪郭点iのX,Y座標を(Xi,Yi)とする。輪郭線に沿って輪郭点iの前後に位置する輪郭点i+1及びi-1のX,Y座標をそれぞれ(Xi+1,Yi+1)及び(Xi-1,Yi-1)とする。このとき、輪郭線の方向Aiは以下の式で定義される。
Ai = Arctan{((Yi+1)-(Yi-1))/((Xi+1)-(Xi-1))}
但し、(Xi+1)-(Xi-1)が0であるときは、輪郭線の方向Aiは90°とする。
図20に示される例においては、輪郭点i+1及びi-1の間で-6/1の傾斜になっているので、輪郭点iにおける輪郭線の方向Aiは-81°である。輪郭線の方向Aiは-90°より大きく、90°以下の範囲内となる。すなわち、輪郭線の方向Aiは、最大値と最小値との差が180°未満となる範囲で定義されているので、正反対方向の輪郭線は、異方向の輪郭線ではなく同一方向の輪郭線として扱われる。
【0073】
なお、輪郭線の方向Aiを計算するために常に上記の式を用いる必要はない。例えば、輪郭点i+1及びi-1の間のX方向及びY方向のマス目の数と、輪郭線の方向Aiとを対応付けたテーブルデータを予め用意しておき、マス目の数を用いてテーブルデータを検索することにより輪郭線の方向Aiを取得するようにしてもよい。
また、輪郭線の方向Aiの単位を度(°)としたが、ラジアンでもよい。
【0074】
<5.5 輪郭点の座標と輪郭点における輪郭線の方向とを用いて標準文字との差を算出>
図19を再び参照して説明を続ける。
S200a~S230aにおいて、文字認識装置30は、判定モジュール32により、集合Mに属する標準文字の総数Mmaxに達するまで番号mの値を更新しながら、標準文字mと認識対象文字とのベクトル差を算出する。S200a、S220a、S230aにおいて、集合Mに属する標準文字の総数Mmaxに達するまで番号mの値を更新する処理は、S120、S150、S160と同様である。
【0075】
S210bにおいて、文字認識装置30は、判定モジュール32により、記憶装置40から標準文字mの複数の輪郭点の座標及び方向を読み出し、認識対象文字の複数の輪郭点の座標及び方向との差を算出する。
【0076】
図21は、
図19に示される標準文字mの輪郭点の座標及び方向と認識対象文字の輪郭点の座標及び方向との差を算出する処理(S210b)の詳細を示すフローチャートである。
図21は、S210bのサブルーチンに相当する。
【0077】
S211bにおいて、文字認識装置30は、記憶装置40から標準文字mの複数の輪郭点の座標及び方向を読み出す。記憶装置40にはすべての標準文字の複数の輪郭点について、座標だけでなく輪郭線の方向も記憶させておくものとする。
【0078】
S212b~S215bにおいて、文字認識装置30は、判定モジュール32により、輪郭点iの総数Imaxに達するまで番号iの値を更新しながら、認識対象文字の輪郭点iと、輪郭点iから最も近い標準文字mの輪郭点とのベクトル差VDiを算出する。S212b、S214b、S215bにおいて、輪郭点iの総数Imaxに達するまで番号iの値を更新する処理は、S132、S134、S135と同様である。
【0079】
S213bにおいて、文字認識装置30は、判定モジュール32により、認識対象文字の輪郭点iと、輪郭点iから最も近い標準文字mの輪郭点とのベクトル差VDiを算出する。
【0080】
図22は、
図21に示されるベクトル差VDiを算出する処理(S213b)の詳細を示すフローチャートである。
図22は、S213bのサブルーチンに相当する。
S2132において、文字認識装置30は、認識対象文字の輪郭点iと、輪郭点iから最も近い標準文字mの輪郭点と、における輪郭線の方向の違いADiを算出する。
S2133において、文字認識装置30は、認識対象文字の輪郭点iと、輪郭点iから最も近い標準文字mの輪郭点と、のベクトル差VDiを算出する。
S2133の後、文字認識装置30は
図22の処理を終了し、
図21の処理に戻る。
【0081】
図23は、輪郭線の方向の違いADi及びベクトル差VDiについて説明した図である。輪郭線の方向の違いADiは以下の式により計算される。
ADi = |Ai-Aj|/10
但し、Ajは、認識対象文字の輪郭点iから最も近い標準文字mの輪郭点における輪郭線の方向である。10で除算するのは輪郭線の方向の違いADiに適切な重みづけを付与するためであり、重みづけには別の値が用いられてもよい。
なお、|Ai-Aj|が90°より大きい場合には、輪郭線の方向の違いADiは以下の式により計算される。
ADi = (180-|Ai-Aj|)/10
【0082】
ベクトル差VDiは以下の式により計算される。
VDi = Di+ADi
距離DiはS130で算出済みの値である。
【0083】
図23の左側の例に示されるように、記号「□」で示される認識対象文字の輪郭点のうち中央の輪郭点における輪郭線の方向Aiを90°とし、この輪郭点から最も近い標準文字mの輪郭点における輪郭線の方向Ajを90°としたとき、輪郭線の方向の違いADiは以下の通りである。
ADi = |90-90|/10
= 0
距離Diは2であるとすると、ベクトル差VDiは以下のように計算される。
VDi = 2+0
= 2
【0084】
図23の右側の例に示されるように、記号「□」で示される認識対象文字の輪郭点のうち中央の輪郭点における輪郭線の方向Aiを90°とし、この輪郭点から最も近い標準文字mの輪郭点における輪郭線の方向Ajを45°としたとき、輪郭線の方向の違いADiは以下の通りである。
ADi = |90-45|/10
= 4.5
距離Diは0であるとすると、ベクトル差VDiは以下のように計算される。
VDi = 0+4.5
= 4.5
【0085】
以上のように、
図23の右側の例よりも
図23の左側の例の方が、認識対象文字の輪郭点iから最も近い標準文字mの輪郭点までの距離Diは大きいが、ベクトル差VDiは
図23の右側の例の方が大きくなっている。このように、輪郭点間の距離Diだけでなく輪郭点における輪郭線の方向の違いADiも加味して判定を行うので、判定精度を向上できる。
【0086】
図21を再び参照して説明を続ける。
S216bにおいて、文字認識装置30は、判定モジュール32により、ベクトル差VDiの平均VDIavgと分散VDIσ^2を以下の式で算出する。
VDIavg = {Σ(VDi)}/Imax
VDIσ^2 = {Σ((VDi-VDIavg)
2)}/Imax
ここで、Σ(X)は、Xをi=1からi=Imaxまで合計した値を示す。
【0087】
S217b~S221bの処理は、標準文字mの輪郭点jと、輪郭点jから最も近い認識対象文字の輪郭点とのベクトル差VDjを算出する点で、S212b~S215bの処理と異なる。
図24は、
図21に示されるベクトル差VDjを算出する処理(S218b)の詳細を示すフローチャートである。
S2182において、文字認識装置30は、標準文字mの輪郭点jと、輪郭点jから最も近い認識対象文字の輪郭点と、における輪郭線の方向の違いADjを算出する。
S2183において、文字認識装置30は、標準文字mの輪郭点jと、輪郭点jから最も近い認識対象文字の輪郭点と、のベクトル差VDjを算出する。
S2183の後、文字認識装置30は
図24の処理を終了し、
図21の処理に戻る。
【0088】
S222bにおいて、文字認識装置30は、判定モジュール32により、ベクトル差VDjの平均VDJavgと分散VDJσ^2を以下の式で算出する。
VDJavg = {Σ(VDj)}/Jmax
VDJσ^2 = {Σ((VDj-VDJavg)2)}/Jmax
ここで、Σ(X)は、Xをj=1からj=Jmaxまで合計した値を示す。Jmaxは標準文字mの輪郭点の総数である。
【0089】
他の点については、S217b~S222bの処理はS212b~S216bの処理と同様である。
S222bの後、文字認識装置30は
図21の処理を終了し、
図19の処理に戻る。
【0090】
<5.6 認識結果を決定>
図19を再び参照して説明を続ける。
S240aにおいて、文字認識装置30は、判定モジュール32により、S210bにおいて算出された認識対象文字との差が第2の所定値以下である標準文字を認識結果として出力する。第2の所定値は、第1の所定値と同じ値でもよいし、異なる値でもよい。
他の点については、S240aの処理は、
図3を参照しながら説明した第1の実施形態のS240の処理と同様である。
S240aの後、文字認識装置30は、第3の実施形態に係る文字認識の処理を終了する。
【0091】
図25は、符号「■」で示される認識対象文字の輪郭点を2つの標準文字の輪郭点とそれぞれ比較した結果を示す。
図25の左側で認識対象文字と比較されている標準文字は、ロシア語の「н」(エヌ)である。
図25の右側で認識対象文字と比較されている標準文字は、ロシア語の「и」(イー)である。標準文字の輪郭点jは、それぞれ円で示されている。それぞれの円の中心位置が輪郭点jの位置を示す。円の大きさの意味については後述する。
【0092】
まず、ベクトル差VDjを考慮せず、
図19のS120~S160において算出された輪郭点間の距離だけを考慮した場合の判定結果は以下の通りである。符号「■」で示される認識対象文字の輪郭点の位置と、円の中心位置で示される標準文字の輪郭点の位置とを比較したところ、
図25の左側に示される標準文字「н」(エヌ)との比較での一致度は高かったが、囲み線XXVAで示される部分には僅かな不一致もみられた。
図25の右側に示される標準文字「и」(イー)との比較では、囲み線XXVBで示される部分には僅かな不一致が見られたものの、全体としては一致度が高かった。このため、符号「■」で示される認識対象文字は「н」(エヌ)であるとも「и」(イー)であるとも判別できなかった。
【0093】
これに対し、S200a~S230aにおいて算出されたベクトル差VDjを考慮した場合の判定結果は以下の通りである。
図25において、それぞれの円の直径の大きさがベクトル差DVjを示す。ベクトル差DVjを考慮したところ、
図25の左側の囲み線XXVAで示される部分の不一致は大きく評価されることなく、むしろ
図25の右側の囲み線XXVBで示される部分の不一致は大きく評価された。こうして、認識対象文字との差が第2の所定値以下であるのは唯一「н」(エヌ)のみであると判定できた。
このように、第3の実施形態によれば、文字を構成する線の位置のずれよりも、線の方向の違いを強調することができる。
【0094】
<6.第4の実施形態の動作>
図26は、第4の実施形態に係る文字認識装置30のフローチャートである。第4の実施形態は、輪郭点の座標及び当該輪郭点における輪郭線の方向を用いても標準文字を1つに絞れなかった場合に文字の部分同士の比較を行う点で、第3の実施形態と異なる。
【0095】
第4の実施形態において、文字認識装置30は、以下の処理を行う。
(ベクタ画像へ変換)
S100:認識対象文字のビットマップ画像をベクタ画像に変換する。
(輪郭点を抽出し、座標と方向を取得)
S110c:認識対象文字のベクタ画像から複数の輪郭点を抽出し、複数の輪郭点のそれぞれの座標と輪郭線の方向Aiとを取得する。
(輪郭点の座標と輪郭点における輪郭線の方向とを用いて標準文字との差を算出)
S120~S160:認識対象文字の複数の輪郭点と、複数の標準文字の各々についての複数の輪郭点と、のベクトル差を算出する。
(注目部分を抽出)
S165a~S180c:ベクトル差が第1の所定値以下である標準文字が1つの場合、その標準文字を認識結果とする。ベクトル差が第1の所定値以下である標準文字が複数ある場合、ベクトル差が大きい輪郭点が連続する部分を注目部分として抽出する。
(注目部分における平均と分散を算出)
S216c、S221c:注目部分におけるベクトル差VDiの平均及び分散と、注目部分におけるベクトル差VDjの平均及び分散とを算出する。
(認識結果を決定)
S240a:差が第2の所定値以下である標準文字を認識結果とする。
以下、詳細に説明する。
【0096】
<6.1 ベクタ画像へ変換>
S100において、認識対象文字のビットマップ画像をベクタ画像に変換する処理は、
図3~
図5を参照しながら説明した第1の実施形態の処理と同様である。
【0097】
<6.2 輪郭点を抽出し、座標と方向を取得>
S110cにおいて、文字認識装置30は、輪郭点抽出モジュール31により、認識対象文字のベクタ画像から複数の輪郭点を抽出し、複数の輪郭点のそれぞれの座標と輪郭線の方向Aiとを取得する。
【0098】
図27は、
図26に示される輪郭点の抽出と座標及び方向の取得とを行う処理(S110c)の詳細を示すフローチャートである。
図27は、S110cのサブルーチンに相当する。
S111において、文字認識装置30は、輪郭点抽出モジュール31により、認識対象文字のベクタ画像に含まれる輪郭点に沿って、複数の点を抽出する。S111の処理は、
図6及び
図7を参照しながら説明した第1の実施形態のS111の処理と同様である。
S112において、文字認識装置30は、輪郭点抽出モジュール31により、複数の点についてそれぞれの座標を、認識対象文字の輪郭点として取得する。S112の処理は、
図6及び
図8を参照しながら説明した第1の実施形態のS112の処理と同様である。
S113cにおいて、文字認識装置30は、輪郭点抽出モジュール31により、S112で抽出された認識対象文字の複数の輪郭点について、それぞれの輪郭点iにおける輪郭線の方向Aiを取得する。S113cの処理は、
図19及び
図20を参照しながら説明した第3の実施形態のS180bの処理と同様である。
S113cの後、文字認識装置30は輪郭点抽出モジュール31による
図27の処理を終了し、
図26の処理に戻る。
【0099】
<6.3 輪郭点の座標と輪郭点における輪郭線の方向とを用いて標準文字との差を算出>
図26を再び参照して説明を続ける。
S120~S160において、文字認識装置30は、判定モジュール32により、集合Nに属する標準文字の総数Nmaxに達するまで番号nの値を更新しながら、標準文字nと認識対象文字とのベクトル差を算出する。S120、S150、S160において、標準文字の総数Nmaxに達するまで番号nの値を更新する処理は、
図3を参照しながら説明した第1の実施形態の処理と同様である。
【0100】
S130cにおいて、文字認識装置30は、判定モジュール32により、記憶装置40から標準文字nの複数の輪郭点の座標及び方向を読み出し、認識対象文字の複数の輪郭点の座標及び方向との差を算出する。
【0101】
図28は、
図26に示される標準文字nの輪郭点の座標及び方向と認識対象文字の輪郭点の座標及び方向との差を算出する処理(S130c)の詳細を示すフローチャートである。
図28は、S130cのサブルーチンに相当する。
図28に示される処理は、標準文字mではなく標準文字nと認識対象文字とのベクトル差を算出する点で、
図21を参照しながら説明した第3の実施形態と異なる。
図28のS131c~S141cの処理は、
図21のS211b~222bの処理に対応する。
【0102】
図29は、
図28に示されるベクトル差VDiを算出する処理(S133c)の詳細を示すフローチャートである。
図29は、S133cのサブルーチンに相当する。
S1331において、文字認識装置30は、認識対象文字の輪郭点iから最も近い標準文字nの輪郭点までの距離Diを算出する。S1331の処理は、
図11及び
図12を参照しながら説明した第1の実施形態のS133の処理と同様である。
S1332において、文字認識装置30は、認識対象文字の輪郭点iと、輪郭点iから最も近い標準文字nの輪郭点と、における輪郭線の方向の違いADiを算出する。
S1333において、文字認識装置30は、認識対象文字の輪郭点iと、輪郭点iから最も近い標準文字nの輪郭点と、のベクトル差VDiを算出する。
S1332及びS1333の処理は、標準文字mではなく標準文字nと認識対象文字とのベクトル差を算出する点の他は、
図22の対応する処理と同様である。
S1333の後、文字認識装置30は
図29の処理を終了し、
図28の処理に戻る。
【0103】
図30は、
図28に示されるベクトル差VDjを算出する処理(S138c)の詳細を示すフローチャートである。
図30は、S138cのサブルーチンに相当する。
S1381において、文字認識装置30は、標準文字nの輪郭点jから最も近い認識対象文字の輪郭点までの距離Djを算出する。S1381の処理は、
図11及び
図13を参照しながら説明した第1の実施形態のS138の処理と同様である。
S1382において、文字認識装置30は、標準文字nの輪郭点jと、輪郭点jから最も近い認識対象文字の輪郭点と、における輪郭線の方向の違いADjを算出する。
S1383において、文字認識装置30は、標準文字nの輪郭点jと、輪郭点jから最も近い認識対象文字の輪郭点と、のベクトル差VDjを算出する。
S1382及びS1383の処理は、標準文字mではなく標準文字nと認識対象文字とのベクトル差を算出する点の他は、
図24の対応する処理と同様である。
S1383の後、文字認識装置30は
図30の処理を終了し、
図28の処理に戻る。
【0104】
<6.4 注目部分を抽出>
図26を再び参照して説明を続ける。
S165aにおいて、文字認識装置30は、判定モジュール32により、認識対象文字との差が第1の所定値以下である標準文字が1つだけであるか否かを判定する。
【0105】
認識対象文字との差が第1の所定値以下である標準文字が1つだけである場合(S165a:YES)、文字認識装置30は、処理をS170aに進める。
S170aにおいて、文字認識装置30は、判定モジュール32により、認識対象文字との差が第1の所定値以下である標準文字を認識結果として出力する。
【0106】
認識対象文字との差が第1の所定値以下である標準文字が1つだけではない場合(S165a:NO)、文字認識装置30は、処理をS180cに進める。このとき、認識対象文字との差が第1の所定値以下である標準文字の集合をMとし、集合Mに属する複数の標準文字の各々を識別する番号をmとする。例えば、認識対象文字との差が第1の所定値以下である標準文字が「成」の正字と俗字(後述)の2つである場合、集合Mに属する標準文字の総数Mmaxは2である。集合Mは集合Nの真部分集合である。
なお、S165aにおいて認識対象文字との差が第1の所定値以下である標準文字が0個であった場合、別の認識処理が行われてもよい。例えば、認識対象文字との差が第1の所定値より大きい第3の所定値以下である標準文字を、仮の認識結果として出力してもよい。また例えば、認識対象文字の画像に含まれる微小なドットを除去して標準文字と比較し、仮の認識結果を出力してもよい。
【0107】
S180cにおいて、文字認識装置30は、輪郭点抽出モジュール31により、ベクトル差VDi又はVDjが所定値より大きい輪郭点が輪郭線に沿って所定個数連続する部分を注目部分として抽出する。
【0108】
図31は、認識対象文字の輪郭点を符号「□」で示される標準文字の輪郭点と比較した結果を示す。円の中心は認識対象文字の輪郭点i及び標準文字の輪郭点jの位置を示し、円の直径が当該輪郭点iに最も近い標準文字の輪郭点とのベクトル差VDi、あるいは当該輪郭点jに最も近い認識対象文字の輪郭点とのベクトル差VDjを示す。
【0109】
認識対象文字は「成」の正字と呼ばれ、第3画の右上の角が突き出て第4画に触れるような字体となっている。標準文字は「成」の俗字と呼ばれ、日本の小学校で学習する字体である。これらの字は、字義は同じであるが異体字として区別されることがあるので区別して認識される必要がある。
【0110】
図31に示される例では、一部に不一致点はあるが全体的に一致度が高いため、ベクトル差VDi又はVDjの平均と分散だけでは「成」の正字と俗字を区別できなかった。そこで、ベクトル差VDi又はVDjが所定値より大きい輪郭点が輪郭線に沿って所定個数連続する部分が含まれるような矩形部分を、注目部分XXXIIとして抽出する。
図32は、
図31の画像の中から抽出された注目部分XXXIIを示す。
【0111】
<6.5 注目部分における平均と分散を算出>
図26に戻って説明を続ける。
S216cにおいて、文字認識装置30は、判定モジュール32により、注目部分XXXIIにおけるベクトル差VDiの平均VDIavgと分散VDIσ^2を以下の式で算出する。
VDIavg = {Σ(VDi)}/Ismax
VDIσ^2 = {Σ((VDi-VDIavg)
2)}/Ismax
ここで、Σ(X)は、Xをi=1からi=Ismaxまで合計した値を示す。Ismaxは、認識対象文字の輪郭点のうち、注目部分XXXIIに含まれる輪郭点iの個数である。
【0112】
S221cにおいて、文字認識装置30は、判定モジュール32により、注目部分XXXIIにおけるベクトル差VDjの平均VDJavgと分散VDJσ^2を以下の式で算出する。
VDJavg = {Σ(VDj)}/Jsmax
VDJσ^2 = {Σ((VDj-VDJavg)2)}/Jsmax
ここで、Σ(X)は、Xをj=1からj=Jsmaxまで合計した値を示す。Jsmaxは、標準文字の輪郭点のうち、注目部分XXXIIに含まれる輪郭点jの個数である。
【0113】
<6.6 認識結果を決定>
S240aにおいて、文字認識装置30は、判定モジュール32により、S216c及びS221cにおいて算出された認識対象文字との差が第2の所定値以下である標準文字を認識結果として出力する。第2の所定値は、第1の所定値と同じ値でもよいし、異なる値でもよい。
他の点については、S240aの処理は、
図3を参照しながら説明した第1の実施形態のS240の処理と同様である。
S240aの後、文字認識装置30は、第4の実施形態に係る文字認識の処理を終了する。
【0114】
以上のように、注目部分XXXIIの中での平均と分散を用いて判定を行うので、極めて似ている異体字でも高精度に判定できる。また、注目部分XXXIIの抽出のためにベクトル差VDi及びVDjを用いているので、注目部分XXXIIを的確に抽出できる。
【0115】
第4の実施形態では、
図26のS100~S160においてすべての標準文字について認識対象文字とのベクトル差を算出する場合について説明したが、本発明はこれに限定されない。例えば、第3の実施形態において説明した
図19のS220a:YESの後、
図26のS165aに移行してもよい。
第3及び第4の実施形態において、輪郭線の方向Aiは、最大値と最小値との差が180°未満となる範囲で定義されているが、本発明はこれに限定されない。輪郭線の方向Aiが360°の範囲で定義されてもよい。この場合には、注目部分の比較(S216c、S221c)において、正反対方向の輪郭線を異方向の輪郭線として扱ってもよい。