(57)【要約】【課題】認識対象をパターン認識する上で、可能性のある複数の認識候補を得る。【解決手段】パターン認識装置は、記憶部より読み出した画像から、パターン認識に必要な最小限の単位のエレメントの列を抽出するエレメント抽出部と、パステーブルの各パスレコード内のパーツとこのパーツに続くパーツとの切れ目の位置が一致したパーツを全て読み出しブロックとして掃き出す部分出力部とを備える。【選択図】図１
2011138411.tif 000002
【特許請求の範囲】
【請求項１】
処理対象のパターンが記憶された記憶部と、
前記記憶部より読み出したパターンから、パターン認識に必要な最小限の単位のエレメントを順次抽出し、１つ以上のエレメントの列を得るエレメント抽出部と、
前記各エレメントの列を、パターン認識に意味のある単位で区切ったパーツとそのスコアの組を、パーツどうしのつながりを示すパスレコードに記憶可能なパステーブルと、
前記エレメント抽出部により得られた各エレメントの列を、前記パーツの単位に区分する区切り検出部と、
前記区切り検出部により区分された各パーツに，そのパーツが正解である確からしさを示すスコアを付与する一方、各エレメント列の中で、先頭パーツの中の先頭エレメントの位置が同じパーツを前記パステーブルの該当パスレコードに格納するパステーブル登録部と、
前記パステーブルの各パスレコード内のパーツとこのパーツに続くパーツとの切れ目の位置が各パス間で同じ時に先頭からそこまでのパーツを部分パスとして各パスレコードから読み出し、それぞれを１つのパターン認識結果の候補とするブロックを掃き出す部分出力部と
を具備することを特徴とするパターン認識装置。
【請求項２】
前記部分出力部は、
掃き出した部分パーツを前記パステーブルから削除することを特徴とする請求項１記載のパターン認識装置。
【請求項３】
前記パステーブルの各パスレコードに格納されたパーツを、対応するスコアに従ってソートし、パーツの数が予め設定された閾値以内になるようスコアの低いパーツを削減する削減部を具備することを特徴とする請求項１記載のパターン認識装置。
【請求項４】
前記エレメントが、文字認識結果のテキストであることを特徴とする請求項１記載のパターン認識装置。
【請求項５】
前記エレメントが、前記画像から切り出した部分画像であることを特徴とする特許請求項１に記載するパターン認識装置。
【請求項６】
処理対象のパターンが記憶された記憶部と、パターン認識に必要な最小限の単位のエレメントの列を、パターン認識に意味のある単位で区切ったパーツとそのスコアの組を、パーツどうしのつながりを示すパスレコードに記憶可能なパステーブルとを有するパターン認識装置におけるパターン認識方法において、
前記記憶部より前記パターンを読み出し、読み出した前記パターンから、パターン認識に必要な最小限の単位のエレメントを順次抽出し、１つ以上のエレメントの列を得るステップと、
得られた各エレメントの列を、前記パーツの単位に区分するステップと、
区分された各パーツに，そのパーツが正解である確からしさを示すスコアを付与する一方、各エレメント列の中で、先頭パーツの中の先頭エレメントの位置が同じパーツを前記パステーブルの該当パスレコードに格納するステップと、
前記パステーブルの各パスレコード内のパーツとこのパーツに続くパーツとの切れ目の位置が各パス間で同じ時に先頭からそこまでのパーツを部分パスとして各パスレコードから読み出し、それぞれを１つのパターン認識結果の候補とするブロックを掃き出すステップと
を有することを特徴とするパターン認識方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばスキャナなどによって光学的に読み取られた帳票の画像から、帳票に記載された文字、図形および集音した音声などのパターンを認識するパターン認識装置およびパターン認識方法に関する。
【背景技術】
【０００２】
パターン認識装置において、例えば文字等のパターンを認識する際には、まず入力データから特徴抽出を行い、エレメント列を抽出し、このエレメント列に対して認識処理を実行する方式が良く採用される。
【０００３】
文字認識の例で言えば、これはエレメント列として文字構成要素を抽出し、このエレメントを結合した画像に対して文字認識を行なうようなアプローチである。
【０００４】
この場合、エレメントの結合の仕方には複数のケースが考えられ、あるエレメントに継続するエレメントの結合の仕方が複数ある。
【０００５】
このような複数のケースが連鎖すると、エレメントの組み合わせの数は、エレメント列が長くなればなるに従って指数関数的に増大していく。このように連鎖するエレメントの連続をここではパスと呼ぶことにする。
【０００６】
パターン認識を行う場合、エレメントの組み合わせとして膨大な数にのぼるパスの中から１つの最適なパスを見つけることになる。このような最適なパスを探索する従来の技術として、例えばＤＰ（Dynamic Programming）やビームサーチなどが知られている。
【０００７】
ビームサーチの１つの手法として、例えば候補パスの先頭部分が同一の場合にはその都度それらを１つの部分パスとして出力し、候補パスのリストからはその部分を削除して計算リソースの利用を軽減する技術が開示されている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１−２３３６７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記した従来のビームサーチ手法の場合、スコアの高い部分パスを１つずつ選択して残してゆくため、残った部分パスをつなげた結果が１つに集約されてしまい、可能性のある複数の認識候補が得られないという問題があった。
【００１０】
本発明はこのような課題を解決するためになされたもので、各部分パスを区分して複数に分割し残すことによって、認識対象をパターン認識する上で可能性のある複数の認識候補を得ることのできるパターン認識装置およびパターン認識方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、本発明のパターン認識装置は、処理対象のパターンや画像が記憶された記憶部と、前記記憶部より読み出したパターンや画像から、パターン認識に必要な最小限の単位のエレメントを順次抽出し、１つ以上のエレメントの列を得るエレメント抽出部と、前記各エレメントの列を、パターン認識に意味のある単位で区切ったパーツとそのスコアの組を、パーツどうしのつながりを示すパスレコードに記憶可能なパステーブルと、前記エレメント抽出部により得られた各エレメントの列を、前記パーツの単位に区分する区切り検出部と、前記区切り検出部により区分された各パーツに，そのパーツが正解である確からしさを示すスコアを，予め設定された参照パターンを使うなどして，その参照用パターンとの類似性を示すスコアとして付与する一方、各エレメント列の中で、先頭パーツの中の先頭エレメントの位置が同じパーツを前記パステーブルの該当パスレコードに格納するパステーブル登録部と、前記パステーブルの各パスレコード内のパーツとこのパーツに続くパーツとの切れ目の位置が各パス間で同じ時に先頭からそこまでのパーツを部分パスとして各パスレコードから全て読み出し、それぞれを１つのパターン認識結果の候補とするブロックを掃き出す部分出力部とを具備することを特徴とする。
【００１２】
また本発明のパターン認識方法は、処理対象のパターンや画像が記憶された記憶部と、パターン認識に必要な最小限の単位のエレメントの列を、パターン認識に意味のある単位で区切ったパーツとそのスコアの組を、パーツどうしのつながりを示すパスレコードに記憶可能なパステーブルとを有するパターン認識装置におけるパターン認識方法において、前記記憶部より前記パターンや画像を読み出し、読み出した前記パターンや画像から、パターン認識に必要な最小限の単位のエレメントを順次抽出し、１つ以上のエレメントの列を得るステップと、得られた各エレメントの列を、前記パーツの単位に区分するステップと、区分された各パーツに，そのパーツが正解である確からしさを示すスコアを，予め設定された参照用パターンを使うなどして，その参照用パターンとの類似性を示すスコアとして付与する一方、各エレメント列の中で、先頭パーツの中の先頭エレメントの位置が同じパーツを前記パステーブルの該当パスレコードに格納するステップと、前記パステーブルの各パスレコード内のパーツとこのパーツに続くパーツとの切れ目の位置が各パス間で同じ時に先頭からそこまでのパーツを部分パスとして各パスレコードから全て読み出し、それぞれを１つのパターン認識結果の候補とするブロックを掃き出すステップとを有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、認識対象をパターン認識する上で、可能性のある複数の認識候補を得ることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態のパターン認識システムの構成を示す図である。
【図２】パステーブルの内容を示す図である。
【図３】文字列イメージの一例を示す図である。
【図４】設定数の認識結果の文字列を示す図である。
【図５】パーツ抽出結果の一例を示す図である。
【図６】１回目の探索の様子を示す図である。
【図７】２回目の探索の様子を示す図である。
【図８】３回目の探索の様子を示す図である。
【図９】４回目の探索の様子を示す図である。
【図１０】５回目の探索の様子を示す図である。
【図１１】６回目の探索の様子を示す図である。
【図１２】探索の結果、出力されたブロックを示す図である。
【図１３】第２実施形態において認識対象の入力画像の一例を示す図である。
【図１４】切り出した部分文字画像の例を示す図である。
【図１５】生成された複数の仮想文字画像の列（ａ）〜（ｆ）を示す図である。
【図１６】図１５に示したパーツに対して１回目の探索を行った様子を示す図である。
【図１７】２回目の探索の様子を示す図である。
【図１８】３回目の探索の様子を示す図である。
【図１９】４回目の探索の様子を示す図である。
【図２０】５回目の探索の様子を示す図である。
【図２１】探索の結果、出力されたブロックを示す図である。
【図２２】図２１に示した仮想文字画像を文字認識した結果の例を示す図である。
【図２３】逐次出力型ビームサーチ（吐き出しビームサーチ）の汎用的な動作を示すフローチャートである。
【図２４】図２３の続きを示すフローチャートである。
【図２５】図２２の認識結果のデータ（出力データ）の符号を書き換えたものを示す図である。
【図２６】組み合わせてできた連結パス内のパーツのシーケンスを示す図である。
【図２７】作成された５個の連結パスのリストを示す図である。
【図２８】図２７の連結パスのリストをパス内部のパーツも含めて表示した図である。
【図２９】単語候補を求めた結果の例を示す図である。
【図３０】連結パスリスト生成の際にパステーブルの各パスに単語を追加する処理を示すフローチャートである。
【図３１】ＤＰ型検索の適用例を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、本発明の第１実施形態のパターン認識システムを詳細に説明する。図１は第１実施形態のパターン認識システムの構成を示す図である。
【００１６】
本実施形態では、認識対象の文字列イメージ（帳票の画像から切り出された一行の文字列領域）から得られる中間段階での文字データ（一文字の文字コード：テキストデータ）をエレメントと呼び、このエレメントは列をなしているものとする。このエレメントを複数連鎖させたもの、あるいは、それに対応して得られる単語や文節等の文字列のデータをパーツと呼ぶ。さらに、このパーツを複数並べて繋げた一行の文をパスと呼ぶ。
【００１７】
図１に示すように、パターン認識システムは、帳票２を読み取るスキャナ３などの入力ユニット１と、この入力ユニット１から入力される画像データを受け付けてパターン認識処理を実行するコンピュータ１０と、このコンピュータ１０から出力される映像を表示するディスプレイ４とを備える。
【００１８】
スキャナ３は、読み取り対象の文字が記載された帳票２から文字、図形、写真等を読み取って、画像データとしてコンピュータ１０に転送（入力）する画像入力装置である。スキャナ３は、帳票２の表面に光を当てて、その反射光をＣＣＤなどの光電変換素子で読み取ってデジタルデータに変換する。
【００１９】
コンピュータ１０は、入力インターフェース部１１（以下「入力Ｉ／Ｆ１１」と称す）、文字認識部１２、区切り検出部１３、パステーブル初期化部１４、エレメント抽出部１５、パーツ抽出部１６、パス生成部１７、パステーブル登録部１８、パス削減部１９、部分出力部２０、パス統合出力部２１、出力インターフェース部２２（以下「出力Ｉ／Ｆ２２」と称す）および記憶装置３０とを備える。
【００２０】
入力Ｉ／Ｆ１１および出力Ｉ／Ｆ２２は、ＰＣ１０の外部インターフェース装置の一つであり、例えばＵＳＢインターフェース、ＬＡＮインターフェース、Ｄ−ｓｕｂコネクタ、ＤＶＩコネクタなどである。入力Ｉ／Ｆ１１には、スキャナ３が接続される。この他、例えばキーボード、マウスなどが接続される。
【００２１】
記憶装置３０は、例えばＲＡＭ、ＲＯＭおよびハードディスクドライブ装置等により実現される。記憶装置３０には、処理対象画像記憶部３１、パステーブル３２、帳票定義記憶部３５、辞書データ記憶部３６、認識結果記憶部３７、単語辞書記憶部３８等が設けられている。
【００２２】
処理対象画像記憶部３１には、処理対象の画像として入力ユニット１から入力された帳票２の画像データ（以下「処理対象画像」または入力画像などと称す）が記憶される。
【００２３】
パステーブル３２は、一行毎の認識結果の文字列（各エレメントの列）を、パターン認識に意味のある単位で区切ったパーツ（単語や文節等）とそのスコアの組を、パーツどうしのつながりを示すパスレコード毎に記憶可能なテーブルである。
【００２４】
具体的には、図２に示すように、パステーブル３２には、パス数が例えばＭ個の場合に、第０パスレコードから第Ｍ−１パスレコードが設けられる。各パスレコードには、単語のデータ長Ｋ０、単語のスコアと、単語を構成する文字の文字コードが格納される。
【００２５】
つまり、単語候補を並べた１つの候補文、すなわち各候補文字列の中のパーツの並びがパスであり、複数の候補文字列をパスレコード毎に格納したものがパステーブル３２である。
【００２６】
帳票定義記憶部３５には、帳票定義情報としての帳票２のフォーマットコントロールデータが記憶されている。フォーマットコントロールデータは、タイミングマークの位置、帳票２の大きさ（ｍｍ単位）、読み取り対象の文字が記入された枠の種類及び大きさ、文字数、文字ピッチ、文字の属性（住所、氏名等）、出力形式（テキスト、ＣＳＶ、ＸＭＬ等）、加工情報（全角・半角変換、順序変更等）、画像出力形式（ＪＰＥＧ／ＴＩＦＦ）、画像の解像度、画像の切り出し位置が定義されている。
【００２７】
タイミングマークは、帳票２の読み取り開始位置を示すものである。また、タイミングマークは、帳票２から読み取った処理対象画像の基点（座標）にされる。タイミングマーク以外では、例えば帳票２の四角のいずれか一点を基点にしても良い。
【００２８】
辞書データ記憶部３６には、文字認識処理を行う際に参照される辞書データが記憶されている。辞書データは、文字イメージまたはその特徴情報に文字コードを対応させたデータ（参照用パターン）である。
【００２９】
認識結果記憶部３７には、一行ずつ切り出した文字イメージとそれを文字認識した結果（文字コードの列）が対応して記憶される。単語辞書記憶部３８には単語辞書データが記憶記されている。
【００３０】
区切り検出部１３、パステーブル初期化部１４、エレメント抽出部１５、パーツ抽出部１６、パス生成部１７、パステーブル登録部１８、パス削減部１９、部分出力部２０およびパス統合出力部２１などは、ソフトウェア（プログラム）の機能をブロック化したものであり、コンピュータ１０のセントラルプロセッシングユニット（以下「ＣＰＵ」と称す。）の一つの機能として実現される。
【００３１】
ＣＰＵは、記憶装置３０に記憶されたプログラムのコードを読み込んで上記各部の機能を実現する。また各部は、ソフトウェア（プログラム）に限定されることなく、独立したハードウェア（機能部品）で構成しても良い。
【００３２】
文字認識部１２は、記憶装置３０から入力画像を読み出し、読み出した入力画像から、文字認識対象の文字列が記載された領域を切り出し、その文字イメージに対して辞書データ記憶部３６の辞書データ（参照用パターン）を用いて文字認識処理を行い、文字認識結果（テキストデータと文字イメージ）を認識結果記憶部３７に記憶する。
【００３３】
エレメント抽出部１５は、記憶装置３０より読み出した文字認識結果記憶部３７から一行分の文字認識結果を得る。
【００３４】
すなわち、エレメント抽出部１５は、記憶装置３０より読み出した文字認識結果から、パターン認識に必要な最小限の単位のエレメントを順次抽出し、１つ以上のエレメントの列を得る。ここではエレメントは１文字分の認識結果である。
【００３５】
区切り検出部１３は、文字認識結果の一行の文字列を、パターン認識に意味のある単位で区切ったパーツ（単語、文節等）とそのスコアの組を、パステーブル３２のパスレコードに記憶する。  
【００３６】
すなわち、区切り検出部１３は、文字認識およびエレメント抽出により得られた各エレメントの列（文字列）を、予め記憶装置３０に設定された単語辞書記憶部３８の単語辞書データに従い、パーツ（単語、文節等）の単位に区分する。
【００３７】
パステーブル初期化部１４は、起動時にパステーブル３２に保持されているデータを初期化する。パーツ抽出部１６は、各エレメントの列（文字列）から、区切り検出部１３により区分されたパーツを抽出する。
【００３８】
パス生成部１７は、パーツ抽出部１６により抽出されたパーツを、パステーブル３２の各パスレコードに記憶されたパーツ列に続くパーツが存在するか否かによって、文字列が延長可能かどうか調べる。すなわち、パス生成部１７は、文字列の切れ目から、前のパーツに続くパーツを検出することで、新たなパスを生成する。
【００３９】
パステーブル登録部１８は、検出されたパーツをパステーブル３２の該当パスレコードに登録する。またパステーブル登録部１８は、新たに生成されたパスに基づいてパステーブル３２を更新する。
【００４０】
パス削減部１９は、パスレコードに記憶されたパーツの各スコアを足し合わせることで、各パスの合計スコアを計算し、スコアの高いもの、つまりスコアの良いものから順に、例えば予め決めておいた削減数（閾値Ｎ本：一例として「３」など）のパス候補を残し、それよりもスコアの低いパス候補を削除してパス候補の本数を削減する。
【００４１】
すなわち、パス削減部１９は、パステーブル３２の各パスレコードに格納されたパーツを、対応するスコアに従ってソートし、パーツの数が予め設定された閾値以内になるようスコアの低いパーツを削減する。
【００４２】
部分出力部２０は、パステーブル３２の各パスレコード内のパーツとそのパーツに続くパーツの切れ目が、全てのパスにおいて一致したときに、その位置までの各パスレコード内のパーツを部分パスとし、この部分パスが格納されているパスレコードのデータ（パーツ群）をブロックとして出力し、出力した各部分パーツ群をパステーブル３２から削除する。すなわち、部分出力部２０は、パステーブル３２の各パスレコード内のパーツとこのパーツに続くパーツとの切れ目の位置が各パス間で同じ時に先頭からそこまでのパーツを部分パスとして各パスレコードから読み出し、それぞれを１つのパターン認識結果の候補とするブロックを掃き出す。
【００４３】
パス統合出力部２１は、パステーブル３２の更新が終了したときに、全てのパスレコードのデータをブロックとして出力する。
【００４４】
以下、この第１実施形態のパターン認識システムの動作を説明する。
このパターン認識システムの場合、コンピュータ１０の起動とともに、パステーブル初期化部１４がパステーブル３２の内容を初期化する。
【００４５】
そして、帳票２がスキャナ３に載置されて、読み取り開始のボタン操作が行われると、帳票２の表面がスキャナ３により読み取られてその画像データ（入力画像）がコンピュータ１０の入力Ｉ／Ｆ１１を通じて記憶装置３０の処理対象画像記憶部３１に記憶される。
【００４６】
文字認識部１２は、処理対象画像記憶部３１に記憶された入力画像を読み出し、帳票定義記憶部３５の帳票定義に従って、認識対象の文字列の行領域の部分を切り出す。この結果、図３に示すような文字列イメージが得られる。この例では、文字列イメージを、例えば「水の流れのような薄いショールを」とする。
【００４７】
文字認識部１２は、辞書データ記憶部３６の辞書データを用いて図３の文字列イメージを文字認識処理することで、図４に示すように、予め設定しておいた数、例えば３つなどの順位（段階）の認識結果の文字列（エレメントの列）を生成する。ここではこの３個の認識結果の候補を１組として１つのエレメントになる。
【００４８】
図４の例では、１位候補（一段目）が「水の流れのよ東な乱いるョールを」であり、２位候補（二段目）が「永久流めるみうね暮色シヲ人し学」であり、３位候補（三段目）が「杏子派ねし大ラ京薄れ三百ノ化ム」といったように、１つの認識対象画像（文字列領域）の認識結果として３段の候補文字列が得られている。
【００４９】
区切り検出部１３は、認識結果の文字列（エレメントの列）のうち、各候補毎に文字列（エレメントの列）をパーツの単位に区切る。そして、パーツ抽出部１６は区切られたパーツに対して単語辞書データとの類似度に応じたスコアを例えば１０点からの減点法で付与する。一例として、例えば辞書データとパーツが完全一致するものは１位の１０点満点（減点０点）とし、２位は減点２点、３位は減点３点とする。
【００５０】
図５に、区切り検出部１３およびパーツ抽出部１６によるパーツ抽出結果（区分されたパーツとそれぞれのパーツに付与されたスコア）の例を示す。この図５では、区分されたパーツを線で囲み、右隅にスコアを例示している。
【００５１】
次に、パステーブル登録部１８は、１位から３位までの候補に対応するパスレコードをパステーブル３２に生成し、各候補毎に抽出したパーツを該当パスレコードに記憶し、記憶したパーツに続くパーツが存在するか否かによって、パスが延長可能かどうか調べる。
【００５２】
パスが延長できない場合、登録処理を終了する。パス統合出力部２１は、終了と同時にパステーブル３２の全パスを出力する。
【００５３】
また、パスが延長可能な場合、パステーブル登録部１８は、パーツ抽出部１６に対して各文字列からパーツを抽出させ、該当パスレコードへのパーツの登録を行い、パスを延長する。なお本システムでは、１つのパスから異なる文になる複数のパス候補を生成できるので、パス候補の本数は多くなる。
【００５４】
次に、パス削減部１９は、パスレコードに記憶されたパーツの各スコアを足し合わせることで、各パスの合計スコアを計算し、スコアの高いもの、つまりスコアの良いものから順に、例えば予め決めておいた削減数（閾値Ｎ本：この例では「３」）のパス候補を残し、それよりもスコアの低いパス候補を削除してパス候補の本数を削減する。
【００５５】
次に、部分出力部２０は、残ったそれぞれのパス候補の単語の切れ目の位置を調べ、すべてのパスで同一の位置に切れ目がある場合、その位置を確認する。切れ目のような位置が複数存在する場合には先頭からもっとも離れた位置を採用する。
【００５６】
そして、先頭からその切れ目の位置までのパスの内容を出力する。あるいはすべての切れ目を採用して、切れ目から切れ目までをそれぞれのブロックとしてすべて出力する。このとき、同じ内容の文字列があるときはその中の１つだけ出力して残りは省略する。
【００５７】
次に、部分出力部２０は、各パスにおいて、部分出力した位置の次の文字以降の文字列を先頭から並ぶように、先頭部分につめる。
【００５８】
このとき同じ内容のパスがある場合には１つのパスで代表させて残りはパステーブル３２から外す。また、部分出力部２０は、これに加えて、あるパスの区切り方がすべて含まれる、より長いパスが他に存在するときは、その短い方のパスを削除する。その後、パステーブル３２の更新に戻り、上記同様の処理を繰り返す。
【００５９】
ここで、図６乃至図１０を参照して、上記動作により、パステーブル３２の内容が変化する様子を説明する。
【００６０】
抽出された単語候補を用いて文章の探索を行う際には、まず、初期状態としてパステーブル３２を空にする。最初の１回目の探索で、左端の単語候補を読み出して、それを文章の候補としてパステーブル３２に登録する。この図６の例では、単語候補として、「水の」、「杏の」、「杏子」、「永久歯」等とった４候補が登録される。
【００６１】
図６の中で、括弧内の数値はスコアである。これら４個の候補単語はそれぞれパスを構成しており、この段階でパステーブル３２には４本のパスがあることになる。ここではパス削減の閾値を「５」とし、パスを５本以内に削減する。しかし、この段階ではまだパス本数は「４」なので、削減は行なわれない。
【００６２】
次に、区切り位置の調査を行う。この処理では各パスに登録されている単語は１個ずつなので、単語の最終位置が区切り位置である。図中、点線で示すように単語の長さが一致せず、また区切り位置も一致していない。このため、一致する区切り位置は「なし」として最初の処理に戻る。
【００６３】
２回目の探索処理では、登録済みのパスにそれぞれ後続する候補単語を追加していく。この２回目の追加で、図７に示すように、パステーブル３２には１０本のパスができる。ただし，ここでは古いパスを削除することとして説明している（以下同様）。これを、２回目の削除で、スコア順に５本に削減する。そして、区切り位置をチェックすると、先頭から２文字のところで点線に示すように全パスに共通の区切り位置が検出される。
【００６４】
この検出結果に基づいて各パスの先頭から２文字を部分出力として出力する。この場合、文字列は全部で５個存在するが、異なるものは「水の」と「杏の」の２個であるので、この２個を部分出力する。
【００６５】
部分出力後、パステーブル３２から「水の」と「杏の」の２個を削除し、各パスを左つめにする。すると、同じ文字列のパス「流れ」や「流れの」が出てくるので、それらを１個で代表させて、残りはパステーブル３２から外す。引き続き３回目の処理に移る。
【００６６】
３回目の探索では、２回目で作られたパステーブル３２の各パスにさらに候補単語を接続させて同様の処理を行なう。この例では、図８に示すように、「流れの  ような」、「流れの  大東京」、「流れ  しみ」、「流れる  ような」、「流れる  大東京」といったパスであり、各パス共通の区切り位置が存在しないため、部分出力「なし」とし、次の４回目の処理に移る。
【００６７】
４回目の探索では、図９に示すように、パス共通の文字数のパス（点線で囲まれた部分）が存在し、また各パス共通の区切り位置も存在する。したがって、この中から、２個の文字列「流れのような」、「流れるような」が部分出力される。
【００６８】
図１０に示すように、５回目は、上記同様の処理の結果、部分出力「なし」となる。
【００６９】
６回目の探索では、上記同様の処理の結果、図１１に示すように、「薄い  ショールを」、「薄い  三百  ノルム」、「暮色  ショールを」、「暮色  三百  ノルム」、「乱れる  百人  科学」等の５個の文字列が部分出力され、これがパステーブル３２内のすべての文字列なので、部分出力後、パステーブル３２は空にされる。
【００７０】
これ以降、後続する候補単語が無くなってパステーブル３２の更新ができなくなるので、処理を終了させる。またパステーブル３２に残ったパスも無く、最後の全パス出力は省略される。この結果、図１２に示すように、第１番目の最初のブロックとして「水の」、「杏の」、２番目のブロックとして「流れのような」、「流れるような」、３番目のブロックとして「薄いショールを」、「薄い三百ノルム」、「暮色ショールを」、「暮色三百ノルム」、「乱れる百人科学」などいった出力ブロック４０が得られ、可能性のある複数のパス候補がディスプレイ４に表示される。
【００７１】
この第１実施形態では、１つの文字に対する文字認識結果として得られる候補文字（文字コードまたはテキストデータ）の組がエレメント、候補単語がパーツ、候補単語列がパスである。パスが出力される際には、複数の文字列がまとめられて出力されるが、ここではこれをブロックと呼ぶ。図１２では、点線で囲まれた文字列が１つ１つのブロックであり、この例では３ブロックが出力されている。この例では、各ブロック内で２通り、２通り、５通りの文字列の選択が可能で、都合２０通りの文字列を表現することができる。
【００７２】
このようにこの第１実施形態によれば、認識対象をパターン認識する上で、認識対象から抽出した複数の候補の文字列の中のそれぞれの部分パスを区分してパーツ間の切り目が同じ部分パスを複数残すこと、すなわち、逐次出力型ビームサーチ（吐き出しビームサーチ）により、可能性のある複数の認識候補を得ることができる。
【００７３】
従来、同様な入力画像をパターン認識する場合、３通りしか出力されず、特に文字列の前半部分でのバリエーションが失われてしまうが、この実施形態によれば、可能性のある文字列候補を失うことなく出力することができる。
【００７４】
（第２実施形態）
次に、図１３乃至図２２を参照して第２実施形態を説明する。
この第２実施形態は、入力画像から１個１個の部分文字画像を取り出しパターン認識する画像処理の例である。
【００７５】
図１３に示すように、この例では、例えば「水の流れ」などといった画像が、認識対象の入力画像である。エレメント抽出部１５は、この入力画像から１つ１つの文字を構成する可能性のある部分文字画像（エレメント）を切り出し、抽出する。
【００７６】
この部分文字画像の抽出処理は、黒連結領域を抽出したり、またはその抽出された黒連結領域の輪郭形状に基づいて横方向に分割するなど、さまざまな手法が知られており、この中から適切な手法を用いるものとする。
【００７７】
図１４に、部分文字画像の抽出処理の結果として切り出した部分文字画像の例を示す。
この例では、最小単位の部分文字画像の列が得られる。この部分文字画像の列は、切り出し順に８個の部分文字画像Ａ〜Ｈが順に並べられている。
【００７８】
部分文字画像の上部のアルファベットＡ〜Ｈは、個々の部分文字画像をパーツと考えたときの各パーツの名称であり、その右に記載されている数値はそのパーツの文字としての確からしさを表すスコアである。つまり部分文字画像を単独でパターン認識した結果である。
【００７９】
この確からしさを表すスコアは、例えばそのパーツのサイズや縦横比率などから算定することが可能であり、実際にその画像を対象として文字認識を行ない、その結果から確からしさを決定するなど、文字認識の分野で様々な手法が知られており、本実施例では、その中から適切な手法を選んで用いることとする。
【００８０】
つまり、ここでのスコアは、辞書データと抽出された部分文字画像とを比較して類似度を算出した結果であるものとする。ここでのパーツＡ〜Ｈは上述したエレメントに相当する。
【００８１】
パーツ抽出部１６は、エレメント抽出部１５により抽出された部分文字画像の列の隣どうしの部分文字画像を連結することにより、仮想的な１文字画像、すなわち仮想文字画像を作成する。仮想文字画像は、エレメントを連結したパーツに相当し、連結の仕方の違いで、図１５に示すように、複数の仮想文字画像の列（ａ）〜（ｆ）が生成される。
【００８２】
なお、仮想文字画像の列（ａ）から仮想文字画像の列（ｆ）に向かうほど、列の数が減っているのは重複するパーツを除いたためである。またエレメントは１つでもパーツに成り得るので、図１４に示した部分文字画像Ａ〜Ｈもそのままパーツ（仮想文字画像）となる。
【００８３】
図１６は、図１５に示した各パーツを、認識対象の画像として文字画像の候補を決定する手順を説明したものである。まず、パステーブル初期化部１４はパステーブル３２を空にする。そして、パステーブル登録部１８はパステーブル３２に第０パスレコードを設けた上で、最初の仮想文字画像を登録する。
【００８４】
この例では、先頭から続く３個の仮想文字画像「フ」、「フ｜」、「水」が、パスとして登録される。図１６の括弧内はスコアであり、各仮想文字画像の文字としての確からしさに基づいて計算された数値である。
【００８５】
これら３個の仮想文字画像「フ」、「フ｜」、「水」は、それぞれパスを構成しており、この段階でパステーブル３２には３本のパスがあることになる。この例では、パス削減部１９またはメモリに予めパス削減の閾値を「３」と設定したものとし、パス削減部１９はパスを３本以内に削減する。このようにすると、この段階では、まだ全てのパス本数が「３」なので、仮想文字画像「フ」、「フ｜」、「水」は１つも削減されない。
【００８６】
次に、部分出力部２０が、区切り位置の調査を行う。この段階では各パスに登録されている仮想文字画像は１個ずつなので、これらの仮想文字画像の最終位置が区切り位置である。図１６の点線で示す区切りのライン３３に、仮想文字画像の最終位置が一致しないので、区切り位置も一致していない。このため、一致する区切り位置は「なし」として最初の処理に戻る。
【００８７】
２回目の処理では、パステーブル登録部１８が、パステーブル３２の登録済みのパスに、それぞれ後続する仮想文字画像を追加登録していく。この結果、図１７に示すように、パステーブル３２には９本のパスが登録される。これをパス削減部１９がスコア順に３本に削減する。そして、部分出力部２０が区切り位置をチェックすると、仮想文字画像「水」の後ろの部分で、点線で示すように全パスに共通の区切り位置が検出される。
【００８８】
部分出力部２０は、この検出結果に基づいて各パスの先頭から仮想文字画像「水」の部分を部分出力として出力する。この場合、仮想文字画像列は全部で３個あるが、異なるものは仮想文字画像「フ｜，く」と仮想文字画像「水」の２個であるため、この２個が出力される。部分出力部２０は、部分出力した後の各パスを左つめにする。
【００８９】
このとき、同じ文字列のパスが出てきた場合、それらを１個で代表させて残りはパステーブル３２から除外するようにするが、このケースではそのような状況が生じていないので、そのままとする。なお、図１７の中で「null」は空のパスを意味する。引き続き３回目の処理に移る。
【００９０】
３回目では、２回目で作られたパステーブル３２の各パスにさらに後続する仮想文字画像を接続させて同様の処理を行なう。この例では、図１８に示すように、各パス共通の区切り位置が、仮想文字画像「の」の後ろの位置３４で検出されるため、仮想文字画像「Ｃ，つ」と仮想文字画像「の」の２個のパスが部分出力される。
【００９１】
次の４回目では、図１９に示すように、各パス共通の区切り位置（仮想文字画像間の切れ目）がないため部分出力されない、つまり部分出力は「なし」である。
【００９２】
５回目では、図２０に示すように、仮想文字画像
2011138411.tif 000003
などの３個の仮想文字画像列が部分出力される。これがパステーブル３２内のすべての仮想文字画像列なので、部分出力後の該当仮想文字画像の削除処理により、パステーブル３２の記憶内容は空になる。
【００９３】
これ以降、後続する仮想文字画像がなくなり、パステーブル３２の更新ができなくなるので、このコンピュータ１０におけるパターン認識処理を終了する。パステーブル３２に残ったパスも無いので最後の全パス出力は省略される。
【００９４】
部分出力の結果、図２１に示すように、第１番目の最初のブロックとして仮想文字画像「フ｜，く」と仮想文字画像「水」の２つの仮想文字画像列、２番目のブロックとして仮想文字画像「Ｃ，つ」と仮想文字画像「の」の２つの仮想文字画像列、３番目のブロックとして仮想文字画像
2011138411.tif 000004
などの３つの仮想文字画像列などといった出力ブロック４１が得られ、可能性のある複数のパス候補が出力される。
【００９５】
この第２実施形態では、部分文字画像がエレメント、仮想文字画像がパーツ、仮想文字画像列がパスである。部分出力の際に、複数の仮想文字画像列がまとめられて出力されるが、これをここではブロックと呼ぶ。図２１の点線で囲まれた仮想文字画像の列がブロックであり、この例では３ブロックが出力されている。
【００９６】
したがって、この例では、各ブロック内で２通り、２通り、３通りの仮想文字画像列の選択が可能であり、都合１２通りの仮想文字画像列を表現することができる。途中で部分出力しない従来のビームサーチ手法では、パス削減の閾値を「３」と設定した場合、３通りの候補しか出力されることはない。
【００９７】
図２１に示した仮想文字画像を文字認識した結果の例を図２２に示す。図２２に示すように、点線の矩形内の２つの文字が認識結果であり、そのうち上が第１位の結果、下が第２位の結果である。この１つの点線の矩形が図２１の１つの仮想文字画像に対応している。
【００９８】
例えば、図２２の「イり」は、図２１の仮想文字画像「フ｜」を文字認識した結果であり、その隣の「くス」は図２１の仮想文字画像「く」を文字認識した結果である。以下同様に図２２と図２１とでは同じ位置の仮想文字画像と文字認識結果が対応している。
【００９９】
このようにこの第２実施形態によれば、文字認識前の入力画像に対して逐次出力型ビームサーチ（吐き出しビームサーチ）を適用することで、可能な仮想文字画像列候補を失うことなく複数の仮想文字画像列候補を出力することができる。この処理の後、得られた各仮想文字画像を、入力画像として文字認識を行ない、その文字認識結果をまとめて出力することにより、図１３に示した文字列画像の認識を実行することができる。
【０１００】
次に、図２３および図２４のフローチャートを参照して上記第１実施形態および第２実施形態で文字と画像について個々に説明した逐次出力型ビームサーチ（吐き出しビームサーチ）の汎用的な動作を説明する。
【０１０１】
このため、各用語について定義することにする。認識対象から特徴抽出や認識によって得られるデータをエレメントと呼び、その列をエレメント列と呼ぶ。第２実施形態のような文字画像の切り出しの例ではエレメントは切り出した文字画像の候補の最小単位、すなわち隣り合う切り出し位置に挟まれた部分画像に相当する。また複数のエレメントからなるセットをパーツと呼ぶ。
【０１０２】
これは具体的には切り出した単独の部分画像や隣合う部分画像どうしを結合した文字画像に相当する。このパーツを並べた列をパスと呼ぶ。ここでパスの開始位置の定義は、そのパスの先頭パーツの先頭エレメントとする。同様に、終了位置は末尾パーツの末尾エレメントである。開始位置と終了位置が同じ複数のパスを格納したテーブルをブロックと呼ぶ。またパステーブル３２には、開始位置が等しい複数のパスが格納されるものとする。
【０１０３】
上記のように定義した場合、このコンピュータ１０の処理動作は以下のようになる。
パステーブル３２に長さ０のパスを１個のみ登録する（図２３のステップＳ１０１）。ブロック番号ｉ＝０とし（ステップＳ１０２）、認識対象がつきるまで下記ステップＳ１０３〜ステップＳ１１９の処理を繰り返す。
【０１０４】
パステーブル３２へ登録すべきデータ（パス）の作業領域となる一時バッファ領域をメモリに用意し、その領域を空にする（ステップＳ１０３）。
【０１０５】
パステーブル３２に登録されているパスの数をｎ_ｐとして（ステップＳ１０４）、０＜ｎ_ｐについてステップＳ１０５〜ステップＳ１０９の処理を実行する。
【０１０６】
パステーブル３２からｊ番目のパスＰ_ｊを取り出す（ステップＳ１０５）。
パスＰ_ｊに後続する可能性のあるパーツを取り出し、パスＰ_ｊに後続させて新しいパスＰ’を複数個作成し、これらをメモリの一時バッファ領域に追加登録する（ステップＳ１０６）。
【０１０７】
そして、この新規作成された各パスに対してスコア計算を行う（ステップＳ１０７）。ｊ＝ｊ＋１とし（ステップＳ１０８）、ｊ＜ｎ_ｐを満たすか否かを判定する（ステップＳ１０９）。
【０１０８】
ｊの値がｎ_ｐの値よりも小さい場合（ステップＳ１０９のＹｅｓ）、ステップＳ１０５へ戻り、処理を繰り返す。
【０１０９】
そして、ｊの値がｎ_ｐの値以上になった場合（ステップＳ１０９のＮｏ）、メモリの一時バッファ領域に登録されているパスについて、それらに付属しているスコアに基づいてソート処理を行ない、上位ｎ個のパスを残す（ステップＳ１１０）。但しｎ＜ｍとする。ｍはパステーブルの最大サイズである。
【０１１０】
次に、メモリの一時バッファ領域からパステーブル３２にパスをコピーする。またｎ_ｐ＝ｎとする（ステップＳ１１１）。
【０１１１】
パステーブル３２内のｊ番目のパスに含まれるパーツをＤｊｋと記述する。ここでｊはパス番号、ｋがそのパス内でのパーツ番号である。先頭エレメントが同じパーツがパステーブル内の総てのパスに存在する場合、そのパーツが何個目の一致パーツであるのかをｔで表し、第ｊパスにおけるｔ番目の一致パーツのパーツ番号をα（ｔ,ｊ）と記述する。これにより、そのパーツは、Ｄｊ，α（ｔ，ｊ）と表わせる。
【０１１２】
各パスの先頭パーツにおいては、その先頭エレメントは、総てのパスで一致しているので、α（０，ｊ）＝０である。この第０番目の一致パーツも含めて一致パーツの個数をＴとする（ステップＳ１１２）。
【０１１３】
次に、Ｔ＝１と設定し（ステップＳ１１３）、０＜ｔ＜ＴについてステップＳ１１１〜Ｓ１１７までの処理を繰り返す。
【０１１４】
パーツＤｊ，α（ｔ−１，ｊ）からＤｊ，α（ｔ，ｊ）−１までのパーツ列を各ｊ番目のパスから取り出し、それらをまとめて第ｉ番目のブロックＢｉとして出力する。このとき、同じパーツ列は１個で代表させる（ステップＳ１１５）。そしてｉをインクリメントし（ステップＳ１１６）、ステップＳ１１４に戻る。
【０１１５】
そして、ｔがＴを超えた場合（ステップＳ１１４のＮｏ）、ｔの値が１かどうかを判定する（ステップＳ１１７）。
【０１１６】
この判定の結果、ｔの値が１でなければ（ステップＳ１１７のＮｏ）、各パスにおいて、パーツＤｊ，０からＤｊ，α（Ｔ−１，ｊ）−１までのパーツを削除し、Ｄｊ，α(Ｔ−１，ｊ）以降のパーツのパーツ番号を０からに置き替える（ステップＳ１１８）。直観的に言えば、左に詰める。
【０１１７】
また、ステップＳ１１７の判定の結果、ｔの値が１であれば（ステップＳ１１７のＹｅｓ）、ブロック出力しないものと判定する。
【０１１８】
続いて、パステーブル３２を参照してパステーブル３２に後続させることのできる認識対象が存在するかどうかを判定し（ステップＳ１１９）、存在する場合（ステップＳ１１９のＹｅｓ）、ステップＳ１０３に戻り処理を繰り返す。
【０１１９】
また、パステーブル３２に後続させることのできる認識対象が存在しない場合（ステップＳ１１９のＮｏ）は、パステーブル３２の内容をブロックとして出力する（ステップＳ１２０）。
【０１２０】
（第３実施形態：出力フォーマット）
図２２に示した文字認識結果は、配置するデータフォーマットも表している。ここで、例えば、各文字認識結果の候補のデータとして、文字認識結果として得られる信頼度と文字コードの２つを出力したいものとする。さらに、１つの仮想文字画像に対してＮ個の候補が得られたものとする。
【０１２１】
こうすることで、２Ｎ個のデータが１つの仮想文字画像の認識結果として得られることになる。これをパーツと呼ぶ。このパーツを連結したものがパスであり、図２２の実線の矩形の枠内の点線の矩形が横に並んだものである。さらにこのパスを１つあるいは複数まとめたものをブロックと呼ぶ。
【０１２２】
図２２で言えば、パスを縦に並べたものを１つのかたまりとして囲った実線の矩形がブロックである。このブロックを複数並べて出力フォーマットとすることによって、数多くの認識結果候補を効率良く少ないデータ量で表すことができる。図２２で符号Ｂ０〜Ｂ２はブロック番号。０〜６はパスの番号。Ｃ０〜Ｃ１２はパーツ番号である。
【０１２３】
なお、本実施形態では、仮想文字画像を構成する部分文字画像がエレメントに相当する。また、各パーツ、各パス、各ブロックはどのように配置してもよい。本発明は、出力するデータをパーツ、パス、ブロックの形態に整理して表現することにある。
【０１２４】
以下に、このデータ形式の例を示す。これはＣ言語の構造体の形式である。
struct PS_INFO {
int ans[CMAX];
int rst[CMAX];
};
struct BO{
int blockno; 
int path_ok[BOMAX],path_st[BOMAX],path_en[BOMAX];
int parts_st[PATHMAX],parts_en[PATHMAX],p_score[PATHMAX];
struct PS_INFO *ps_info[PSMAX];
};
【０１２５】
ここで、変数blocknoはブロック総数を表す。
配列の値、path_st[i]とpath_en[i]はi番目のブロックに含まれているパスを表すもので、i番目のブロックに含まれているパスが、path_st[i]番からpath_en[i]番までの番号のパスであることを表している。ここでpath_ok[i]にはそのパスのうち最も確からしいパスの番号が格納されている。
【０１２６】
次に、parts_st[j]とparts_en[j]はj番目のパスに含まれているパーツを表すもので、j番目のパスに含まれているパーツが、parts_st[j]番からparts_en[j]番までの番号のパーツであることを表している。ここでp_score[j]はj番目のパスの確からしさを表す数値である。
【０１２７】
パーツの情報は構造体PS_INFOにあり、例えば、それは上記のように、候補文字の文字コードans[h]とそれに対応する文字認識の結果として得られる確からしさrst[h]からなる。それぞれ複数の候補があるので配列となっている。k番目のパーツ情報はps_info[k]に格納されている。
【０１２８】
この第３実施形態によれば、ブロックを複数並べて出力フォーマットとすることによって、数多くの認識結果候補を効率良く少ないデータ量で表すことができる。
【０１２９】
（第４実施形態：連結パスリスト生成）
次に、図２２に示した出力データに対して文字認識後の処理を適用する動作を説明する。図２５は図２２の認識結果のデータ（出力データ）の符号を書き換えたものである。図２５ではパーツの識別記号であるパーツ番号をＡ〜Ｍとしている。
【０１３０】
また各パスの左側の数値は、パスの確からしさを表す数値（スコア）である。この例では前述したように１２通りのパスの連結が考えられる。その各連結パス内のパーツの中に複数の文字認識結果として得られる文字候補があるので、それらの組み合わせは膨大である。
【０１３１】
この例では、説明をわかりやすくするために組み合わせの数を少なくしているので、全組み合わせはそれほど多くは無いが、実用レベルでの組み合わせ数、例えばブロック内のパス数を「４」、ブロック数を「３２」、文字候補数を「１６」、連結パス内の平均パーツ数を「６４」などとすると、全ての組み合わせは、延べで「２の２８９乗」という、膨大な数になってしまう。このシステムでは、このような場合でも、現実的な探索回数で文字認識後処理が行なえる。
【０１３２】
以下に、連結パス数が多い場合の動作を説明する。この図２５の各ブロックの中から１つのパスを選択して組み合わせると１２個の組み合わせを作成できる。これを図２６に示す。図２６は組み合わせてできた連結パス内のパーツのシーケンスを示すものであり、先頭の括弧内の数値は各パスの確からしさの値（スコア）を合計したものである。これは分岐の無いパスなので単線パスとも呼べるものである。
【０１３３】
次に、この中から確からしさの合計値の、値の大きいものを優先し、例えば図２７に示すような５個の連結パスのリストを作成する。この連結パスのリストをパス内部のパーツも含めて表示したものを図２８に示す。
【０１３４】
この図２８に示すリストを連結パスリストと呼ぶ。この連結パスリスト内の１個の連結パスを用いて、その中から単語候補を抽出する。その方法としては公知の手段が知られており、そのような手法を任意に採用して用いることができる。全てのパスについて単語候補を求める。単語候補を求めた結果の例を図２９に示す。
【０１３５】
図２９において、各単語候補の左側の数値は単語の確からしさを表す数値（スコア）である。このような単語候補のリストに対して、公知の文字認識後処理を適用することにより、適切な単語候補列を求めることができる。この例ではスコアの高い組み合わせとして最終的にスコアが「９」点の単語候補である「水の」と、スコアが「９」点の単語候補である「流れ」が選択される。最終的に後処理結果として「水の流れ」が選択される。
【０１３６】
なお、ここでの説明ではスコアを用いた絞込みを行なったが、スコアを用いずに全ての連結パスを登録するようにしてもよい。また、この後処理部分に、第１実施形態で説明した文字列の探索方法を用いることもできる。以下、その場合の処理手順を説明する。
【０１３７】
図２５の例ではブロック数が少ないため連結パスの組み合わせの数が「１２」と実行可能な数に収まっているが、ブロック数が多いと実行可能な範囲を超えてしまう。このような場合にも適用できるように処理手順を次のようにすることができる。
【０１３８】
すなわち、第１実施形態における後処理のプロセスにおいて、候補単語の検索、および追加の段階で、連結パスリストの生成を行う。第１実施形態ではｎ回目のつめの作業が終了したパステーブル３２に対して単語検索および検索された単語の追加を行ったが、このとき、単語を追加する前のパステーブル３２に格納されている各パスについて、単語検索に先立って連結パスリスト生成を行う。
【０１３９】
なお，本実施例での入力は図２５に示したようなブロック表現のデータであり，また一方で出力も同様なブロック表現されたデータなので，両者を混同しやすく，ここで注意しておく。各パスの最後の部分に後続するブロックを開始ブロックとして連結パスリスト生成を行う。このとき、連結パスリストが大きくなり過ぎないように、処理ブロック数や連結パスに含まれる候補文字に関してその総数や候補文字全部の文字列の物理的な長さなどを制限として、そこまでで連結パスの生成を終了させるようにコントロールする。
【０１４０】
連結パスリストを生成する上で、あるパスリスト内のパスＡの先頭からのある位置ｘまでの内容が、パスリスト内のそれまでに生成されたＡ以外のパスの中に存在するかどうかを調べ、存在する場合、Ａの先頭から位置ｘまでの長さをＬとして、そのＬの最大値をdupとしてパスＡの情報として付加しておく。
【０１４１】
こうしておくことで、後にこのパスＡを用いて探索を行なう場合に探索すべき長さが dup以下であれば、そのパス以前のパスで同様の探索が行なわれているので探索を省略し、無駄に同じ探索を繰り返さないように制御できる。
【０１４２】
次に、前述した連結パスリスト生成手順で説明した方法により単語検索を行なう。この連結パスリスト内の各連結パスにおいて検索された単語をまとめて、その全て、または一部を用いて、これをパステーブル３２内のパスに後続させて新しい候補単語が追加されたパスを作成する。このとき、追加した単語に後続する位置情報を当該パスに情報として付与しておく。この位置情報とは、その位置が含まれるブロック番号、パス番号、パーツ番号である。
【０１４３】
上記の説明は単語の追加を行なう位置が後続するブロックの先頭である場合のものであり、その位置がブロック内部の場合には上記のプロセスにおいて最初のブロックに関しては次のように処理する。
【０１４４】
すなわち、後続するブロック内において後続すべき位置が含まれるパスのみを連結パスリスト生成の対象とするのである。２番目のブロック以降は開始位置がブロックの先頭である場合と同じで良い。
【０１４５】
なお、生成開始位置がブロックの先頭にあるとは、位置を表す情報のうちパーツ番号がパス内の先頭パーツの場合であり、このケースでは、どのパスでも同様にその先頭から始められるので、パス番号は特に意味が無い。
【０１４６】
生成開始位置がブロックの内部にあるとは、位置を表す情報のうちパーツ番号がパス内の先頭パーツで無い場合であり、このケースでは、パス番号で指定されたパスからしか生成を開始できない。
【０１４７】
ここで、図３０のフローチャートを参照して、連結パスリスト生成の際にパステーブル３２の各パスに単語を追加するコンピュータ１０の処理手順を説明する。このフローは図２３のＳ１０３からＳ１０９に相当するもので，その部分を置き換える形で使用する。その前後は図２３と同じなので，このＳ１０３からＳ１０９に相当する部分のみを記述した。この場合、ＣＰＵは、まず、メモリにレジスタｊを設定し、そのレジスタｊに０を設定し、一時バッファ領域を空にする（図３０のステップＳ２０１，Ｓ２０２）。
【０１４８】
次に、レジスタｊの値からパスＰ_ｊを取り出し，このパスに後続する後続開始位置を得る（後続開始位置については下のステップに記載）。（ステップＳ２０３，Ｓ２０４）
【０１４９】
続いて、後続開始位置がブロックの先頭か否かを判定し（ステップＳ２０５）、後続開始位置がブロックの先頭でなければ（ステップＳ２０５のＮ）、後続開始位置のブロック内の開始位置を含むパスを開始ブロックの代わりに用い、その次のブロック以降も含めて連結パスリストを作成する（ステップＳ２０６）。
【０１５０】
また、後続開始位置がブロックの先頭であれば（ステップＳ２０５のＹ）、開始ブロックを後続開始位置のブロックとして連結パスリストを作成する（ステップＳ２０７）。
【０１５１】
その後、作成した連結パスリストの各連結パスに対してその先頭から続く部分について単語検索を行う（ステップＳ２０８）。
【０１５２】
単語検索の結果、検索された単語を処理対象の第ｊパスに後続させて新しいパスを作り、一時バッファ領域に登録する（ステップＳ２０９）。このとき後続させた単語に続く位置を当該新パスに登録する。位置はブロック番号，パス番号，パーツ番号である。
【０１５３】
最後に、この新規作成された各パスに対してスコア計算を行なうとともに、レジスタｊに「１」を加算して（ステップＳ２１０，Ｓ２１１）、ｊがｎ_ｐ（ｎ_ｐは図２３参照）以下であれば（ステップＳ２１２），ステップＳ２０３に戻る。
【０１５４】
なお、ここでの説明では、図２２の出力データ（この出力データが本実施例の入力となっている）を生成する手法として第２実施形態を想定しているが、出力データを生成する手法は、このようなフォーマットの出力を得られる方法であれば、いかなる方法でもよく、フォーマットも上述した実施形態に限定されるものではない。
【０１５５】
このようにこの第４実施形態によれば、連結パス数が多い場合に、連結パスリストを生成することにより、現実的な探索回数で文字認識後処理を行うことができる。
【０１５６】
（第５実施形態：ＤＰ（Dynamic Programming）型検索の例）
ここで文字切り出しをＤＰタイプの方式で行なった別の実施例を説明する。図３１は文字の切り出しをＤＰで行なった場合の例である。図中、縦の点線が文字の切り出し位置候補、その上の番号が切り出し位置番号「０」〜「５」、横の矢印線が切り出し文字候補「Ａ」〜「Ｅ」である。
【０１５７】
例えば切り出し位置番号「１」に至る文字候補は「Ａ」であり、以降、切り出し位置番号「２」が文字候補「Ｂ」、切り出し位置番号「３」が文字候補「Ｃ」、切り出し位置番号「４」が文字候補「Ｄ」、切り出し位置番号「５」が文字候補「Ｅ」である。
【０１５８】
これらの文字候補はその位置へ至るベストの候補である。このベストの候補を右から後向きにトレースして行けば、切り出し位置番号「５」に至る文字候補「Ｅ」，「Ｅ」の始点の切り出し位置番号「３」に至る文字候補「Ｃ」を得ることができ、最終的に文字候補「Ｃ」、「Ｅ」がベストの文字候補列として選ばれる。ここでも文字候補列をパスと呼ぶことにすれば、ベストパスが選ばれることになる。
【０１５９】
このようにＤＰはベストパスを高速に求められる点が特徴であるが、ビームサーチのように複数の候補パスを求めることも以下のように実施すれば可能である。
【０１６０】
図３１の各切り出し位置において、そこへ至るベスト文字候補の代わりにＮ個のベストパスを記憶する。そのために次のような処理を導入する。
【０１６１】
処理対象切り出し位置に対して、それより前の切り出し位置のうち、処理対象切り出し位置へ至る文字候補が存在する場合に、その前の切り出し位置に記録されているＮ個のベストパスを取り出し、それにそこから処理対象切り出し位置へ至る文字候補を追加し、新たにＮ個の候補パスを作る。
【０１６２】
それらの各パスについて何らかのスコアを計算しておく。これを処理対象切り出し位置より前の総ての切り出し位置について行ない、それによって得られた候補パスの中からスコアに基づいてＮ個のベストパスを選択し、この処理対象切り出し位置に記録する。
【０１６３】
これを総ての切り出し位置について求めると、最終的に図３１の切り出し位置番号「５」の切り出し位置にきたときに得られるＮ個のベストパスが最終的に求められるＮベストの候補パスということになる。
【０１６４】
次に、この手法に上述した掃き出し手法を導入する。つまり、ある切り出し位置に総てのパスの終点が集まっていて、その切り出し位置を飛び越すパスが無い場合に、その位置で掃き出す。
【０１６５】
総ての切り出し位置からその位置より後の総べての切り出し位置へ至る文字候補全部を無制限に可能としてしまうと上記のようなケースは出てこないので掃き出すことはできないが、一般には文字らしさをチェックすることで、かなりのものが枝刈りされるので、ある程度掃き出すことはできると考えられる。例えば、英文の場合で単語間スペースが長いようなケースである。
【０１６６】
このようにこの第５実施形態によれば、ＤＰ型検索を導入することにより複数の候補パスを高速に求めることができる。
【０１６７】
なお、本願発明は、上記実施形態のみに限定されるものではない。上記実施形態では、画像からテキストを認識する文字認識や画像自体のパターンを認識する例について説明したが、パターン認識の対象は、この他、例えば音声パターンなどを認識対象としてもよく、パターン認識技術が対象とするものであればどのようなパターンであってもよい。
【０１６８】
また、例えば入力されたエレメント列全てに対して本発明を適用するのではなく、エレメント列の一部分に対してのみ適用してもよい。
【０１６９】
具体的な例としては、日本語文字列が入力されたときに、定ピッチ部分と想定される部分とそうで無い部分に分けるピッチ推定部を設け、その出力によって不定ピッチと想定される部分に対して本発明を適用する方式は有効である。
【０１７０】
さらに、入力された文字列に対して本実施形態を用いない仮の文字切り出しと文字認識を行ない、認識精度が悪いと推定された部分に対してビームサーチやＤＰ型検索を実施して再度文字切り出しと文字認識を行ってもよい。
【０１７１】
また、例えば各構成要素を、コンピュータのハードディスク装置などのストレージにインストールしたプログラムで実現してもよく、また上記プログラムを、コンピュータ読取可能な電子媒体：electronic mediaに記憶しておき、プログラムを電子媒体からコンピュータに読み取らせることで本発明の機能をコンピュータが実現するようにしてもよい。電子媒体としては、例えばＣＤ−ＲＯＭ等の記録媒体やフラッシュメモリ、リムーバブルメディア：Removable media等が含まれる。
【０１７２】
さらに、ネットワークを介して接続した異なるコンピュータに構成要素を分散して記憶し、各構成要素を機能させたコンピュータ間で通信することで実現してもよい。
【符号の説明】
【０１７３】
１…入力ユニット、３…スキャナ、４…ディスプレイ、１０…コンピュータ、１１…入力インターフェース部（入力Ｉ／Ｆ）、１２…文字認識部、１３…区切り検出部、１４…パステーブル初期化部、１５…エレメント抽出部、１６…パーツ抽出部、１７…パス生成部、１８…パステーブル登録部、１９…パス削減部、２０…部分出力部、２１…パス統合出力部、２２…出力インターフェース部（出力Ｉ／Ｆ）、３０…記憶装置、３１…処理対象画像記憶部、３２…パステーブル、３５…帳票定義記憶部、３６…辞書データ記憶部、３７…認識結果記憶部。
【図１】
2011138411.tif 000005
【図２】
2011138411.tif 000006
【図３】
2011138411.tif 000007
【図４】
2011138411.tif 000008
【図５】
2011138411.tif 000009
【図６】
2011138411.tif 000010
【図７】
2011138411.tif 000011
【図８】
2011138411.tif 000012
【図９】
2011138411.tif 000013
【図１０】
2011138411.tif 000014
【図１１】
2011138411.tif 000015
【図１２】
2011138411.tif 000016
【図１３】
2011138411.tif 000017
【図１４】
2011138411.tif 000018
【図１５】
2011138411.tif 000019
【図１６】
2011138411.tif 000020
【図１７】
2011138411.tif 000021
【図１８】
2011138411.tif 000022
【図１９】
2011138411.tif 000023
【図２０】
2011138411.tif 000024
【図２１】
2011138411.tif 000025
【図２２】
2011138411.tif 000026
【図２３】
2011138411.tif 000027
【図２４】
2011138411.tif 000028
【図２５】
2011138411.tif 000029
【図２６】
2011138411.tif 000030
【図２７】
2011138411.tif 000031
【図２８】
2011138411.tif 000032
【図２９】
2011138411.tif 000033
【図３０】
2011138411.tif 000034
【図３１】
2011138411.tif 000035