(57)【特許請求の範囲】
【請求項１】
利用者の入力したインクデータから文字切り出しを行なって手書き文字認識を行なう手書き文字認識方法において、
文字とその文字に対するクラスタを格納した認識辞書と、重み付けクラスタとその重み付けクラスタに対する対象文字を格納した重み付け辞書とを使用し、
未切り出しのインクデータに対し、前記未切り出しのインクデータの先頭から手書き文字の入力方向に沿って所定の長さの候補位置探索範囲を設定し、
文字切り出しの位置の候補となる切り出し候補位置を前記候補位置探索範囲内のインクデータから探索し、
前記認識辞書と比較・照合して、前記切り出し位置候補ごとに、当該切り出し位置候補に対応する候補文字と、対応するクラスタからの当該候補文字の距離値とを求め、
前記重み付け辞書を探索し、前記切り出し候補位置ごとのインクデータの中に重み付けクラスタに近いものがあり、かつ、当該重み付けクラスタの対象文字が探索された候補文字のいずれかと一致する場合には、一致した候補文字の距離値に重み付けを行ない、
そののち、距離値の大小に応じて前記各候補文字の順位付けを行なうことを特徴とする手書き文字認識方法。
【請求項２】
前記順位付けの結果に基づいて候補文字の確定と文字切り出しが行なわれる請求項１に記載の手書き文字認識方法。
【請求項３】
前記順位付けの後、前記順位付けの結果が最上位である候補文字以外の文字が指定された場合に、
前記各切り出し候補位置ごとのインクデータの中に、前記指定された文字のクラスタに対する距離よりも、前記指定された文字とは異なる切り出し候補位置に対応し前記指定された文字とは別の文字のクラスタに対する距離の方が小さいものが存在するかどうかを調べ、
存在する場合には、前記候補位置探索範囲内で最遠の切り出し候補位置を重み付けクラスタとし、前記指定された文字よりも前記順位付けの結果が上位である文字を前記対象文字として前記重み付け辞書に登録する、請求項１ないし２に記載の手書き文字認識方法。
【請求項４】
前記重み付け辞書への登録が行なわれた後、新規登録の重み付けクラスタに対して距離が近い既存の重み付けクラスタの存在を調べ、存在する場合には当該既存の重み付けクラスタを消去する請求項３に記載の手書き文字認識方法。
【請求項５】
利用者の入力したインクデータから文字切り出しを行なって手書き文字認識を行なう手書き文字認識装置において、
インクデータを入力する入力手段と、
インクデータを格納するインクデータ格納手段と、
文字とその文字に対するクラスタを格納した認識辞書と、
重み付けクラスタとその重み付けクラスタに対する対象文字を格納した重み付け辞書と、
前記インクデータ格納手段中の未切り出しのインクデータに対し、前記未切り出しのインクデータの先頭から手書き文字の入力方向に沿って所定の長さの候補位置探索範囲を設定し、文字切り出しの位置の候補となる切り出し候補位置を前記候補位置探索範囲内のインクデータから探索し、前記認識辞書と比較・照合して、前記切り出し位置候補ごとに、当該切り出し位置候補に対応する候補文字と、対応するクラスタからの当該候補文字の距離値とを求め、前記重み付け辞書を探索し、前記切り出し候補位置ごとのインクデータの中に重み付けクラスタに近いものがあり、かつ、当該重み付けクラスタの対象文字が探索された候補文字のいずれかと一致する場合には、一致した候補文字の距離値に重み付けを行ない、そののち、距離値の大小に応じて前記各候補文字の順位付けを行なう文字認識手段と、を有することを特徴とする手書き文字認識装置。
【請求項６】
前記入力手段が、前記順位付けの結果を表示し、かつ利用者からの指示を受け付けることが可能な入力表示手段であり、
前記順位付けの後、前記順位付けの結果が最上位である候補文字以外の文字が指定された場合に、前記各切り出し候補位置ごとのインクデータの中に、前記指定された文字のクラスタに対する距離よりも、前記指定された文字とは異なる切り出し候補位置に対応し前記指定された文字とは別の文字のクラスタに対する距離の方が小さいものが存在するかどうかを調べ、存在する場合には、前記候補位置探索範囲内で最遠の切り出し候補位置を重み付けクラスタとし、前記指定された文字よりも前記順位付けの結果が上位である文字を前記対象文字として前記重み付け辞書に登録する辞書更新手段をさらに有する、請求項５に記載の手書き文字認識装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はオンライン手書き文字認識に関し、特に、入力枠を指定されずに連続して入力された複数文字分の手書き文字データから１字分の手書き文字データを順次切り出す手書き文字認識方法及び装置に関する。
【０００２】
【従来の技術】
これまでのオンライン手書き文字認識システムでは、入力装置上に予め設定された該四角形の領域（入力枠）に対し利用者が１文字ずつ手書き文字を入力するようになっていたが、近年、入力枠を設けることなく利用者が自由に入力した手書き文字を認識できる技術が開発されてきた。１字ごとの入力枠を設けない場合、時間的に間を置かずに入力された複数文字分の手書き文字データから、１字分ずつの手書き文字データの切り出しを行なわなければならない。
【０００３】
現在、この切り出し方法としては、漢字を含む日本語文字やブロック体で入力されたアルファベットに対するものとして、例えば、２次元平面内のデータとして入力された手書き文字データをこの平面内で各種の方向に射影し、文字間に存在するスペース（空白領域）を探索して文字の切れ目とする射影法がある。しかしながらこの射影法では、文字内に本来あるべき空白領域と文字間の空白領域との識別が正しく行なわれず、誤った位置で文字切り出しが行なわれることがある。例えば、カタカナ２文字の「ノリ」と漢字の「川」、カタカナ２文字の「ノレ」とカタカナ１文字の「ル」、数字２文字の「１３」とブロック体アルファベットの「Ｂ」、あるいは「重力」と「動」などの区別を行なうことが非常に難しい。また、アルファベットの文字列の場合、複数の文字にまたがって１ストロークの運筆がなされること、すなわち続け字（カーシブ;cursive）で入力されることが多い。続け字で入力された複数文字分の手書き文字データから１文字分ずつのデータを切り出す方法としては、例えば、運筆時のペン先の移動方向を逐次検出し、移動方向がある特定の方向から別の特定の方向に変化したところを切り出し位置とする方法がある。この方法でも、例えば「ｄ」と「ｃｌ」などの区別を行なうことは難しい。
【０００４】
いずれの切り出し方法を採用したとしても、切り出し位置を一度誤ると、その誤っている位置を基準に次の文字切り出しが行なわれるので、切り出し位置の誤りが伝播することになり、切り出し位置の誤りは広範囲に影響を及ぼすことになる。
【０００５】
正しい位置での切り出しを行なうために、文字の縦横比などを利用することが試みられている。この方法は、例えば横書きの場合、文字高に比べて極端に短い位置での切り出しを行なわないことにより、誤った位置での切り出しを防止しようとするものである。しかしながら、手書き文字での縦横比は利用者によってかなりばらつきがあり、また、文字によっても縦横比が異なるので、縦横比を利用する方法でも切り出し位置の誤りを減らすことは難しい。例えば、「動」と「証」とでは、あるいは「ｉ」と「Ｗ」とでは、文字の縦横比が異なるので、同一の基準を用いて文字切り出しを行なった場合に、いずれの文字も正しく切り出されるとは限らない。また、異なる利用者の手書き文字データのいずれに対しても正確に文字切り出しが行なえるような、利用者に共通した切り出し基準を見つけることも困難である。
【０００６】
以下の説明において、「文字」とは、文字コードと１対１に対応するものを指し、具体的にはこのように文字コードによって一意に指定されるものの名前のことを意味し、「インクデータ」とは、利用者がペンなどの入力デバイスによって入力した軌跡データを指し、「手書き文字入力」とは、文字認識の対象となるインクデータを入力する作業を指し、「手書き文字」とは、手書き文字認識処理を施すことを意図して利用者が入力したインクデータのことを指し、「文字切り出し」とは、手書き文字のインクデータ群の中から、１文字に相当するインクデータを抽出することを指す。
【０００７】
また、「距離」とは、認識誤差量とも呼ばれ、候補文字の形状的な特徴を表わすデータ（特徴量）やインクデータがある場合に、これらのデータのうちの任意の２つのものについて、両者の差異を定量的に表わす尺度のことである。例えば、データが特徴空間内の特徴ベクトルとして表わされる場合には、２つの特徴ベクトル間の差ベクトルのノルムとして距離を定義することができる。距離が小さいほど、２つのデータがよく一致していることになる。切り出されたインクデータをもとに認識辞書を探索してそのインクデータに対応する候補文字を見つけ出した場合には、その候補文字に対応する特徴データとインクデータとの距離が小さいほど、探索された候補文字が利用者の意図した文字である可能性が高いということになる。
【０００８】
「クラスタ」とは、候補文字などについて、その形状的な特徴を表わすデータの代表となるべきもののことを指す。インクデータから特徴ベクトルを生成して文字認識処理が行なわれる場合には、クラスタは候補文字の特徴ベクトル（代表点）に相当する。
【０００９】
【発明が解決しようとする課題】
上述したように、入力枠を用いない手書き文字認識システムでは、連続して入力する手書き文字データから１文字分の手書き文字データを正確に切り出すことが難しく、このため、誤った切り出し位置で切り出された手書き文字データに基づいて文字認識を行なうこととなり、認識率の向上を望めないという問題点がある。
【００１０】
本発明の目的は、正確な文字切り出しを行なうことによってオンライン手書き文字認識の認識率の向上を図ることにある。
【００１１】
【課題を解決するための手段】
本発明の手書き文字認識方法は、利用者の入力したインクデータから文字切り出しを行なって手書き文字認識を行なう手書き文字認識方法において、文字とその文字に対するクラスタを格納した認識辞書と、重み付けクラスタとその重み付けクラスタに対する対象文字を格納した重み付け辞書とを使用し、未切り出しのインクデータに対し、前記未切り出しのインクデータの先頭から手書き文字の入力方向に沿って所定の長さの候補位置探索範囲を設定し、文字切り出しの位置の候補となる切り出し候補位置を前記候補位置探索範囲内のインクデータから探索し、前記認識辞書と比較・照合して、前記切り出し位置候補ごとに、当該切り出し位置候補に対応する候補文字と、対応するクラスタからの当該候補文字の距離値とを求め、前記重み付け辞書を探索し、前記切り出し候補位置ごとのインクデータの中に重み付けクラスタに近いものがあり、かつ、当該重み付けクラスタの対象文字が探索された候補文字のいずれかと一致する場合には、一致した候補文字の距離値に重み付けを行ない、そののち、距離値の大小に応じて前記各候補文字の順位付けを行なう。
【００１２】
さらに本発明の手書き文字認識方法では、重み付け辞書の学習を行なうために、前記順位付けの後、前記順位付けの結果が最上位である候補文字以外の文字が指定された場合に、前記各切り出し候補位置ごとのインクデータの中に、前記指定された文字のクラスタに対する距離よりも、前記指定された文字とは異なる切り出し候補位置に対応し前記指定された文字とは別の文字のクラスタに対する距離の方が小さいものが存在するかどうかを調べ、存在する場合には、前記候補位置探索範囲内で最遠の切り出し候補位置を重み付けクラスタとし、前記指定された文字よりも前記順位付けの結果が上位である文字を前記対象文字として前記重み付け辞書に登録するようにしてもよい。
【００１３】
本発明の手書き文字認識装置は、利用者の入力したインクデータから文字切り出しを行なって手書き文字認識を行なう手書き文字認識装置において、インクデータを入力する入力手段と、インクデータを格納するインクデータ格納手段と、文字とその文字に対するクラスタを格納した認識辞書と、重み付けクラスタとその重み付けクラスタに対する対象文字を格納した重み付け辞書と、前記インクデータ格納手段中の未切り出しのインクデータに対し、前記未切り出しのインクデータの先頭から手書き文字の入力方向に沿って所定の長さの候補位置探索範囲を設定し、文字切り出しの位置の候補となる切り出し候補位置を前記候補位置探索範囲内のインクデータから探索し、前記認識辞書と比較・照合して、前記切り出し位置候補ごとに、当該切り出し位置候補に対応する候補文字と、対応するクラスタからの当該候補文字の距離値とを求め、前記重み付け辞書を探索し、前記切り出し候補位置ごとのインクデータの中に重み付けクラスタに近いものがあり、かつ、当該重み付けクラスタの対象文字が探索された候補文字のいずれかと一致する場合には、一致した候補文字の距離値に重み付けを行ない、そののち、距離値の大小に応じて前記各候補文字の順位付けを行なう文字認識手段と、を有する。
【００１４】
さらに本発明の手書き文字認識装置では、重み付け辞書の学習のために、前記入力手段が、前記順位付けの結果を表示し、かつ利用者からの指示を受け付けることが可能な入力表示手段であり、さらに、前記順位付けの後、前記順位付けの結果が最上位である候補文字以外の文字が指定された場合に、前記各切り出し候補位置ごとのインクデータの中に、前記指定された文字のクラスタに対する距離よりも、前記指定された文字とは異なる切り出し候補位置に対応し前記指定された文字とは別の文字のクラスタに対する距離の方が小さいものが存在するかどうかを調べ、存在する場合には、前記候補位置探索範囲内で最遠の切り出し候補位置を重み付けクラスタとし、前記指定された文字よりも前記順位付けの結果が上位である文字を前記対象文字として前記重み付け辞書に登録する辞書更新手段を設けるようにしてもよい。
【００１５】
【作用】
本発明では、ユーザの書き癖などによる切り出し位置の誤りを防ぐために、重み付けクラスタを重み付け辞書に設定してあり、入力したインクデータがこの重み付けクラスタに近い場合にはこの重み付けクラスタの対象文字が文字認識され難くなるように構成されている。したがって、利用者の書き癖などによって切り出し位置の誤りが生じる場合、誤切り出しに対応するインクデータとその誤って認識されて出力された文字とを重み付けクラスタとその対象文字として重み付け辞書に登録することにより、以後はそのような誤切り出しが生じ難くなり、利用者の意図した文字切り出しが行なわれるようになる。
【００１６】
【実施例】
次に、本発明の実施例について、図面を参照して説明する。図１は本発明の一実施例の手書き文字認識装置の構成を示すブロック図である。この手書き文字認識装置は、オンライン手書き文字認識を実行するものであって、利用者によるインクデータが入力するとともに必要な情報を表示するための入力・表示パネル１１と、入力・表示パネル１１に対して入力されたインクデータを受け付け、手書き文字データなのか指示なのかを識別する入力処理部１３と、手書き文字のインクデータを格納するインクデータ格納部１４と、文字認識に使用される認識辞書２１と、重み付けクラスタを格納する重み付け辞書２２と、認識辞書２１及び重み付け辞書２２を参照してインクデータ格納部１４内のインクデータに対する文字切り出し処理及び文字認識処理を実行する文字認識エンジン部１５と、文字認識エンジン部１５による文字認識結果を格納する認識結果格納部１６と、文字認識結果に応じて入力・表示パネル１１に対して表示を行なう出力処理部１７と、利用者からの指示に基づいて認識辞書２１及び重み付け辞書２２の更新を行なう辞書更新部１８とによって構成されている。入力・表示パネル１１は、表示部とインクデータ２０の入力部とが一体になったいわゆる表示一体型入力パネルであり、例えば、液晶フラットディスプレイ上に透明型タブレットを積層した構成のものを使用できる。利用者は、ペン１２でこの入力・表示パネルの入力・表示画面をなぞることによって、所望のインクデータ２０を入力できる。
【００１７】
本実施例では、文字切り出し処理によって切り出されたインクデータから、その形状の特徴を表わす特徴ベクトルを求め、認識辞書２１中の各文字（候補文字）の特徴ベクトル（クラスタ）とインクデータから求めた特徴ベクトルとを比較し、両者の距離に応じてそのインクデータに対する候補文字を定めることにより、文字認識が行なわれるものとする。認識辞書２１には、文字とその文字のクラスタとが格納されている。ある１つの文字に対して複数のクラスタが対応することが可能であり、また、認識辞書２１に対し利用者の指定した文字のクラスタを追加登録することが可能なようになっている。もちろん本発明は、文字認識の方法やアルゴリズムによらずに適用できるものであり、特徴ベクトルによらない文字認識方法、例えばパターンマッチング法などにも本発明を適用することが可能である。
【００１８】
文字認識エンジン部１５は、インクデータ格納部１４に格納された未切り出しのインクデータについて、その先頭部分（基点Ｏ）から手書き文字に入力方向に向かって所定の範囲（切り出し候補位置探索範囲Ｗ）の領域内にある切り出し候補位置を探索し、各切り出し候補位置でインクデータを切り出したとして認識辞書２１と比較し、切り出し候補位置ごとにその切り出し候補位置に対応する候補文字を求め、さらに重み付け辞書２２を参照して重み付けを行ない、文字認識を行なうものである。切り出し候補位置とは、文字切り出しが行なわれるべき位置の候補のことであって、通常の文字切り出し方法によって検出される位置のことである。
【００１９】
切り出し候補位置を探索する方法としては、「従来の技術」の欄で述べた射影法などを用いることができる。図２は、日本語文字列に対応するインクデータから射影法によって見出された切り出し候補位置の実例を示している。この図２では、切り出し候補位置として、Ａ及びＢの２箇所が探索されている。文字認識の際には、未切り出しのインクデータの先頭部分（基点Ｏ）から各切り出し候補位置までのインクデータ（図２に示した例では、基点Ｏから切り出し候補位置Ａまでのインクデータと、基点Ｏから切り出し候補位置Ｂまでのインクデータ）を対象として、認識辞書２１を参照してこれら各インクデータに対する候補文字が探索され、同時にこれらの候補文字に対する距離値がそれぞれ算出される。ここで距離値は、切り出し候補位置ごとのインクデータから求められた特徴ベクトルと、そのインクデータに対応する候補文字についてのクラスタとの距離のことである。そして、文字認識エンジン部１５は、後述する重み付け処理を行なった後に、距離値でソートし、距離値の小さい順に候補文字を認識結果格納部１６に出力するようになっている。
【００２０】
ここで重み付け処理について説明する。日本語文字列に対応するインクデータに対する重み付け辞書２２の構成例が図３に示されている。重み付け辞書２２には、重み付けクラスタとその重み付けクラスタによる重み付けの対象となる文字とが組になって格納されている。重み付けクラスタは、利用者の入力したインクデータに基づく特徴ベクトルとして、後述する辞書更新部２２により登録されたものである。図３に示した例では、「動」の字に似た重み付けクラスタに対し、「重」の字が重み付け対象文字とされている。本実施例では、各切り出し候補位置に対応するインクデータが重み付けクラスタとして登録された形状に似ている場合には、その重み付けクラスタに対応する重み付け対象文字が候補文字として挙げられている場合に、その候補文字の距離値に重み付けがなされるようになっている。重み付けの方法としては、一定値を重み付け対象文字である候補文字の距離値に加算する方法、切り出し候補位置に対応するインクデータの特徴ベクトルと重み付けクラスタとの距離に応じて変化する値を候補文字の距離値に加算する方法などがある。重み付けクラスタとの「近さ」に比例した重み付けを行なうことが望ましい。結局、あるインクデータが重み付けクラスタとして登録されている場合には、その重み付けクラスタに類似したインクデータが入力した場合に、その重み付けクラスタの対象文字が文字認識結果として現われ難くなる。利用者の書き癖によって、切り出し位置の誤りが生じる場合、誤切り出しに対応するインクデータとその誤って認識されて出力された文字とを重み付けクラスタとその対象文字として重み付け辞書２２に登録することにより、以後はその誤切り出しが生じ難くなる。
【００２１】
以上、漢字を含む日本語文字列に対応するインクデータについて切り出し候補位置や重み付け辞書を説明したが、本発明は、日本語文字列のインクデータのみを処理対象とするものではなく、他の文字種、例えばアルファベットやアラビア文字のインクデータにも適用し得るものである。ここで、日本語文字列に対応するインクデータ以外の例として、アルファベットからなる英語文字列に対応するインクデータの場合を説明する。
【００２２】
図４(a),(b)は、それぞれ図２及び図３に対応するものであって、１字ずつ分離して入力されたアルファベット文字列すなわちブロック体でのインクデータに対する切り出し候補位置と重み付け辞書を説明している。アルファベットのブロック体の場合には、日本語文字の場合と同様の切り出し方法を適用できるから、本実施例の手書き文字認識装置と用いて、日本語文字とブロック体のアルファベットが混在したインクデータから文字の切り出しを行ない文字認識を実行することが十分に可能である。図４(a)では、インクデータ２０ａに対する切り出し候補位置として、切り出し候補位置探索範囲Ｗの中から、Ｐ及びＱの２箇所が探索されている。基点Ｏから切り出し候補位置Ｐまでのインクデータに対する候補文字は例えば"１"であり、基点Ｏから切り出し候補位置Ｑまでのインクデータに対する候補文字は例えば"Ｂ"である。図４(b)に示す重み付け辞書２２の構成例では、図４(a)のインクデータ２０ａのうち基点Ｏから切り出し候補位置Ｑまでのインクデータによく似た重み付けクラスタ（図示上の方の欄）に対し、数字の「１」が重み付け対象文字とされ、また、数字の「１３」によく似た重み付けクラスタ（図示下の方の欄）に対し、大文字の「Ｂ」が重み付け対象文字とされている。
【００２３】
次に、続け字で入力されたアルファベットのインクデータを対象とする場合について説明する。この場合、文字切り出しの方法として射影法は必ずしも適切なものではないので、手書き文字入力時のペン先の移動方向を逐次検出し、移動方向に特定の変化があった場合にそこを切り出し候補位置とする方法を採用している。図５(a),(b)はこの方法による切り出し候補位置の検出を説明する図であり、これらの図において、矢印のついた線は運筆方向を示している。ここでは、移動方向が左上から右下に向う方向から折れ曲がって左下から右上に向う方向になったとき［図５(a)］や、移動方向が左から右に向う方向から折れ曲がって右上から左下に向う方向になったとき［図５(b)］に、その折れ曲がった場所（図示×印）を切り出し候補位置とする。
【００２４】
さて、図６(a),(b)は、それぞれ図２及び図３に対応するものであって、続け字で入力されたアルファベット文字列のインクデータに対する切り出し候補位置と重み付け辞書を説明している。図６(a)では、インクデータ２０ｂに対する切り出し候補位置として、切り出し候補位置探索範囲Ｗの中から、Ｒ及びＳの２箇所が探索されている。基点Ｏから切り出し候補位置Ｒまでのインクデータに対する候補文字は例えば"ｃ"であり、基点Ｏから切り出し候補位置Ｓまでのインクデータに対する候補文字は例えば"ｄ"である。図６(b)に示す重み付け辞書２２の構成例では、図６(a)のインクデータ２０ｂのうち基点Ｏから切り出し候補位置Ｓまでのインクデータによく似た重み付けクラスタ（図示上の方の欄）に対し、数字の「ｄ」が重み付け対象文字とされ、また、筆記体の「ｄ」によく似た重み付けクラスタ（図示下の方の欄）に対し、「ｃ」が重み付け対象文字とされている。
【００２５】
アルファベットの手書き文字データから文字切り出しを行なう場合には、そのインクデータが１字ずつ離して入力されるのか、続け字で入力されるのかに応じて、切り出し候補位置の検索のためのアルゴリズムが異なるのが普通である。そのため、１字ずつ離して入力された場合のための重み付け辞書と、続け字の場合のための重み付け辞書とを別々に設け、さらに、分離しているのか続け字なのかに応じてそれに適した処理を実行するようにすることが望ましい。なお、アルファベットの文字列に対応するインクデータにおいて、１字ずつ分離して入力がなされているか続け字で入力がなされているかは、インクデータ中の各ストロークの広がり方や一連のインクデータ中の空白領域の有無などで識別できるから、手書き文字入力の後にこれらのいずれかを判断して、１字ごとに分離している場合の処理と続け字の場合の処理のいずれかを選択することが可能である。
【００２６】
辞書更新部１８は、利用者から学習の指示があった場合に、認識辞書２１あるいは重み付け辞書２２の更新を行なう。誤切り出しが生じたので利用者が学習を行なわせようとする場合、上述したように、誤切り出しとなったインクデータを重み付けクラスタとして重み付け辞書２２に登録するのが原則であるが、この場合、文字切り出しの基点から最遠の切り出し候補位置までのインクデータを登録する。また、場合によっては、認識辞書２１中に妥当なクラスタが存在しなかったために誤切り出しとなることがあるが、そのような場合には、指定されたインクデータをクラスタとして認識辞書２１に登録する。さらに、辞書更新部１８は、重み付けクラスタを新規登録した場合にその新規登録の重み付けクラスタの近傍に既存の重み付けクラスタが存在する場合には、その既存の重み付けクラスタを重み付け辞書２２から消去する。辞書更新部１８での具体的に処理については、図８のフローチャートを用いて後述する。
【００２７】
次に、この手書き文字認識装置の動作を説明する。最初に、文字認識処理の流れを図７のフローチャートを用いて説明する。
【００２８】
まず、利用者が時間的に間を置かずに入力した一連のインクデータを取得する（ステップ１０１）。取得されたインクデータは文字認識エンジン部１５に送られる。切り出し候補位置探索範囲Ｗの中で切り出し候補位置を探索し（ステップ１０２）、切り出し候補位置ごとにインクデータを取り出し、これらの特徴ベクトルを求め、認識辞書２１と比較して、切り出し候補位置ごとの候補文字を獲得する（ステップ１０３）。このとき、インクデータごとに、対応する候補文字のクラスタとそのインクデータの特徴ベクトルとの距離値を算出しておく。候補文字の数は、切り出し候補位置ごとに１個でもよいし複数個でもよい。
【００２９】
そして、重み付け辞書２２内を探索し、取り出されたインクデータの中で重み付けクラスタに近い（類似している）ものがあるかを検索する（ステップ１０４）。この検索は、取り出された各切り出し候補位置ごとのインクデータに対応する特徴ベクトルと重み付けクラスタとの特徴空間内での距離が所定のしきい値ｒ以下であるかどうかで行なわれる。重み付けクラスタに近いものが存在しない場合は、ステップ１０６に移行し、存在する場合には、重み付け辞書２２においてその重み付けクラスタの対象文字として登録されている文字を読み出し、その文字がすでに求められている候補文字のいずれかと一致する場合には、その一致する候補文字についての距離値に重み付けを行なう（ステップ１０５）。
【００３０】
ステップ１０６では、各候補文字をその距離値に応じてソートし、距離値の小さい順に並べる。距離値の定義によっては、インクデータ中のストローク数に距離値が依存する場合もあるが、そのような場合には、正規化処理を行なって、異なるストローク数のインクデータを比較できるようにする。このソート結果は、文字認識エンジン部１５から認識結果格納部１６に送られ、出力処理部１７によって、ソート結果に応じた候補文字の表示が入力・表示パネル１１で行なわれる（ステップ１０７）。候補文字の表示は、最も確からしい候補文字、すなわち、重み付け処理を実行した後の距離値が最も小さな文字のみをまず表示し、利用者の指示によって次順位の文字を表示するようにしてもよいし、ソート順に応じていくつかの候補文字を並べて表示してもよい。その後、利用者に指示によって候補文字を確定する（ステップ１０８）。このとき、第１順位の候補文字が利用者の意図した文字でない場合には、利用者は、次順位以下の候補文字を検索し、自分の意図した文字を指定して候補文字の確定を行なうものとする。そして、確定した候補文字に対応する切り出し候補位置までのインクデータを切り出し処理済みのものとし、切り出しの開始位置（基点Ｏ）を次に進め、全てのインクデータが切り出し済みかどうかを判断する（ステップ１０９）。未切り出しのインクデータが残っている場合にはステップ１０２に戻って上記の処理を繰り返し、残っていない場合には処理を終了する。
【００３１】
この手書き文字認識装置では、切り出し候補位置ごとに候補文字が求められるので、例えば、「動」と「重」、ブロック体での「Ｂ」と数字の「１」、続け字での「ｄ」と「ｃ」などのように、切り出し位置の異なる候補文字が併存することになる。そして、候補文字を利用者に提示している段階では文字切り出しの位置は確定しておらず、候補文字の確定とともに、その候補文字に対応する切り出し候補位置で切り出し位置が確定し、文字切り出しが最終的に行なわれたことになる。
【００３２】
以下、実例を挙げて説明する。図２に示したインクデータ２０は、利用者が日本語文字列の「動的」を意図して手書き文字入力したものであるが、「動」の字の偏（へん）と旁（つくり）の部分が離れ気味である。このインクデータ２０に対する切り出し候補位置ごとの候補文字とその候補文字に対する距離値が表１に示されている。表１に示されるように、重み付け処理を行なわない距離値で候補文字の順位付けを行なうと、「重」の方が距離値が近いため、第１順位の候補文字は「重」となり、誤った文字切り出しが行なわれることになる。
【００３３】
【表１】
0003675511.tif 000002
ところで、重み付け辞書２２に、図３のような重み付けクラスタ（図２のインクデータ２０中の「動」の字に非常に類似している）が、「重」の文字を対象文字として登録されていたとする。すると、切り出し候補位置Ｂでのインクデータがこの重み付けクラスタに近いことになるので、候補文字「重」に重み付けが行なわれることになる。この重み付け処理の結果、候補文字「動」に対する距離値はそのままであるのに対し、候補文字「重」に対する距離値が増加し、「動」の方の距離値が小さくなって、最終的に、第１順位の候補文字が「動」となる。すなわち、利用者の書き癖に応じて正確な文字切り出しが行なわれたことになる。なお、利用者が「重力」を意図した場合、そのときのインクデータは、「動」を意図したときのインクデータとは異なっていると考えられ、その場合は上述の重み付けクラスタとはインクデータが異なるであろうから、「重」に対する重み付けは十分に行なわれず、「重」、「力」と正しく切り出しを行なうことができる。
【００３４】
別のケースとして、「重力」と入力したつもりが「重」と「力」が離れていないために「動」と誤切り出しされるような場合には、誤切り出しされたインクデータについて、切り出しの基点から最も遠い切り出し候補位置までを重み付けクラスタとし、対象文字を「動」として重み付け辞書に登録することにより、以後は正しく「重力」と認識されるようになる。
【００３５】
続いて、アルファベットの文字列の場合の例を説明する。図４(a)に示したインクデータ２０ａは、利用者がブロック体で「ＢＡＧ」を意図して手書き文字入力したものであるが、「Ｂ」の字の左側の縦棒部分と右側の部分とが離れており、「Ｂ」でなく数字の「１３」とも読めるものである。このインクデータ２０ａに対する切り出し候補位置ごとの候補文字とその候補文字に対する距離値が表２に示されている。表２に示されるように、重み付け処理を行なわない距離値で候補文字の順位付けを行なった場合には、第１順位の候補文字は数字の「１」となり、誤った文字切り出しが行なわれたことになる。
【００３６】
【表２】
0003675511.tif 000003
ところで、重み付け辞書２２に図４(b)に示すように重み付けクラスタが登録されていたとすると、切り出し候補位置Ｑでのインクデータが重み付け辞書２２のうちの図示上の方の重み付けクラスタと近いことになるので、候補文字「１」に重み付けが行なわれる。その結果、最終的に、第１順位の候補文字が「Ｂ」となり、利用者の書き癖に応じて正確な文字切り出しが行なわれたことになる。
【００３７】
同様に、図６(a)に示すインクデータ２０ｂは、利用者が続け字で「ｃｌｉｐ」を意図して手書き文字入力したものであるが、「ｃ」と「ｌ」の字がつまり気味であって、この部分が「ｄ」に類似している。このインクデータ２０ｂに対する切り出し候補位置ごとの候補文字とその候補文字に対する距離値が表３に示されている。表３に示されるように、重み付け処理を行なわない距離値で候補文字の順位付けを行なった場合には、第１順位の候補文字は「ｄ」となり、誤った文字切り出しが行なわれたことになる。
【００３８】
【表３】
0003675511.tif 000004
ところで、重み付け辞書２２に図６(b)に示すように重み付けクラスタが登録されていたとすると、切り出し候補位置Ｓでのインクデータが重み付け辞書２２のうちの図示上の方の重み付けクラスタと近いことになるので、候補文字「ｄ」に重み付けが行なわれる。その結果、最終的に、第１順位の候補文字が「ｃ」となり、利用者の書き癖に応じて正確な文字切り出しが行なわれたことになる。
【００３９】
次に、学習処理について図８を用いて説明する。
【００４０】
学習処理は、誤切り出しが行なわれた場合に利用者が入力・表示パネル１１の所定箇所をダブルクリックすることなどによって、開始する。このとき、誤切り出しが行なわれたインクデータがそのまま保存されているとする。以下、このインクデータのことを入力データという。
【００４１】
次順位以下の候補文字で上述の確定が行なわれたなどのことにより、入力データに対する正しい文字（以下、指定文字という）が利用者によって指定されると、まず、その入力データに対応する特徴ベクトルとその指定文字の既存のクラスタとの距離が第１のしきい値以下であるかどうかが判断される（ステップ１１１）。第１のしきい値以下の場合はステップ１１３に移行する。第１のしきい値を越える場合は、認識辞書２１におけるその指定文字のクラスタがその利用者にとって適切なものではない場合なので、その特徴ベクトルをその指定文字のクラスタとして認識辞書２１に追加登録する（ステップ１１２）。
【００４２】
ステップ１１３では、認識辞書２１内が検索され、入力データの特徴ベクトルに対して、指定文字のクラスタよりも近くに別の文字のクラスタがあるかどうかが判断される。「近い」とは、距離値が小さいということである。また、ここでいう別の文字とは、指定文字とは切り出し位置が異なる文字のことである。そのようなクラスタが存在しない場合には、誤切り出しによる誤認識ではない場合なので、学習処理を終了する。なお、切り出し位置が同じクラスタがより近くに存在する場合は、誤切り出しではなく、単なる誤認識の問題である。ここで入力データの特徴ベクトルとクラスタとを比較しているが、認識辞書がインクデータのストローク数別に編成されていて、異なるストローク数間での比較が直接行なえないような場合には、データをストロークごとの特徴空間で比較して距離値を求め、その距離値を適宜正規化して、異なるストローク数間での比較を行なえばよい。
【００４３】
ステップ１１３で指定文字より近いクラスタがある場合には、その別の文字のクラスタと入力データの特徴ベクトルとの距離が第２のしきい値以下であるかを判断する（ステップ１１４）。第２のしきい値を越える場合は、重み付けクラスタの設定が適切でない場合なので処理を終了し、第２のしきい値以下の場合には、切り出し候補位置探索範囲Ｗの範囲内で最も遠くにある切り出し候補位置から切り出されたインクデータに対応する特徴ベクトルを重み付けクラスタとし、指定文字より順位が上位であった候補文字を重み付けの対象文字として、重み付け辞書２２に登録する（ステップ１１５）。そして、重み付け辞書２２を検索し、新規登録の重み付けクラスタの近くに既存の重み付けクラスタが存在するかどうかを調べ（ステップ１１６）、存在しない場合には処理を終了し、存在する場合には、矛盾した重み付けクラスタの存在と重み付け辞書２２の必要以上の肥大化とを防ぐために、その既存の重み付けクラスタを重み付け辞書２２から消去して（ステップ１１７）、処理を終了する。ステップ１１５において、切り出し候補位置探索範囲Ｗの範囲内で最遠の切り出し候補位置に基づき重み付けクラスタを設定しているが、仮に、最遠でない切り出し候補位置から重み付けクラスタを設定したとすると、後続のストロークを考慮しないで重み付け処理が行なわれることになり、上述した例で言えば、「重さ」と入力しても「動」と認識されてしまうおそれがある。
【００４４】
次に、学習処理について、日本語文字列の場合を例に挙げて、さらに詳しく説明する。図２に示すようなインクデータ２０が入力した場合、特徴空間３０内において、切り出し候補位置Ａまでのデータ及び切り出し候補位置Ｂまでのデータに対応する特徴ベクトルが、図６(a)に示されるように、それぞれ、図示×印の点３４Ａ及び点３４Ｂのように配置したとする。また、認識辞書２１における文字「動」のクラスタと文字「重」のクラスタとが、それぞれ図示□印の点３１及び点３２のように配置されているものとする。点３４Ａに最も近いクラスタは「重」のクラスタであり、点３４Ｂに最も近いクラスタは「動」のクラスタであるから、これら「重」と「動」とがそれぞれ候補文字として選択される。点３１と点３４Ｂとの距離Ｄ１が点３２と点３４Ａとの距離Ｄ２より長いので、重み付け処理を行なわない限り、距離Ｄ２に対応する方、すなわち候補文字「重」に方が高い順位となる。図２は「動的」を入力したものであるから、誤切り出しとなる。
【００４５】
そこで、図６(b)に示すように、切り出し候補位置探索範囲Ｗ内で遠い方の切り出し候補位置Ｂに対応するインクデータを重み付けクラスタ３３として設定する。この場合の重み付け対象文字は「重」である。このように重み付けクラスタ３３を重み付け辞書２２に登録したのち、図２に示すのとほぼ同様のインクデータが入力したものとすると、図２に示したのとほぼ同様に、切り出し候補位置が検出される。ここでもこの切り出し候補位置をＡ及びＢとすると、それらの切り出し候補位置でのインクデータは、特徴空間３０内で、それぞれ、点３５Ａ及び点３５Ｂに配置する。この場合も点３５Ａに最も近いクラスタは「重」クラスタであり、点３５Ｂに最も近いクラスタは「動」のクラスタであるから、これら「重」と「動」とがそれぞれ候補文字として選択される。そして、点３１と点３５Ｂの距離Ｄ３が、点３２と点３５Ａの距離Ｄ４よりも長いため、重み付け処理を行なわなければ、「重」が切り出されることになる。しかし、点３５Ｂは、重み付けクラスタ３３から所定のしきい値ｒの範囲内にあるため、候補文字「重」に対して重み付けがなされ、「重」に対する距離Ｄ４に重み付け量δが加算される。その結果、Ｄ３＜Ｄ４＋δとなって、「動」が切り出され、正しい文字切り出しが行なわれることになる。
【００４６】
以上、日本語文字列のインクデータに対する重み付け辞書の場合を例に挙げて学習処理を説明したが、ここで述べた学習処理が、他の文字種、例えば続け字のアルファベットのインクデータに対応した重み付け辞書の学習処理にそのまま適用できるものであることは言うまでもない。文字種に応じた重み付け辞書を別々に設けて文字種によって重み付け辞書を切り換える場合には、それらの文字種ごとに重み付け辞書の学習処理を実行すればよい。
【００４７】
【発明の効果】
以上説明したように本発明は、重み付けクラスタとその対象文字とが登録される重み付け辞書を設け、入力したインクデータがこの重み付けクラスタに近い場合にはこの重み付けクラスタの対象文字が文字認識され難くなるように構成されている。したがって、利用者の書き癖などによって切り出し位置の誤りが生じるときに、誤切り出しに対応するインクデータとその誤って認識されて出力された文字とを重み付けクラスタとその対象文字として重み付け辞書に登録することにより、以後はそのような誤切り出しが生じ難くなり、利用者の意図した文字切り出しが行なわれるようになるという効果がある。
【図面の簡単な説明】
【図１】本発明の一実施例の手書き文字認識装置の構成を示すブロック図である。
【図２】日本語文字列に対応するインクデータでの切り出し候補位置を説明する図である。
【図３】日本語文字列に対応するインクデータに対する重み付け辞書を説明する図である。
【図４】  (a),(b)は、それぞれ、１字ずつ分離して入力されたアルファベット文字列のインクデータに対する切り出し候補位置を説明する図と重み付け辞書を説明する図である。
【図５】  (a),(b)は、続け字のインクデータに対する切り出し候補位置の検出方法を説明する図である。
【図６】  (a),(b)は、それぞれ、続け字で入力されたアルファベット文字列のインクデータに対する切り出し候補位置を説明する図と重み付け辞書を説明する図である。
【図７】文字認識処理の流れを示すフローチャートである。
【図８】学習処理の流れを示すフローチャートである。
【図９】  (a)〜(c)は、それぞれ、学習と文字認識との関係を説明する図である。
【符号の説明】
１１    入力・表示パネル
１２    ペン
１３    入力処理部
１４    インクデータ格納部
１５    文字認識エンジン部
１６    認識結果格納部
１７    出力処理部
１８    辞書更新部
２１    認識辞書
２２    重み付け辞書
３０    特徴空間
３３    重み付けクラスタ
１０１〜１０９，１１１〜１１７    ステップ
【図１】
0003675511.tif 000005
【図２】
0003675511.tif 000006
【図３】
0003675511.tif 000007
【図４】
0003675511.tif 000008
【図５】
0003675511.tif 000009
【図６】
0003675511.tif 000010
【図７】
0003675511.tif 000011
【図８】
0003675511.tif 000012
【図９】
0003675511.tif 000013