(57)【特許請求の範囲】
【請求項１】
手書き情報のストロークを表すデータを処理して、該データによって表される文字を識別するために：
ユーザによって与えられるデータであり、開始部と終了部とを有し、これらの間に処理すべき手書き情報が十分な量規定されるデータを受け取る工程と；
前記データの少なくとも一部分を、１つ以上のインクストロークを記述するデータアイテムに前処理する工程と；
前記１つ以上のインクストロークを記述している前記データアイテムを含んでいるデータの部分を一連のパッケージにアセンブルする工程と；
前記データの終了部を受け取る前に行なわれ、しかも、前記パッケージによって表される文字形状に関する情報と、前記パッケージによって表される文字の逐語的文脈に関する情報とを同時に考慮する工程を含み、前記一連のパッケージに対して、これらのパッケージによって表される蓋然的な文字結果セットを決定する工程と；
を含む手書き認識方法であって、
前記文字形状に関する情報が、一連の候補文字を決定すると共に、各候補文字に対して候補文字のコスト値を決定するために前記１つ以上のインクストロークを記述している前記データアイテムの少なくとも一部を含み、
前記文字の逐語的文脈に関する情報が、トリグラムコスト値を決定するために各候補文字と少なくとも1つの周りの候補文字の連続発生確率値を含み、
前記文字形状に関する情報と前記逐語的文脈に関する情報とを同時に考慮する工程が、候補文字のコスト値及び各候補文字のトリグラムコスト値を計算に用いて文字結果セットを決定する工程を含み；
前記文字結果セットを決定する工程が第1探索法を用いて複数の候補文字のうちから前記文字結果セットを探索することを含み；且つ
２つの探索法のうちの前記第1探索法が：
前記各パッケージに対して、それぞれ開始点と終了点とを有し、候補文字のストリングを表す少なくとも１つの経路を展開する工程；及び
各経路に対して、該経路が文字結果セットを含む確率値を反映する第１コスト値であって、前記パッケージによって表される文字形状に関する情報と、前記パッケージによって表される文字の逐語的文脈に関する情報とに基づいた第１コスト値を生成する工程；
を含み；且つ
前記２つの探索法のうちの第２の探索法が、当面の経路に対して、該経路の逐語的文脈に関する情報に基づいた第２コスト値を割当て、且つ前記第２の探索法が前記第１の探索法により展開された経路のうちの少なくとも幾つかの経路のそれぞれの開始点に向かって逆探索を行なって、前記文字結果セットを、前記第１と第２のコスト値の合成コスト値が最低の経路として識別することを特徴とする手書き認識方法。
【請求項２】
前記第２の探索法が、経路によって表される文字ストリングが辞書に出現するかどうかに基づいて、当該経路に前記第２のコスト値を割当てることを特徴とする請求項１に記載の方法。
【請求項３】
前記パッケージによって表される文字形状に関する情報と、前記パッケージによって表される文字の逐語的文脈に関する情報とを考慮する工程が、３つの隣接候補文字の発生尤度を考慮する工程を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記パッケージによって表される文字形状に関する情報と、前記パッケージによって表される文字の逐語的文脈に関する情報とを考慮する工程が、候補文字の１つが大文字であるかどうかを確かめるために、隣接候補文字の相対的な大きさを比較する工程を含むことを特徴とする請求項１に記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はコンピュータにより実現する手書き認識システムに関するものである。
【０００２】
【従来の技術】
手書き情報は、それをひとたびディジタル形態に変換すれば、コンピュータの入力として用いることができる。手書き情報は多数のメカニズムのうちのいずれかによって収集することができる。一般に、ユーザが保持するペン又はスタイラスの先端は、このペン先の位置を検出する検知メカニズムを具えているタブレット装置に接触して置かれる。ユーザが活字体風に書くか、又は普通に書く場合に生ずるような、タブレットに沿うペン先の移動によって、ペン先位置データのストリームが生成される。このデータは“ｘ”と“ｙ”の位置座標のアレイとすることができ、これは“インク”又は“インクデータ”と称することができる。手書き認識システムは、ユーザの手書き情報をワードプロセッシング（文書処理）の如き通常の任意のコンピュータアプリケーションに使用できるディジタル情報に変換する目的のために斯様なインクデータを処理する。
【０００３】
手書き認識システムに対する設計上の考慮すべき事柄は主として速度及び精度である。手書き認識が向上しうる速度に影響を及ぼす要因の１つは、コンピュータ処理時間がどれだけ認識タスクに割当てられるかに関連している。例えば初期の認識システムは、インクデータの全てがユーザによって与えられるまでインクデータの処理を後まわしにしていた。このような方法は、コンピュータがインクデータを収集しているときに使用できた処理時間を有効に使用していなかった。
【０００４】
手書き認識システムが、書かれた情報を対応するディジタル情報に変換する速度及び精度は、インクデータを処理する順番によって影響される。従来の幾つかのシステムでは、例えばインクデータを先ず処理して、タブレット上にて成した一連のペン移動によりどんな英数字を書いたのかを設定する。このような文字識別はセグメンテーション処理とも称される。その後、その有望な文字を、他の有望な文字の逐語的文脈にて意味があるものであるかどうかを決定すべく処理される。この後者の処理は文脈処理と称される。
【０００５】
【発明が解決しようとする課題】
斯様な逐次セグメンテーション処理及び文脈処理に伴なう問題は、有望な文字の選択が文脈情報にアクセスすることなく行われることにある。さらに、セグメンテーション処理は、最も有望な文字を決定する手助けをするのに有利に使用できる文脈情報を参照することなく、限られた情報で行われる。従って、文脈処理が斯様な限られた情報に基づくセグメンテーション処理により決定される文字で開始するため、文脈処理の精度はそれ相当に損われている。
【０００６】
本発明の目的は、アプリケーションの多数の革新により手書き認識の速度及び精度を向上する方法及びシステムを提供することにある。
【０００７】
【課題を解決するための手段】
本発明は、手書き情報のストロークを表すデータを処理して、該データによって表される文字を識別するために：
ユーザによって与えられるデータであり、開始部と終了部とを有し、これらの間に処理すべき手書き情報が十分な量規定されるデータを受け取る工程と；
前記データの少なくとも一部分を、１つ以上のインクストロークを記述するデータアイテムに前処理する工程と；
前記１つ以上のインクストロークを記述している前記データアイテムを含んでいるデータの部分を一連のパッケージにアセンブルする工程と；
前記データの終了部を受け取る前に行なわれ、しかも、前記パッケージによって表される文字形状に関する情報と、前記パッケージによって表される文字の逐語的文脈に関する情報とを同時に考慮する工程を含み、前記一連のパッケージに対して、これらのパッケージによって表される蓋然的な文字結果セットを決定する工程と；
を含む手書き認識方法であって、
前記文字形状に関する情報が、一連の候補文字を決定すると共に、各候補文字に対して候補文字のコスト値を決定するために前記１つ以上のインクストロークを記述している前記データアイテムの少なくとも一部を含み、
前記文字の逐語的文脈に関する情報が、トリグラムコスト値を決定するために各候補文字と少なくとも1つの周りの候補文字の連続発生確率値を含み、
前記文字形状に関する情報と前記逐語的文脈に関する情報とを同時に考慮する工程が、候補文字のコスト値及び各候補文字のトリグラムコスト値を計算に用いて文字結果セットを決定する工程を含み；
前記文字結果セットを決定する工程が第1探索法を用いて複数の候補文字のうちから前記文字結果セットを探索することを含み；且つ
２つの探索法のうちの前記第1探索法が：
前記各パッケージに対して、それぞれ開始点と終了点とを有し、候補文字のストリングを表す少なくとも１つの経路を展開する工程；及び
各経路に対して、該経路が文字結果セットを含む確率値を反映する第１コスト値であって、前記パッケージによって表される文字形状に関する情報と、前記パッケージによって表される文字の逐語的文脈に関する情報とに基づいた第１コスト値を生成する工程；
を含み；且つ
前記２つの探索法のうちの第２の探索法が、当面の経路に対して、該経路の逐語的文脈に関する情報に基づいた第２コスト値を割当て、且つ前記第２の探索法が前記第１の探索法により展開された経路のうちの少なくとも幾つかの経路のそれぞれの開始点に向かって逆探索を行なって、前記文字結果セットを、前記第１と第２のコスト値の合成コスト値が最低の経路として識別することを特徴とする手書き認識方法にある。
【０００８】
さらに、本発明によるシステム（以後単に“認識装置”とも称する）は、ユーザがタブレット上に書き始めるやいなやインクデータを処理し始める。従って、最終認識結果は、全てのインクデータが収集された後に極めて早く得られる。
【０００９】
本発明の他の要点は、セグメンテーション及び文脈処理を統合して、認識処理全体の精度を著しく向上させることにある。この統合は、認識タスクをダイナミックプログラミングの課題としてモデル化し、且つインクデータのストリームから多数の仮説文字の経路（ｐａｔｈ）を構成することにより達成される。認識装置は多数の経路を探索して最適の経路（これはユーザがタブレット上に書いたものに整合しそうな文字のストリングである）を見つける。或る経路の各ノードはインクデータの個別部分を表す。各ノードには幾つかのモデル化構成要素によってそのノードに割当てられるコスト値の総量である確率又はコスト値が関連付けられる。モデル化構成要素のうちの幾つかのものはノードによって表される蓋然的文字に関するコスト値を供給する。他の構成要素はノード情報の文脈に関連するコスト値を提供する。従って、正しい単語又は文章構成の最高の確率又は推定値は、文脈及びセグメンテーション処理を同時に用いて作られる。このセグメンテーション／文脈統合処理は認識システムの精度を大いに向上させる。
【００１０】
ダイナミックプログラミング経路探索（以後、単にＤＰＰ探索と称する）は本来ユーザが書き始めるやいなや開始する。この探索処理は認識処理における順方向パス（ｐａｓｓ）としての働きをし、これは経路の第２逆方向パス探索処理と結びつけられる。この第２探索処理は、一旦全てのインクデータが収集されてから行われる。ＤＰＰ探索は上述したモデル化構成要素によって与えられるコスト値に基づいて経路のコストを生成する。こうした経路コストはスタック−ベースト有限経路探索（以後ＳＢＰ探索と称する）である第２探索用の推定値として用いられる。このＳＢＰ探索はＤＰＰ探索によって生成される推定値を使用し、且つシステム辞書を参照して、ＤＰＰ探索経路推定値に、経路にて見つかった単語が辞書にある確率を加える。ＳＢＰ探索によって総体的に最適な（最もありがちな）認識結果に達する。ＳＢＰ探索は多数の蓋然的結果を発生し、且つランク付けすることができる。こうした結果は認識装置を呼出すアプリケーションに使用することができる。
【００１１】
【実施例】
図１ａは本発明による方法を実施しうるシステムを示す。電子ディジタル化タブレット２０はケーブル２４によってコンピュータ２２に接続される。ユーザは紙に活字体を書くのとほぼ同様な方法でスタイラス又はペン２６の先端をタブレット２０のスクリーン２８を横切って動かすことによりコンピュータに手書き情報を与える。一般に、タブレット２０はユーザがスクリーン２８に書くものをタブレットに表示する機構を具えている。
【００１２】
タブレットにはスクリーン２８の下側に導電性細条から成る通常の格子を設けることができる。ペン２６は導電性の先端を有するプローブとして作用する。先端の位置は、ユーザがその先端をスクリーンに接触させると格子によって検出される。タブレットはペンの先端位置を表すデータをコンピュータが入手できるようにする。データは“ｘ”と“ｙ”の位置座標のストリーム形態とすることができる。
【００１３】
様々なメカニズムのうちのいずれかを用いてペン位置を表すデータを供給しうることは明らかである。さらに、本発明を実施するのに用いられるタブレット及びコンピュータの構成要素は単一のハンド−ヘルドデバイスに組込むことができる。
【００１４】
コンピュータに実行させるアプリケーション（適用業務）が、タブレットにおける手書き情報を入力として捜し求めるような場合に、コンピュータは、例えば毎秒２００回の速度でｘ−ｙ座標データをサンプルし、且つそのデータを既知の文字に相関付けることによりインクデータを処理するのに本発明による認識装置を呼出す。認識装置は、その結果をアプリケーションに供給する。なお、本発明の説明のために用いている“文字”とは英数字又は記号のことである。“認識タスク”とは或る特定の途切れない量の手書き情報に対して認識装置が行う手書き認識のことである。
【００１５】
図２は本発明による認識装置の全体の機構及びこの認識装置を呼出して、認識タスクを実行させるアプリケーションとの関係を示す。認識装置はコンピュータオペレーティングシステムの構成要素である。この認識装置は予定した組みのアプリケーションプログラムインタフェース（ＡＰＩs ） を介して呼出すことができる。好適な実施例では、認識装置のコンピュータプログラムアスペクトをＣプログラミング言語で符号化すると共に３つの主要オブジェクトを介してアプリケーションと対話処理させる。この例ではオブジェクトをＨＲＣ，ＨＭＡＣＲＯ及びＨＲＣＲＥＳＵＬＴとし、これらを図２に参照番号３０，３２及び３４にてそれぞれ示してある。
【００１６】
ＨＲＣは認識装置と対話処理するためにアプリケーションによって用いられるルートオブジェクトである。このオブジェクトのライフスパンは１つの認識タスク分である。このオブジェクトはメンバ機能部を介して認識パラメータ及び認識装置に必要な他の情報（入力フラグ、言語コード、ガイド構造等）を設定するのに応答しうる。
【００１７】
ＨＭＡＣＲＯはアプリケーション指定ワードリストの如き文脈情報を認識装置に与えるためにアプリケーションによって作成されるオブジェクトである。
【００１８】
ＨＲＣＲＥＳＵＬＴは認識装置に認識タスクの結果を供給させるオブジェクトである。アプリケーションはこれらの結果を得るためにこのオブジェクトを照会する。
【００１９】
図２には認識タスクを実行するために認識装置によって用いられる幾つかのモジュールも図式的に示してある。特に認識装置はＨＲＣオブジェクト３０を介してアプリケーションによって与えられるインクデータを処理するためのエンジン（ｅｎｇｉｎｅ）モジュール４０及び関連するモジュールを具えている。
【００２０】
前処理モジュール４２は、タブレットから受信してサンプルしたインクデータをろ波すると共に平滑化する。前処理モジュール４２はサンプルしたインクデータから、このインクデータによってどの文字を表すことができるかについて仮説をたてるのに分類モジュール４４にとって必要且つ十分な情報を抽出する。
【００２１】
“ストローク”なる用語は、ペンの先端を、それが最初にスクリーンに接触する位置から、それがスクリーンから離れる位置までタブレットのスクリーン２８を横切って動かした時に発生するデータを表すのに用いられることに注意すべきである。例えば、図１ａのスクリーン２８に現れている筆跡は４つのストロークを示し、その１つは“Ｔ”の垂直部分であり、第２ストロークは“Ｔ”の水平部分であり、第３ストロークは文字“ｈ”であり、第４ストロークは文字“ｅ”である。
【００２２】
エンジンモジュール４０はモジュール４２からの前処理したデータを分類モジュール４４に配信する。データはインクデータの個別シーケンス又は“フレーム”の群で配信される。分類モジュール４４は各フレーム群に対して候補文字（情報）と称することのできる一組の仮説文字（情報）をエンジンモジュール４０に戻す。各候補文字には、それがタブレット上にユーザにより書かれたものに対応する関連確率値が割当てられている。
【００２３】
候補文字群はエンジンモジュール４０によってジェスチャ（ｇｅｓｔｕｒｅ）モジュール５６、ホワイトスペースモジュール４６、トリグラムモジュール４８及び基底線／高さモジュール５０に供給される。
【００２４】
ジェスチャモジュール５６は各候補文字をよく調べて、それが特定のシステム指定コマンドであるジェスチャを表すか、否かを決定する。例えば、ユーザが丸い“ｃ”を書いた場合に、ジェスチャモジュールは書かれたものが予じめ定められたジェスチャであるか、否かに注意する。例えば、この丸い“ｃ”はテキストの一部をコピーすべき旨を示す予定したジェスチャとすることができる。或るジェスチャが見つかる場合に、認識装置は直ちにＨＲＣＲＥＳＵＬＴオブジェクト内にある識別ジェスチャでのアプリケーションの制御に戻る。
【００２５】
ホワイトスペースモジュール４６は、任意の２つの候補文字がホワイトスペースによって離間される確率を計算する。この情報はエンジンモジュール４０に戻され、最良の結果を探索するのに用いられる。“最良の結果”とは認識タスクの完了時に認識装置によって戻される文字ストリングのことである。
【００２６】
トリグラムモジュール４８はエンジンモジュール４０によってそれに与えられる３つの隣接する候補文字を読取って、言語におけるこれら３つの文字の発生確率値を供給する。例えば、隣接文字が“ｔ”，“ｈ”及び“ｅ”の場合に、トリグラムモジュールは極めて高い確率値を戻すも、隣接する文字が“ｔ”，“ｌ”及び“ｅ”の場合には比較的低い確率値を戻すことにる。この情報は最良の結果を探索するに当りエンジンモジュールにより用いられる。なお、ここで注意すべきことは、この本発明システムの好適実施例では、トリグラム（即ち、３つの連続する文字）を用いているが、このモジュールにはバイグラムの如き連続的に発生する任意数の文字を用いることもできることにある。
【００２７】
基底線／高さモジュール５０は隣接する文字の相対的な大きさを比較し、且つ例えば最初の文字が大文字である確率値をエンジンモジュールに戻す。
ｈマクロ（ｈｍａｃｒｏ）モジュール５２はＨＭＡＣＲＯオブジェクト３２を介してアプリケーションにより与えられるワードリストの如き特定の文脈情報をエンジンモジュール４０に与えるための機構である。例えば、アプリケーションは認識装置にコンピュータユーザの最終ネームを与えることができる。このネームはエンジンモジュールが引き受ける探索処理中ずっと考慮される。
【００２８】
エンジンモジュールは、分類、ホワイトスペース、トリグラム、基底線／高さ及びｈｍａｃｒｏの各モジュールから受取った情報で後述するように手書き認識タスクの最良結果を探索する。この探索処理により求められた１つ以上の最良結果は、結果モジュール６０に与えられ、ＨＲＣＲＥＳＵＬＴオブジェクト３４の照会時にアプリケーションによって得られる。
【００２９】
認識装置の細部に戻り、且つ図２を参照するに、各手書き認識タスクに対するアプリケーションは、Ｃｒｅａｔ（作成）ＨＲＣ  ＡＰＩコールによりＨＲＣオブジェトクトを作成する。このアプリケーションは認識装置にＡｄｄ  Ｐｅｎ  Ｉｎｐｕｔ（追加ペン入力）ＨＲＣ  ＡＰＩコールにより入力インクデータを供給する。アプリケーションは認識装置にＰｒｏｃｅｓｓ  ＨＲＣ  ＡＰＩ呼出しにより処理時間量も与える。
【００３０】
処理時間がとれる（使用可能な）ときには（図３のステップ８０参照）、認識装置が先ずエンジン（ＥＮＧＩＮＥ）オブジェクト９０を呼出す。しかし、当分はＥＮＧＩＮＥオブジェクトで処理する情報は準備されておらず、従って制御は直ちに認識装置の主プログラムに戻る（図６のステップ９２参照）ものとする。次いで認識装置はステップ１００にて（情報探索用の）ＳＩＮＦＯにて示すオブジェクトを呼出す。このオブジェクトはエンジンモジュールの主要オブジェクトの１つである。図４のステップ１０１に示すように、ＳＩＮＦＯオブジェクトは処理するインクデータがない場合には制御を認識装置の主プログラムに直ちに戻す。次に、インクデータが使用できる場合につき考察する。
【００３１】
図４に１０２にて示す“インクデータ前処理”ステップは、インクデータがある場合には常に前述した前処理モジュール４２によって実行される。この処理を図１ｂの図と共にさらに考察する。図１ｂはｘ−ｙ座標データがタブレット２０によって如何にして収集されるのかを示す図である。この図の文字“ｍ”はユーザが書いたものである。タブレットからのｘ−ｙ座標データは毎秒当り２００回までサンプルされるから、図面の“ｍ”で多数のデータ点が発生する。
【００３２】
インクデータ前処理ステップ１０２は先ず、受取ったデータから図１ｂに点１０４にて示すような、ノイズとして特徴付けることのできる個所を除去する。次いで、多数のサンプルデータ座標値から限定量の基本ｘ−ｙデータを抽出して、分類モジュール４４及び他のモジュールが情報を有効に処理できるようにする。この基本データを抽出する１つの方法は、全インクストロークに沿って図１ｂに黒丸１０６にて示すような“極値”点に注目するやり方である。極値１０６はストロークの最上ピーク及び最低の谷を表す。この場合のストロークは“ｍ”全体の文字である。
【００３３】
複数の極値１０６が記録されていれば、これらの極値１０６間の幾つかの中間データ点（図１ｂに白丸にて示してある）をデータから抽出することができる。これらの抽出データ点はインクデータの基本特徴を表し、これらの抽出データ点はさらに処理するために格納しておく。この点に関し、インクデータの１つのストロークに対応する前処理したインクデータは“フレーム”として格納され、前処理したインクデータのストロークはいずれもフレームのアレイとして格納される。（以後、前処理したストロークをフレームと称する。）
【００３４】
図４のステップ１０８に示すように、ＳＩＮＦＯオブジェクト１００が引き受ける次の処理は分類モジュール４４によって分析するための入力データの多数の隣接フレームをパッケージすることである。この点に関し、“グリフ”（ｇｌｙｐｈ）とは１つのフレーム又は数個のフレームを組合わせたものとする。グリフは分類モジュールへと送られ、これらのグリフがどんな文字を表すかが決定される。
【００３５】
好適な実施に当っては、グリフを１個、２個、３個及び４個のフレームから成る別々の組合せに群別する。従って、４つのグリフから成る１つの群は各フレームに関連付けられる。例えば、図１ｃを参照するに、大文字の“Ｅ”を書いた場合には、４つの連続するストローク１１２，１１４，１１６及び１１８が用いられる。これら４つのストロークを表すｘ−ｙデータが前述したようにして一旦前処理されると、認識装置は各フレームに対して（ここでは例えば最終ストローク１１８に関連するフレームに対して）関連する１つの群のグリフをパッケージする（即ち、コンピュータメモリに整列させる）。ストローク１１８に対応するフレームに対して、関連するグリフ群は、フレーム１１８のデータだけを含むグリフ；フレーム１１８と、その直前のフレーム１１６のデータを含むグリフ；フレーム１１８，１１６及びその前のフレーム１１４のデータを含むグリフ；及びフレーム１１８，１１６，１１４及び１１２のデータを含むグリフを包含する。好適例では、ユーザが英語の文字に４つ以上のストロークを組み合わせない限り、グリフにアセンブルするフレームの最大数は４である。
【００３６】
なお、上述した“フリー”の手書き入力の代わりとして、ペンとタブレットシステムは、スクリーン２８上に“ボックス”を規定し、これらの各ボックス内にユーザが単一の英数字を入力させるようにすることもできる。このような場合には、ＳＩＮＦＯオブジェクトによって実行させるグリフパッケージングによって、或る特定の入力ボックス内に含まれるフレームの全てを、分類モジュールによる分析のために単一グリフとして群別する必要がある。下記に説明すること以外に、アプリケーションはＨＲＣオブジェクトの属性によりＳＩＮＦＯオブジェクトに斯様なタブレットシステムによって用いられるボックス又はガイド構造を表すデータを与える。以後説明する探索処理はボックス式か、又はフリー入力を用いるかに無関係に同じ方法にて実行される。
【００３７】
フリー入力のインクデータの各フレームに関連する４つのグリフから成る群が一旦パッケージされると、ステップ１２０（図４）でのＳＩＮＦＯ処理が分類モジュールを呼び出す。この分類モジュールは各フレームのグリフ群を調べて、どのグリフの形状が英数字に対応するかどうかを決定する。文字形状が見つかる場合に、分類モジュールは斯様な各グリフに対し１つ以上の有望な候補文字を戻す。こうした候補文字は仮説文字と称することができる。分類モジュールは、各候補文字に対して、その候補文字がユーザにより書かれたようなグリフにどの程度似ているかに関する確率値も供給する。形状認識装置と称することができる分類モジュールはｙ極値に基づく特徴部を用いる統計的根拠によるタイプのものである。
【００３８】
例えば、図１ｃに示した４つのフレーム１１２，１１４，１１６及び１１８を含むグリフの場合に、分類モジュールは仮説文字である文字“Ｅ”を極めて高い出現確率で戻す（“Ｅ”が図に示すように正確に書かれているとする）。“Ｅ”のグリフが如何に注意深く形成されるかに応じて、低い確率値を有する“Ｆ”の如き他の形状も候補文字として戻される。
グリフ及び対応する仮説文字は関連する確率値と一緒に、後の使用のために探索処理中にＳＩＮＦＯオブジェクトのステップ１２２により格納される。
【００３９】
目下使用できる全てのグリフに対するグリフ群の全てを分類モジュールにより分析した後に、図４のＳＩＮＦＯオブジェクトのステップ１１４にてホワイトスペースモジュールを呼び出す。このホワイトスペースモジュール４６は所定の候補文字のｘ−ｙデータをその直前の候補文字のｘ−ｙデータと比較する。こうした２つの隣接する候補文字間のスペースの大きさが隣接文字間の一般的な間隔を表すしきい値以上である場合に、ホワイトスペースモジュールは、その候補文字に対して、文字間の間隔が高い確率を表す値を戻すようにする。図４のステップ１２６に示すように、各文字に関連するホワイトスペースの確率はエンジンモジュールにより使用するために格納する。前述したように、文字のホワイトスペースの確率は最良の認識結果を探索するのに考慮される。前述したような“ボックス”式の入力を用いる場合には、その入力フォーマットにより単語の境界が明瞭にされるから、ホワイトスペースモジュールは呼び出されない。
【００４０】
ＳＩＮＦＯオブジェクトが目下使用可能なインクデータの処理を完了すると、このオブジェクトは認識装置の主プログラムに制御を戻し、この場合にはジェスチャ（ＧＥＳＴＵＲＥ）オブジェクト１０１（図３参照）が呼び出される。
【００４１】
ＧＥＳＴＵＲＥオブジェクト（図５）は新着の受信ストローク（フレームとして格納されている）のうちのどれがジェスチャを含んでいるかを決定する。図５に示すように、ＧＥＳＴＵＲＥオブジェクトは連続するストロークの組（例えば、３つの連続ストローク）に対応する前処理したｘ−ｙデータを、前述した丸い“Ｃ”の如く、システムに規定してあるジェスチャの可能性に対応する作表データと比較する（図５のステップ１３０，１３２）。次いでＧＥＳＴＵＲＥオブジェクトは、ユーザがジェスチャをまだ入力してある場合には、その旨の指示で主プログラムへと戻る。検出したジェスチャ情報はいずれもＨＲＣＲＥＳＵＬＴオブジェクトに直ぐ入り、アプリケーションがそれを使用できるようにする。ジェスチャモジュールによって実行される処理が認識タスク処理には必要とされないことは明らかである。この点に関し、ジェスチャモジュールは、個別のシステム要件（ジェスチャ識別）を如何に簡単に本発明の認識システムに組み込んで認識装置を完成しうるかを実証している。
【００４２】
ジェスチャが見つからない場合には、認識装置がステップ１０３（図３）にて、ＥＮＧＩＮＥオブジェクトを処理する情報がＳＩＮＦＯオブジェクトにより格納されているかどうかを調べる。このような情報が存在し、しかも処理時間がまだある（ステップ８０）場合には、認識装置が再びＥＮＧＩＮＥオブジェクト（図６参照）を呼び出す。このオブジェクトはエンジンモジュールの他の主要なオブジェクトであり、これは上述した探索処理を実行して、認識タスクが最良結果に達するようにする。
【００４３】
ＥＮＧＩＮＥオブジェクトは認識装置に与えられるインクデータに関する全ての情報を検索し、且つこうした情報を有意義な方法にて組み合わせて、ダイナミックプログラミング（ＤＰＰ）探索及び前述したスタック−ベースト有限経路（ＳＢＰ）探索により最良の結果、即ち最良推測値を生成する。
【００４４】
データ（これはＳＩＮＦＯオブジェクトによって処理されたものを表すべく“探索情報”と称する）がＥＮＧＩＮＥオブジェクトによる処理に利用できる場合には（図６のステップ９２）、ＤＰＰオブジェクト２００（図６）がＥＮＧＩＮＥオブジェクトによって呼び出される。このＤＰＰオブジェクトは１つの粒度、この場合には前処理したインクデータのフレームを処理して、ダイナミックプログラミング経路探索を拡張させるために呼び出される。
【００４５】
図７を参照するに、ステップ２０２でのＤＰＰ探索は先ずフレーム（ＤＰＰ探索目的にとっては、フレームは探索経路の層と見なされる）に対して、ＳＩＮＦＯオブジェクト１００につき前述したように、このフレーム用にパッケージされた全てのグリフを検索する。
【００４６】
次のステップ２０４にてＤＰＰはＳＩＮＦＯ探索情報から、斯かるフレームのグリフ群が分類モジュールによって考慮された場合に、この分類モジュールによって戻された各仮説文字（探索処理では“シンボル”と称する）を検索する。従って、ステップ２０４は分類モジュールによって戻された或る所定の層に対する候補文字（“シンボル”）の全てを検索する。
ステップ２０６は、ＤＰＰオブジェクトが当面のフレーム、即ち層“ｉ”に関連する斯様な各シンボルに対する探索経路のノードを確立する旨を指示する。
【００４７】
後述するように、ＤＰＰ探索オブジェクトは後に、以前の層における以前の全てのノードから現在の層における各ノードまでの最良の経路コストを計算する。従って、探索処理はデータを最初に受け取ってから、データを最後に受け取る方向へと順方向に進められる。しかし、好適な実施に当たっては、ＤＰＰ探索及び後述するＳＢＰ探索オブジェクトによって、最低の経路コストを“最良”コストとして定めるようにするということに留意すべきである。従って、上述したモジュール（分類、トリグラム等）によって戻される確率値は、ＥＮＧＩＮＥオブジェクトにて、これらの確率値をそれらの関連する負の対数値に変換することにより最小コスト値に変換される。この結果、幾つかのモジュールによって戻される総合最小コスト値は、これらの負の対数値を加えることにより決定され、これにより、確率値が逓倍されて総合値に達する場合に生ずることのある計算上の無効性がなくなる。
【００４８】
上述したようにダイナミックプログラミング探索経路コストを計算する前に、ＤＰＰオブジェクトは先ずステップ２０８にてｈｍａｃｒｏモジュール５２を呼出し、当面の層の全てのノードに至る経路が前述したＨＭＡＣＲＯオブジェクトによる主アプリケーションによって供給されるどのテンプレートにより許可されるかどうかを決定する。斯様な遷移妥当性が受け入れられる場合に、ＤＰＰオブジェクトはステップ２０９にて、当面のノード層の直前の層内に位置する各ノードに至るまでの経路コストを計算するようにして、経路情報（文字ストリング）及び各経路に対する総合最小コスト値を同時に検索する。
【００４９】
次に説明する連続ステップによりＤＰＰ探索オブジェクトは、以前のノードまでの経路コストに当面のノードに関連するコスト値を加えることにより当面のノードまでの経路コスト（新コスト）を計算する。
特に、ステップ２１０にてＤＰＰオブジェクトは当面のノードに対して、このノードを含んでいるシンボルに対して分類モジュールによって戻された文字最小コスト値αを検索する。
【００５０】
ステップ２１２及び２１４は、当面の経路ノードに対して、トリグラムモジュール４０からのトリグラム最小コスト値を表すコスト値βも検索されることを指示する。
当面のノードに対する基準線／高さコスト値γ（ステップ２１６，２１８）及び上述したホワイトスペースコスト値δ（ステップ２２０）も検索される。
【００５１】
ステップ２２４では、以前の層ノードの各々から当面のノードまでの経路コスト（新コスト）を別々に求め、且つステップ２２６にて当面のノードまでの最低経路コストを、下記に詳述するようにＳＢＰ探索によって使用すべき（部分的）経路コスト推定値として格納する。
【００５２】
或る特定層における全てのノードに対する最低コスト経路が一旦設定されたら（ステップ２０８〜２２６）、ＤＰＰ検索の反復は終了する。次いでＥＮＧＩＮＥオブジェクトがステップ２３０（図６）にて、ＨＲＣオブジェクトを介するアプリケーションによって与えられるフラグがインクデータ入力の終了を知らせているかどうかを調べるチェックをする。前記フラグがインクデータ入力の終了を知らせていない場合には、ＥＮＧＩＮＥオブジェクトが認識装置のプログラムへの制御に戻り（図３）、これにより時間が許せば、ＥＮＧＩＮＥ、ＳＩＮＦＯ及びジェスチャオブジェクトのステップを再び実行して、（１）ユーザがタブレット上に書き続けているようにインクデータがまだ使用可能である場合にはさらに探索情報を発生し、（２）新たに加わったインクデータにより作られるジェスチャを調べ、（３）１つ以上の層によるＤＰＰオブジェクトのダイナミック探索経路を拡張する。上述した（１）については、ユーザが必ずしもタブレット上に書き終わらなくても、ダイナミック探索経路の処理及び構成が最終的に最良の結果を見い出すものとなることは明らかである。本発明はこのようにすることにより、最良結果の最終計算をかなり早くすることになる。
【００５３】
ＥＮＧＩＮＥオブジェクトにより実行される当面の処理ステップ２３０に戻るに（図６）、インク入力データの終了がアプリケーションにより標識付けられている場合には、ＥＮＧＩＮＥオブジェクトがステップ２３４のＳＢＰ探索オブジェクトを呼び出して、上述したスタック−ベースト有限経路探索を実行して、１つ以上の最良結果を得るようにする。
【００５４】
特に、図８を参照するに、ＳＢＰ探索オブジェクトは先ずＤＰＰ経路（即ち、上述したようなＤＰＰオブジェクトにより確立されるダイナミックプログラミング探索経路）の各端部に生ずるノードを検索する。ステップ３０２では、ＳＢＰオブジェクトは各ノード端部からＤＰＰ経路の開始点の方へと逆方向に経路探索を拡張する。ＳＢＰオブジェクトは、以前のノード拡張に対する各ノードにて、システム辞書及びいずれかのアプリケーション供給ワードリストを調べて、或るノードから他のノードへの遷移が、システム辞書又はワードリストを考慮して評価される各端部ノードから文字ストリングを生成するかどうかを決定する。
【００５５】
ステップ３０４では、ＳＢＰオブジェクトが無効遷移に関連するノードに対するＤＰＰの部分経路コスト（即ち、経路の開始点から当面のノードまでＤＰＰオブジェクトにより計算した経路コスト）に辞書コストΔを加える。なお、割り当て辞書コストは比較的高いため、辞書コストを含む経路が最良結果をまねく見込みはない。同様に、１つ以上の割当て辞書コストを含む（ステップ３０４の結果として）経路が総体的に最良の結果をまねくことはさらに有り得ない。
【００５６】
ここで注意すべきことは、ＳＢＰ探索が辞書に頼る度合いは認識装置を呼び出すアプリケーションによって決めることができるという点にある。この点に関し、ＨＲＣオブジェクトの属性の１つには、ＳＢＰ探索がシステム辞書に頼る度合いに影響を及ぼすアプリケーションにより設定される強制変数を含めることができる。例えば、ＨＲＣオブジェクトによりエンジンモジュールに与えられる極めて高い値の強制変数は、認識装置が辞書で見つからなかったワードを拒絶すべきとすることを指示する。従ってＳＢＰ探索には極めて高い辞書コストΔが割り当てられるから、斯様な経路は除去する。
【００５７】
一旦辞書コストが全てのＤＰＰ経路に割当てられると、ＳＢＰオブジェクトは各端部ノードにて逆方向探索を開始し（ステップ３０６）、各端部ノードについて、文字コストα、トリグラムコストβ、基底線／高さコストγ、ホワイトスペースコストδ及び（割当てがあれば）辞書コストΔの総和を含む“実際の”コストを計算する（ステップ３０８）。これらのコストはＤＰＰ探索で前もって処理した際に各ノードに関連して格納してあるから、直ぐに使用することができ、前記各ノードはＳＢＰ探索により実行される逆方向探索の基礎となるものである。なお“ＳＢＰノード”とは、逆方向ＳＢＰ探索によって考慮されるノードを称するのにも時々用いるものとする。
【００５８】
当面のＳＢＰノードに対する実際のコストを計算した後（現在の場合には、ＤＰＰ探索経路の各端部ノードまでを考慮して）、ＳＢＰ探索はステップ３１０にて当面のＳＢＰノードと、各直前の（即ち開始点の方の）ノードとの間の全経路拡張のコストを計算する。逆方向経路拡張、即ち隣接ノードに対するＳＢＰコストは、（１）当面のノードの“実際の”コスト（ステップ３０８）と、（２）隣接ノードまでのＤＰＰ部分経路コストとを含んでいる。
ＳＢＰオブジェクトのステップ３１２は当面のノードの各逆方向経路拡張に関連するＳＢＰコストをスタックにセーブする。
【００５９】
ＳＢＰオブジェクトのステップ３１４では、逆方向経路拡張がＤＰＰ経路の開始点（即ち、入力の開始点）に達したかどうかを確かめるチェックをする。それがノードである場合には、スタックに保持されている逆方向経路がソートされ、当面の選択した次のノードは“最良”、即ちＳＢＰコストが最低の経路ということになる。この最良経路ノードに対して、図８のステップ３０８，３１０，３１２及び３１４にて述べた探索ステップが実行される。ステップ３１４で明らかなように、ＳＢＰ探索は端部ノードの全てに対応する経路に対してステップ３０８，３１０及び３１２を実行する。これにより全ての探索が完了すると、ＳＢＰ探索はステップ３１２でアセンブルしたソートスタックの内容によって表される最良結果を返送する。この最良結果は結果モジュールを経てＨＲＣＲＥＳＵＬＴオブジェクトに与えられ、且つ呼出しアプリケーションによりアクセスすることができる。
【００６０】
なお、ＳＢＰ探索は１つ以上の“最良の”答えを出すように簡単に改造することもできる。この点に関し、ステップ３０８，３１０，３１２及び３１４を繰り返す探索は幾つかの低コスト経路に関連するノードをセーブする。このような結果はコストに従ってランク付けされ、アプリケーションに使用することができる。
【００６１】
本発明は上述した例のみに限定されるものではなく、幾多の変更を加え得ること勿論である。例えば活字体で書いた入力につき説明したが、本発明による認識装置は、例えば前処理モジュールにて入力を複数ストロークに適当に分割することにより続け書き入力を容易に処理することもできる。このような前処理モジュールは認識装置の他のモジュールを何等変更する必要なく認識装置に組み込むか、又は“プラグ嵌め”することができる。
【００６２】
本発明は種々様々なコンピュータシステムを用いて実施することができる。その１つは、マイクロソフト社のウィンドーズ３．１オペレーティングシステムを実行するインテル社の６６ＭＨｚ８０４８６マイクロプロセッサを用いるパーソナルコンピュータとすることができる。
【００６３】
上述した機能を行なわせるためにディジタルコンピュータにＣ言語のプログラミングで用いることのできる模範的なデータ構造及び機能を下記に示す。
【００６４】
〔データ構造〕
ＳＩＮＦＯ
ＧＬＹＰＨＳＹＭオブジェクトによるフレーム組によって生成される文字確率を格納する。種々のグリフ組合わせのホワイトスペースコストも格納する。これはＨＲＣオブジェクトに含まれる主オブジェクトの１つである。
【００６５】
ＧＬＹＰＨＳＹＭ
グリフに関連する文字仮説情報を格納する。形状認識装置によって戻される確率を格納する。
【００６６】
ＥＮＧＩＮＥ
ＤＰＰ及びＳＢＰオブジェクトを包含する。２つの探索オブジェクト間の探索エンジンプロセスをスケジュールするのに応答し得る。これはＨＲＣオブジェクトに含まれる主オブジェクトの１つである。
【００６７】
ＤＰＰ
ＤＰＰ探索処理についての情報を包含する。ＳＢＰ探索によって使用すべき全てのノード及び経路評価を格納する。
【００６８】
ＳＢＰ
ＳＢＰ探索処理についての情報を包含する。経路を含む現行探索用の優先待ち行列を格納する。代替結果を格納する。
【００６９】
〔機能〕
〔ＧＬＹＰＨＳＹＭ機能〕
ｉｎｔ：CSymGLYPHSYM(GLYPHSYM * glyphsym)
このグリフに関連するシンボル仮説数を戻す。ＤＰＰ及びＳＢＰモジュールによって呼び出される。
【００７０】
ＳＹＭ：SymAtGLYPHSYM(GLYPHSYM *glyphsym,int iSym)
このグリフに対するｉ番めのシンボル仮説を戻す。ＤＰＰ及びＳＢＰモジュールによって呼び出される。
【００７１】
ＰＲＯＢ：ProbAtGLYPHSYM(GLYPHSYM * glyphsym,int iSym)
このグリフに対するｉ番めのシンボル仮説のコストを戻す。ＤＰＰ及びＳＢＰモジュールによって呼び出される。
【００７２】
ＧＬＹＰＨ：GlyphGLYPHSYM(GLYPHSYM* glyphsym)
グリフそのものを戻す。ＤＰＰ及びＳＢＰモジュールによって呼び出される。
【００７３】
〔ＳＩＮＦＯ機能〕
ｉｎｔ：ProcessSINFO(SINFO* sinfo, BOOL fEndOfInk)
ＳＩＮＦＯオブジェクトの１つの粒度を処理する。この処理中にＳＩＮＦＯオブジェクトは所定のインクデータに基づく妥当なＧＬＹＰＨＳＹＭオブジェクトを構成し、シンボル仮説用の形状認識装置を呼び出す。ＳＩＮＦＯオブジェクトはボックス式（枠付き）認識用のセグメンテーションも実行する。これはＨＲＣＡＰＩコール中に呼び出される。
【００７４】
ＢＯＯＬ：Set Guide SINFO (SINFO* sinfo, LPGUIDE lpguide, int n First)ガイド情報をセットする。ＨＲＣオブジェクトにより直接呼び出される。この機能はSet Guide HRC API コール中に呼び出される。
【００７５】
ＢＯＯＬ：Set Alphabet SINFO (SINFO * sinfo, ALC alc LPBYTE rgbyte)
アルファベット情報をセットする。この機能はSet AlphabetHRC API コール中に呼び出される。
【００７６】
ＢＯＯＬ：Get Box Results SINFO (SINFO* sinfo,int cAlt, int iSyv, LPBOXRESULTs lpboxresults)
認識装置に目下格納されているボックス結果を探索する。ボックス入力における iSyv 番めのシンボルに対する文字選択肢を検索する。この機能はGet Box Results HRC API コール中に呼び出される。
【００７７】
ＧＬＹＰＨＳＹＭ：Glyphsym At SINFO (SINFO* sinfo,int iFrame, int cFrame)
次のような指定、即ちグリフの最終フレームの指標が iFrame であり；グリフにおけるフレーム数が cFrame である；を有するグリフを包含するるglyphsymオブジェクトを検索する。この機能は探索処理中探索エンジンオブジェクトによって呼び出される。
【００７８】
〔ＥＮＧＩＮ機能〕
ｉｎｔ：ProcessENGINE(ENGINE* engine, BOOL fEnd Of Ink)
ＤＰＰ及びＳＢＰ探索をする。先ず、新情報がＳＩＮＦＯオブジェクトに加えられているかどうかを確かめるチェックをする。もしそうであれば、Process ＤＰＰを呼出して、ＤＰＰオブジェクトにＤＰＰを探索する時間を与える。そうでなければ、Process ＳＢＰを呼出して、ＳＢＰオブジェクトにＳＢＰ探索する時間を与える。Process ENGINEはProcess ＨＲＣ  ＡＰＩコール中に呼び出される。
【００７９】
ＢＯＯＬ：SetCoercionENGINE(ENGINE* engine, UINT u Coercion)
探索エンジンにおける強制型変換レベルを設定する。この機能はSet Coercion HRC APIコール中に呼び出させれる。
【００８０】
ＢＯＯＬ：SetMacroENGINE(ENGINE * engine, HMACRO hmacro)
探索処理をするマイクロオブジェクトを設定する。マクロはテンプレート、ワードリスト又は辞書のいずれかとすることができる。これは探索処理中に使用するＤＰＰ及びＳＢＰオブジェクトにまで伝播する。この機能はSet Macro HRC API コール中に呼び出される。
【００８１】
ｉｎｔ：CResult ENGLNE(ENGINE * engine)
探索により生成される結果数を戻す。この数はアプリケーションによって所望される最大結果数以下とするか、それに等しくする。この機能はGet Results HRCAPIコール中にに呼び出される。
【００８２】
ＲＥＳＵＬＴ：Result At ENGLNE(ENGINE * engine, int index)
探索エンジンによって生成されるｉ番めの結果を戻す。結果オブジェクトはENGINEオブジェクトによって作られたり、壊されたりし、情報はRESULTクラスのメンバ機能部を介してアクセスされる。
【００８３】
〔ＤＰＰ機能〕
ｉｎｔ：Process DPP (DPP* dpp)
ＤＰＰ探索の１つの粒度を処理する。この機能は既存のノードを１つだけ拡張し、最良の部分結果を格納する。この機能はProcess ENGLNEコール中に呼び出される。
【００８４】
ｉｎｔ：CLayer DPP(DPP* dpp)
生成された層数をＤＰＰ探索の結果として戻す。これはフリー入力の場合に処理されるフレーム数に等しい。ボックス式入力の場合には、これは生成されるボックス数に等しい。この機能はＳＢＰモジュールにて呼び出される。
【００８５】
ｉｎｔ：CFrame DPP(DPP* dpp)
処理したフレーム数を戻す。この機能はＳＢＰモジュールにて呼び出される。
【００８６】
ＣＯＳＴ：Get Estimate(DPP* dpp,int iLayer, SYM sym)
最良の経路コスト推定値をＤＰＰ探索の結果として戻す。iLayerはＤＰＰ探索層の指標である。Sym は特定層における終了記号であり、例えばGet Estimate DPP (dpp,3,(SYM) ‘ａ’は（フリー入力の場合に）４フレーム後に文字‘ａ’で終了する経路の最良の推定値を戻す。この機能は探索中にＳＢＰ文字によって呼び出される。
【００８７】
〔ＳＢＰ機能〕
ｉｎｔ：Process SBP (SBP* sbp)
ＳＢＰ探索の１つの粒度を処理する。この機能はProcess HRC API コール中に呼び出される。
【００８８】
ｉｎｔ：CResults SBP (SBP * sbp)
ENGINEモジュールによって目下呼び出されるＳＢＰ探索により生成される結果を戻す。
【００８９】
ＢＯＯＬ：Set Rasult MaxSBP (SBP * sbp, int CMax)
ＳＢＰ探索によって所望される最大結果を設定する。この機能はアプリケーションが探索による所望数の結果を設定する際に、Process HRC コール中に呼び出される。
【図面の簡単な説明】
【図１】（ａ）は手書き情報を表すデータを収集する機構を示す図である。
（ｂ）は手書き文字に関連するデータ点を示す図である。
（ｃ）は文字を形成すべく組合わせる一連のインクストロークを示す図である。
【図２】認識装置の主要構成要素と、この認識装置のサービスを求めることができるコンピュータアプリケーションとのインタラクションを示す図である。
【図３】認識装置によって引き受けられる全処理を示すフローチャートである。
【図４】認識装置の一部によって引き受けられ、アプリケーションによって与えられるインクデータに関連する所定情報を後に処理するために確立して格納するＳＩＮＦＯにて示すオブジェクトの処理を示すフローチャートである。
【図５】認識装置の一部によって引き受けられ、インクデータが特定のジェスチャを示すかどうかを検出するためのＧＥＳＴＵＲＥにて示すオブジェクトの処理を示すフローチャートである。
【図６】認識装置の一部によって引き受けられ、最良の手書き認識結果を生成するための全探索処理を制御するＥＮＧＩＮＥにて示すオブジェクトの処理を示すフローチャートである。
【図７】２つの探索法の一方によって引き受けられ、認識装置によって用いられるＤＰＰにて示すオブジェクトの処理を示すフローチャートである。
【図８】２つの探索法のうちの他方によって引き受けられ、認識装置によって用いられるＳＢＰにて示すオブジェクトの処理を示すフローチャートである。
【符号の説明】
２０  タブレット
２２  コンピュータ
２４  ケーブル
２６  スタイラス
２８  スクリーン
３０  ＨＲＣ（ルートオブジェクト）
３２  ＨＭＡＣＲＯ（文脈情報供給オブジェクト）
３４  ＨＲＣＲＥＳＵＬＴ（認識タスク結果供給オブジェクト）
４０  エンジンモジュール
４２  前処理モジュール
４４  分類モジュール
４６  ホワイトスペースモジュール
４８  トリグラムモジュール
５０  基底線／高さモジュール
５２  ｈｍａｃｒｏモジュール
【図１】
0003885974.tif 000002
【図２】
0003885974.tif 000003
【図３】
0003885974.tif 000004
【図４】
0003885974.tif 000005
【図５】
0003885974.tif 000006
【図６】
0003885974.tif 000007
【図７】
0003885974.tif 000008
【図８】
0003885974.tif 000009