(57)【要約】【課題】禁止される文字列等を効率良く排除して、文字列を精度良く認識する。【解決手段】認識装置は、入力画像から、文字を含むと推測される画素の集合である文字候補を検出する候補検出部と、前記文字候補のそれぞれを認識して、認識結果の候補の文字である少なくとも１つの認識候補を生成する認識部と、前記少なくとも１つの認識候補のそれぞれを、認識対象の文字列をモデル化した知識辞書と照合して、前記入力画像に含まれると推測される文字列と知識辞書を照合して得られる少なくとも１つの照合結果を生成する照合部と、前記少なくとも１つの照合結果のうち、禁止対象の文字列を含む文字列と知識辞書を照合して得られた照合結果を削除する禁則処理部を備える。【選択図】図１
2015170129.tif 000002
【特許請求の範囲】
【請求項１】
入力画像から、文字を含むと推測される画素の集合である文字候補を検出する候補検出部と、
前記文字候補のそれぞれを認識して、認識結果の候補の文字である少なくとも１つの認識候補を生成する認識部と、
前記少なくとも１つの認識候補のそれぞれを、認識対象の文字列をモデル化した知識辞書と照合して、前記入力画像に含まれると推測される文字列と知識辞書を照合して得られる照合結果を生成する照合部と、
前記照合結果のうち、禁止対象の文字列を含む文字列と知識辞書を照合して得られた照合結果を削除する禁則処理部と、
を備える認識装置。
【請求項２】
前記照合部は、対応する文字列の尤もらしさを表すスコアを含む照合結果を生成し、
前記認識装置は、前記照合結果から前記スコアに基づき１つの照合結果を選択し、選択した照合結果により特定される文字列を抽出する結果抽出部をさらに備える
請求項１に記載の認識装置。
【請求項３】
前記知識辞書は、認識対象の文字列をモデル化した有限オートマトンである
請求項１に記載の認識装置。
【請求項４】
前記知識辞書は、第１の決定性有限オートマトンであり、
前記照合部は、
第１の文字候補の照合結果に、照合により到達した前記第１の決定性有限オートマトンの状態を示す番号を書き込み、
前記第１の文字候補に続く第２の文字候補を前記第１の決定性有限オートマトンと照合する際、前記第１の文字候補の照合結果に書き込まれた番号に示される状態から第２の文字候補の認識候補による状態遷移に対応するエッジを辿ることで第２の文字候補を照合する
請求項３に記載の認識装置。
【請求項５】
前記禁則処理部は、前記照合結果により特定される文字列を、禁止対象の文字列をモデル化した禁則辞書と照合し、禁止対象の文字列を含む文字列と知識辞書を照合して得られる照合結果を削除する
請求項１に記載の認識装置。
【請求項６】
前記禁則辞書は、禁止対象の文字列をモデル化した有限オートマトンである
請求項５に記載の認識装置。
【請求項７】
前記禁則辞書は、第２の決定性有限オートマトンであり、
前記禁則処理部は、
第１の照合結果により特定される文字列を照合することにより到達した前記第２の決定性有限オートマトンの状態を示す番号を前記第１の照合結果に書き込み、
前記第１の照合結果に続く第２の文字候補を前記第１の決定性有限オートマトンと照合して得られた第２の照合結果により特定される文字列を照合する際、前記第１の照合結果に書き込まれた番号に示される状態から前記第２の文字候補の認識候補による状態遷移に対応するエッジを辿ることで、前記第２の照合結果により特定される文字列を照合する
請求項６に記載の認識装置。
【請求項８】
前記第２の決定性有限オートマトンが、
禁止対象の文字列を含む文字列を入力した場合に、受理状態に遷移するように構成されている
ことを特徴とした請求項７に記載の認識装置。
【請求項９】
入力画像から、文字を含むと推測される画素の集合である文字候補を検出する候補検出ステップと、
前記文字候補のそれぞれを認識して、認識結果の候補の文字である少なくとも１つの認識候補を生成する認識ステップと、
前記少なくとも１つの認識候補のそれぞれを、認識対象の文字列をモデル化した知識辞書と照合して、前記入力画像に含まれると推測される文字列と知識辞書を照合して得られる照合結果を生成する照合ステップと、
前記照合結果のうち、禁止対象の文字列を含む文字列と知識辞書を照合して得られた照合結果を削除する禁則処理ステップと、
を含む認識方法。
【請求項１０】
コンピュータを認識装置として機能させるためのプログラムであって、
前記コンピュータに、
入力画像から、文字を含むと推測される画素の集合である文字候補を検出する候補検出ステップと、
前記文字候補のそれぞれを認識して、認識結果の候補の文字である少なくとも１つの認識候補を生成する認識ステップと、
前記少なくとも１つの認識候補のそれぞれを、認識対象の文字列をモデル化した知識辞書と照合して、前記入力画像に含まれると推測される文字列と知識辞書を照合して得られる照合結果を生成する照合ステップと、
前記照合結果のうち、禁止対象の文字列を含む文字列と知識辞書を照合して得られた照合結果を削除する禁則処理ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、認識装置、認識方法およびプログラムに関する。
【背景技術】
【０００２】
文字認識における知識処理を行う方法として、認識対象の文字列をモデル化して知識辞書に格納し、モデルに合致する文字列を知識辞書の結果とする方法が知られている。例えば、照合したい単語を登録した単語辞書部と単語辞書部に登録された単語を受理する有限オートマトンを有する単語照合部を備え、有限オートマトンが受理した単語を知識処理の結果として出力するシステムが知られている（例えば、特許文献１参照）。また、文脈自由文法で記述した地名表記と文字認識候補を照合することで知識処理を行う技術が知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−１４３８９３号公報
【特許文献２】特許第４００６１７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、認識対象の文字列をモデル化して、知識処理の結果をモデルに合致する文字列に限定する従来の技術では、知識処理の結果としてありえない文字列および不自然な文字列等を効率良く排除することが困難であった。例えば、英文において母音字が５文字以上続く文字列は、単語として不自然であるが、従来の技術では、こういった文字列を効率良く排除することは困難であった。
【０００５】
本発明が解決しようとする課題は、使用されることが無い文字列および使用することが禁止される文字列等を効率良く排除して、文字列を精度良く認識することにある。
【課題を解決するための手段】
【０００６】
実施形態に係る認識装置は、入力画像から、文字を含むと推測される画素の集合である文字候補を検出する候補検出部と、前記文字候補のそれぞれを認識して、認識結果の候補の文字である少なくとも１つの認識候補を生成する認識部と、前記少なくとも１つの認識候補のそれぞれを、認識対象の文字列をモデル化した知識辞書と照合して、前記入力画像に含まれると推測される文字列と知識辞書を照合して得られる照合結果を生成する照合部と、前記照合結果のうち、禁止対象の文字列を含む文字列と知識辞書を照合して得られた照合結果を削除する禁則処理部を備える。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態に係る認識装置１０の構成を示す図である。
【図２】図２は、実施形態に係る認識装置１０の処理を示すフロー図である。
【図３】図３は、入力画像の一例を示す図である。
【図４】図４は、様式データの構成を示す図である。
【図５】図５は、入力画像から一連の文字候補を生成する処理を示す図である。
【図６】図６は、断片データの構成を示す図である。
【図７】図７は、断片番号の一例を示す図である。
【図８】図８は、文字候補データの構成を示す図である。
【図９】図９は、文字候補番号の一例を示す図である。
【図１０】図１０は、文字候補の始点番号および終点番号の一例を示す図である。
【図１１】図１１は、文字候補マトリクスの一例を示す図である。
【図１２】図１２は、文字認識辞書の構成を示す図である。
【図１３】図１３は、認識候補の配列の構成を示す図である。
【図１４】図１４は、知識辞書の構成を示す図である。
【図１５】図１５は、禁則辞書の構成を示す図である。
【図１６】図１６は、第一の非決定性有限オートマトンの一例を示す図である。
【図１７】図１７は、第一の非決定性有限オートマトンを変換することで得られる第二の非決定性有限オートマトンの一例を示す図である。
【図１８】図１８は、照合結果データの構成を示す図である。
【図１９】図１９は、照合処理を示すフロー図である。
【図２０】図２０は、知識辞書探索処理を示すフロー図である。
【図２１】図２１は、知識辞書探索処理でのデータのアクセスの流れの一例を示す図である。
【図２２】図２２は、禁則辞書探索処理を示すフロー図である。
【図２３】図２３は、禁則辞書探索処理でのデータのアクセスの流れの一例を示す図である。
【図２４】図２４は、結果抽出の処理の流れを示すフロー図である。
【図２５】図２５は、結果抽出において参照されるデータとスタック上に積まれる文字コードの一例を示す図である。
【図２６】図２６は、変形例に係る認識装置１０で認識結果として用いられる文字とそれらの文字の種別を表す記号の一例を示す図である。
【図２７】図２７は、変形例に係る認識装置１０で認識される文字列を文字の種別を表す記号の列として表した知識辞書の内容の一例を示す図である。
【図２８】図２８は、変形例に係る照合結果データの一例を示す図である。
【図２９】図２９は、実施形態に係る認識装置１０のハードウェア構成を示す図である。
【発明を実施するための形態】
【０００８】
図１は、実施形態に係る認識装置１０の構成を示す図である。認識装置１０は、例えばスキャナ等により読み取られた入力画像に含まれる文字列を認識し、認識した文字列を出力する。
【０００９】
認識装置１０は、入力部３０と、入力画像記憶部３２と、様式データ記憶部３４と、候補検出部３６と、候補記憶部３８と、文字認識辞書記憶部４０と、認識部４２と、知識辞書記憶部４４と、照合部４６と、照合結果記憶部４８と、禁則辞書記憶部５０と、禁則処理部５２と、結果抽出部５４と、出力部５６を備える。
【００１０】
入力部３０は、スキャナ等により取り込まれた入力画像を入力する。入力部３０は、ネットワーク等を介して他のコンピュータから入力画像を入力してもよい。入力画像記憶部３２は、入力部３０により入力された入力画像を記憶する。
【００１１】
様式データ記憶部３４は、入力画像における文字列が記載された領域を特定する様式データを記憶する。
【００１２】
候補検出部３６は、様式データ記憶部３４に記憶された様式データに基づいて、入力画像から、文字候補を検出する。それぞれの文字候補は、１つの文字を含むと推測される画素の集合である。候補検出部３６は、検出した文字候補を候補記憶部３８に書き込む。
【００１３】
候補記憶部３８は、文字候補を記憶する。さらに、候補記憶部３８は、文字候補のそれぞれに対応させて、その文字候補の認識結果の候補の文字である認識候補を記憶する。
【００１４】
文字認識辞書記憶部４０は、文字認識辞書を記憶する。文字認識辞書は、認識対象の画像と、予め登録された文字のそれぞれとの類似度を算出するための情報を格納する。
【００１５】
認識部４２は、文字認識辞書記憶部４０に記憶された文字認識辞書に基づいて、候補記憶部３８に記憶された文字候補のそれぞれを認識する。そして、認識部４２は、１つの文字候補に対して、認識結果の候補の文字である少なくとも１つの認識候補を生成する。認識部４２は、生成した少なくとも１つの認識候補を、文字候補に対応付けて候補記憶部３８に書き込む。
【００１６】
知識辞書記憶部４４は、認識対象の文字列をモデル化した知識辞書を記憶する。本実施形態においては、知識辞書は、認識対象の文字列をモデル化した決定性有限オートマトンである。
【００１７】
照合部４６は、少なくとも１つの認識候補のそれぞれを知識辞書と照合して、入力画像に含まれると推測される文字列と知識辞書を照合して得られる少なくとも１つの照合結果を生成する。この過程において、照合部４６は、対応する文字列の尤もらしさを表すスコアを含む照合結果を生成する。そして、照合部４６は、生成した少なくとも１つの照合結果を照合結果記憶部４８に書き込む。
【００１８】
照合結果記憶部４８は、照合部４６により生成された少なくとも１つの照合結果を記憶する。照合結果記憶部４８は、文字候補の認識候補を並べて得られる文字列を先頭から知識辞書と照合していく過程における開始時点、途中段階および完了時点での照合結果を記憶する。なお、照合部４６は、照合の途中段階において、記憶領域を節約することを目的として、スコアの低い照合結果を削除してもよい。
【００１９】
禁則辞書記憶部５０は、禁止対象の文字列をモデル化した禁則辞書を記憶する。本実施形態においては、禁則辞書は、禁止対象の文字列をモデル化した決定性有限オートマトンである。
【００２０】
禁則処理部５２は、少なくとも１つの照合結果のうち、禁止対象の文字列を含む文字列と知識辞書を照合して得られた照合結果を削除する。本実施形態において、禁則処理部５２は、照合結果により特定されるそれぞれの文字列を決定性有限オートマトンである禁則辞書と照合し、文字列が禁則辞書の決定性有限オートマトンで受理された場合、対応する照合結果を削除する。
【００２１】
禁則処理部５２は、照合部４６による照合の途中段階において禁止対象の文字列を含む文字列と知識辞書を照合して得られた照合結果が発生した場合、その途中段階の照合結果を削除してもよい。また、禁則処理部５２は、照合部４６による照合が全て完了した後において、複数の照合結果のそれぞれに禁止対象の文字列を含むかを照合して、禁止対象の文字列を含む文字列と知識辞書を照合して得られた照合結果を削除してもよい。
【００２２】
結果抽出部５４は、照合部４６による照合および禁則処理部５２による削除が全て完了した後において、照合結果記憶部４８に記憶された少なくとも１つの照合結果からスコアに基づき１個以上の照合結果を選択し、選択した１個以上の照合結果により特定される文字列を抽出する。結果抽出部５４は、一例として、スコアが最も良い照合結果により特定される文字列を抽出する。
【００２３】
出力部５６は、結果抽出部５４により抽出された文字列を外部へと出力する。
【００２４】
図２は、実施形態に係る認識装置１０の処理を示すフロー図である。まず、ステップＳ１において、認識装置１０は、入力画像を入力する。
【００２５】
続いて、ステップＳ２において、認識装置１０は、入力画像から、１つの文字を含むと推測される画素の集合である文字候補を検出する。続いて、ステップＳ３において、認識装置１０は、文字認識辞書に基づいて、文字候補のそれぞれを認識して、認識結果の候補の文字である少なくとも１つの認識候補を生成する。
【００２６】
続いて、ステップＳ４において、認識装置１０は、少なくとも１つの認識候補のそれぞれを知識辞書と照合して、入力画像に含まれると推測される文字列と知識辞書を照合して得られる少なくとも１つの照合結果を生成する。これとともに、ステップＳ４において、認識装置１０は、照合結果により特定されるそれぞれの文字列を禁則辞書と照合し、禁則辞書の決定性有限オートマトンで受理される文字列と知識辞書を照合して得られた照合結果を削除する。
【００２７】
続いて、ステップＳ５において、認識装置１０は、照合処理が全て完了した後において、照合結果からスコアに基づき１つの照合結果を選択し、選択した照合結果により特定される文字列を抽出し、認識結果の文字列とする。文字候補の個数が０個の場合、すなわち入力画像上に文字が含まれない場合、ステップＳ５において選択すべき照合結果が生成されないが、この場合は認識結果の文字列を空文字列とする。最後に、ステップＳ６において、認識装置１０は、認識結果の文字列を出力する。
【００２８】
図３は、入力画像の一例を示す図である。本実施形態において、入力画像は、図３に示すように、商品を発注するための注文書をスキャナ等により取り込んで得られた画像データである。入力画像の予め定められた記入枠の内側には、発注者の名前が記入されている。本実施形態において、認識装置１０は、予め定められた記入枠の内側に記入された日本語の名前の文字列を認識し、認識した文字列を表すテキストデータを出力する。
【００２９】
図４は、様式データの構成を示す図である。様式データ記憶部３４は、予め作成された様式データを記憶する。
【００３０】
様式データは、図４に示すように、入力画像に含まれる記入枠の個数を示す値と、記入枠の個数分の記入枠レコードを格納する配列を含む。本例において、配列の最初のエントリのインデックスは、０である。すなわち、配列は、０オリジンである。なお、本実施形態で用いる他の配列も、特別の記載が無い限り０オリジンである。記入枠レコードのそれぞれは、入力画像に含まれるそれぞれの記入枠に一対一で対応する。
【００３１】
それぞれの記入枠レコードは、入力画像内における、対応する記入枠の位置を示す情報を含む。本例において、記入枠の位置を示す情報は、対応する記入枠の左右の端のＸ座標（横方向の座標）および上下の端のＹ座標（縦方向の座標）である。
【００３２】
図５は、入力画像から一連の文字候補を生成する処理を示す図である。候補検出部３６は、記入枠レコードに示された情報に基づいて記入枠の領域を特定し（例えば図５中の点線で囲まれた領域）、特定した領域から部分領域画像を抽出する。続いて、候補検出部３６は、抽出した部分領域画像を二値化して二値画像を生成する。続いて、候補検出部３６は、二値画像上で黒画素の連結成分を抽出し、それぞれの連結成分に対してラベリングを行う。ラベリングしたそれぞれの連結成分は、文字を構成する要素であり、断片と呼ぶ。続いて、候補検出部３６は、連続して並んだ１個以上の断片を組み合わせて、文字候補を生成する。文字候補は、１個の文字を表していると推測される画素の集合である。
【００３３】
図６は、断片データの構成を示す図である。候補記憶部３８は、断片を表す断片データを記憶する。断片データは、図６に示すように、断片の個数を示す値と、断片の個数分の断片レコードを格納する配列を含む。断片レコードのそれぞれは、それぞれの断片と一対一で対応する。
【００３４】
それぞれの断片レコードは、対応する断片の位置を示す情報と、断片の形状を示す二値画像を含む。本例において、断片の位置を示す情報は、対応する断片の左右の端のＸ座標および上下の端のＹ座標であり、当該断片の外接矩形を示す。断片の形状を示す二値画像は、当該断片の外接矩形内で当該連結成分上の画素を黒画素とし、残りを白画素とした画像である。
【００３５】
候補検出部３６は、それぞれの断片について、中心のＸ座標と、中心のＹ座標を算出する。中心のＸ座標は、左右の端のＸ座標の平均値である。中心のＹ座標は、上下の端のＹ座標の平均値である。そして、候補検出部３６は、配列内の複数の断片レコードを、中心のＸ座標の昇順に整列する。これにより、候補検出部３６は、配列内の複数の断片レコードを、記入枠における文字記入方向（本例では左から右に向かう方向）に整列することができる。
【００３６】
図７は、断片番号の一例を示す図である。それぞれの断片レコードは、配列のインデックスにより識別される。断片レコードを文字記入方向に整列した後のインデックスを、断片番号と呼ぶ。従って、それぞれの断片には、図７に示すように断片番号が対応付けられる。
【００３７】
図８は、文字候補データの構成を示す図である。候補検出部３６は、連続して並んだ１個以上の断片を組み合わせて、文字候補を生成する。この過程において、候補検出部３６は、外接の矩形の横幅Ｌが予め定められた長さ（Ｌｍａｘ）以下となる全てのパターンで１個以上の断片を組み合わせて、文字候補を生成する。
【００３８】
候補記憶部３８は、文字候補を表す文字候補データを記憶する。文字候補データは、図８に示すように、生成した文字候補の個数を示す値と、文字候補マトリクス（詳細後述）と、文字候補の個数分の文字候補レコードを格納する配列を含む。文字候補レコードのそれぞれは、それぞれの文字候補と一対一で対応する。
【００３９】
それぞれの文字候補レコードは、対応する文字候補の位置を示す情報と、対応する文字候補の始点番号および終点番号（詳細後述）と、文字候補の形状を示す二値画像と、認識候補エントリを含む認識候補の配列（詳細後述）を含む。本例において、文字候補の位置を示す情報は、対応する文字候補の左右の端のＸ座標および上下の端のＹ座標であり、二値画像上での当該文字候補の外接矩形を示す。文字候補の形状を示す二値画像は、当該文字候補の外接矩形内で当該文字候補上の画素を黒画素とし、残りを白画素とした画像である。認識候補エントリは、認識部４２により値が設定され、候補検出部３６では値は設定されない。
【００４０】
図９は、文字候補番号の一例を示す図である。それぞれの文字候補レコードは、配列のインデックスにより識別される。文字候補レコードのインデックスを、文字候補番号と呼ぶ。従って、それぞれの文字候補には、図９に示すように文字候補番号が対応付けられる。
【００４１】
図１０は、文字候補の始点番号および終点番号の一例を示す図である。文字候補は、連続して並んだ１個以上の断片を組み合わせて生成される。このため文字候補は、元となった１個以上の断片の並びのうちの先頭の断片に対する断片番号と、最後の断片に対する断片番号に１を加算した値とのセットで、一意に識別することができる。
【００４２】
本実施形態では、先頭の断片に対する断片番号を、その文字候補の始点番号と呼び、最後の断片に対する断片番号に１を加算した値を、その文字候補の終点番号と呼ぶ。従って、それぞれの文字候補には、図１０に示すように、始点番号および終点番号が対応付けられる。なお、始点番号および終点番号は、文字候補の区切り位置を表すことから、始点番号および終点番号の両者をまとめて位置番号とも呼ぶ。
【００４３】
図１１は、文字候補マトリクスの一例を示す図である。文字候補マトリクスは、図１１に示すように、始点番号を第１インデックス、終点番号を第２インデックスとする文字候補番号の二次元配列である。文字候補マトリクスは、文字候補レコードの生成の開始前に、全てのエントリを−１に設定することで初期化される。そして、候補検出部３６は、文字候補を作成する毎に、文字候補マトリクスの対応するエントリに文字候補番号を書き込む。
【００４４】
図１２は、文字認識辞書の構成を示す図である。文字認識辞書記憶部４０は、予め作成された文字認識辞書を記憶する。文字認識辞書は、図１２に示すように、辞書エントリの個数を示す値と、辞書エントリを格納する配列を含む。
【００４５】
それぞれの辞書エントリは、文字コードと、予め定められたＤｓｕｂ個の基底ベクトルを含む。基底ベクトルは、文字コードに対応する文字を表す部分空間の特徴ベクトルである。特徴ベクトルは、一例として、対応する文字の二値画像を縦方向および横方向に予め任意に定めた個数で分割し、分割した領域のそれぞれの黒画素の個数の比率を求め、求めた一連の比率を特徴ベクトルの要素とすることで算出される。
【００４６】
図１３は、認識候補の配列の構成を示す図である。文字候補レコードに格納される認識候補の配列は、図１３に示すように、予め定められたＮｃａｎｄ個の認識候補エントリを含む。それぞれの認識候補エントリは、文字コードと、類似度を含む。
【００４７】
認識部４２は、文字候補のそれぞれに対して文字認識をして、認識結果の候補の文字である少なくとも１つの認識候補を生成する。本実施形態においては、認識部４２は、それぞれの文字候補レコードに対して、予め定められたＮｃａｎｄ個の認識候補エントリを生成して、認識候補の配列に書き込む。
【００４８】
より具体的には、認識部４２は、対応する文字候補レコードに含まれる二値画像から特徴ベクトルを抽出し、文字認識辞書のそれぞれの辞書エントリに格納された基底ベクトルと部分空間法により照合して類似度を算出する。認識部４２は、類似度が上位Ｎｃａｎｄ個の辞書エントリのそれぞれについて、その辞書エントリに格納された文字コードを抽出し、抽出した文字コードと算出した類似度を含む認識候補エントリを生成する。そして、認識部４２は、生成したＮｃａｎｄ個の認識候補エントリを対応する文字候補レコードの認識候補の配列に書き込む。さらに、認識部４２は、それぞれの文字候補レコードの認識候補の配列に含まれる認識候補エントリを、類似度の降順で整列する。
【００４９】
図１４は、知識辞書の構成を示す図である。知識辞書記憶部４４は、設計者等が予め作成した知識辞書を記憶する。
【００５０】
本実施形態において、知識辞書は、認識対象の文字列をモデル化した決定性有限オートマトンである。本実施形態では、決定性有限オートマトンである知識辞書を、ＤＦＡαとも呼ぶ。ＤＦＡαは、例えば、設計者が認識対象の文字列を正規表現で記述し、その正規表現を決定性有限オートマトンに変換することで生成される。
【００５１】
ＤＦＡαは、図１４に示すように、状態数を示す値と、状態の数分の状態レコードを格納する状態配列と、エッジの数分のエッジレコードを格納するエッジ配列を含む。
【００５２】
それぞれの状態レコードは、ＤＦＡαに含まれるそれぞれの状態と一対一に対応し、状態は状態レコードの番号すなわち状態番号で一意に識別される。なお、状態配列は０オリジンであり、従って状態番号が０の状態は開始状態である。それぞれの状態レコードは、受理状態フラグと、エッジ配列内のエッジレコードへのポインタと、エッジレコードの要素数を含む。
【００５３】
受理状態フラグは、当該状態が受理状態であるか否かを示す。受理状態フラグは、一例として、１の場合に受理状態であることを示し、０の場合に受理状態ではないことを示す。
【００５４】
エッジレコードへのポインタは、エッジ配列内における、当該状態から出て行くエッジの集合の格納位置を示す。エッジレコードの要素数は、当該状態から出て行くエッジの個数を表す。エッジレコードへのポインタおよび要素数により、当該状態から出て行く全てのエッジに対応するエッジレコードを特定することができる。
【００５５】
それぞれのエッジレコードは、ＤＦＡαに含まれるそれぞれのエッジと一対一に対応する。それぞれのエッジレコードは、遷移先の状態番号と、コードを含む。
【００５６】
遷移先の状態番号は、当該エッジによる遷移先の状態を特定する状態番号を表す。
【００５７】
コードは、当該エッジにより表される遷移を起こす入力記号を表す。本実施形態においては、コードには、文字を表す文字コードが格納される。従って、ＤＦＡαでは、認識候補の文字を表す文字コードにより、ある状態から他の状態への遷移が起きる。
【００５８】
図１５は、禁則辞書の構成を示す図である。禁則辞書記憶部５０は、設計者等が予め作成した禁則辞書を記憶する。
【００５９】
本実施形態において、禁則辞書は、禁止対象の文字列をモデル化した決定性有限オートマトンである。禁止対象の文字列は、入力が禁止される文字列、入力がありえない文字列および不自然な文字列等であり、例えば設計者により定義される。本実施形態では、決定性有限オートマトンである禁則辞書を、ＤＦＡβとも呼ぶ。
【００６０】
ＤＦＡβは、図１５に示すように、状態数を示す値と、状態の数分の状態レコードを格納する状態配列と、エッジの数分のエッジレコードを格納するエッジ配列を含む。禁則辞書を構成するそれぞれの要素は、図１４に示した知識辞書（ＤＦＡα）と同一であるので詳細な説明は省略する。
【００６１】
ＤＦＡβは、設計者が禁止対象の文字列を正規表現で記述し（モデル化し）、その正規表現を第一の非決定性有限オートマトンに変換し、第一の非決定性有限オートマトンを第二の非決定性有限オートマトンに変換し、第二の非決定性有限オートマトンを決定性オートマトンに変換することで得られる。
【００６２】
図１６は、第一の非決定性有限オートマトンの一例を示す図である。図１７は、第一の非決定性有限オートマトンを変換することで得られる第二の非決定性有限オートマトンの一例を示す図である。図１６に示すオートマトンでは、開始状態から受理状態までの経路上の入力記号列が、禁止対象の文字列を表す。
【００６３】
第二の非決定性有限オートマトンは、図１６に示すような第一の非決定性有限オートマトンを、次の手続きで変換することにより得られる。まず、第一の非決定性有限オートマトンに、開始状態から開始状態へと戻り、全ての文字（コード）が入力記号として割り当てられた自己ループのエッジが追加される。続いて、自己ループが追加されたオートマトンに、開始状態を除く全ての状態のそれぞれから開始状態へと戻り、空記号εが入力記号として割り当てられた空エッジ（ε遷移）を追加することで図１７に示すような第二の非決定性有限オートマトンが得られる。
【００６４】
すなわち、第二の非決定性有限オートマトンは、図１７に示すように、開始状態から受理状態までの経路上の入力記号列が、禁止対象の文字列を表す。さらに、第二の非決定性有限オートマトンは、開始状態から開始状態へと戻り全ての文字が入力記号として割り当てられた自己ループのエッジと、開始状態を除く全ての状態のそれぞれから開始状態へと戻り空記号が入力記号として割り当てられた空エッジを含む。
【００６５】
このように構成した第二の非決定性有限オートマトンを決定性有限オートマトンに変換することで得られるＤＦＡβは、禁止対象の文字列をモデル化したものとなっており、禁止対象の文字列を含む文字列を入力した場合に、受理状態に確実に遷移するように構成されている。
【００６６】
なお、正規表現から非決定性有限オートマトンまたは決定性有限オートマトンを生成する方法、非決定性有限オートマトンから決定性有限オートマトンを生成する方法は、例えば、Ａ．Ｖ．エイホ，Ｒ．セシィ，Ｊ．Ｄ．ウルマン著、原田健一訳、コンパイラＩ，初版  １９８６、ｐｐ．１３４−１７２等に記載されている。
【００６７】
図１８は、照合結果データの構成を示す図である。照合部４６は、文字候補に含まれる認識候補のそれぞれを、先頭から順次に知識辞書と照合して、入力画像の記入枠内に記載されていると推測される文字列と知識辞書を照合して得られる照合結果を生成する。そして、照合部４６は、生成した照合結果を、照合結果記憶部４８に書き込む。これとともに、禁則処理部５２は、照合結果により特定される文字列を、禁則辞書と照合して、禁則辞書の決定性有限オートマトンで受理される文字列を表す照合結果を照合結果記憶部４８から削除する。
【００６８】
照合結果記憶部４８は、照合結果データを記憶する。照合結果データは、それぞれの位置番号毎に、照合結果の個数と、照合結果の配列を含む。
【００６９】
照合結果の個数は、当該位置番号に関連付けられた照合結果の個数を表す。照合結果の配列は、当該位置番号に関連付けられた照合結果を格納する。それぞれの照合結果は、状態番号αと、状態番号βと、スコアと、コードと、位置番号および照合結果の番号のペアを含む。また、それぞれの照合結果は、格納先の配列が関連付けられた位置番号および、格納先の配列内での配列要素としての番号のペアで一意に識別される。以降では、照合結果の格納先の配列が関連付けられた位置番号を「照合結果が関連付けられた位置番号」、照合結果の格納先の配列内での配列要素としての番号を「照合結果の番号」と呼称する。
【００７０】
状態番号αは、知識辞書（ＤＦＡα）の状態を表す。すなわち、状態番号αは、先頭の認識候補から当該位置の認識候補までのそれぞれの文字に応じて、ＤＦＡαを開始状態から順次に遷移させた場合に到達する状態を示す。
【００７１】
状態番号βは、禁則辞書（ＤＦＡβ）の状態を表す。すなわち、状態番号βは、当該照合結果により特定される文字列に含まれるそれぞれの文字に応じて、ＤＦＡβを開始状態から順次に遷移させた場合に到達する状態を示す。
【００７２】
スコアは、先頭の認識候補から当該位置の認識候補までのそれぞれに対応付けられた類似度を累積した値を表す。すなわち、スコアは、先頭の認識候補から当該位置の認識候補までの文字列の尤もらしさを表す。コードは、当該位置の認識候補の文字を表す文字コードである。
【００７３】
位置番号および照合結果の番号のペアは、先頭から当該位置まで１個ずつ文字候補をたどりながら文字候補の認識候補を入力記号としてＤＦＡαを遷移させながら照合結果を生成していく過程における、直前の照合結果が関連付けられた位置番号および、直前の照合結果の番号を表す。位置番号および照合結果の番号のペアは、結果抽出部５４が認識結果の文字列を抽出する際に参照される。
【００７４】
図１９は、照合処理を示すフロー図である。図２のステップＳ４に示した照合処理の詳細について図１９を参照して説明する。
【００７５】
まず、ステップＳ１１において、照合部４６は、照合結果データを初期化する。具体的には、照合部４６は、照合結果データの全ての位置番号について、照合結果の個数を０に設定するとともに、照合結果の配列を空にする。
【００７６】
続いて、ステップＳ１２において、照合部４６は、位置番号０に関連付けて、新たな１つの照合結果を生成する。新たな１つの照合結果は、状態番号αおよび状態番号βが０に、スコアが０に、位置番号および照合結果の番号が−１に、コードが−１に設定される。続いて、ステップＳ１３において、照合部４６は、位置番号０に関連付けられた照合結果の個数を１に設定する。続いて、ステップＳ１４において、照合部４６は、位置番号を表す変数Ｐｓｔに０を代入する。
【００７７】
続いて、ステップＳ１５において、照合部４６は、Ｐｓｔが、Ｐｓｔｍａｘ以下であるか否かを判断する。Ｐｓｔｍａｘは、最後の位置番号Ｐｅｄから１を減じた値である。照合部４６は、ＰｓｔがＰｓｔｍａｘ以下である場合（ステップＳ１５の真）、処理をステップＳ１６に進める。
【００７８】
ステップＳ１６において、照合部４６は、禁則処理部５２を呼び出す。ステップＳ１６において、禁則処理部５２は、位置番号Ｐｓｔに関連付けられたそれぞれの照合結果について、禁則辞書を用いて禁則辞書探索処理を実行する。これにより、禁則処理部５２は、禁止対象の文字列を含む文字列と知識辞書を照合して得られた照合結果を削除することができる。なお、禁則辞書探索処理の詳細については、図２２および図２３を参照して後述する。
【００７９】
続いて、ステップＳ１７において、照合部４６は、Ｐｓｔに関連付けられた照合結果を、スコアが最上位からＮｐｒ番目までに絞り込む。すなわち、照合部４６は、スコアがＮｐｒ番目より低い照合結果を削除する。
【００８０】
続いて、ステップＳ１８において、照合部４６は、Ｐｓｔに関連付けられたそれぞれの照合結果に対して、知識辞書を用いて知識辞書探索処理を実行する。これにより、照合部４６は、Ｐｓｔより後ろの位置番号に関連付けた新たな照合結果を生成することができる。なお、知識辞書探索処理については、図２０および図２１を参照して後述する。
【００８１】
続いて、ステップＳ１９において、照合部４６は、Ｐｓｔに１を加算する。照合部４６は、ステップＳ１９を終了すると、処理をステップＳ１５に戻す。そして、照合部４６は、ＰｓｔがＰｓｔｍａｘを超えるまで、ステップＳ１６からステップＳ１９の処理を繰り返す。
【００８２】
ＰｓｔがＰｓｔｍａｘ以下ではなくなった場合（ステップＳ１５の偽）、照合部４６は、処理をステップＳ２０に進める。ステップＳ２０において、照合部４６は、禁則処理部５２を呼び出す。ステップＳ２０において、禁則処理部５２は、最後の位置番号Ｐｅｄに関連付けられたそれぞれの照合結果について、禁則辞書を用いて禁則辞書探索処理を実行する。これにより、禁則処理部５２は、禁止対象の文字列を知識辞書と照合した結果得られる照合結果を削除することができる。そして、照合部４６は、ステップＳ２０の処理を終えると、本フローを終了する。
【００８３】
図２０は、知識辞書探索処理を示すフローチャートである。図２１は、知識辞書探索処理でのデータアクセスの流れの一例を示す。
【００８４】
図２０および図２１を参照しながら、図１９のステップＳ１８の知識辞書探索処理を説明する。まず、ステップＳ３１において、照合部４６は、照合結果データを参照し、Ｐｓｔに関連付けられた全ての照合結果を列挙する。
【００８５】
続いて、ステップＳ３２において、照合部４６は、文字候補データの配列内の文字候補レコードを参照し、Ｐｓｔを始点位置とする全ての文字候補を列挙する。照合部４６は、文字候補マトリクスにおける始点番号がＰｓｔに一致する全てのエントリを走査し、−１以外の文字候補の番号を収集することで、Ｐｓｔを始点位置とする全ての文字候補を列挙することができる。
【００８６】
続いて、照合部４６は、ステップＳ３２で列挙した全ての文字候補レコードのそれぞれに対して、ステップＳ３４〜ステップＳ４８の処理を実行する（ステップＳ３３とステップＳ４９との間のループ処理）。以降ではこのループ処理における処理対象の文字候補レコードに対応する文字候補を「文字候補Ｃｃ」と称する。
【００８７】
ステップＳ３４において、照合部４６は、文字候補Ｃｃに対応する文字候補レコードの認識候補の配列を参照し、当該文字候補の全ての認識候補エントリを列挙する。
【００８８】
続いて、照合部４６は、ステップＳ３４で列挙した全ての認識候補エントリのそれぞれに対して、ステップＳ３６〜ステップＳ４７の処理を実行する（ステップＳ３５とステップＳ４８との間のループ処理）。以降ではこのループ処理における処理対象の認識候補エントリに対応する認識候補を「認識候補Ｃｒ」と称する。
【００８９】
続いて、照合部４６は、ステップＳ３１で列挙した、Ｐｓｔに関連付けられた全ての照合結果のそれぞれに対して、ステップＳ３７〜ステップＳ４６の処理を実行する（ステップＳ３６とステップＳ４７との間のループ処理）。以降ではこのループ処理における処理対象の照合結果を「照合結果Ｍｐ」と称する。
【００９０】
ステップＳ３７において、照合部４６は、知識辞書（ＤＦＡα）を参照して、照合結果Ｍｐに含まれる状態番号αに対応する状態レコードを列挙する。
【００９１】
続いて、ステップＳ３８において、照合部４６は、ステップＳ３７で列挙した状態レコードに含まれるエッジレコードへのポインタおよびエッジレコードの要素数により、状態番号αの状態から出て行くエッジを表すエッジレコードの格納された範囲を特定することで、状態番号αの状態から出て行くエッジを表す全てのエッジレコードを列挙する。
【００９２】
続いて、照合部４６は、ステップＳ３８で列挙した全てのエッジレコードのそれぞれに対して、ステップＳ４０〜ステップＳ４５の処理を実行する（ステップＳ３９とステップＳ４６との間のループ処理）。以降ではこのループ処理における処理対象のエッジレコードを「エッジレコードＥｒ」と称する。
【００９３】
ステップＳ４０において、照合部４６は、認識候補Ｃｒの認識候補エントリに設定された文字コードと、エッジレコードＥｒに設定された文字コードとが一致するか否かを判断する。一致しない場合（ステップＳ４０のＮｏ）、照合部４６は、次のエッジレコードに処理を移し、ステップＳ４０からの処理を繰り返す。一致する場合（ステップＳ４０のＹｅｓ）、照合部４６は、処理をステップＳ４１に進める。
【００９４】
ステップＳ４１において、照合部４６は、文字候補Ｃｃの文字候補レコードの終点位置に関連付けて新しい照合結果Ｍｎを生成して、照合結果データに書き込む。
【００９５】
続いて、ステップＳ４２において、照合部４６は、新しい照合結果Ｍｎに状態番号αとして、エッジレコードＥｒに設定された状態番号（遷移先の状態番号）を設定する。また、照合部４６は、新しい照合結果Ｍｎに状態番号βとして−１を設定する。
【００９６】
続いて、ステップＳ４３において、照合部４６は、新しい照合結果Ｍｎにコードとして、認識候補Ｃｒの認識候補エントリに設定された文字コードを設定する。
【００９７】
続いて、ステップＳ４４において、照合部４６は、新しい照合結果Ｍｎに位置番号として、照合結果Ｍｐが関連付けられた位置番号Ｐｓｔを設定する。また、照合部４６は、新しい照合結果Ｍｎに照合結果の番号として、照合結果Ｍｐの番号を格納する。
【００９８】
続いて、ステップＳ４５において、照合部４６は、新しい照合結果Ｍｎにスコアとして、照合結果Ｍｐに格納されたスコアと、認識候補Ｃｒの認識候補エントリに格納された類似度を加算した値を設定する。
【００９９】
ステップＳ４６において、照合部４６は、全てのエッジレコードについて、ステップＳ４０〜ステップＳ４５の処理を終えると、ループを抜けて処理をステップＳ４７に進める。
【０１００】
ステップＳ４７において、照合部４６は、Ｐｓｔに関連付けられた全ての照合結果について、ステップＳ３７〜ステップＳ４６の処理を終えると、ループを抜けて処理をステップＳ４８に進める。
【０１０１】
ステップＳ４８において、照合部４６は、文字候補Ｃｃに対応する全ての認識候補エントリについて、ステップＳ３６〜ステップＳ４７の処理を終えると、ループを抜けて処理をステップＳ４９に進める。
【０１０２】
そして、ステップＳ４９において、照合部４６は、全ての文字候補レコードについて、ステップＳ３４〜ステップＳ４８の処理を終えると、ループを抜けて、本フローを終了する。
【０１０３】
このように照合部４６は、第１の文字候補の照合結果に、照合により到達した知識辞書（ＤＦＡα）の状態を示す番号（状態番号α）を書き込む。そして、照合部４６は、第１の文字候補に続く第２の文字候補を知識辞書（ＤＦＡα）と照合する際、第１の文字候補の照合結果に書き込まれた番号（状態番号α）に示される状態から第２の文字候補の認識候補による状態遷移に対応するエッジを辿ることで第２の文字候補を照合する。
【０１０４】
図２２は、禁則辞書探索処理を示すフローチャートである。図２３は、禁則辞書探索処理でのデータの流れを示す。
【０１０５】
図２２および図２３を参照しながら、禁則辞書探索処理を説明する。まず、ステップＳ５１において、禁則処理部５２は、照合結果データを参照し、Ｐｓｔに関連付けられた全ての照合結果を列挙する。
【０１０６】
続いて、禁則処理部５２は、ステップＳ５１で列挙した全ての照合結果のそれぞれに対して、ステップＳ５３〜ステップＳ６２の処理を実行する（ステップＳ５２とステップＳ６３との間のループ処理）。以降ではこのループ処理における処理対象の照合結果を「照合結果Ｍｔ」と称する。
【０１０７】
ステップＳ５３において、禁則処理部５２は、照合結果Ｍｔに格納された位置番号および照合結果の番号により特定される直前の照合結果Ｍを取得する。
【０１０８】
続いて、ステップＳ５４において、禁則処理部５２は、禁則辞書（ＤＦＡβ）を参照して、直前の照合結果Ｍに格納された状態番号βに対応する状態レコードを取得する。
【０１０９】
続いて、ステップＳ５５において、禁則処理部５２は、ステップＳ５４で取得した状態レコードに格納されたエッジレコードへのポインタおよびエッジレコードの要素数により、から、状態番号βの状態から出て行くエッジを表すエッジレコードが格納された範囲を特定することで、状態番号βの状態から出て行くエッジを表す全てのエッジレコードを列挙する。
【０１１０】
続いて、ステップＳ５６とステップＳ５８との間のループ処理において、禁則処理部５２は、ステップＳ５５で列挙した全てのエッジレコードのそれぞれに対して、ステップＳ５７の判断処理を実行する。以降ではこのループ処理における処理対象のエッジレコードを「エッジレコードＥｔ」と称する。
【０１１１】
ステップＳ５７において、禁則処理部５２は、処理対象の照合結果Ｍｔに格納された文字コードと、エッジレコードＥｔに格納された文字コードが一致するか否かを判断する。一致しない場合（ステップＳ５７のＮｏ）、禁則処理部５２は、次のエッジレコードの処理に移り、ステップＳ５７の処理を繰り返す。一致する場合（ステップＳ５７のＹｅｓ）、禁則処理部５２は、ステップＳ５６とステップＳ５８との間のループ処理を抜けて、処理をステップＳ５９に進める。
【０１１２】
ステップＳ５９において、禁則処理部５２は、エッジレコードＥｔの遷移先の状態番号により特定される状態レコードＳｔの受理状態フラグを確認し、状態レコードＳｔに対応するＤＦＡβの状態が受理状態であるか否かを判断する。
【０１１３】
受理状態である場合（ステップＳ５９のＹｅｓ）、ステップＳ６１において、禁則処理部５２は、照合結果Ｍｔを削除する。受理状態ではない場合（ステップＳ５９のＮｏ）、ステップＳ６０において、禁則処理部５２は、照合結果Ｍｔに状態番号βとして、エッジレコードＥｔの遷移先の状態番号を設定する。
【０１１４】
また、禁則処理部５２は、ステップＳ５６とステップＳ５８との間のループ処理において、全てのエッジレコードについて、文字コードが一致しない場合、処理をステップＳ６２に進める。ステップＳ６２において、禁則処理部５２は、照合結果Ｍｔに状態番号βとして、初期状態を表す０を設定する。
【０１１５】
ステップＳ６０、ステップＳ６１またはステップＳ６２の処理を終えると、禁則処理部５２は、次の照合結果について、ステップＳ５２から処理を繰り返す。
【０１１６】
そして、ステップＳ６３において、禁則処理部５２は、全ての照合結果について、ステップＳ５３〜ステップＳ６２の処理を終えると、ループを抜けて、本フローを終了する。
【０１１７】
このように禁則処理部５２は、第１の照合結果により特定される文字列を照合することにより到達した禁則辞書（ＤＦＡβ）の状態を示す番号（状態番号β）を第１の照合結果に書き込む。そして、禁則処理部５２は、第１の照合結果に続く第２の文字候補を知識辞書（ＤＦＡα）と照合して得られた第２の照合結果により特定される文字列を照合する際、第１の照合結果に書き込まれた番号に示されるＤＦＡβの状態から第２の文字候補の認識候補による状態遷移に対応するエッジを辿ることで、第２の照合結果により特定される文字列を照合する。
【０１１８】
図２４は、結果抽出部で行われる結果抽出の処理の流れを示す図である。図２５は、結果抽出において参照されるデータとスタック上に積まれる文字コードの様子を示す図である。
【０１１９】
図２のステップＳ５に示した結果抽出は結果抽出部５４で行われる。以降では、結果抽出の詳細について図２４および図２５を参照して説明する。まず、ステップＳ７０において結果抽出部５４は、文字候補の個数が０であるか否か確認し、文字候補の個数が０の場合はステップＳ８４において認識結果の文字列を空文字列として本フローを終了する。文字候補の個数が０でない場合は、ステップＳ７１において、結果抽出部５４は、最後の位置番号Ｐｅｄに関連付けられた全ての照合結果を列挙した上で、ステップＳ７２以降の処理を実行する。
【０１２０】
続いて、ステップＳ７２において、結果抽出部５４は、ステップＳ７１において列挙した照合結果のそれぞれについて、知識辞書（ＤＦＡα）から状態番号αに対応する状態レコードを取得して、受理状態フラグを確認する。
【０１２１】
続いて、ステップＳ７３において、結果抽出部５４は、状態番号αに対応する状態が受理状態の照合結果があるかを判断する。以降では、状態番号αに対応する状態が受理状態の照合結果を「ＤＦＡαで受理状態の照合結果」と称する。ＤＦＡαで受理状態の照合結果がある場合には（ステップＳ７３のＹｅｓ）、ステップＳ７４において、結果抽出部５４は、ＤＦＡαで受理状態の照合結果のうち、スコアが最大の照合結果を照合結果Ｍｘとして選択する。ＤＦＡαで受理状態の照合結果が無い場合には（ステップＳ７３のＮｏ）、ステップＳ７５において、結果抽出部５４は、列挙した全ての照合結果のうち、スコアが最大の照合結果を照合結果Ｍｘとして選択する。
【０１２２】
ステップＳ７４またはステップＳ７５の処理に続いて、ステップＳ７６において、結果抽出部５４は、位置番号を表す変数ｐに、選択した照合結果Ｍｘが関連付けられた位置番号ｐｘを代入する。また、結果抽出部５４は、照合結果の番号を表す変数ｍに、選択した照合結果Ｍｘの番号ｍｘを代入する。
【０１２３】
続いて、ステップＳ７７において、結果抽出部５４は、ＦＩＬＯ（First  In  Last  Out）メモリであるスタックを空にする。
【０１２４】
続いて、ステップＳ７８において、ｐとｍとが指す照合結果のコードが−１であるかを判断する。ｐとｍとが指す照合結果のコードが−１ではない場合（ステップＳ７８の偽）、結果抽出部５４は、処理をステップＳ７９に進める。
【０１２５】
ステップＳ７９において、結果抽出部５４は、ｐとｍとが指す照合結果に格納されているコードをスタックに積む。続いて、ステップＳ８０において、結果抽出部５４は、ｐにｐとｍとが指す照合結果に格納された位置番号を、ｍにｐとｍとが指す照合結果に格納された照合結果の番号を代入する。
【０１２６】
そして、結果抽出部５４は、ステップＳ８０の処理を終えると、処理をステップＳ７８に戻して、ｐとｍとが指す照合結果に格納されたコードが−１となるまで、ステップＳ７９とステップＳ８０の処理を繰り返す。これにより、結果抽出部５４は、図２５に示すように、文字列の末尾から順に文字コードを選択して、スタックに積み上げていくことができる。
【０１２７】
ｐとｍとが指す照合結果のコードが−１である場合（ステップＳ７８の真）、すなわち、位置番号が０に関連付けられた照合結果を指す場合には、結果抽出部５４は、処理をステップＳ８１に進める。ステップＳ８１において、結果抽出部５４は、メモリに格納された認識結果の文字列を空文字列に初期化する。
【０１２８】
続いて、ステップＳ８２において、スタックが空であるかを判断する。スタックが空ではない場合（ステップＳ８２の偽）、結果抽出部５４は、ステップＳ８３において、スタックのトップからコードを１つ取り出して、メモリに格納された認識結果の文字列の末尾に追加する。
【０１２９】
ステップＳ８３の処理を終えると、結果抽出部５４は、処理をステップＳ８２に戻して、スタックが空になるまで、ステップＳ８３の処理を繰り返す。これにより、結果抽出部５４は、文字列の先頭から末尾までを生成することができる。
【０１３０】
そして、結果抽出部５４は、スタックが空となった場合（ステップＳ８２の真）、本フローの処理を終了する。
【０１３１】
以上のように、本実施形態に係る認識装置１０は、禁止対象の文字列をモデル化した禁則辞書を用いて、禁止対象の文字列を含む文字列と知識辞書を照合して得られた照合結果を削除する。これにより、本実施形態に係る認識装置１０で、使用されることが無い文字列および使用することが禁止される文字列等を効率良く排除して、文字列を精度良く認識することができる。
【０１３２】
（変形例）
変形例に係る認識装置１０は、知識辞書および照合結果データの形式と、照合部４６、禁則処理部５２および結果抽出部５４の働きが異なる点を除いては、図１から図２５を参照して説明した構成と同様である。以下、変形例に係る認識装置１０について、図１から図２５を参照して説明した構成との相違点を説明する。
【０１３３】
図２６は、変形例に係る認識装置１０で認識結果として用いられる文字とそれらの文字の種別を表す記号の一例を示す図である。図２７は、変形例に係る認識装置１０で認識される文字列を文字の種別を表す記号の列として表した知識辞書の内容の一例を示す図である。
【０１３４】
変形例に係る認識装置１０は、文字の種別を現す記号を並べた文字列をモデル化した知識辞書を用いる。文字の種別を現す記号は、一例として、１から９までの数字を示す記号「Ｎ」、０から９までの数字を現す記号「ｎ」、ハイフンを現す記号「−」、マンション名、アパート名、棟名に使われる文字を現す記号「Ｍ」を用いる。知識辞書は、図２７に示されるような、これらの記号を並べたワイルドカード文字列が含まれている。
【０１３５】
図２８は、変形例に係る照合結果データの一例を示す図である。本変形例において、照合結果データに含まれる照合結果のそれぞれは、スコアｓと、置換え済み文字数ｃと、ワイルドカード文字列を部分的に認識結果で置き換えた文字列ｗとの組を含む。
【０１３６】
照合結果データは、位置番号のそれぞれに対応して、照合結果が格納される配列と、配列の要素数を含む。なお、図２８において、照合結果の文字列ｗのアンダーラインを示した文字は、ワイルドカードから認識結果に置き換えられた部分を示す。
【０１３７】
本変形例において照合部４６は、先ず、知識辞書に含まれる文字列のそれぞれを複写し、位置番号０の照合結果の配列の要素に設定することで、位置番号０の照合結果の配列を初期化する。それぞれの照合結果には、スコアとして０、置換え済み文字数として０、文字列ｗとして知識辞書から複写した文字列が設定される。続いて、照合部４６は、位置番号Ｐｓｔを１からＰｓｔｍａｘまで順に１ずつ増加させながら、位置番号Ｐｓｔ＋１以降の照合結果を生成する。
【０１３８】
本変形例において、照合部４６は、知識辞書探索処理において、照合結果の置換え済み文字数ｃを取得し、当該照合結果の文字列ｗのｃ番目の文字が文字候補Ｃｃの認識候補Ｃｒの文字コードと一致する場合は、文字候補Ｃｃの終点番号と等しい位置番号に関連付けて、新しい照合結果Ｍｎを生成する。新しい照合結果Ｍｎには、直前の照合結果のスコアに認識候補Ｃｒの類似度を加算したスコアと、置き換え済みの文字数ｃ＋１と、照合結果の文字列ｗのｃ番目の文字を認識候補Ｃｒに置き換えた文字列とが設定される。
【０１３９】
本変形例において、禁則処理部５２は、禁則辞書探索処理において、照合結果の置換え済み文字数ｃを取得し、照合結果の文字列のｃ−１番目の文字までの部分文字列が禁則辞書に格納されたＤＦＡβで受理されるか否か確認する。そして、禁則処理部５２は、受理される場合、その照合結果を削除し、受理されない場合にはその照合結果を残存させる。
【０１４０】
このように、認識装置１０は、認識対象の文字列をモデル化した知識辞書と文字候補を照合することで照合結果を得る方法であれば、どのような方法で文字列を照合してもよい。また、認識装置１０は、禁止対象の文字列を照合結果から検出する方法であれば、どのような方法で禁止対象の文字列を検出してもよい。
【０１４１】
図２９は、実施形態に係る認識装置１０のハードウェア構成を示す図である。
【０１４２】
認識装置１０は、プログラムを実行可能な一般的なコンピュータシステムにより実現することができる。認識装置１０は、一例として、ディスプレイ１１０と、キーボード１１２と、スキャナ１１４と、外部記憶装置１１６と、通信装置１１８と、コンピュータ１２０を備える。
【０１４３】
ディスプレイ１１０は、表示装置であり、認識した文字列等を表示する。キーボード１１２は、入力装置であり、ユーザからの操作を受け付けて情報を入力する。スキャナ１１４は、用紙等に記載された情報を読み取って入力画像等を取得する。外部記憶装置１１６は、ハードディスクドライブまたは光ディスクドライブ等であり、各種の情報を記憶する。通信装置１１８は、インターネット等を介して外部のコンピュータ等と情報を入出力し、例えば入力画像を外部から取得したり、文字列を外部へと出力したりする。
【０１４４】
コンピュータ１２０は、一例として、ＣＰＵ１２２と、入出力制御部１２４と、記憶装置１２６を有する。ＣＰＵ１２２、入出力制御部１２４および記憶装置１２６は、バス１２８により接続される。
【０１４５】
ＣＰＵ１２２は、プログラムを実行して認識装置１０の全体の制御をする。入出力制御部１２４は、ディスプレイ１１０、キーボード１１２、スキャナ１１４、外部記憶装置１１６および通信装置１１８等とのインターフェイスである。また、入出力制御部１２４は、バス１２８を介したデータ転送等も制御する。
【０１４６】
記憶装置１２６は、ＲＯＭ、ＲＡＭまたはハードディスクドライブ等を含む。記憶装置１２６では、同一のアドレス空間により、ＲＯＭ、ＲＡＭまたはハードディスクドライブ等の何れのデバイスに対してもアクセスが可能である。記憶装置１２６は、プログラム、入力画像、様式データ、辞書データ（文字認識辞書、知識辞書および禁則辞書）、および、作業データ（文字候補および照合結果）等を記憶する。これらのデータは、記憶装置を構成する何れのデバイス（ＲＯＭ、ＲＡＭおよびハードディスクドライブ）に記憶されていてもよい。また、これらのデータは、一部または全部が、外部記憶装置１１６、または、通信装置１１８を介してアクセスされるサーバ等に記憶されていてもよい。
【０１４７】
本実施形態の認識装置１０で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供される。また、本実施形態の認識装置１０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態の認識装置１０で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１４８】
本実施形態の認識装置１０で実行されるプログラムは、上述した各部（入力部３０、候補検出部３６、認識部４２、照合部４６、禁則処理部５２、結果抽出部５４および出力部５６）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ１２２（プロセッサ）が上記記憶媒体からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、入力部３０、候補検出部３６、認識部４２、照合部４６、禁則処理部５２、結果抽出部５４および出力部５６が記憶装置１２６上に生成されるようになっている。なお、入力部３０、候補検出部３６、認識部４２、照合部４６、禁則処理部５２、結果抽出部５４および出力部５６は、一部または全部がハードウェアで構成されていてもよい。
【０１４９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１５０】
１０  認識装置
３０  入力部
３２  入力画像記憶部
３４  様式データ記憶部
３６  候補検出部
３８  候補記憶部
４０  文字認識辞書記憶部
４２  認識部
４４  知識辞書記憶部
４６  照合部
４８  照合結果記憶部
５０  禁則辞書記憶部
５２  禁則処理部
５４  結果抽出部
５６  出力部
１１０  ディスプレイ
１１２  キーボード
１１４  スキャナ
１１６  外部記憶装置
１１８  通信装置
１２０  コンピュータ
１２２  ＣＰＵ
１２４  入出力制御部
１２６  記憶装置
１２８  バス
【図１】
2015170129.tif 000003
【図２】
2015170129.tif 000004
【図３】
2015170129.tif 000005
【図４】
2015170129.tif 000006
【図５】
2015170129.tif 000007
【図６】
2015170129.tif 000008
【図７】
2015170129.tif 000009
【図８】
2015170129.tif 000010
【図９】
2015170129.tif 000011
【図１０】
2015170129.tif 000012
【図１１】
2015170129.tif 000013
【図１２】
2015170129.tif 000014
【図１３】
2015170129.tif 000015
【図１４】
2015170129.tif 000016
【図１５】
2015170129.tif 000017
【図１６】
2015170129.tif 000018
【図１７】
2015170129.tif 000019
【図１８】
2015170129.tif 000020
【図１９】
2015170129.tif 000021
【図２０】
2015170129.tif 000022
【図２１】
2015170129.tif 000023
【図２２】
2015170129.tif 000024
【図２３】
2015170129.tif 000025
【図２４】
2015170129.tif 000026
【図２５】
2015170129.tif 000027
【図２６】
2015170129.tif 000028
【図２７】
2015170129.tif 000029
【図２８】
2015170129.tif 000030
【図２９】
2015170129.tif 000031