(57)【要約】【課題】識別精度及び棄却精度がともに高い識別関数を生成する。【解決手段】プロセッサ及び記憶装置を有する文字認識装置であって、記憶装置は、複数の文字種の複数の学習用文字画像を保持し、プロセッサは、各学習用文字画像をベクトルに変換し、文字種ごとに、ベクトル空間上の楕円型二次識別関数を定義し、楕円型二次識別関数を用いて学習用文字画像を識別したときの誤差の程度を測る損失関数を定義し、楕円型二次識別関数を用いて、複数の学習用文字画像から選択されたサンプルを識別したときの損失関数の値が小さくなるように、サンプルのベクトルの位置を移動させるための修正ベクトルを計算し、修正ベクトルに基づいて、楕円型二次識別関数の係数を、楕円型を維持したまま、損失関数の値が小さくなるように修正し、修正された係数を有する楕円型二次識別関数を、入力された文字画像の識別及び棄却に使用する識別関数として記憶装置に保存する。【選択図】図１８
2015185033.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ及び記憶装置を有する文字認識装置であって、
前記記憶装置は、複数の文字種の複数の学習用文字画像を保持し、
前記プロセッサは、
前記各学習用文字画像を所定の次元数のベクトルに変換する特徴抽出処理と、
前記文字種ごとに、前記所定の次元数のベクトル空間上の楕円型二次識別関数を定義する二次関数初期設定処理と、
前記楕円型二次識別関数を用いて前記学習用文字画像を識別したときの誤差の程度を測る損失関数を定義する損失関数定義処理と、
前記楕円型二次識別関数を用いて、前記複数の学習用文字画像から選択されたサンプルを識別したときの前記損失関数の値が小さくなるように、前記サンプルのベクトルの位置を移動させるための修正ベクトルを計算するサンプル位置修正幅計算処理と、
前記修正ベクトルに基づいて、前記楕円型二次識別関数のパラメータを、前記楕円型二次識別関数の等高線を楕円形に維持したまま、前記損失関数の値が小さくなるように修正する係数修正処理と、
前記修正されたパラメータを有する前記楕円型二次識別関数を、入力された文字画像の識別及び棄却に使用する識別関数として前記記憶装置に保存する保存処理と、を実行することを特徴とする文字認識装置。
【請求項２】
請求項１に記載の文字認識装置であって、
前記プロセッサは、
前記サンプル位置修正幅計算処理において、前記サンプルが属する文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算し、さらに、前記サンプルが属する文字種以外の文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算し、
前記係数修正処理において、計算された前記修正ベクトルの各々について、前記楕円型二次識別関数の等高線の楕円形の中心が、前記修正ベクトルの逆方向に移動するように、前記楕円型二次識別関数のパラメータを修正することを特徴とする文字認識装置。
【請求項３】
請求項１に記載の文字認識装置であって、
前記プロセッサは、
前記サンプル位置修正幅計算処理において、前記サンプルが属する文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算し、さらに、前記サンプルが属する文字種以外の文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算し、
前記係数修正処理において、計算された前記修正ベクトルの各々について、前記楕円型二次識別関数の等高線の楕円形の中心の位置を始点とし、移動前の前記サンプルの位置を終点とするベクトルから、前記楕円形の中心の位置を始点とし、移動後の前記サンプルの位置を終点とするベクトルへの変換を、ベクトルの回転及びスケール変換によって表現し、前記楕円形が前記ベクトルの回転方向の逆方向に回転するように、前記楕円型二次識別関数のパラメータを修正することを特徴とする文字認識装置。
【請求項４】
請求項１に記載の文字認識装置であって、
前記プロセッサは、
前記サンプル位置修正幅計算処理において、前記サンプルが属する文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算し、さらに、前記サンプルが属する文字種以外の文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算し、
前記係数修正処理において、計算された前記修正ベクトルの各々について、前記楕円型二次識別関数の等高線の楕円形の中心の位置を始点とし、移動前の前記サンプルの位置を終点とするベクトルから、前記楕円形の中心の位置を始点とし、移動後の前記サンプルの位置を終点とするベクトルへの変換を、ベクトルの回転及びスケール変換によって表現し、前記スケール変換が拡大であれば前記楕円形を縮小し、前記スケール変換が縮小であれば前記楕円形を拡大するように、前記楕円型二次識別関数のパラメータを修正することを特徴とする文字認識装置。
【請求項５】
請求項１に記載の文字認識装置であって、
前記プロセッサは、
前記サンプル位置修正幅計算処理において、前記サンプルが属する文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算し、さらに、前記サンプルが属する文字種以外の文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算し、
前記係数修正処理において、計算された前記修正ベクトルの各々について、前記楕円型二次識別関数の等高線の楕円形の軸への前記サンプルのベクトルの射影の分布の分散値に基づいて、前記楕円型二次識別関数の主軸の大きさを変更するように、前記楕円型二次識別関数のパラメータを修正することを特徴とする文字認識装置。
【請求項６】
請求項１に記載の文字認識装置であって、
前記プロセッサは、前記二次関数初期設定処理において、前記各文字種の複数の文字画像のベクトルの分布がガウス分布であると仮定してガウス分布のパラメータを推定することによって修正二次識別関数を定義することを特徴とする文字認識装置。
【請求項７】
請求項１に記載の文字認識装置であって、
前記プロセッサは、入力された文字画像のベクトルを引数として前記各文字種の識別関数の値を計算し、前記入力された文字画像の識別結果として、計算された識別関数の値が最も大きい文字種を出力し、最も大きい識別関数の値が所定の閾値より小さいか、又は、最も大きい識別関数の値と２番目に大きい識別関数の値との差が所定の閾値より小さい場合、前記入力された文字画像に関する棄却フラグを出力することを特徴とする文字認識装置。
【請求項８】
プロセッサ及び記憶装置を有する文字認識装置であって、
前記記憶装置は、複数の文字種の複数の学習用文字画像を所定の次元数のベクトルに変換し、前記文字種ごとに、前記所定の次元数のベクトル空間上の楕円型二次識別関数を定義し、前記楕円型二次識別関数を用いて前記学習用文字画像を識別したときの誤差の程度を測る損失関数を定義し、前記楕円型二次識別関数を用いて、前記複数の学習用文字画像から選択されたサンプルを識別したときの前記損失関数の値が小さくなるように、前記サンプルのベクトルの位置を移動させるための修正ベクトルを計算し、前記修正ベクトルに基づいて、前記楕円型二次識別関数のパラメータを、前記楕円型二次識別関数の等高線を楕円形に維持したまま、前記損失関数の値が小さくなるように修正することによって生成された楕円型二次識別関数を、入力された文字画像の識別及び棄却に使用する識別関数として保持し、
前記プロセッサは、入力された文字画像のベクトルを引数として前記各文字種の識別関数の値を計算し、前記入力された文字画像の識別結果として、計算された識別関数の値が最も大きい文字種を出力し、最も大きい識別関数の値が所定の閾値より小さいか、又は、最も大きい識別関数の値と２番目に大きい識別関数の値との差が所定の閾値より小さい場合、前記入力された文字画像に関する棄却フラグを出力することを特徴とする文字認識装置。
【請求項９】
プロセッサ及び記憶装置を有する文字認識装置が実行する識別関数生成方法であって、
前記記憶装置は、複数の文字種の複数の学習用文字画像を保持し、
前記識別関数生成方法は、
前記各学習用文字画像を所定の次元数のベクトルに変換する特徴抽出手順と、
前記文字種ごとに、前記所定の次元数のベクトル空間上の楕円型二次識別関数を定義する二次関数初期設定手順と、
前記楕円型二次識別関数を用いて前記学習用文字画像を識別したときの誤差の程度を測る損失関数を定義する損失関数定義手順と、
前記楕円型二次識別関数を用いて、前記複数の学習用文字画像から選択されたサンプルを識別したときの前記損失関数の値が小さくなるように、前記サンプルのベクトルの位置を移動させるための修正ベクトルを計算するサンプル位置修正幅計算手順と、
前記修正ベクトルに基づいて、前記楕円型二次識別関数のパラメータを、前記楕円型二次識別関数の等高線を楕円形に維持したまま、前記損失関数の値が小さくなるように修正する係数修正手順と、
前記修正されたパラメータを有する前記楕円型二次識別関数を、入力された文字画像の識別及び棄却に使用する識別関数として前記記憶装置に保存する保存手順と、を含むことを特徴とする識別関数生成方法。
【請求項１０】
請求項９に記載の識別関数生成方法であって、
前記サンプル位置修正幅計算手順は、前記サンプルが属する文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算する手順と、前記サンプルが属する文字種以外の文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算する手順と、を含み、
前記係数修正手順は、計算された前記修正ベクトルの各々について、前記楕円型二次識別関数の等高線の楕円形の中心が、前記修正ベクトルの逆方向に移動するように、前記楕円型二次識別関数のパラメータを修正する手順を含むことを特徴とする識別関数生成方法。
【請求項１１】
請求項９に記載の識別関数生成方法であって、
前記サンプル位置修正幅計算手順は、前記サンプルが属する文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算する手順と、前記サンプルが属する文字種以外の文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算する手順と、を含み、
前記係数修正手順は、計算された前記修正ベクトルの各々について、前記楕円型二次識別関数の等高線の楕円形の中心の位置を始点とし、移動前の前記サンプルの位置を終点とするベクトルから、前記楕円形の中心の位置を始点とし、移動後の前記サンプルの位置を終点とするベクトルへの変換を、ベクトルの回転及びスケール変換によって表現し、前記楕円形が前記ベクトルの回転方向の逆方向に回転するように、前記楕円型二次識別関数のパラメータを修正する手順を含むことを特徴とする識別関数生成方法。
【請求項１２】
請求項９に記載の識別関数生成方法であって、
前記サンプル位置修正幅計算手順は、前記サンプルが属する文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算する手順と、前記サンプルが属する文字種以外の文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算する手順と、を含み、
前記係数修正手順は、計算された前記修正ベクトルの各々について、前記楕円型二次識別関数の等高線の楕円形の中心の位置を始点とし、移動前の前記サンプルの位置を終点とするベクトルから、前記楕円形の中心の位置を始点とし、移動後の前記サンプルの位置を終点とするベクトルへの変換を、ベクトルの回転及びスケール変換によって表現し、前記スケール変換が拡大であれば前記楕円形を縮小し、前記スケール変換が縮小であれば前記楕円形を拡大するように、前記楕円型二次識別関数のパラメータを修正する手順を含むことを特徴とする識別関数生成方法。
【請求項１３】
請求項９に記載の識別関数生成方法であって、
前記サンプル位置修正幅計算手順は、前記サンプルが属する文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算する手順と、前記サンプルが属する文字種以外の文字種の前記楕円型二次識別関数を用いて前記サンプルを識別したときの前記損失関数の値が小さくなるように前記修正ベクトルを計算する手順と、を含み、
前記係数修正手順は、計算された前記修正ベクトルの各々について、前記楕円型二次識別関数の等高線の楕円形の軸への前記サンプルのベクトルの射影の分布の分散値に基づいて、前記楕円型二次識別関数の主軸の大きさを変更するように、前記楕円型二次識別関数のパラメータを修正する手順を含むことを特徴とする識別関数生成方法。
【請求項１４】
請求項９に記載の識別関数生成方法であって、
前記二次関数初期設定手順は、前記各文字種の複数の文字画像のベクトルの分布がガウス分布であると仮定してガウス分布のパラメータを推定することによって修正二次識別関数を定義する手順を含むことを特徴とする識別関数生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光学的文字認識技術に関し、特に、特徴空間上における文字の識別技術に関する。
【背景技術】
【０００２】
本技術分野の背景技術として、特開２０１０−３９７７８号公報（特許文献１）がある。特許文献１には、「辞書生成用特徴パターン群を用いて、多項式ニューラルネットワークにより二次関数を学習し、二次関数の主要成分を保存する部分空間を選択することにより、特徴空間の次元を削減する。初期係数設定ステップ、係数修正ステップでは、二次関数を識別関数として用いた場合の損失関数の値が小さくなるように、勾配降下法又は確率的勾配降下法により係数を修正する。基底ベクトル導出ステップは、二次関数の二次の項の二次形式の行列の固有ベクトルと、一次の項の係数ベクトルを導出する。次に、射影行列導出ステップは、固有ベクトルと係数ベクトルとの中から主成分となる１つ以上のベクトルを選択し、選択されたベクトルによって生成される部分空間を新たな特徴空間として生成する。」と記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−３９７７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
文字認識における識別関数として、識別精度と識別速度の双方で高いパフォーマンスをもつ二次関数が広く用いられる。二次関数には、放物型、双曲型、楕円型の３つの型がある。
【０００５】
従来技術による識別関数の生成方法のうち、誤読にかかる損失関数を定義し、損失関数の値が小さくなるように係数を学習サンプルに基づいて繰り返し修正することで、識別関数を作成する方法がある（例えば特許文献１参照）。この方法では、一般的には、識別関数は楕円型とならない。
【０００６】
この様子を図１５に模式的に示した。等高線で示したものは、文字種“Ｘ”の識別関数の等高線である。文字種“Ｘ”とその他の文字種を分けるように等高線ができており、文字種“Ｘ”を示す丸の図形がある側が識別関数の値が大きい側、反対側が識別関数の値が小さい側である。この方法では、異なる文字同士を分けるように識別関数が生成されるが、図１５に示すように、高い値をとる領域に非文字が位置する場合がある。したがって、識別精度は高いが、非文字棄却精度は低いという問題がある。
【０００７】
従来技術による識別関数の別の生成方法として、各字種の文字の分布にガウス分布を仮定して、ガウス分布の分布密度に基づいて識別関数を定める方法がある。この方法では、図１７のように、識別関数が楕円型となる。この場合には、損失関数などを小さくするように直接係数を調整する方法ではないため、識別精度は低いが、棄却精度は高い。
【０００８】
そこで、識別関数を楕円型に維持しつつ、損失関数の値が小さくなるように係数を修正することで、識別関数を作成し、高い正読率と高い棄却率を実現することが課題である。
【課題を解決するための手段】
【０００９】
本発明の代表的な一例を示せば次の通りである。すなわち、プロセッサ及び記憶装置を有する文字認識装置であって、前記記憶装置は、複数の文字種の複数の学習用文字画像を保持し、前記プロセッサは、前記各学習用文字画像を所定の次元数のベクトルに変換する特徴抽出処理と、前記文字種ごとに、前記所定の次元数のベクトル空間上の楕円型二次識別関数を定義する二次関数初期設定処理と、前記楕円型二次識別関数を用いて前記学習用文字画像を識別したときの誤差の程度を測る損失関数を定義する損失関数定義処理と、前記楕円型二次識別関数を用いて、前記複数の学習用文字画像から選択されたサンプルを識別したときの前記損失関数の値が小さくなるように、前記サンプルのベクトルの位置を移動させるための修正ベクトルを計算するサンプル位置修正幅計算処理と、前記修正ベクトルに基づいて、前記楕円型二次識別関数のパラメータを、前記楕円型二次識別関数の等高線を楕円形に維持したまま、前記損失関数の値が小さくなるように修正する係数修正処理と、前記修正されたパラメータを有する前記楕円型二次識別関数を、入力された文字画像の識別及び棄却に使用する識別関数として前記記憶装置に保存する保存処理と、を実行することを特徴とする。
【発明の効果】
【００１０】
本発明の一態様によれば、文字認識において、高い正読率と高い非文字棄却率を実現できる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例の文字認識装置の構成の一例を示すブロック図である。
【図２】本発明の実施例の文字認識装置による文書電子化の処理の流れの典型的な例を示すフローチャートである。
【図３】本発明の実施例の文字認識装置による文書電子化の処理の流れの具体例を示す説明図である。
【図４】本発明の実施例の文字認識装置による文字切出処理の説明図である。
【図５】本発明の実施例の文字認識装置による文字識別の結果の説明図である。
【図６】本発明の実施例の文字認識装置による認識結果の候補のネットワークの説明図である。
【図７】本発明の実施例の文字認識装置による特徴抽出の処理の例を示す説明図である。
【図８】本発明の実施例の文字認識装置による勾配特徴抽出方法の第１の説明図である。
【図９】本発明の実施例の文字認識装置による勾配特徴抽出方法の第２の説明図である。
【図１０】本発明の実施例の文字認識装置による文字識別用の方式の説明図である。
【図１１】本発明の実施例の文字認識装置が保持する学習用文字画像データベースの例を示す説明図である。
【図１２】本発明の実施例の文字認識装置によって棄却される文字の第１の例を示す説明図である。
【図１３】本発明の実施例の文字認識装置によって棄却される文字の第２の例を示す説明図である。
【図１４】従来の識別関数の生成方法の第１の例の説明図である。
【図１５】従来の方法によって生成された識別関数の第１の例の説明図である。
【図１６】従来の識別関数の生成方法の第２の例の説明図である。
【図１７】従来の方法によって生成された識別関数の第２の例の説明図である。
【図１８】本発明の実施例の文字認識装置による識別関数の作成方法を示すフローチャートである。
【図１９】本発明の実施例の文字認識装置による識別関数のパラメータの修正を模式的に示した説明図である。
【図２０】本発明の実施例の文字認識装置による楕円型の識別関数の中心の移動の説明図である。
【図２１】本発明の実施例の文字認識装置による楕円型の識別関数の中心以外のパラメータの変更の説明図である。
【発明を実施するための形態】
【００１２】
以下、本発明の文字認識装置の実施例について、図表を参照しながら説明する。本実施例の文字認識装置は、例えば紙文書をスキャナ等によって読み取ることで取得された入力文書画像中の文字を検知、認識し、文字をコード化することよって、入力文書を電子化する装置である。入力文書には、一般文書の他に、例えば、帳票、明細書などがある。
【００１３】
図１は、本発明の実施例の文字認識装置の構成の一例を示すブロック図である。
【００１４】
本実施例の文字認識装置２０１は、例えば、押印認識および帳票認識を行うものであり、入力装置２０２、表示装置２０３、イメージ取得装置２０４、通信装置２０５、演算装置（ＣＰＵ）２０６、外部記憶装置２０７を備える。外部記憶装置２０７は、学習用文字画像データベース２１３及び文字識別用辞書２１４を含む。
【００１５】
入力装置２０２は、例えば、コマンド等を入力するためのキーボードおよびマウス等である。入力装置２０２は、演算装置（ＣＰＵ）２０６で実行されるプログラムの制御や、その他、接続機器の制御のために実行されるコマンド等を入力するための装置である。
【００１６】
表示装置２０３は、処理内容を適宜表示するディスプレイ等の装置である。
【００１７】
イメージ取得装置２０４は、スキャナなどのイメージ取得用の装置である。取得したイメージは、外部記憶装置２０７等に記憶してもよい。
【００１８】
通信装置２０５は、ＰＣまたはサーバ等の外部機器（図示省略）との間のデータのやりとりを行うために用いる。通信装置２０５は、外部機器からのユーザによる実行コマンドの取得や、画像やテキストなどの情報の外部機器からの取得等の目的に用いられる。また、通信装置２０５は、文字認識装置２０１での処理内容を外部機器に送信する等の目的にも用いられる。
【００１９】
演算装置（ＣＰＵ）２０６は、文書画像中の文字認識に用いる文字識別用辞書２１４の生成などの処理を実行する演算装置である。
【００２０】
外部記憶装置２０７は、ハードディスクドライブ（ＨＤＤ）およびメモリ等の外部記憶装置である。外部記憶装置２０７には、学習用文字画像データベース２１３および文字識別用辞書２１４などの各種データが保存されている。また、外部記憶装置２０７は、演算装置（ＣＰＵ）２０６によって実行される処理の途中で生成されるデータ等を一時的に記憶しておくためにも用いられる。
【００２１】
入力装置２０２、表示装置２０３、イメージ取得装置２０４および通信装置２０５はなくてもよい。入力装置２０２が無い場合には、文字認識装置２０１は、通信装置２０５を用いて外部機器から指示されたときに処理を開始してもよいし、または、時刻指定等により自動的に処理を開始してもよい。表示装置２０３が無い場合には、処理結果は通信装置２０５を用いて外部機器に送信されるか、外部記憶装置２０７に記憶される。
【００２２】
処理を実行するモジュールの出力と入力は、外部記憶装置２０７を介して行ってもよい。すなわち、例えば演算装置２０６によって実現されるある処理部（図示省略、ここでは処理部１と記載する）が、処理結果を演算装置２０６によって実現される別の処理部（図示省略、ここでは処理部２と記載する）に出力し、処理部２は、その処理結果を入力として受け取る場合、実際には、処理部１が処理結果を外部記憶装置２０７に出力し記憶しておき、処理部２は、外部記憶装置２０７に記憶されている処理部１の出力結果を入力として取得してもよい。
【００２３】
次に、本実施例における文字認識装置２０１によって実施される処理の説明に移る。
【００２４】
以下では、まず、本発明の実施例の文字認識装置２０１が実行する文書電子化処理を、図２等を用いて説明する。その後、本実施例の特徴である、文書電子化に使用される文字識別用辞書２１４の生成処理を、図１８等を用いて説明する。
【００２５】
まず、本発明の実施例の文字認識装置が実行する文書電子化処理について説明する。
【００２６】
図２は、本発明の実施例の文字認識装置２０１による文書電子化の処理の流れの典型的な例を示すフローチャートである。また、図３は、本発明の実施例の文字認識装置２０１による文書電子化の処理の流れの具体例を示す説明図である。
【００２７】
文書の画像化（スキャン）５０１では、文字認識装置２０１のＣＰＵ２０６は、イメージ取得装置２０４（例えばスキャナ等）により文書を読込み、画像化する。このときに、背景印刷がカラーで印字されている場合などは、ＣＰＵ２０６は、特定の色の印字を光学的に除去するカラードロップアウト等の処理を行う場合もある。入力文書は、一般文書、帳票類、また、初めから文字認識装置で処理する目的で作成されているマークシート用紙等がある。
【００２８】
前処理５０２では、ＣＰＵ２０６は、文書画像のカラー画像の二値化（白黒化）、ノイズ除去、及び、背景印刷などの不要部分の除去等の処理を行う。前処理後の二値画像は、例えば、図３の帳票画像６０１のようになる。
【００２９】
レイアウト解析５０３で、ＣＰＵ２０６は、二値画像のレイアウト解析を行い、図表の位置、段落構造、および項目とデータの位置などを認識する。項目とデータの位置については、ＣＰＵ２０６は、例えば、帳票画像６０１の場合には、表構造の関係から、「支払金額」が項目名で、その下の「７，８９０，１２３」が記載されている枠がデータ枠である、などと解析する。論文および技術報告書の場合などには、文書の構造と位置関係から、タイトル、著者、要旨、ページ番号などが書かれている位置を認識するなどのメタデータ抽出を行う場合もある。
【００３０】
文字列抽出５０４では、ＣＰＵ２０６は、文書画像中から文字列単位の画像を抽出する。ＣＰＵ２０６は、一般文書の場合には１行分の画像、表の場合には枠内の画像、など文字列単位の画像を抽出する。例えば、図３の文字列６０２のように、表の「７，８９０，１２３」が記載された枠内の画像を抽出する。
【００３１】
文字切出５０５、文字認識５１２、認識結果選定５０９、の一連の処理では、抽出した各文字列画像中の文字を認識する。ここでの処理は、図３の文字切出６０３のように、文字列画像を文字単位に分割して、各々の文字画像中の文字を認識することにより、最終的に文字コード等の計算機が扱えるコード６０４に変換する。
【００３２】
上記の文字列抽出５０４から後の、文字切出５０５から認識結果選定５０９までの処理を、例を挙げて説明する。
【００３３】
図４は、本発明の実施例の文字認識装置２０１による文字切出処理の説明図である。
【００３４】
まず、文字切出５０５について説明する。例えば、文字列抽出５０４によって、図４の画像１００１のような文字列画像が得られたとする。まず、文字切出５０５の処理では、ＣＰＵ２０６は、文字線同士が交差する点や、文字線が途切れた点などを基に、切断候補点を作成する。図４の画像１００２が、切断候補点による分割を示す。この例では、文字列画像が４つの画像に分割されている。この各分割画像と、隣接した複数個の画像の合成が、文字画像候補となる。図４の画像１００３の例では、左から１つ目と２つ目の画像を合成した画像、及び、左から２つ目と３つ目の画像を合成した画像も、それぞれ文字画像候補とすることによって、６つの文字画像候補を得ている。左端の点を始点とし、右端の点を終点とする、左から右に至る各ルート上の文字画像が、画像１００１の文字列の切出し候補となる。
【００３５】
図５は、本発明の実施例の文字認識装置２０１による文字識別の結果の説明図である。
【００３６】
次に、文字認識５１２では、ＣＰＵ２０６は、候補となっている個々の文字画像中の文字を認識する。ここでは、例えば、図５のように各文字画像７０１に対する正解候補文字と、その正解候補文字に対する類似度（尤度、信頼度）を得る。図５の例では、各文字画像について複数の正解候補文字が得られる。それらのうち最も類似度が高いものが１位候補文字種７０２、その類似度が１位候補文字類似度７０３、次に類似度が高いものが２位候補文字種７０４、その類似度が２位候補文字類似度７０５であり、同様にさらに下位のｎ位候補文字種が得られてもよい。
【００３７】
次に、ＣＰＵ２０６は、文字認識５１２で得た正解候補文字と類似度を基に、認識結果の候補となるネットワークを作成する。
【００３８】
図６は、本発明の実施例の文字認識装置２０１による認識結果の候補のネットワークの説明図である。
【００３９】
具体的には、図６のネットワーク１１０１は、一例として、図４に示すように切り出された文字画像中の文字を認識した結果を示す。それぞれの文字画像の右上に表示された文字が正解候補文字であり、一つの文字画像について複数の正解候補文字（例えば１位候補文字種及び２位候補文字種）が得られてもよい。
【００４０】
ネットワーク１１０１から文字画像を除いたものが、ネットワーク１１０２である。左端の点を始点とし、右端の点を終点とする、左から右に至る各ルートが認識結果候補となる。また、ここでは、ＣＰＵ２０６は、文字画像の認識結果の信頼性が低いと判断した場合、棄却処理を行い、認識結果に対して棄却フラグを立てるなどして、認識結果の信頼性が低いことを後の処理、またはユーザに知らせる。
【００４１】
この文字認識５１２の内部の処理について説明する。ここでは、ＣＰＵ２０６は、個々の文字画像中に描かれている文字を認識する（文字識別５０６）。また、認識結果の棄却処理も行う（非文字棄却５０７および曖昧文字棄却５０８）。
【００４２】
まず、文字識別５０６について説明する。ここでは、まず、ＣＰＵ２０６は、文字画像をベクトル値に変換する特徴抽出処理を行う。ベクトル値の次元数をＮとすると、特徴抽出処理によって、１つの文字画像はＮ次元ベクトルとして表現される。文字画像をベクトル値として表現することにより、文字画像の分布を統計的に扱うことが可能となる。
【００４３】
図７は、本発明の実施例の文字認識装置２０１による特徴抽出の処理の例を示す説明図である。
【００４４】
まず、ＣＰＵ２０６は、文字画像の正規化を行う。一般に入力文字画像は、サイズが異なる。そのため、正規化では、文字画像のサイズを揃えることによって、後の処理で統一的に扱えるようにする。また、入力文字画像は、筆記具、筆記者、フォントなどの違いによって同じ字種の文字であっても字形が大きく異なる場合がある。このことは、認識精度低下の原因となる。そこで、正規化処理では、入力文字画像のサイズの変形と字形の変形によって、サイズを統一し、同一字種間での字形のばらつきを低減する。
【００４５】
図７の画像１４０１が入力文字画像の例であり、画像１４０２は入力文字画像を６４×６４画素のサイズに変形した正規化画像である。正規化処理に関しては、様々な方法があり、例えば、Mohammed Cheriet, Nawwaf Kharma, Cheng lin Liu, and Ching Suen. Character Recognition Systems: A Guide for Students and Practitioners. Wiley-Interscience, 2007（以下、単に文献「Character Recognition Systems」とも記載する）に詳しく記載されている。
【００４６】
次に、ＣＰＵ２０６は、正規化によって生成された正規化画像をベクトル値に変換する特徴抽出を行う。特徴抽出にも様々な方法があり、例えば、上記の文献「Character Recognition Systems」に詳しく記載されている。ここでは、最も簡単な画素特徴抽出の例を用いて説明する。画素特徴抽出では、正規化画像を小領域に分割する。図７の例では、正規化画像１４０２を６４個の小領域に分割している。分割の様子を画像１４０３に示した。次に、各小領域の黒画素の個数を要素とするベクトル値に変換する。小領域が６４個あるため、ベクトル１４０４のように６４次元のベクトル値が生成される。
【００４７】
広く用いられている特徴抽出の方法のもう一つ例として、勾配特徴抽出方法について説明する。
【００４８】
図８及び図９は、それぞれ、本発明の実施例の文字認識装置２０１による勾配特徴抽出方法の第１の説明図及び第２の説明図である。
【００４９】
ここでは、正規化によって生成される正規化画像には、１画素分の白縁をつけている（すなわち正規化画像の最外周の全ての画素の画素値が０である）とする。また、画素点（ｉ、ｊ）の正規化画像の画素値をｆ（ｉ、ｊ）とおく。このとき、ＣＰＵ２０６は、正規化画像の各画素点（ｉ、ｊ）において、勾配ベクトルｇ＝（ｇｘ、ｇｙ）を以下のように計算する。これは、図８に示すフィルタをかけることに相当する。
【００５０】
ｇｘ（ｉ、ｊ）＝[ｆ（ｉ＋１、ｊ＋１）＋２ｆ（ｉ、ｊ＋１）＋ｆ（ｉ−１、ｊ＋１）−ｆ（ｉ＋１、ｊ−１）−２ｆ（ｉ、ｊ−１）−ｆ（ｉ−１、ｊ−１）]／８
ｇｙ（ｉ、ｊ）＝[ｆ（ｉ＋１、ｊ＋１）＋２ｆ（ｉ＋１、ｊ）＋ｆ（ｉ＋１、ｊ−１）−ｆ（ｉ−１、ｊ＋１）−２ｆ（ｉ−１、ｊ）−ｆ（ｉ−１、ｊ−１）]／８
【００５１】
ただし、上記の式において、画素点（ｉ、ｊ）が画像の縁にある場合には、その周囲の画素点が画像の領域外となる場合がある。そのときは、画像外の領域におけるｆの値は０と考えて、上記の式を計算する。これによって、各画素点（ｉ、ｊ）において、画素値の勾配ベクトルｇ＝（ｇｘ、ｇｙ）が得られる。
【００５２】
次に、ＣＰＵ２０６は、ベクトルｇ（ｉ、ｊ）を図９の参照番号２００１に示す４５度間隔の８方向ｇ０（ｉ、ｊ）、ｇ１（ｉ、ｊ）、…、ｇ７（ｉ、ｊ）のうち、ｇ（ｉ、ｊ）の方向に近接する２つの方向に分解する。但し、ｇ（ｉ、ｊ）の方向が８方向のいずれかに完全に一致する場合には、分解の必要はなく、仮に方向０に一致した場合には、ｇ０（ｉ、ｊ）＝ベクトルｇ（ｉ、ｊ）の長さ、とし、他の方向については、ｇ１（ｉ、ｊ）＝…＝ｇ７（ｉ、ｊ）＝０とおく。
【００５３】
図９の参照番号２００２の図によって、分解の方法を説明する。ＣＰＵ２０６は、参照番号２００２の図に示すように、ｇ（ｉ、ｊ）が方向０と方向１の間に存在する場合、ベクトルｇ（ｉ、ｊ）を方向０と方向１の成分に分解する。このとき、方向０の成分の長さをｐ０、方向１の成分の長さをｐ１とすると、ｇ０（ｉ、ｊ）＝ｐ０、ｇ１（ｉ、ｊ）＝ｐ１、ｐ２（ｉ、ｊ）＝…＝ｐ７（ｉ、ｊ）＝０とする。
【００５４】
以上のようにして、８つの方向画像ｇ０（ｉ、ｊ）、…、ｇ７（ｉ、ｊ）が生成される。文字の変形に対する頑健性を高めるために、この画像にガウスフィルタによるぼかしを施す場合もある。その場合には、ぼかしをかけた方向画像をあらためて、ｇ０（ｉ、ｊ）、…、ｇ７（ｉ、ｊ）とおく。次に、ＣＰＵ２０６は、各方向画像ｇｉ（ｘ、ｙ）を小領域に分割し、各小領域の画素値の合計値を要素とするベクトルを生成する。いま、各方向画像を６４の小領域に分割したとすると、各方向画像から６４個の値が得られる。これが、各方向について得られるため、８方向で合計６４×８＝５１２個の値が得られる。これらをベクトルの成分として、５１２次元のベクトルが生成される。
【００５５】
以上が、勾配特徴抽出方法の説明である。
【００５６】
以上のようにして、ＣＰＵ２０６は、文字画像をベクトル値に変換する。以下では、特徴抽出によって生成されるベクトル値の次元数をＮとする。これによって、１つ１つの文字画像は、Ｎ次元空間上の点として表現され、同一文字種は近い領域に分布することになる。その様子を次の図１０に模式的に示した。
【００５７】
図１０は、本発明の実施例の文字認識装置２０１による文字識別用の方式の説明図である。
【００５８】
図１０のグラフ上にプロットした丸、三角及び四角の図形がそれぞれ、文字種Ａ、文字種Ｂ及び文字種Ｃに対応する各文字画像から抽出されたＮ次元ベクトル点を表している。例えば、一つ一つの丸形の図形は、いずれも文字種Ａの画像から抽出されたベクトル点であるが、それぞれ異なる画像（例えば異なる書体の活字又は異なる人による手書き文字等）から抽出されたベクトル点を表している。
【００５９】
次に、ＣＰＵ２０６は、予め作成しておいた文字識別用辞書２１４を参照し、文字画像から抽出されたベクトル値に基づいて、文字画像中に描かれている文字を識別する。
【００６０】
ここで、まず、文字識別用辞書２１４について説明する。文字識別用辞書２１４には、例えば、各識別対象文字種ｋに対して、Ｎ次元ベクトルを引数にとり、実数値を値にとる識別関数ｆｋ（ｘ）が保存されている。識別関数ｆｋ（ｘ）は、文字種ｋが描かれている文字画像から生成されるＮ次元ベクトルｘに対しては大きい値を、その他の字種が描かれている文字画像から生成されるＮ次元ベクトルｘに対しては小さい値をとるように、予め、学習によって生成しておく。識別関数ｆｋ（ｘ）の値は、ベクトルｘの字種ｋに対する類似度、または尤度などと呼ばれる。例えば、数字を対象とした認識の場合には、０〜９の１０字種に対応して、１０個の識別関数ｆ０（ｘ）、ｆ１（ｘ）、…、ｆ９（ｘ）が存在する。
【００６１】
図１０の例では、入力された文字画像のＮ次元ベクトル９０１を引数として、文字種Ａ、Ｂ及びＣのそれぞれの識別関数の値を計算し、その値が最も大きい文字種が１位候補文字種、２番目に大きい文字種が２位候補文字種となる。
【００６２】
ＣＰＵ２０６は、この識別関数を、例えば、文字画像と文字ラベルから成る学習用文字画像データベースを用いて作成することができる。
【００６３】
図１１は、本発明の実施例の文字認識装置２０１が保持する学習用文字画像データベース２１３の例を示す説明図である。
【００６４】
図１１には、例として、それぞれ正方形の枠内に表示された文字画像と、それぞれの枠の右上に表示された文字ラベルと、を示す。文字ラベルは、文字画像中に描かれている文字を示すコード化されている正解ラベルである。例えば、文字画像１５０１及びそれに対応する文字ラベル１５０２は、文字画像１５０１が文字種「Ｄ」の画像であることを示している。
【００６５】
学習用文字画像データベース２１３は、例えば、指定の枠内に指定の文字を人に書いてもらうなどのように、文字画像を収集することで作成することができる。ＣＰＵ２０６は、この学習用文字画像データベース２１３に含まれている各画像を上記と同様の方法によってＮ次元ベクトルに変換する。ここで、ＣＰＵ２０６は、これらのＮ次元ベクトルと正解ラベルに基づいて、識別関数ｆｋ（ｘ）を字種ｋに対応するＮ次元ベクトルに対しては大きな値を、それ以外の字種に対応するＮ次元ベクトルに対しては小さな値をとるように学習により生成する。ここの学習の方法に関しては、従来技術と本発明の方法を後に説明する。
【００６６】
文字識別５０６では、ＣＰＵ２０６は、文字画像から抽出したＮ次元ベクトルｘを用いて、各字種の識別関数ｆｋ（ｘ）の値を計算する。識別関数ｆｋ（ｘ）の値は、字種ｋに対する類似度であるため、ｆｋ（ｘ）の値が最も大きい字種ｋが認識結果の第一位候補となる。同じように、二番目に値が大きい識別関数に対する字種ｋが認識結果の第二候補となる。このようにして第ｎ候補まで認識結果が得られる。例えば、図３の文字切出６０３によって切出した文字画像の認識は、図５のようになる。以上によって、図３の参照符号６０４が示すように認識結果が得られ、計算機が扱える文字コードなどのコードに変換される。
【００６７】
以上が文字識別５０６の説明である。
【００６８】
上記で説明した文字識別は、文字画像と各認識対象字種の類似度を計算し、それに基づいて、候補文字を得る処理である。ＯＣＲ装置の有用性を高めるためには、この文字識別の精度が重要である。しかし、認識結果が疑わしい場合には、それを知らせる認識結果の棄却処理も重要である。
【００６９】
図１２は、本発明の実施例の文字認識装置２０１によって棄却される文字の第１の例、具体的には非文字と曖昧文字の例を示す説明図である。
【００７０】
棄却の対象となるものには、たとえば、図１２の非文字１２０１および曖昧文字１２０２がある。非文字１２０１は、たとえば、文字切出のミスによる文字の一部、複数文字が合わさった画像、または汚れなどの外乱要因が混入したものなどがある。曖昧文字１２０２としては、たとえば、左端の画像のように７と９の区別がつかないものなどがある。
【００７１】
棄却処理が精緻であれば、いくつかの利点がある。ひとつは、もし、誤って文字を認識したまま結果が保存されると、誤ったままにするか、あるいは、これを修正するためには、全認識結果を人手によって再チェックしなければならない。これに対して、認識結果が疑わしい場合に、これをユーザに知らせることができれば、ユーザはその部分のみ修正すればよい。また、棄却を精度良く行うことができれば、その要因として、前処理、文字行抽出、文字切出など、前の処理に失敗している可能性があると判断して、前のいずれかの処理から処理方法や処理条件などを変えて、再度、処理を試すことができる。これにより、認識精度を高めることができる。
【００７２】
以下では、正しく文字画像中の文字を認識する率を正読率、誤って認識する率を誤読率、認識結果を棄却する率を棄却率とよぶことにする。一般に、棄却を強くしすぎると、誤読していたものを棄却するようになるだけでなく、正しく読めていたもののうちいくつかは棄却してしまうため、正読率、誤読率ともに低くなる。そのため、棄却は、正読率をなるべく落とさないように、かつ、誤読率を減少させるように行うことが望ましい。
【００７３】
以下では棄却判定部の処理である非文字棄却５０７及び曖昧文字棄却５０８について説明する。
【００７４】
非文字棄却５０７について説明する。入力文字画像から抽出されたＮ次元ベクトルをｘとする。また、第一位候補文字ｋ１に対応する識別関数をｆｋ１とする。このとき、ｆｋ１（ｘ）は文字種ｋ１に対する類似度である。ｒ１（ｘ）＝−ｆｋ１（ｘ）とおくと、ｒ１（ｘ）は、文字種ｋ１に対する非類似度とみなすことができる。そのため、ＣＰＵ２０６は、閾値ｈ１をあらかじめ定めておき、ｒ１（ｘ）＞ｈ１のとき、非類似度が高い（類似度が低い）として棄却の判断をする。これは、入力画像が非文字であったとき、第一位候補の文字に対しても類似度が低いことが想定されるため、非文字の棄却を想定したものである。
【００７５】
次に、曖昧文字棄却５０８について説明する。第二位候補文字ｋ２に対応する識別関数をｆｋ２とする。このとき、ｆｋ２（ｘ）は文字種ｋ２に対する類似度である。また、ｆｋ１（ｘ）≧ｆｋ２（ｘ）となる。ｒ２（ｘ）＝ｆｋ２（ｘ）−ｆｋ１（ｘ）とおくと、このｒ２（ｘ）の値が大きいほど、ｆｋ１（ｘ）とｆｋ２（ｘ）の値が近いことになる。このとき、第一位候補文字と第二位候補文字の間で識別が曖昧であることを示している。そのため、ＣＰＵ２０６は、閾値ｈ２をあらかじめ定めておき、ｒ２（ｘ）＞ｈ２のとき、識別結果が曖昧であるとして棄却する。この処理は、非文字棄却５０７において、すでに棄却判定がされている場合には、スキップしてもよい。
【００７６】
図１３は、本発明の実施例の文字認識装置２０１によって棄却される文字の第２の例、具体的にはかすれ文字１３０１及びつぶれ文字１３０２の例を示す説明図である。上記の棄却処理によって、かすれ文字１３０１及びつぶれ文字１３０２も棄却することが望ましい。
【００７７】
以上が、文字認識５１２での処理の説明である。ＣＰＵ２０６は、この処理を各文字画像に対して行う。ＣＰＵ２０６は、入力された文字画像の識別結果（例えば少なくとも１位候補文字種）を出力し、さらに、その文字画像について棄却が判定された場合には、さらに棄却フラグを出力してもよい。
【００７８】
認識結果選定５０９では、ＣＰＵ２０６は、単語辞書等を参照し、各文字に対する認識の類似度（信頼度）を総合的に判断しながら、認識結果候補の中から、最終的な認識結果を選定する。参照する単語辞書は、認識しようとする文書の種類に応じて選択してもよい。例えば、住所認識をしている場合には、予め、住所のリストを保存した辞書等を参照することができる。一般文書の認識の場合には、一般の単語などを保存した辞書が参照される。
【００７９】
以上が、文字切出５０５から認識結果選定５０９までの処理である。ＣＰＵ２０６は、この処理を各文字列画像に対して行う。
【００８０】
次に、リトライ判定５１０では、ＣＰＵ２０６は、処理を変えて認識の再処理を行うかどうか判断する。再処理は、例えば、文書画像全体を対象とする場合もあるし、文字列画像単位、文字画像単位の場合もある。例えば、文字列認識結果に類似度（尤度、信頼度）が低い文字が存在する場合、単語辞書に合致する結果が得られなかった場合、又は、読みとれなかった文字が存在する場合、などに、ＣＰＵ２０６は、再処理を行う。再処理を行う場合には、ＣＰＵ２０６は、これ以前のいずれかの処理から処理方式を変える、処理条件を変える、などして、再度認識を試す。例えば、前処理５０２の二値化又はノイズ除去の方式を変えるなどが行われる。最後に、認識後処理５１１では、ＣＰＵ２０６は、認識結果を記憶装置等に保存する、又はディスプレイに表示する、などの処理を行う。
【００８１】
以上が本発明の関連技術による文字認識装置の処理の流れである。
【００８２】
本発明の文字認識装置では、文字識別５０６の処理で用いる識別関数の生成方法に特徴がある。以下では、従来技術の方法について説明した後、本発明の方法について説明する。
【００８３】
まず、従来技術の方法について、二つの例を説明する。
【００８４】
図１４は、従来の識別関数の生成方法の第１の例の説明図である。この方法は、ＰＣ（Polynomial Classifier）と呼ばれる方法で、詳しくは上記の文献「Character Recognition Systems」に記載されている。
【００８５】
この処理は、入力となる学習用文字画像データベース２１３を用いて、識別関数を生成し、文字識別用辞書２１４に保存する。この識別関数は、文字認識装置において文字識別５０６の処理で文字を識別するために用いられる。後述するように、本発明の実施例の文字認識装置２０１は、図１４に示すものとは異なる方法で識別関数を生成するが、ここでは、便宜上、文字認識装置２０１が図１４に示す従来の方法で識別関数を生成するものとしてその詳細な手順を説明する。
【００８６】
まず、特徴抽出１６０１では、ＣＰＵ２０６が、文字識別５０６の特徴抽出処理と同様の方法を用いて、学習用文字画像データベースの各文字画像をＮ次元ベクトルに変換する。
【００８７】
次に、次元削減１６０２では、ＣＰＵ２０６が、特徴抽出１６０１で生成されるベクトルの次元数を削減する。次元削減をｈ（ｘ）とおくと、ｈは、Ｎ次元ベクトルｘを引数にとり、値ｙ＝ｈ（ｘ）はＭ次元ベクトル（ＭはＮより小さい正の整数）である。次元削減１６０２は、学習用文字画像データベースから生成されたベクトルを用いて、次元削減関数ｈを生成する。この方法には、主成分分析法（ＰＣＡ：Principal Component Analysis）または線形判別分析（ＬＤＡ： Linear Discriminant Analysis）などの方法を用いることができる。主成分分析法または線形判別分析法などを用いた場合には、ｈは、Ｍ×Ｎ行列Ｄによって表わすことができる。Ｄｘを計算することで、Ｍ次元ベクトルが得られる。
【００８８】
特徴抽出１６０１及び次元削減１６０２の結果、学習用文字画像データベースの各文字画像は、最終的にはＭ次元ベクトルに変換される。以下では、学習用文字画像データベースのｐ番目のサンプルから特徴抽出１６０１によって生成されるベクトルをｘｐ、次元削減１６０２によって生成されるベクトルをｙｐ＝ｈ（ｘｐ）とおく。
【００８９】
次に、初期設定１６０３では、ＣＰＵ２０６が識別関数の初期値を決定する。まず、各字種ｋに対して、Ｍ次元ベクトルを引数にとる二次関数
【００９０】
ｕｋ（ｙ）＝ΣΣｗｋｉｊ×ｙｉ×ｙｊ＋Σｗｋｉ×ｙｉ＋ｗｋ
【００９１】
を定める。ここで、ｙはＭ次元ベクトルで、ｙの第ｉ次元目の要素をｙｐｉなどと置いた。また、和は１からＭまでとる。ｗｋｉｊ、ｗｋｉ、ｗｋは、学習により後の処理で定めるパラメータである。ｗｋｉｊ、ｗｋｉ、ｗｋの初期値は、乱数を生成すること等によって定められる。このとき、字種ｋの識別関数は、Ｎ次元ベクトルを引数にとる
【００９２】
ｇｋ（ｙ）＝ｓ（ｕｋ（ｙ））
【００９３】
によって定める。ここで、ｙ＝ｈ（ｘ）である。ｓはシグモイド関数であり、
【００９４】
ｓ（ａ）＝１／（１＋ｅ＾（−ａ））
【００９５】
によって定義される。この関数は０以上１以下の実数値をとり、ａの値が小さいほど０近く、ａの値が大きいほど１に近い値をとる。
【００９６】
次に、損失関数定義１６０４では、ＣＰＵ２０６が、識別関数による識別によって生じる誤読に係る損失を定義する。ベクトルｙを字種ｋｉに所属する文字画像より特徴抽出１６０１と次元削減１６０２により生成されたＭ次元ベクトルであるとすると、ベクトルｙの識別による損失関数は、
【００９７】
ｅ（ｙ）＝[ｇｋｉ（ｙ）−１]＾２＋Σ[ｇｋｊ（ｙ）]＾２＋（β／Ｐ）[Σｗｋｉｊ＾２＋Σｗｋｉ＾２]
【００９８】
である。ここで第二項目の和は、ｋｉと異なる全ての字種ｋｊについて計算される。また、Σｗｋｉｊ＾２の和は全てのｋ、ｉ、ｊ、について、Σｗｋｉ＾２の和は、すべてのｋ、ｉについて計算される。Ｐは学習用文字画像データベースのサンプルの数であり、βはパラメータである。この損失関数の第一項目と第二項目は、識別関数ｆｋが字種ｋに所属するベクトルｙに対して１に近い値、それ以外のベクトルに対して０に近い値をとるように定義されている場合に、小さい値となる。第三項目は、正則化の項であり、精度向上に効果があることが知られている。この損失関数を用いて、学習用文字画像データベース全体を識別する際の損失は、
【００９９】
Ｅ＝Σｅ（ｙｐ）
【０１００】
によって定義される。ここで、和は全ての学習用文字画像データベースについて計算される。
【０１０１】
サンプル選定１６０５では、ＣＰＵ２０６が、係数修正１６０６で用いるサンプルを学習用文字画像データベースに基づいて生成されたＭ次元ベクトルｙから選定する。
【０１０２】
係数修正１６０６では、ＣＰＵ２０６が、サンプル選定１６０５により与えられたサンプルに対して、損失関数の値が小さくなるように、係数ｗｋｉｊ、ｗｋｉ、ｗｋを修正する。具体的には、係数ｗを
【０１０３】
ｗ  ←  ｗ−ρ（ｔ）（∂ｅ（ｙ）／∂ｗ）
【０１０４】
によって修正する。すなわち、係数ｗにｗ−ρ（ｔ）（∂ｅ（ｙ）／∂ｗ）を代入する。ここで、（∂ｅ（ｙ）／∂ｗ）はｅ（ｙ）のｗによる偏微分係数、ρ（ｔ）は修正の大きさを調整する関数である。ｔはサンプル選定１６０５から終了判定１６０７までの繰り返しの回数で、最初はｔ＝０である。ρ（ｔ）は単調減少関数、すなわち少しずつ修正の大きさが小さくなるように設定する。これを全ての係数ｗｋｉｊ、ｗｋｉ、ｗｋについて行う。
【０１０５】
次に、終了判定１６０７では、ＣＰＵ２０６は、繰り返し回数ｔが予め指定された回数をこえると終了と判定し、識別関数ｆｋ（ｘ）＝ｇｋ（ｙ）＝ｇｋ（ｈ（ｘ））を文字識別用辞書２１４に保存する。そうでない場合には、ｔを１増加させ、サンプル選定１６０５で次のサンプルを選定する。サンプル選定１６０５では、学習用文字画像データベースをランダムに巡回するように選択する。
【０１０６】
以上がＰＣの一つの例の簡単な説明である。このようにして係数を逐次的に修正していくことで、文字識別の誤差による損失が少ない識別関数を生成することができる。
【０１０７】
このようにして生成された係数に基づく関数ｕｋ（ｙ）は、二次関数であるため、双曲型、放物型、楕円型の型があるが、単に異なる字種を区別するに学習するため、楕円型となる可能性は低く、双曲型または放物型になる可能性が高い。そのため、ｕｋ（ｙ）に基づいて定まる識別関数ｆｋ（ｘ）の等高線は、次元削減後のＭ次元空間において、双曲型または放物型となる。
【０１０８】
図１５は、従来の方法によって生成された識別関数の第１の例の説明図である。
【０１０９】
図１４に示したＰＣによれば、Ｍ次元空間における識別関数ｆｋ（ｘ）の等高線、すなわち、ｇｋ（ｙ）の等高線は、図１５のように双曲型または放物型になる。この例において、識別関数ｆｋ（ｘ）は、文字種“Ｘ”の識別関数である。すなわち、字種ｋは文字種“Ｘ”である。等高線の文字種“Ｘ”が分布する側の領域でｆｋ（ｘ）の値が高くなり、反対側の領域でｆｋ（ｘ）の値が小さくなる。このように、ｆｋ（ｘ）の値の高い領域と低い領域を分ける等高線は、字種ｋ（文字種“Ｘ”）とそれ以外の字種を分離するように生成される。
【０１１０】
ここで、図１５に示すように、ｆｋ（ｘ）は字種ｋが分布する領域のみならず、その背後の幅広い領域において、高い値をとるようになっている。このような状況は、異なる字種を分離する場合には有効であるが、非文字の棄却を行う場合には問題となる。
【０１１１】
例えば、図１５に示すように、非文字Ｘは文字ではないために、ｆｋの値の高い領域にある場合がある。このような場合には、非文字は字種ｋでないにも関わらずｆｋの値は高くなる。非文字棄却５０７の処理で説明したように、非文字は最大の値となった識別関数の値が指定された値以下の時に、棄却されるが、このような識別関数では棄却することができないという問題がある。
【０１１２】
次に、従来技術の２つ目の例について説明する。
【０１１３】
図１６は、従来の識別関数の生成方法の第２の例の説明図である。ここで説明する方法は修正二次識別関数（ＭＱＤＦ：Modified Quadratic Discriminant Function）の一例で、詳しくは上記の文献「Character Recognition Systems」に記載されている。以下、図１４の例と同様に、便宜上、文字認識装置２０１がこの方法で識別関数を生成する場合の手順を説明する。
【０１１４】
特徴抽出１６０１及び次元削減１６０２の処理は、図１４に示した第１の例と同様であるため、説明を省略する。
【０１１５】
次元削減１６０２によって学習用文字データベースのｐ番目のサンプルから生成されたＮ次元ベクトルをｘｐとおく。また、次元削減関数をｈ（ｘ）とおき、ｙｐ＝ｈ（ｘｐ）とする。ｙｐはＭ次元ベクトルである。
【０１１６】
ＭＱＤＦは、同一文字種に所属する画像から抽出されたＭ次元ベクトルの分布が、Ｍ次元空間上でガウス分布となると仮定し、データベースから抽出されたベクトルの分布に基づいて、ガウス分布のパラメータを推定することで、確率密度関数を定め、その確率値に基づいた値を類似度とする方法である。以下、具体的な計算方法について説明する。
【０１１７】
平均ベクトル計算１７００では、各字種ｋのＭ次元空間上でのベクトルの平均ベクトルｍｋを求める。ｍｋは、字種ｋのサンプル数をＰｋとおくと、
【０１１８】
ｍｋ＝Σｙｐ／Ｐｋ
【０１１９】
によって与えられる。ここで、和は、字種ｋに所属する全てのサンプルに対して計算される。
【０１２０】
以下、各サンプルのＭ次元ベクトルｙｐから、字種ｋの平均ベクトルを引いたものを、ｚｋｐ＝ｙｐ−ｍｋとおく。
【０１２１】
共分散行列計算１７０１では、ＣＰＵ２０６は、字種ｋに所属するサンプルのベクトルｚｋｐの全てから共分散行列を計算する。字種ｋの共分散行列をＶｋとおく。
【０１２２】
次に、固有値計算１７０２では、ＣＰＵ２０６は、共分散行列Ｖｋの固有値と固有ベクトルを計算する。Ｍ個の固有値をλｋ１、λｋ２、…、λｋＭ、Ｍ個の固有ベクトルをφｋ１、φｋ２、…、φｋＭとおく。ここで、固有値λｋｉは降順、すなわち、λｋ１≧λｋ２、…、≧λｋＭとし、φｋｉは固有値λｋｉに対応する固有ベクトルであるとする。
【０１２３】
識別関数定義１７０３では、ＣＰＵ２０６は、各字種ｋの識別関数を定義する。ここで、小さい固有値の推定精度は低いため、固有値の上位Ｌ個（ＬはＭより小さい正の整数）を除く、小さい固有値は一定の値δｋに固定する。δｋは、例えば、認識精度が良くなるように、実験的に決定してもよい。以下では、Ｌ＋１番目以降の固有値をλｋＬ＋１＝δｋ、…、λｋＭ＝δｋ、などのように、改めて置き換える。
【０１２４】
これらの固有値、固有ベクトルを用いて、
【０１２５】
ｇｋ（ｙ）＝Σ[（ｙ−ｍｋ）・φｋｊ]＾２／λｋｊ
【０１２６】
とおく。（ｙ−ｍｋ）・φｋｊはベクトル（ｙ−ｍｋ）とφｋｊの内積で、和はｊについて１からＭまで計算される。これは、マハラノビス距離となる。識別関数は、
【０１２７】
ｆｋ（ｘ）＝ｇｋ（ｈ（ｘ））
【０１２８】
により定義される。この関数を文字識別用辞書２１４に保存する。
【０１２９】
このようにして生成された関数ｇｋ（ｙ）は、二次関数であり、楕円型となる。
【０１３０】
図１７は、従来の方法によって生成された識別関数の第２の例の説明図である。
【０１３１】
具体的には、図１７には、図１６に示した方法で生成された、Ｍ次元空間上における関数ｇｋ（ｙ）の等高線の様子を示した。文字種“Ｘ”が字種ｋであるとする。この楕円形の内部がｇｋ（ｙ）の値が高い領域、すなわちｆｋ（ｘ）の値が高い領域で、その外側がｇｋ（ｙ）の低い領域、すなわちｆｋ（ｘ）の値が低い領域である。なお、固有ベクトルが楕円の主軸、対応する固有値が主軸の長さに比例する。
【０１３２】
図１７に示すように、ｇｋ（ｙ）が高い値となる領域は、文字種“Ｘ”が分布する近辺に限られ、閉領域となる。したがって、非文字が入力となった場合にも、楕円の外側に位置する確率が高く、非文字の棄却精度が高くなる。
【０１３３】
上記で挙げた２つの例には、それぞれ、メリットとデメリットがある。一つ目の例であるＰＣは、異なる字種を分離できるよう識別関数を学習するため、文字同士の識別精度は高いが、すでに述べたように棄却精度は低い。一方で、二つ目の例であるＭＱＤＦでは、字種ｋの識別関数ｆｋは、字種ｋのサンプルの分布にのみ依存して決まり、他の字種の分布には関係なく決まる。すなわち、異なる字種を分離するように直接学習する方法ではないため、識別精度はＰＣに比べて低いが、棄却精度は高い。
【０１３４】
このような状況から、識別関数を楕円型に保ちつつ、異なる字種を分離するように学習することができれば、識別精度と棄却精度の双方を高めることができると考えられる。本発明では、このような学習方法を提供する。
【０１３５】
図１８は、本発明の実施例の文字認識装置による識別関数の作成方法を示すフローチャートである。
【０１３６】
特徴抽出１６０１及び次元削減１６０２の処理は、図１４に示した第１の例と同様であるため、説明を省略する。
【０１３７】
二次関数初期設定１０１では、ＣＰＵ２０６は、各字種ｋに対応するＭ次元空間上の楕円型の二次関数を識別関数として定義する。楕円型のＭ個の主軸ベクトルをφｋ１、…、φｋＭ，各主軸に対応する主軸の長さに比例する値をλｋ１、…、λｋＭとおく。ここで、楕円型の二次関数が定義されるので、ベクトルφｋ１、…、φｋＭは、正規直行系となる。すなわち、
【０１３８】
φｋｉ・φｋｊ＝１  （ｉ＝ｊ）
φｋｉ・φｋｊ＝０  （ｉ≠ｊ）
【０１３９】
となる。ここで、φｋｉ・φｋｊは、φｋｉとφｋｊの内積である。さらに、
【０１４０】
λｋｉ＞０
【０１４１】
となる。また、楕円型の中心ベクトルを、ｍｋとおく。これらを用いて、Ｍ次元空間上の楕円型の二次関数を
【０１４２】
ｇｋ（ｙ）＝Σ[（ｙ−ｍｋ）・φｋｊ]＾２／λｋｊ
【０１４３】
とする。ここで、ｍｋ、φｋｊ、λｋｊは、ＭＱＤＦによって定めてもよい。例えば、二次関数初期設定１０１において、ＣＰＵ２０６が図１５に示す処理を実行し、それによって得られた二次関数のｍｋ、φｋｊ、λｋｊを初期値として使用してもよい。
【０１４４】
本発明では、この二次関数を楕円型に保ったまま、異なる字種のサンプルを識別できるように、パラメータｍｋ、φｋｊ、λｋｊを修正する。これによって、識別精度と棄却精度の双方が高い識別関数を作成する。そのために、まず、損失関数を定義する。
【０１４５】
損失関数定義１０２では、ＣＰＵ２０６は、二次関数初期設定１０１で定めた二次関数に基づいて得られる字種ｋの識別関数ｆｋ（ｘ）＝ｇｋ（ｈ（ｘ））を用いて学習用文字画像を識別したときの誤差の程度を測る誤差損失関数を定義する。
【０１４６】
ここで、誤差損失関数の例を挙げる。まず、学習用文字画像データベース中のサンプルのＭ次元ベクトルｙに対して、損失関数ｅ（ｙ）を定義する。サンプルｙの字種をｋｉとしたとき、字種ｋｉの識別関数以外の識別関数のうち、識別関数の値が最も大きい識別関数をｆｋｊとする。すなわち、
【０１４７】
ｆｋｊ（ｙ）＝ｍａｘ｛ｆｋ（ｙ）｝
【０１４８】
ここで、最大値は、ｋ≠ｋｉについてとる。このとき、
【０１４９】
μ（ｙ）＝ｆｋｊ（ｙ）−ｆｋｉ（ｙ）
【０１５０】
とおくと、μはｙを識別関数によって正しく識別できるときには負の値、そうでない場合には、正の値となる。ここで、ξ＞０として、
【０１５１】
ｅ（ｙ）＝１／[１＋ｅ（−ξμ（ｙ））]
【０１５２】
とおく。ｅは０以上１以下の値をとり、μが大きいほど１に近づき、μが小さいほど０にちかづく。これを各サンプルの損失関数とする。全体の損失関数は、
【０１５３】
Ｅ＝Σｅ（ｙｐ）
【０１５４】
により定義される。ここで、和は、学習用文字データベースの全てのサンプルについて計算される。
【０１５５】
なお、ｅ（ｙ）を計算するために使ったμには、ｙが所属する字種ｋｉの識別関数のパラメータと、ｋｉを除いて最も識別関数の値が大きい字種ｋｊの識別関数のパラメータを含む。このとき、以下では、字種ｋｉを正解クラス、字種ｋｊを近接クラスとよぶことにする。
【０１５６】
ここで、損失関数の値が小さくなるように、ｇｋのパラメータｍｋ、φｋｊ、λｋｊを修正すれば、識別精度を高められると考えられる。そこで、ＰＣの場合のように、ｗをパラメータとして、各サンプルｙに対して、
【０１５７】
ｗ  ←  ｗ−ρ（ｔ）（∂ｅ（ｙ）／∂ｗ）
【０１５８】
のように修正して、全てのパラメータｍｋ、φｋｊ、λｋｊにこの操作をすればよい。しかし、この方法では、初期状態は楕円型であったとしても、パラメータが修正されていく中で、楕円型ではなくなり、ＰＣと同様の結果となる。
【０１５９】
そこで、楕円型を維持しつつ、パラメータを修正する必要がある。楕円型を維持するには、ベクトルφｋ１、…、φｋＭが正規直行系、すなわち、
【０１６０】
φｋｉ・φｋｊ＝１  （ｉ＝ｊ）
φｋｉ・φｋｊ＝０  （ｉ≠ｊ）
【０１６１】
となっており、さらに、
【０１６２】
λｋｉ＞０
【０１６３】
となっていればよい。また、このような条件を維持したまま、パラメータを修正することは、各パラメータは、独立に
【０１６４】
ｗ  ←  ｗ−ρ（ｔ）（∂ｅ（ｙ）／∂ｗ）
【０１６５】
によって修正されるため、困難である。
【０１６６】
そこで、本実施例では、関数のパラメータを直接修正するのではなく、まず、サンプル位置のほうを仮想的に修正する。その修正幅をもって、楕円型を逆に回転、移動、拡大縮小することによって、関数のパラメータを間接的に修正する。
【０１６７】
図１９は、本発明の実施例の文字認識装置２０１による識別関数のパラメータの修正を模式的に示した説明図である。
【０１６８】
ここで、字種ｋｉのサンプルｙが与えられ、この近接クラスｋｊの関数ｇｋｊのパラメータを修正する例を説明する。図１９には、図１０と同様に各文字画像から抽出されたベクトル点の分布を模式的に示す。図１９の例において、文字種ｋｊは文字種“Ｘ”として丸印でしめされているように分布している。図１９（ａ）には、パラメータを修正する前の関数ｇｋｊの等高線２１０１を示す。この例において、三角印で示したサンプルｙに対して損失関数ｅ（ｙ）を小さくするよう、関数ｇｋｊのパラメータを修正したい。このとき、
【０１６９】
ｗ  ←  ｗ−ρ（ｔ）（∂ｅ（ｙ）／∂ｗ）
【０１７０】
として、パラメータを修正すると、楕円形の条件が崩れる恐れがある。そのため、本発明では、逆に、サンプルｙの位置を仮想的に修正する。すなわち、関数のパラメータの代わりに
【０１７１】
ｙ  ←  ｙ−ρ（ｔ）（∂ｅ（ｙ）／∂ｙ）
【０１７２】
とする。修正ベクトルは右辺第二項目の−ρ（ｔ）（∂ｅ（ｙ）／∂ｙ）となる。この修正ベクトルを、図１９（ａ）の三角印につく矢印によって示した。サンプルｙは文字種“Ｘ”とは異なる字種の文字画像から抽出されたベクトルであるため、関数ｇｋｊによってサンプルｙが文字種“Ｘ”であると判定されにくくなる方向、すなわち、楕円の外側に向けてサンプルｙの位置が修正されると想定される。この場合、ＣＰＵ２０６は、サンプルｙの位置を実際に修正ベクトルに従って修正するのではなく、修正ベクトルと反対の方向に楕円を移動、回転、または拡大縮小させることによって、楕円形を維持したまま関数ｇｋｊのパラメータを修正する。ここで修正ベクトルと反対の方向とは、関数ｇｋｊによってサンプルｙが文字種“Ｘ”であると判定されにくくなる方向である。図１９（ｂ）には、修正された関数ｇｋｊの等高線２１０２の例を示す。
【０１７３】
図１９では、近接クラスの関数について楕円型で示し、修正の様子を説明したが、正解クラスの関数でも、同様である。ただし、修正ベクトルの方向は上記と逆になる。例えば、サンプルｙが文字種ｋｊのサンプルである場合、関数ｇｋｊは近接クラスではなく正解クラスの関数である。この場合、修正ベクトルは、関数ｇｋｊによってサンプルｙが文字種“Ｘ”であると判定されやすくなる方向、すなわち、楕円の内側に向けてサンプルｙの位置を修正するように設定される。この場合も、修正ベクトルと反対の方向に楕円を移動、回転、または拡大縮小させることによって、楕円形を維持したまま関数ｇｋｊのパラメータが修正される。その結果、関数ｇｋｊによってサンプルｙが文字種“Ｘ”であると判定されやすくなる。
【０１７４】
具体的な計算方法を以下で説明する。最初に、ＣＰＵ２０６は、修正の回数をカウントするｔをｔ＝０に設定する。
【０１７５】
サンプル選定１０３では、ＣＰＵ２０６は、学習用文字データベースからひとつのサンプルを選択する。サンプルは、ランダムに選択してもよいし、ある規則を定めて、順番に選択してもよい。
【０１７６】
次に、サンプル位置修正幅計算１０４では、ＣＰＵ２０６は、各サンプルｙについて、定義された楕円型二次識別関数を用いて識別したときの損失関数ｅ（ｙ）の値が小さくなる方向に、ｙの位置を移動させるための修正ベクトルを計算する。これは、
【０１７７】
ｙ  ←  ｙ−ρ（ｔ）（∂ｅ（ｙ）／∂ｙ）
【０１７８】
のように計算すればよい。ここでρ（ｔ）は単調減少関数で、ＰＣの場合と同じように設定してもよい。ここで、−ρ（ｔ）（∂ｅ（ｙ）／∂ｙ）が修正ベクトルである。
【０１７９】
次に、ＣＰＵ２０６は、修正ベクトルに基づいて、識別関数の等高線を楕円形に維持したまま、損失関数ｅ（ｙ）の値が小さくなるように、識別関数のパラメータを修正する。具体的には、ＣＰＵ２０６は、修正ベクトルと逆の方向に楕円を移動、回転、および拡大縮小することで、識別関数のパラメータを修正する。この処理が、以下に説明する平均移動１０５、楕円形修正１０６及び楕円形変形１０８である。ただし、ここでの処理は、修正ベクトルを計算することであり、サンプルの位置は、実際には動かさない。
【０１８０】
平均移動１０５では、ＣＰＵ２０６は、楕円の中心位置を修正する。すでに説明したように、ｅ（ｙ）には正解クラスのパラメータと近接クラスのパラメータが含まれるため、ＣＰＵ２０６はこれらのパラメータを修正する。正解クラスをｋｉ、近接クラスをｋｊとする。このとき、正解クラスの楕円の中心ｍｋｉと、近接クラスの楕円ｍｋｊをサンプル位置の修正幅−ρ（ｔ）（∂ｅ（ｙ）／∂ｙ）とは逆の方向に修正する。すなわち、
【０１８１】
ｍｋｉ（ｔ＋１）＝ｍｋｉ（ｔ）＋ρ（ｔ）（∂ｅ（ｙ）／∂ｙ）
ｍｋｊ（ｔ＋１）＝ｍｋｊ（ｔ）＋ρ（ｔ）（∂ｅ（ｙ）／∂ｙ）
【０１８２】
とする。ここで、ｔ回目のサンプル選定１０３から終了判定１０７までのサイクルが始まる時のパラメータをｍｋｉ（ｔ）及びｍｋｊ（ｔ）のように示した。以降、φｋｉ（ｔ）、λｋｉ（ｔ）も同様にｔ回目のサイクルにおけるφｋｉ及びλｋｉを示す。これによって、正解クラスの楕円は、サンプルのある方向に移動し、近接クラスの楕円は、サンプルとは逆の方向に移動する。
【０１８３】
図２０は、本発明の実施例の文字認識装置２０１による楕円型の識別関数の中心の移動の説明図である。
【０１８４】
図２０には、上記の近接クラスの楕円の中心の移動の例を示す。例えば、三角印のサンプルｙに基づいて、丸印の近接クラスの楕円形の識別関数の中心を移動する場合、楕円形の等高線２２０１の中心２２０３が上記のｍｋｉ（ｔ）に相当し、等高線２２０２の中心２２０４がｍｋｉ（ｔ＋１）に相当し、修正ベクトル２２０５が−ρ（ｔ）（∂ｅ（ｙ）／∂ｙ）に相当し、中心２２０３から中心２２０４に至るベクトル２２０６がρ（ｔ）（∂ｅ（ｙ）／∂ｙ）に相当する。このように、近接クラスの楕円の中心の移動方向を示すベクトル２２０６の向きは、修正ベクトル２２０５の向きとは逆になる。丸印が正解クラスの場合には、修正ベクトル２２０５及びベクトル２２０６の向きがいずれも図２０の例とは逆になる。
【０１８５】
次に、楕円形修正１０６では、ＣＰＵ２０６は、正解クラスと近接クラスの平均（すなわち中心）以外のパラメータを修正する。以下、正解クラスｋｉの関数のパラメータを修正する例を、図２１を参照して説明する。
【０１８６】
図２１は、本発明の実施例の文字認識装置２０１による楕円型の識別関数の中心以外のパラメータの変更の説明図である。
【０１８７】
図２１には、図２０と同様の近接クラスの楕円形の識別関数の等高線２２０２及びその中心２２０４を示す。ＣＰＵ２０６は、元のサンプルの位置を正解クラスｋｉの中心から見たベクトル（すなわち、等高線２２０２の中心の位置を始点とし、元のサンプルの位置を終点とするベクトル）を
【０１８８】
ｖ１＝ｙ−ｍｋｉ
【０１８９】
とおく。修正後の位置を同様に、正解クラスｋｉの中心から見たベクトル（すなわち、等高線２２０２の中心の位置を始点とし、修正後のサンプルの位置を終点とするベクトル）を
【０１９０】
ｖ２＝ｙ−ρ（ｔ）（∂ｅ（ｙ）／∂ｙ）−ｍｋｉ
【０１９１】
とおく。このとき、ｖ１からｖ２への移動はｖ１の回転と拡大縮小によって行うことができる。その回転行列をＵ，拡大縮小のスケールをｓ＞０とおくと、
【０１９２】
ｖ２＝ｓＵｖ１
【０１９３】
とおくことができる。そこで、ＣＰＵ２０６は、関数のパラメータを、楕円を逆回転とｓの逆数での拡大縮小を行うことによって、修正する。具体的には、λｋｉを並べたベクトルを
【０１９４】
λｋｉ＝（λｋｉ１、λｋｉ２、…、λｋｉＭ）
【０１９５】
とおくと、ＣＰＵ２０６は、回転行列Ｕとｓを用いて、
【０１９６】
λｋｉ（ｔ＋１）←λｋｉ（ｔ）Ｕ／ｓ
【０１９７】
のように修正する。また、φｋｉｍ・φｋｉｎを第（ｍ、ｎ）成分にもつ行列をΦｋｉとおくと、ＣＰＵ２０６は、
【０１９８】
Φｋｉ（ｔ＋１）←Ｕ＾ＴΦｋｉ（ｔ）＾ＴΦｋｉ（ｔ）Ｕ
【０１９９】
によって行列Φｋｉの各成分を修正する。ここで、行列Ａに対してＡ＾ＴはＡの転置行列である。ここで、λｋｉ（ｔ）、Φｋｉ（ｔ）は、それぞれ、λｋｉ、Φｋｉの各成分に、サイクル数を示すインデックスｔをつけたものである。
【０２００】
これによって、例えばｖ２がｖ１を拡大したものである場合（すなわちｖ２がｖ１より大きい場合）には楕円形の等高線２２０２が縮小し、ｖ２がｖ１を縮小したものである場合には楕円形の等高線２２０２が拡大するように、楕円型二次識別関数のパラメータが修正される。また、例えば図２１に示すようにｖ２がｖ１を左回りに回転させたものである場合には、楕円形の等高線２２０２がその反対方向、すなわち右回りに回転するように、楕円型二次識別関数のパラメータが修正される。
【０２０１】
上記の平均移動１０５は楕円の平行移動、楕円形修正１０６は、楕円の拡大縮小と回転であるが、楕円形変形１０８では、ＣＰＵ２０６は、楕円軸の大きさを修正する。これによって、結果的に、例えば扁平率によって表される楕円のつぶれ具合が修正される。
【０２０２】
平均移動１０５と楕円形修正１０６によって得られたクラスｋｉの楕円形の軸の方向ベクトルは、φｋｉによって得られる。そこで、ＣＰＵ２０６は、クラスｋｉに所属するサンプルのベクトルのφｋｉ方向への射影をとったとき、その射影分布の分散値をｖとすると、λｋｉ＝ｖとする。ここで、ＣＰＵ２０６は、正則化のために、ｖが所定の閾値以下である場合には、予め定めておいた小さい値σを用いて、λｋｉ＝σとしてもよい。
【０２０３】
ただし、ＣＰＵ２０６は、楕円形変形１０８の処理を省略してもよい。すなわち、ＣＰＵ２０６は、楕円形修正１０６の処理の後、楕円形変形１０８を実行せずに終了判定１０７を実行してもよい。例えば、二次関数初期設定１０１において、ある決まった扁平率の楕円（例えば扁平率０の円）を識別関数の初期値として設定した場合、ＣＰＵ２０６は、楕円形変形１０８を実行することによって、識別関数の楕円のつぶれ具合を学習してもよい。あるいは、二次関数初期設定１０１において図１５に示す方法によって識別関数の初期値を設定した場合、初期状態の識別関数の楕円のつぶれ具合が既に適切であることが期待できるため、ＣＰＵ２０６は、楕円形変形１０８を省略してもよいし、さらに楕円形変形１０８を実行して学習を行ってもよい。
【０２０４】
ＣＰＵ２０６は、近接クラスの関数についても同様にしてパラメータを修正する。この修正は、楕円をＵと逆の方向に回転し、１／ｓのスケールで拡大縮小することに相当する。
【０２０５】
上記の処理では、選択したサンプルが所属する文字種（正解クラス）のほか、当該サンプルが所属する文字種以外の文字種のうち、当該サンプルを引数としたときの値が最も大きくなる識別関数が設定されている一つの文字種（近接クラス）について識別関数のパラメータが学習されるが、正解クラス以外の複数のクラスについて同様の学習が実行されてもよい。例えば、当該サンプルを引数としたときの値の大きさの順に、所定の数の識別関数のパラメータが学習されてもよい。
【０２０６】
以上の処理によって関数のパラメータが修正される。
【０２０７】
次に終了判定１０７では、ＣＰＵ２０６は、ｔが所定の回数を上回っているか判定し、上回っている場合には、各字種ｋの識別関数ｆｋ（ｘ）＝ｇｋ（ｈ（ｘ））を文字識別用辞書２１４に保存して終了する。上回っていない場合には、ＣＰＵ２０６は、ｔに１を加え、サンプル選定１０３において、新たなサンプルを選定する。
【０２０８】
上記のように生成され、文字識別用辞書２１４に保存された識別関数は、例えば、図２に示す文字識別５０６、非文字棄却５０７及び曖昧文字棄却５０８に使用される。
【０２０９】
以上のように、誤差損失が小さくなるように楕円のパラメータを変更することによって、楕円型を保ちながら識別関数を学習することができる。これによって、従来のＰＣと比較して、棄却精度が高い識別関数を生成することができる。さらに、正解クラスの識別関数だけでなく、近接クラスの識別関数についても誤差損失が小さくなるように学習することによって、従来のＭＱＤＦより識別精度が高い識別関数を生成することができる。
【０２１０】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。例えば、実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０２１１】
例えば、上記の実施例では、一つの文字認識装置２０１が、文字識別用辞書２１４を生成し（図１８等）、さらに生成した文字識別用辞書２１４を用いて文字の識別及び棄却を行う（図２等）例を示した。しかし、実際には、複数の文字認識装置２０１のいずれかが図１８等に示す方法で文字識別用辞書２１４を生成し、他の文字認識装置２０１は生成された文字識別用辞書２１４の複製を保持して、それを用いて文字の識別及び棄却を行ってもよい。その場合、当該他の文字認識装置２０１は、自ら文字識別用辞書２１４を生成する必要がないため、学習用文字画像データベース２１３を保持する必要もない。
【０２１２】
上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によってハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【０２１３】
また、図面には、実施例を説明するために必要と考えられる制御線及び情報線を示しており、必ずしも、本発明が適用された実際の製品に含まれる全ての制御線及び情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０２１４】
２０１  文字認識装置
２０２  入力装置
２０３  表示装置
２０４  イメージ取得装置
２０５  通信装置
２０６  演算装置（ＣＰＵ）
２０７  外部記憶装置
２１３  学習用文字画像データベース
２１４  文字認識用辞書
【図１】
2015185033.tif 000003
【図２】
2015185033.tif 000004
【図１４】
2015185033.tif 000005
【図１６】
2015185033.tif 000006
【図１８】
2015185033.tif 000007
【図１９】
2015185033.tif 000008
【図２０】
2015185033.tif 000009
【図２１】
2015185033.tif 000010
【図３】
2015185033.tif 000011
【図４】
2015185033.tif 000012
【図５】
2015185033.tif 000013
【図６】
2015185033.tif 000014
【図７】
2015185033.tif 000015
【図８】
2015185033.tif 000016
【図９】
2015185033.tif 000017
【図１０】
2015185033.tif 000018
【図１１】
2015185033.tif 000019
【図１２】
2015185033.tif 000020
【図１３】
2015185033.tif 000021
【図１５】
2015185033.tif 000022
【図１７】
2015185033.tif 000023