(57)【特許請求の範囲】
【請求項１】
１文字毎の文字入力領域がないオンライン手書き文字認識装置において、
手書き文字のストロークを入力し、ストロークデータに変換するストローク入力部と、
前記ストロークデータと既存の未確定セグメントに基づいて、前記ストロークデータを、新しい未確定セグメントとするか既存の未確定セグメントに追加するかを判定するセグメント判定部と、
前記セグメントに基づき、前記セグメントが確定セグメントか未確定セグメントか判定し、セグメントの確定を行なうセグメント確定部と、
前記確定セグメントに基づき、確定セグメントの組み合わせから成る一文字毎の文字領域を判定する文字領域判定部と、
各文字領域に含まれる前記ストロークデータに基づいて、前記文字領域毎に前記手書き文字をオンライン認識して、文字候補を生成する個別文字認識部と、
前記文字領域毎の文字候補の組み合わせの最適パスを生成し、最適の文字組み合わせを認識結果として出力する最適パス生成部と、
前記ストロークデータが確定セグメントに対して入力された場合、前記ストロークデータが削除指示か否かを判定し、削除指示の場合は、前記ストロークデータが入力された確定セグメントを削除してそれ以降の確定セグメントを未確定状態にし、削除指示でない場合は、前記ストロークデータが入力された確定セグメント以降の確定セグメントを未確定状態にするセグメント確定取消部と、
前記セグメント確定取消部が処理したセグメントに対して、前記文字領域の判定を取り消す文字領域取消部と、
前記セグメント確定取消部が処理したセグメントに対して、前記最適パスを取り消す最適パス取消部と、
前記ストロークデータが削除指示の場合は、前記セグメント判定部に対して、前記セグメント確定取消部により未確定状態に戻されたセグメントの判定をやり直すよう指示するセグメント確定指示部と、
前記セグメント確定の取消により修正された文字以降の認識結果文字列と出力済みの認識結果文字列の何文字目から修正したかという修正開始位置情報とから成る修正情報を出力する認識結果情報出力部を具備し、
前記ストロークデータが確定セグメントに対して入力された場合は、前記セグメント確定取り消し部と文字領域取り消し部と最適パス取り消し部とセグメント確定指示部の処理を行い、未確定セグメントに対してセグメント判定から処理をやり直すことにより、手書き文字の修正を可能とし、連携するアプリケーションに対して、出力済みの認識結果文字列に対する修正情報を出力し、前記ストロークデータが確定セグメントに対して入力されていない場合は、１ストローク入力される度に、セグメント判定部とセグメント確定部と文字領域判定部と個別文字認識部と最適パス生成部の処理を実行し、入力が確定したセグメント部分の文字認識を行なうことを特徴とする実時間枠なしオンライン手書き文字認識装置。
【請求項２】
実時間枠なしオンライン手書き文字認識するためにコンピュータを、
手書き文字のストロークを入力し、ストロークデータに変換する手段、
前記ストロークデータと既存の未確定セグメントに基づいて、前記ストロークデータを、新しい未確定セグメントとするか既存の未確定セグメントに追加するかを判定するセグメント手段、
前記セグメントに基づき、前記セグメントが確定セグメントか未確定セグメントか判定し、セグメントの確定を行なうセグメント手段、
前記確定セグメントに基づき、確定セグメントの組み合わせから成る一文字毎の文字領域を判定する文字領域判定手段、
各文字領域に含まれる前記ストロークデータに基づいて、前記文字領域毎に前記手書き文字をオンライン認識して、文字候補を生成する個別文字認識手段、
前記文字領域毎の文字候補の組み合わせの最適パスを生成し、最適の文字組み合わせを認識結果として出力する最適パス生成手段、
前記ストロークデータが確定セグメントに対して入力された場合、前記ストロークデータが削除指示か否かを判定し、削除指示の場合は、前記ストロークデータが入力された確定セグメントを削除してそれ以降の確定セグメントを未確定状態にし、削除指示でない場合は、前記ストロークデータが入力された確定セグメント以降の確定セグメントを未確定状態にするセグメント確定取消手段、
前記セグメント確定取消手段が処理したセグメントに対して、前記文字領域の判定を取り消す文字領域取消手段、
前記セグメント確定取消手段が処理したセグメントに対して、前記最適パスを取り消す最適パス取消手段、
前記ストロークデータが削除指示の場合は、前記セグメント判定手段に対して、前記セグメント確定取消手段により未確定状態に戻されたセグメントの判定をやり直すよう指示するセグメント確定指示手段、及び
前記セグメント確定の取消により修正された文字以降の認識結果文字列と出力済みの認識結果文字列の何文字目から修正したかという修正開始位置情報とから成る修正情報を出力する認識結果情報出力手段、として機能させるための実時間枠なしオンライン手書き文字認識プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、タブレット等の手書き文字入力装置にスタイラスペンなどで筆記された手書き文字を認識して文字コードに変換し、コンピュータ上のプログラムで利用するような手書き文字認識装置に関するものである。
【０００２】
特に、文字の筆記に一文字毎の文字領域（例えば文字枠）を使わずに筆記面上の自由な位置に文字列を筆記でき、入力しながら同時に文字認識を行なう実時間枠なしオンライン手書き文字認識に関する。
【０００３】
【従来の技術】
手書き文字認識装置には、大きく分けて、一文字毎の文字入力領域のある枠あり手書き文字認識装置と一文字毎の文字入力領域のない枠なし手書き文字認識装置がある。本明細書でいう「一文字毎の文字入力領域」とは、一文字毎に手書き文字を入力する領域を区切ったものであり、文字枠や縦線や下線やカンマ等の区切り記号で区切ったり、一文字毎に色を変えるなどしてもよく、一文字毎の領域の区切り方に関しては、特に限定しない。従来の多くのオンライン手書き文字認識装置は、文字と文字の区切りの判定が不要な一文字毎の文字入力領域を利用していた。その理由は、一文字毎の文字入力領域がない場合、文字の認識する前に入力された手書き文字列を文字単位に分ける処理が必要となるが、正確かつ高速に文字を分ける事が困難だからである。  しかし、一文字毎の文字入力領域があると、一文字毎に区切って文字入力領域内に文字を書く必要があり、自然な手書き入力を損なうため、近年では紙の上に文字列を書く場合のように、画面上でも一文字毎の文字入力領域を使わずに、出来る限り自然な形で自由に文字列を書く事ができる枠なし手書き文字認識の技術の開発が進んでいる。
【０００４】
一文字毎の手書き文字入力領域がない場合、例えば、図１７に示すように、「女子大生」と手書き入力したつもりなのに、「女」と「子」の文字間隔がほとんどないため、文字の区切り位置の判定が正しく行なわれずに「好大生」と変換されるように、文字の区切り位置の判断が正しくないと、文字認識そのものも誤ってしまうため、枠なし手書き文字認識においては、正確に文字を切り出すことが大きな問題となる。
【０００５】
現在提案されている枠なし文字認識方法の一例として、入力された文字列パターン全体を一括して認識する方法について、以下に説明する。
【０００６】
仙田氏らの論文「切り出し・認識・言語の確信度を統合した枠なしオンライン文字列認識手法（信学技報,PRMU98-138,1998.12 ）」および福島氏らの論文「確率モデルに基づくオンライン枠なし手書き文字列認識（信学技報，PRMU98-139, 1999.12 ）」において、入力された文字列パターン全体を一括して、個々の文字を構成する個別のセグメントに分割し、それらを組み合わせて構成した文字領域ごとに文字認識を行い、可能な文字領域の組み合わせの中で最も尤度が高い組み合わせを文字列の認識結果とする方法が提案されている（以下、従来例１とする）。セグメントとは、一又は複数のストロークから成り、文字の構成要素となるものであり、一文字は、一又は複数のセグメントから構成される。
【０００７】
従来例１で用いられるセグメントを組みあわせて文字領域を判定する方法は、図１８で示すように、個別セグメントをネットワーク状に構成し、このネットワークから最適なパスを求める方法と等価である。図１８の手書き文字に外接する四角がセグメントと判定された部分であり、点線の矢印がセグメント間のパスを示し、太線の矢印が最適パス、つまり、次の文字の始まりを表す。
【０００８】
このように、入力文字列パターン全体を一括して認識する枠なし文字認識方法の構成図を図１９に示す。まず、文字列パターン入力部３０から文字列パターンを入力し、セグメント判定部３１で入力された文字列パターンをセグメントに分割し、続いて、文字領域判定部３２でセグメントを組み合わせた文字領域の候補を作成し、隣り合った文字領域の間にリンクを張る事により、図１８に示すようなネットワーク構造を生成する事ができる。最後に、個別文字認識部３３は、個々の文字領域について文字認識を行って認識候補を作成し、最適パス生成部３４は、ネットワークから最適パスを求める事によって文字領域を決定し、決定した文字領域に基づいて、各文字領域の文字認識結果文字列を得る。
【０００９】
以上の方法を用いた場合、文字列を全て書き終えてから文字の切り出しおよび認識を行うため、ユーザが長い文字列を書いた場合には筆記終了から認識結果が得られるまでに無視できないタイムラグが生じ、ユーザにとっての使い勝手の低下につながっている
そのため、認識時のタイムラグを減らす方法として、入力文字列を行単位に分割したり、ペンアップ時のペンの移動量（オフストローク）が筆記方向とは逆の方向に一定量以上の長さか判定することにより、行の終了を検出し、その時点で枠なし文字認識の処理を起動する方法やペンアップ時間が一定値以上となった場合または筆記した文字列領域の縦横比がある値以上になった場合に認識を開始する方法が提案されている。これらの方法によると、長い文字列を筆記した場合でもある程度の長さを書いた時点でそこまでの認識処理が行われるため、ユーザが認識結果を待つ時間（タイムラグ）はある範囲内に抑える事ができる。そこまでに書かれた文字列を認識する。
【００１０】
以上は、ある程度の量が筆記された時点でそこまで入力された文字パターン列単位に認識処理を行い、筆記中に途中結果としての文字認識結果を得るものである。しかしながら、これらの方法は行あるいは数文字の単位で認識処理を起動するものであるため、依然として認識結果が得られるまでのタイムラグは、枠あり文字認識に比べて非常に長いため、枠あり文字認識を利用したことのあるユーザにとっては枠なし認識の印象は非常に悪く、枠なし文字認識装置が普及しない主原因となっている。
【００１１】
そのため、筆記した文字がほとんど待ち時間なく認識され、即座にユーザに認識結果が提示されるような、実時間枠なしオンライン手書き文字認識の実現が求められている。次に、タイムラグの少ない実時間枠なしオンライン手書き文字認識を実現させるための従来例について説明する。
【００１２】
実時間枠なし認識を実現するためには、筆記と同時に文字切り出しを行う必要がある。実時間で枠なし入力文字の切り出しを行う方法については、相澤氏らの論文「複数のストローク特徴を用いた手書き文字列からの実時間文字切り出し（信学技報,PRU95-185,pp57-62,1995-12）」に示されている（以下、従来例２とする）。この方法は、ストロークの間隔やオフストロークの方向など複数の特徴を併用して、１ストローク入力するごとにそれが文字の先頭ストロークであるか否かを判定するものである。
【００１３】
本方法を用いた実時間枠なし認識の構成図を図２０に示す。またその動作フローチャートを図２１に示す。以下、これらの図を用いて従来例２の動作を説明する。
【００１４】
まず、ユーザが筆記した文字の筆跡データが、ストローク入力部４０から１ストロークずつ入力される（ステップＳ４０）。入力されたストロークは文字境界判定部４１にて、そのストロークが文字の先頭ストロークであるか否かが判定される（ステップＳ４１）。具体的には、文字境界判定部４１は、ストロークが「文字の先頭である」「文字の先頭ではない」「文字の先頭である可能性はあるが確定ではない」の３つのいずれかを判定する。ここでは、入力されたストロークが行の先頭の場合も、文字の先頭とみなす。ここで、ストロークが文字の先頭でない（ステップＳ４１：ｎｏ）か、文字の先頭である可能性はあるが確定ではない（ステップＳ４１：未決）場合は、そのストロークデータをストローク一時格納部４４に追加して格納し（ステップＳ４２）、ストロークが文字の先頭であれば（ステップＳ４１：ｙｅｓ）、文字列パターン生成部４２は、既にストローク一時格納部４４に格納されているストロークデータ群を抽出し、文字列パターンを生成し（ステップＳ４３）、枠なし文字認識部４３は、文字列パターンを枠なし手書き文字認識処理をする。（ステップＳ４４）。認識されたストロークデータは、ストローク一時格納部４４からクリアされ（ステップＳ４５）、文字の先頭と見なされたストロークデータがストローク一時格納部４４に格納される（ステップＳ４２）。そして、所定時間ｔ１（通常０．５〜２．０秒）が経過してタイムアウトとなるか、手書き文字入力装置に設けられた認識ボタンが押される（ステップＳ４５：ＹＥＳ）と、文字列パターン生成部４２は、既にストローク一時格納部４４に格納されているストロークデータ群を抽出し、文字列パターンを生成し（ステップＳ４６）、枠なし文字認識部４３は、文字列パターンを枠なし手書き文字認識処理を行い（ステップＳ４７）、認識されたストロークデータは、ストローク一時格納部４４からクリアされる（ステップＳ４８）。所定時間ｔ２（通常３〜５秒）が経過してタイムアウトとなるか、手書き文字入力装置に設けられた確定ボタンが押される（ステップＳ４９：ＹＥＳ）と、認識結果がアプリケーション等に送出され（ステップＳ５０）、処理を終了する。それ以外の場合（ステップＳ４９：ｎｏ）は、ステップＳ４０に戻る。  枠なし文字認識部４３での認識方法は、入力されたストロークが文字の先頭であるか否かを明確に判定可能で、「文字の先頭である可能性はあるが確定ではない」ストロークがなければ、ストローク一時格納部４４に格納されているストロークデータの中には１文字分のストロークデータが格納されるため、枠あり認識方法を用いることも可能だが、現実には、入力されたストロークが文字の先頭であるか否かを明確に判定出来ない場合があるため、複数文字分のストロークデータが格納されている可能性がある。そのため、いずれの場合にも対応出来るように、枠なし認識方法を用いる必要がある。
【００１５】
図２２に、従来例２による文字切り出しの成功例と失敗例を示す。図中、太線は文字の先頭だと判定されたストロークであり、点線は文字の先頭ではないストローク、細い実線は文字の先頭になり得るが確定ではないストロークである。（ａ）の例では太線のストロークは全てが文字の先頭であり、判定結果は正しい。しかし、（ｂ）の例では、「仙」の字の中に２つの太線が存在する。これは、「仙」の３画目の縦線を書いた時点ではこのストロークは前の２画との間隔が十分に開いており文字の先頭だと判定されたが、その後で４画目のストロークが書かれると、前の２画との間隔が狭くなり、文字の先頭だと確定できる条件が失われてしまう。本従来例では、これを回避することは出来ない。
【００１６】
以上の誤りは、文字の境界位置はストロークを筆記しているその時点では確定出来ないのに、文字の境界位置を判定しようとしたことに起因している。すなわち、本従来例のように１ストローク入力されるごとに文字の先頭か否かを判定するという方法では、文字境界を正確に判定出来ないため、正確な実時間枠なし文字認識は実現出来ないという事になる。
【００１７】
【発明が解決しようとする課題】
このように、従来例１のような一括型の枠なし文字認識では、一括して文字認識を行なうため、認識に時間がかかり、筆記と平行して認識処理が行われるような実時間枠なし文字認識を実現する事はできない。
【００１８】
一方、従来例２では実時間認識が実現されているが、入力パターンの文字境界位置はストロークが入力されるたびに判定されるため、あるストロークが文字の先頭だと判定された後で、別のストロークが書き足された事によってそのストロークが文字の先頭でないという判定に変わる場合があり、その場合、文字の先頭だと判定したストロークの前のストローク群で枠なし文字認識を行なうと、正確な枠なし文字認識を行えない。つまり、１ストロークだけでは文字の先頭か否か正確には判定出来ないため、文字切り出しの精度が低下し、正確な文字認識が出来ないという問題があった。
【００１９】
【課題を解決するための手段】
簡単に述べると本発明は、従来例１にあるようなタイムラグを最小限に抑えるために、筆記と並行して文字認識処理を行うと同時に、従来例２にあるような文字の切り出し誤りを生じにくく、誤りを生じても修正が容易な精度のよい実時間枠なし文字認識を実現するものである。
【００２０】
即ち、本発明にかかる実時間枠なしオンライン手書き文字認識装置は、手書き文字のストロークを入力し、ストロークデータに変換するストローク入力部と、前記ストロークデータと既存の未確定セグメントに基づいて、前記ストロークデータを、新しい未確定セグメントとするか既存の未確定セグメントに追加するかを判定するセグメント判定部と、前記セグメントに基づき、前記セグメントが確定セグメントか未確定セグメントか判定し、セグメントの確定を行なうセグメント確定部と、前記確定セグメントに基づき、確定セグメントの組み合わせから成る一文字毎の文字領域を判定する文字領域判定部と、各文字領域に含まれる前記ストロークデータに基づいて、前記文字領域毎に前記手書き文字をオンライン認識して、文字候補を生成する個別文字認識部と、前記文字領域毎の文字候補の組み合わせの最適パスを生成し、最適の文字組み合わせを認識結果として出力する最適パス生成部と、前記ストロークデータが確定セグメントに対して入力された場合、前記ストロークデータが削除指示か否かを判定し、削除指示の場合は、前記ストロークデータが入力された確定セグメントを削除してそれ以降の確定セグメントを未確定状態にし、削除指示でない場合は、前記ストロークデータが入力された確定セグメント以降の確定セグメントを未確定状態にするセグメント確定取消部と、前記セグメント確定取消部が処理したセグメントに対して、前記文字領域の判定を取り消す文字領域取消部と、前記セグメント確定取消部が処理したセグメントに対して、前記最適パスを取り消す最適パス取消部と、前記ストロークデータが削除指示の場合は、前記セグメント判定部に対して、前記セグメント確定取消部により未確定状態に戻されたセグメントの判定をやり直すよう指示するセグメント確定指示部と、前記セグメント確定の取消により修正された文字以降の認識結果文字列と出力済みの認識結果文字列の何文字目から修正したかという修正開始位置情報とから成る修正情報を出力する認識結果情報出力部を具備し、前記ストロークデータが確定セグメントに対して入力された場合は、前記セグメント確定取り消し部と文字領域取り消し部と最適パス取り消し部とセグメント確定指示部の処理を行い、未確定セグメントに対してセグメント判定から処理をやり直すことにより、手書き文字の修正を可能とし、連携するアプリケーションに対して、出力済みの認識結果文字列に対する修正情報を出力し、前記ストロークデータが確定セグメントに対して入力されていない場合は、１ストローク入力される度に、セグメント判定部とセグメント確定部と文字領域判定部と個別文字認識部と最適パス生成部の処理を実行し、入力が確定したセグメント部分の文字認識を行なうことを特徴とする。
【００２１】
かかる構成により、本発明にかかる実時間枠なしオンライン認識装置は、筆記している位置から所定距離以上離れている部分までの認識結果が実時間で高い精度で得られ、ユーザは枠なし文字認識の待ち時間を気にする必要が無くなるようにすることが可能となる。
【００２２】
また、かかる構成により、本発明にかかる実時間枠なしオンライン認識装置は、手書き文字の修正が可能となり、もし認識・確定処理を誤っても、誤った部分のみをやり直す事が可能となり、筆記位置と認識位置のズレを小さくしても（＝後述の閾値ｄを小さくしても）問題は起きず、セグメント確定処理の誤りによる性能劣化を回避させることが可能となる。
【００２３】
また、かかる構成により、本発明にかかる実時間枠なしオンライン認識装置は、既に確定した手書き文字を削除したり、手書き文字にストロークを書き足しして、修正文字以降のセグメントが未確定になった場合でも、次のストロークが入力されるのを待つこと無く、即座に未確定セグメントに対する認識処理を行なうことが可能となる。
【００２４】
また、かかる構成により、本発明にかかる実時間枠なしオンライン手書き文字認識装置は、認識結果文字列が修正された場合でも、修正内容を連携しているアプリケーション通知することが可能となる。」、
【００２５】
また、本発明にかかる実時間枠なしオンライン手書き文字認識プログラムは、実時間枠なしオンライン手書き文字認識するためにコンピュータを、手書き文字のストロークを入力し、ストロークデータに変換する手段、前記ストロークデータと既存の未確定セグメントに基づいて、前記ストロークデータを、新しい未確定セグメントとするか既存の未確定セグメントに追加するかを判定するセグメント手段、前記セグメントに基づき、前記セグメントが確定セグメントか未確定セグメントか判定し、セグメントの確定を行なうセグメント手段、前記確定セグメントに基づき、確定セグメントの組み合わせから成る一文字毎の文字領域を判定する文字領域判定手段、各文字領域に含まれる前記ストロークデータに基づいて、前記文字領域毎に前記手書き文字をオンライン認識して、文字候補を生成する個別文字認識手段、前記文字領域毎の文字候補の組み合わせの最適パスを生成し、最適の文字組み合わせを認識結果として出力する最適パス生成手段、前記ストロークデータが確定セグメントに対して入力された場合、前記ストロークデータが削除指示か否かを判定し、削除指示の場合は、前記ストロークデータが入力された確定セグメントを削除してそれ以降の確定セグメントを未確定状態にし、削除指示でない場合は、前記ストロークデータが入力された確定セグメント以降の確定セグメントを未確定状態にするセグメント確定取消手段、前記セグメント確定取消手段が処理したセグメントに対して、前記文字領域の判定を取り消す文字領域取消手段、前記セグメント確定取消手段が処理したセグメントに対して、前記最適パスを取り消す最適パス取消手段、前記ストロークデータが削除指示の場合は、前記セグメント判定手段に対して、前記セグメント確定取消手段により未確定状態に戻されたセグメントの判定をやり直すよう指示するセグメント確定指示手段、及び前記セグメント確定の取消により修正された文字以降の認識結果文字列と出力済みの認識結果文字列の何文字目から修正したかという修正開始位置情報とから成る修正情報を出力する認識結果情報出力手段、として機能させることを特徴とする。
【００２６】
かかる構成のプログラムをコンピュータに読み込ませて実行することにより、実時間枠なしオンライン手書き文字認識装置においても、筆記している位置から所定距離以上離れている部分までの認識結果が実時間で高い精度で得られ、ユーザは枠なし文字認識の待ち時間を気にする必要が無い実時間オンライン枠なし手書き文字入力装置を実現出来るようになる。
【００２７】
また、かかる構成のプログラムをコンピュータに読み込ませて実行することにより、本発明にかかる実時間枠なしオンライン認識装置においても、手書き文字の修正が可能となり、もし認識・確定処理を誤っても、誤った部分のみをやり直す事が可能となり、筆記位置と認識位置のズレを小さくしても（＝後述の閾値ｄを小さくしても）問題は起きず、セグメント確定処理の誤りによる性能劣化を回避させることが可能な実時間オンライン枠なし手書き文字入力装置を実現出来るようになる。
【００２８】
また、かかる構成のプログラムをコンピュータに読み込ませて実行することにより、本発明にかかる実時間枠なしオンライン認識装置においても、既に確定した手書き文字を削除したり、手書き文字にストロークを書き足しして、修正文字以降のセグメントが未確定になった場合でも、次のストロークが入力されるのを待つこと無く、即座に未確定セグメントに対する認識処理を行なうことが可能な実時間オンライン枠なし手書き文字入力装置を実現出来るようになる。
【００２９】
また、かかる構成のプログラムをコンピュータに読み込ませて実行することにより、本発明にかかる実時間枠なしオンライン手書き文字認識装置においても、認識結果文字列が修正された場合でも、修正内容を連携しているアプリケーション通知することが可能な実時間オンライン枠なし手書き文字入力装置を実現出来るようになる。」。
【００３０】
【発明の実施の形態】
本発明の基本的な実施形態の原理について、以下に述べる。
【００３１】
まず、本発明が、従来例２における精度低下をどのようにして解決するかについて述べる。
【００３２】
従来例２においては、従来例１におけるタイムラグは解消しているが、ストロークごとに文字境界を判定していたため、文字境界を正確に判定出来なかった。各ストロークが文字の境界位置にあるか否かを正確に判定するためには、入力されたストロークの周辺に存在するストロークも含めて判断しなければならない。例えば、図２３に示すように、「仙」という文字は「人」偏と「山」との組み合わせであり、それぞれの部分を構成するストロークが近傍に位置し、グループ化が可能である。このグループは文字を構成する部分であり、複数の文字にまたがる事はない。このような、文字を構成する部分となるグループを「セグメント」と呼ぶ。従来例１のような一括型の枠なし文字認識では、入力された文字列パターンを一括してセグメントに分け、それから文字境界を決定していたため、認識するまでのタイムラグが長いが、文字境界が変動することはない。それに対し、従来例２は、ストローク単位で文字境界を判定しているため、認識するまでのタイムラグは短いが、ストロークの入力により文字境界が変動する場合がしばしばあり、文字境界を正確に判定出来ないという問題点があった。
【００３３】
この問題点を解決するために、本発明では、ストロークが入力される度に文字境界を判定するのではなく、ストロークが入力される度に、まず、それ以前に入力されたストローク群も含めてセグメントを判定してセグメント分割し、その後で文字境界の判定を行なうようにする。ここで、問題となるのは、入力されたストローク群をセグメントに分割した時点では個々のセグメントが文字の先頭であるか否かは未定であるということである。つまり、単にセグメントに分割しただけでは確定した文字境界位置は存在しない事となる。そのため、セグメントが抽出されたら、そのセグメントを組み合わせて文字境界の判定を行う必要がある。ここでは、一つの文字を構成する領域を判定するという意味で、文字領域の判定と呼ぶ事とする。
【００３４】
文字領域を決めるためには、その文字領域を構成するセグメントが確定している必要がある。例えば、従来例２では文字領域やセグメントを判定する際に個々の領域を構成する先頭のストロークを用いていたが、文字領域を判定するためにはセグメントを構成する全てのストロークが必要であるため、先頭のストロークが分かるだけでは不十分である。セグメントの抽出は、ユーザが文字を筆記している最中に行うので、一つのセグメントを抽出しても、そのセグメントに更にユーザがストロークを書き足す事によってセグメントが変化する可能性がある。したがって、文字領域の判定を行う際には、その文字領域を構成するセグメントが確定している状態、つまり、ユーザの入力によってセグメントに変化が起こらない状態である必要がある。即ち、セグメントを判定する手段と共に、セグメントが確定したか否かを判定するセグメント確定判定手段が必要となる。
【００３５】
文字領域を判定すると、現在確定しているセグメントのみを用いたネットワーク構造（図１８参照）を作成する事ができる。したがって、このネットワークを用いて個別文字認識および最適パスの計算が可能となり、文字列の筆記中に、途中結果としての文字認識結果を得る事ができる。
【００３６】
以上が本発明の原理であり、実時間枠なし文字認識を精度良く実現する方法である。本発明のポイントを大まかにまとめると以下のようになる。
【００３７】
文字列を筆記中には、最新のストロークを含む文字認識結果は未確定であるため、筆記した全てのストロークを用いた認識結果を求めると必然的に誤認識が起きる。そこで本発明では、筆記中のストロークよりも少し前の、入力が確定した部分までの認識結果を途中結果として計算して出力する。これにより、筆記している場所からさほど離れていない部分までの認識結果が実時間で得られ、ユーザは、枠なし文字認識の待ち時間をほとんど気にする必要が無くなる。
【００３８】
（実施形態１）
本発明の実施形態を、図１の構成図に基づいて説明する。
【００３９】
通常、手書き文字の入力は、パソコンではタブレットに、ＰＤＡでは表示画面と一体となった透明タブレットに、スタイラスペンを用いて入力される。それ以外にも、マウス等のポインティングデバイスを用いて入力することもある。
【００４０】
まず、利用者が入力した筆跡は、Ｗｉｎｄｏｗｓ（マイクロソフト社商標）等の汎用ＯＳの機能を利用することにより、一画入力される毎に、連続した座標点列データとして入力され、ストローク入力部１により、連続した座標点列データから所定時間間隔毎の座標点を抽出してストロークデータが生成される。生成されたストロークデータは、通常、連続しない座標点列データとなるが、エコーバック表示する際には、それらの座標点列を線でつないで表示される。
【００４１】
入力された手書き文字の文字列パターンデータをＣ言語で表現した例をあげると、ストロークデータの配列として、図２に示すようなデータ構造となり、メモリ上に記憶される。ｎＰｏｉｎｔは、ストロークデータを構成する座標点列の何番目のデータかを指し、ｐＰｏｉｎｔは、ストロークデータを構成する座標点列の座標点を指し、ｘ，ｙは、それぞれｐＰｏｉｎｔの座標点のｘ座標，ｙ座標を指す。ｎＳｔｒｏｋｅは、文字列パターンデータの何番目のストロークデータかを指し、ｐＳｔｒｏｋｅは、ストロークデータを指す。
【００４２】
入力されたストロークデータは、セグメント判定部２に渡され、そのストロークデータを含むセグメントの抽出が行われる。ここで抽出されたセグメントは、未確定セグメントとして、セグメント一時格納部３に収められる。セグメント一時格納部３は、ハードディスク等の記憶装置上に設けることも可能だが、容量も小さく、速度が求められるため、メモリ上に設ける方が好ましい。
【００４３】
セグメント判定で重要なのは、新しくストロークが入力された事により、既にセグメント一時格納部３に収められている未確定セグメントが影響されることである。具体的には、新しいストロークの入力により、ストローク入力前の未確定セグメントが確定セグメントになり、新しく入力したストロークが新しい未確定セグメントを形成したり、新しく入力されたストロークが未確定セグメントに追加されたりするという点である。このように、ストロークが入力される度に、入力された文字列パターンデータを、その時点で文字認識に使う確定セグメントと文字認識に使わない未確定セグメントに切りわけることが、本発明の大きな特徴である。
【００４４】
「仙」という文字を例にとって、「仙」の第３画から第５画が入力された時点での未確定セグメント（太線の外接枠で囲まれたセグメント）が変化する様子を図３に示す。最初に、２ストローク分が入力されているとする。第３画が入力されると、図３の（ａ）のように、３画目のストロークで新たな未確定セグメントが作られる。第４画が入力されると、第３画と第４画による２ストロークのセグメントが新たな未確定セグメントとなる。同様に第５画が入力されると、第３画から第５画の３ストロークが新たな未確定セグメントとなる。以上のように未確定セグメントは、ストロークが入力される度に変化する。
【００４５】
図３の説明において、「仙」という文字を書く際に、未確定セグメントがどのように変わるか説明したが、未確定セグメントが複数ある場合に、セグメント判定部３が、複数の未確定セグメントを結合させるか否かをどのようにして判定するかについて述べる。
【００４６】
セグメント判定部２では、図４のフローチャートに示す手順で未確定セグメントを作成する。図４に従って、セグメント判定部１が、実際に未確定セグメントを登録する様子を図５に示す。
【００４７】
まず、セグメント判定部２の動作について、図４のフローチャートを用いて説明する。
【００４８】
最初に、ストローク入力部１からストロークが入力される（ステップＳ１）。次に、入力されたストローク１つのみを新規セグメントとして登録し（ステップＳ２）、既に入力済みのストロークで構成される未確定セグメント群の内の末尾の未確定セグメントにインデクスを設定する（ステップＳ３）。インデクス位置が空でない場合、つまり、新規セグメントの前に未確定セグメントが存在する場合（ステップＳ４：ｎｏ）は、インデックスが設定されている位置にある未確定セグメントの情報を獲得する（ステップＳ６）。そして、新規セグメントと獲得した未確定セグメントの位置情報（本実施例ではｘ座標）を比較し（ステップＳ７）、両セグメントが接続可能か否か判定する（ステップＳ８）。両セグメントが接続可能でない場合（ステップＳ８：ｎｏ）は、インデクスを一つ前に移動し（ステップＳ９）、ステップＳ４に戻る。両セグメントが接続可能な場合（ステップＳ８：ｙｅｓ）は、両セグメントを接続して新たに新規セグメントとし（ステップＳ１０）、接続した未確定セグメントを削除し（ステップＳ１１）、インデクスを未確定セグメントの末尾に再設定し（ステップＳ１２）、ステップＳ４に戻る。これらの処理を繰り返し、インデクス位置が空になると、つまり、新規セグメントの前に未確定セグメントが存在しなくなる（ステップＳ４：ｙｅｓ）と、新規セグメントを未確定セグメントとしてセグメント一時格納部３に登録する（ステップＳ５）。
【００４９】
図５を用いて、新規セグメントと未確定セグメントを接続して新しい未確定セグメントを登録する具体的な例を説明する。図５において、点線の枠が未確定セグメントを表し、実線の枠が新規セグメントを表し、太い矢印は一つ前の未確定セグメントを示すインデクスを表すものとする。
【００５０】
本実施形態では、現在の入力位置よりも文字サイズ２つ分以上左にあるセグメントを確定セグメントとする。
【００５１】
まず、図５の（ａ）は、「枠なし」の「な」の第３ストロークまで書いた時点でのセグメントの分割状態であり、各セグメントは、ｘ座標方向に間隔があるため、４つの未確定セグメントに分かれている。
【００５２】
（ａ）の初期状態に、次のストローク（「な」の第４ストローク）が入力されると、（ｂ）のように、「な」の第４ストロークが新規セグメントとなり、（ｃ）に示すように、未確定セグメントの末尾（ここでは、「な」の第３ストロークの未確定セグメント）にインデクスが設定される。続いて、インデクス位置の未確定セグメントと新規セグメントのｘ座標データが比較され、所定の判定基準を満たす位置にあると、（ｄ）に示すように両セグメントが結合されて新たな新規セグメントが作られる。次に、（ｅ）に示すように、更に１つ前の未確定セグメントにインデクスが再設定される。同様にして、（ｆ），（ｇ）に示すように、セグメント結合およびインデクスの再設定が行われる。（ｆ）の状態では新規セグメント（「な」）と未確定セグメント（「卆」）の間には明確な間隔があるため、（ｇ）に示すように、両者は結合されない。そのため、インデクスは更に前に移動する。インデクスが指すセグメント（「卆」）と１つ前のセグメント（「木」）の間にも明確な間隔があるため結合されず、（ｈ）に示すように、インデックスは１つ前の未確定セグメント（「木」）に再設定される。「木」のセグメントの前には未確定セグメントがないため、（ｉ）に示すように、インデクスのみ前に移動して、最終的に先頭セグメントよりも前に達して何も指していない状態（＝インデクス位置が空の状態）になると、新規セグメントが新たな未確定セグメントとして登録される。更に、前にセグメントがある場合、この未確定セグメントの判定は、確定セグメントの手前（この例では、最新のセグメントから２文字分以内のセグメント）まで、行なう。
【００５３】
ここで、未確定セグメントと新規セグメントを接続するか否かの判定基準の例をあげる。一つの実現例として、ここでは「（Ａ）二つのセグメントのｘ方向の領域がある一定値以上重なっている」、「（Ｂ）二つのセグメントの片方のｘ方向の領域がもう片方のｘ方向の領域を包含している」のいずれかが成り立つ場合にセグメントを接続する事とする。具体的には、セグメントに含まれる１又は複数のストロークデータの座標点のｘ座標の最大値と最小値を、セグメントのｘ座標の最大値と最小値とし、新規セグメントと未確定セグメントのｘ座標の最大値・最小値を比較して、前述の条件を満たすか調べるとよい。これは、横書きの際の判定基準であり、縦書きの場合は、ｙ方向の領域で判定を行なう。なお、セグメント接続の判定基準は、特にこれに限定するものではない。
【００５４】
セグメント一時格納部３の内部には、未確定セグメントの配列と確定セグメントの配列が別々に格納される。新しい未確定セグメントと確定セグメントは、それぞれ、未確定セグメントの配列と確定セグメントの配列の末尾に追加される。セグメント情報のデータ構造の例を、Ｃ言語を用いて表すと図６のようになる。ｎＳｔｒｏｋｅはセグメントを構成するストロークの数であり、ｐＳｔｒＩｄｘはセグメントを構成するストロークを示すインデクスの配列である。インデクスは１から始まる整数で、入力パターンの中の何番目のストロークかを示す。ｔｏｐおよびｂｔｍはセグメントの外接枠の左上と右下の頂点の座標を示す。これらの座標はセグメント判定部において未確定セグメントと新規セグメントのｘ領域の重なりを判定する場合など、セグメントの位置関係を調べるのに用いられる。セグメント一時格納部３の格納の仕方は、未確定セグメントと確定セグメントをメモリ上の別領域又は別ファイルに格納してもよいし、未確定セグメントと確定セグメントを識別出来るようにして、同一のファイルに混在させてもよく、特に格納の仕方は限定しない。
【００５５】
セグメント判定を行なった後は、セグメント確定判定部５が、セグメント一時格納部３に格納されている未確定セグメントの中で確定状態にできるものを判定する。セグメントの確定とは、新たにストロークを入力してもセグメントが変形しないとみなせるセグメントのことである。例えば、横書きの文字列の場合、文字は左から右（縦書きの場合は上から下）へ順に書かれるので、新しいストロークが入力済みのストローク以上左（縦書きの場合は上）に書かれるのは一つの文字の内部でのみの現象だと言える。従って、手書き文字の大きさがある程度変動することや文字の間隔を考慮しても、現在筆記中のストロークよりも文字幅の最大値ｗ以上左（縦書きの場合は上）にあるセグメントは確定したと言って良い。従って、セグメント確定判定部５は、このような判定基準を用いて、筆記中のストロークの含まれるセグメントよりも、ある一定の閾値ｄ以上左に離れているセグメントを確定状態にするようにすればよい。つまり、横書きの場合は、「現在の入力位置よりも文字サイズ１つ分よりも左にあるセグメントを確定とする」、縦書きの場合は、「現在の入力位置よりも文字サイズ１つ分よりも上にあるセグメントを確定とする」などの所定の判定基準により判定することになる。
【００５６】
以上の方法によるセグメント確定判定部５の動作例を図７に示す。図７の（ａ）では「 枠な」 までが筆記済みであり、それ以降の点線の文字は未記入の文字である。ここで、全てのセグメントが点線で示してあるのは全て未確定セグメントである事を示す。（ｂ）においては次の「し」が記入された状態を示す。ここでは「し」のセグメントの左端よりも閾値ｄ以上左に離れた位置にあるセグメント「木」が確定状態となっている。同様に、「認」の「言」偏を入力した時点では、「卆」のセグメントは閾値ｄ以上離れているため確定し、「な」のセグメントは閾値ｄ以上離れていないため確定せず、「認」の「忍」を入力した時点では、「な」のセグメントが閾値ｄ以上離れるため確定する。このように、筆記が進むにつれて、最新のストロークから閾値ｄ以上左に離れた位置にあるセグメントが確定される。未確定セグメントから、新しく確定セグメントになったセグメントの情報は、セグメント一時格納部３の対応する未確定セグメントの情報をコピーして確定セグメントのリストに追加し、対応する未確定セグメントの情報を削除することにより行なう。ここで、閾値ｄはあらかじめ適当な値、例えば、文字幅の最大値ｗや文字サイズを所定値として持っていてもよいし、手書き文字入力が一行入力である場合は一行入力の枠の高さを用いてもよく、特に限定しない。また、閾値ｄは、文字幅の最大値ｗや文字サイズや一行入力の枠の高さそのものを用いるのではなく、例えば、文字幅の最大値ｗ×ｎなどのようにして求めてもよい。通常、ｎは１．０〜２．０の範囲であるが、特に限定しない。
【００５７】
文字領域判定部４は、確定セグメントの系列から一文字となり得る確定セグメントのセットを文字領域候補として作成し、個々の文字領域をリンクで接続したネットワークを作成する。そして、隣り合ったセグメントを複数個組み合わせて文字領域を決定する。図８は、「枠なし認識」と手書きした場合の「枠な」の部分のセグメントの組み合わせの例である。個々の文字領域は隣り合う可能性があるものの間でリンクが張られる。図９は、「枠なし」と手書きした場合の組み合わせ可能なリンクを矢印で示したものである。例えば、先頭の「木」と「卆」は接続し得るため、「卆」から「木」へのリンクが張られているが、「木」と「な」は、間に「卆」があるため、文字領域が隣接しないため、接続出来ず、リンクは張られない。
【００５８】
隣り合ったセグメントを組み合わせるだけなら非常に多くの組み合わせが可能だが、一つの文字として尤もらしい組み合わせでなければならないので、組み合わせはかなり限定される。図９では、文字領域のｘ方向の幅が標準文字サイズｗの１．５倍以内であるセグメントのみ組みあわせるという判定基準を採用しているが、特にこの数字に限定するものではない。
【００５９】
文字領域のデータ構造を、定義した例を図１０に示す。ｎＳｅｇｍｅｎｔおよびｐＳｅｇＩｄｘを、それぞれ、文字領域を構成する確定セグメントの数とインデクスとする。文字領域には１から順に通し番号を付けておき、ｎＬｉｎｋおよびｐＬｉｎｋによってリンク先の文字領域を示すものとする。なお、ｎＣａｎｄおよびｐＣａｎｄには、文字領域単位に個別に認識される文字の結果が格納される。これは、次で述べる個別文字認識部６で利用される。
【００６０】
個別文字認識部６は、各文字領域を構成するセグメントに含まれるストロークデータを基に、各文字領域毎にオンライン手書き文字認識を行い、文字認識結果として１又は複数の文字候補を得る。文字領域毎の文字候補毎に文字のコードと認識スコアの組のリストで得られ、図１０の文字領域の構造体であるｃｏｄｅとｓｃｏｒｅの中に格納される。個別文字の認識の方法は、オンライン認識であれば特に限定しないが、オンイライン認識とオフライン認識を組みあわせたハイブリッド認識でもよい。
【００６１】
最適パス生成部７は、ＤＰマッチングを用いてネットワークから累積スコアの最も高い遷移パスを求め、そのパス上にある認識候補文字から文字認識結果を得る。文字認識結果は、通常、ワープロ等のアプリケーションに通知され、アプリケーションは、認識結果を画面に表示したり、他の何らかの処理に使用する。ＤＰマッチングは、従来例１の文献の中でも用いられている方法であり、既知の方法であるため説明は省略する。
【００６２】
かかる構成により、枠なしオンライン認識装置において、筆記している位置から所定距離以上離れている部分までの認識結果が実時間で高い精度で得られ、ユーザは枠なし文字認識の待ち時間を気にする必要が無くなるようにすることが可能となる。
【００６３】
（実施形態２）
次に、図１１の構成図と図１２のフローチャートに基づいて、手書きした文字の削除や書き足し等により、一旦、確定したセグメントを未確定状態に戻す場合の実施形態について説明する。
【００６４】
本実施形態は、手書き文字の削除や書き足し等により確定セグメントの変動が生じた場合に備えて、実施形態１の構成に、削除した場合は、削除した文字の部分に相当するセグメントの削除し、それ以降の確定セグメントを未確定状態に戻し、書き足した場合は、書き足しを行なった確定セグメント以降のセグメントを未確定状態に戻し、未確定セグメントに戻したセグメントの文字領域と最適パスを取り消すセグメント確定取消手段と、未確定状態に戻されたセグメントを確定可能か判定し、確定可能なセグメントを確定するセグメント確定処理手段を設けるものである。
【００６５】
これは主に二つの効果を狙ったものである。一つ目は、セグメント確定判定部５の判定結果に誤りがあった場合、例えば、新しく入力したストロークが、閾値ｄを越えた一にある確定セグメントにまで及んだ場合に、その確定判定を取り消してやり直すためである。実施形態１で述べたように、一旦確定したセグメントはそれを用いて文字認識処理まで実行されてしまう。そのため、単に確定したセグメントをセグメント一時格納部３に登録しなおしたところで、処理をやり直した事にはならない。セグメントの確定を取り消すためには、誤って確定したセグメントによって得られた文字認識結果まで取り戻さなければならない。本実施形態はそのための手段を提供するものである。
【００６６】
二つ目は、ユーザが既に入力したストロークを取り消した場合である。ユーザが文字を誤って書いてしまい、既に認識結果が得られている部分まで含めて削除した場合や、または文字の一部分（例えば小さな点など）を書き忘れてしまい、後から確定セグメントが存在する領域に書き足した場合などには、確定セグメントの修正、すなわち確定セグメントの未確定状態への移動と未確定セグメントの変形が必要となる。
【００６７】
図１１において、点線で表示してある部分が実施形態１に対して追加された部分である。実施形態１の構成図１に対し、セグメント取消手段として、セグメント一時格納部３に格納されている確定セグメントを取り消し、未確定セグメントにするセグメント確定取消部８と、確定セグメントが未確定セグメントになったことにより、当該セグメントを使用していた文字領域に関する情報（文字領域判定部４内に保持）を取り消す文字領域取消部９と、当該セグメントを使用していた最適パスに関する情報（最適パス生成部７内に保持）を取り消す最適パス取消部１０を追加している。確定セグメントに対してストロークが入力されたか否かの判断をどこで行なうかは、ストローク入力部１で行い、確定セグメントにストロークが入力されるとセグメント確定取消部８に処理を移し、それ以外の場合は、セグメント判定部２に制御を移すようにしてもよいし、セグメント判定部２で判断を行い、確定セグメントにストロークが入力されるとセグメント確定取消部８に処理を移すようにしてもよいし、ストローク入力部１の処理の直後にセグメント確定取消部８に制御を移し、セグメント確定取消部８で確定セグメントに対してストロークが入力されたか否かの判断を行い、確定セグメントにストロークが入力されるとセグメント確定取消処理を行い、それ以外の場合は、セグメント判定部２に処理を移すようにしてもよい。文字領域取消部９と最適パス取消部１０は、それぞれセグメント確定取消部８の処理を受けて起動するようになっている。
【００６８】
手書き文字を削除した場合のセグメント確定取消処理の流れを、図１２のフローチャートを用いて説明する。処理の開始は、手書き文字の削除指示を受けて行なわれる。削除指示の方法は、手書き文字に対して、特定のジェスチャを書いたりする（例えば確定した手書き文字の上に横線を引く）場合等であるが、方法は特に限定しない。
【００６９】
まず、入力されたストロークが削除指示か否か判定する（ステップＳ２０）。削除指示の場合（ステップＳ２０：ｙｅｓ）は、削除する手書き文字に対応する確定セグメントをセグメント一時格納部３から削除する（ステップＳ２１）。削除したセグメント以降の確定セグメントは、文字領域と最適パスの見直しを行なうために、未確定セグメントに戻す必要がある。また、削除指示でない場合（ステップＳ２０：ｎｏ）も、ストロークが入力された確定セグメント以降の確定セグメントは、文字領域と最適パスの見直しを行なうために、未確定セグメントに戻す必要がある。そのため、確定セグメントから未確定セグメントに戻すセグメントに関して、セグメント一時格納部３の確定セグメントのリストからコピーして、新しく、未確定セグメントのリストに加え（ステップＳ２２）、セグメント一時格納部３の確定セグメントのリストから削除する（ステップＳ２３）。こうすることにより、処理対象となる確定セグメントは、未確定セグメントに戻る。次に、文字領域と最適パスを見直す必要があるため、文字領域判定部４に保持されている文字領域から、削除した確定セグメント（未確定セグメントに戻したセグメントを含む）の文字領域を削除し（ステップＳ２４）、最適パス生成部７に保持されているリンクから、削除した文字領域へのリンクを削除する（ステップＳ２５）。
【００７０】
次に、認識済みの部分が削除された場合の具体的な動作例を図１３に示す。図１３の（ａ）は「枠なし認識」と筆記した直後の状態を示す。まだ、「識」の字に関しては、入力が終わった直後なのでセグメントに分割されただけで、文字領域の判定は行われていない。すなわち末尾の二つのセグメントは未確定状態であり、それを点線の枠で示している。また、このネットワーク図の右側に、ユーザに対して出力されている認識結果文字列を示す。（ａ）の時点では、「枠なし認」までのセグメントが確定し、そこまでの文字領域候補が判定され、最適パスが計算されて認識結果文字列が得られている。なお、ネットワーク中には文字領域ごとの個別文字認識結果の文字が表示されており、最適パス上の文字は四角で囲まれている。
【００７１】
ここで、認識済みの文字「し」の筆跡が削除された場合を考える。削除された直後の状態が（ｂ）である。ここで、削除された「し」よりも後ろの「認」を構成するセグメント部分は「し」のパターンとの位置関係も含めて既にセグメントの確定が行われているので、「し」が削除されれば一旦は未確定状態に戻す必要がある。そこで、「し」以降を未確定に戻した状態が（ｃ）である。ここでは、「認」を構成するセグメントである「 言」と「忍」が未確定になっただけではなく、ネットワークパスや認識結果文字列も削除されている。これは、文字領域取消部９、最適パス取消部１０によって、「し」以降の文字領域・最適パスが削除された事による。その結果、認識結果文字列も「枠な」のみが残る事となる。
【００７２】
以上のように、筆跡を削除するとそれに関連する文字認識結果や、それよりも後ろにある認識済みパターンの確定セグメントや文字領域やリンクも含めて元の状態に戻される。
【００７３】
本実施形態を実現する上で一点だけ問題となるのは、フローチャートのステップＳ２２で確定セグメントをコピーして作成した未確定セグメントをリストに加える処理である。これは未確定セグメントをセグメント一時格納部３に加える処理である。実施形態１の説明では、未確定セグメントを追加する際はリストの末尾に加えれば良いと書いたが、これは、手書き文字を右から左（縦書きの場合は上から下）に順番に書いた場合であり、本実施形態では、確定した文字を修正すると、未確定セグメントは筆記順に登録されるとは限らず、リストの途中に加えなければならない場合もある。そのため、未確定セグメントをリストに加える際に、リスト中の未確定セグメントが、セグメントの右端のｘ座標の昇順（縦書きの場合はｙ座標の降順）にソートされるように並べるとよい。これにより、新たにストロークから生成された未確定セグメントを追加する場合も、確定セグメントの取消に伴って未確定セグメントを追加する場合も、同様に処理することが出来るようになる。
【００７４】
実施形態１による実時間枠なし手書き文字認識装置では、現在筆記している部分よりも少し前の部分までを認識して結果を出力する。したがって、誤ってセグメントの確定をしてしまわないためには、筆記位置よりも十分に余裕を見て（＝閾値ｄを大きくとって）セグメントの確定を行う必要がある。すなわち、筆記位置と認識位置とのズレを大きく取る必要がある。
【００７５】
しかし、実施形態２による認識・確定処理のやり直し機能が加わる事により、もしも誤って確定してもそれが致命的ではなく、誤った部分のみをやり直す事が可能となるので、筆記位置と認識位置のズレを小さくしても（＝閾値ｄを小さくしても）問題は起きない。つまり、実施形態１では、通常、閾値ｄを文字幅の最大値ｗ×ｎ（ｎは１．０〜２．０）としていたが、ｎを１．０未満とすることが出来、よりタイムラグを少なくすることが出来る。また、実施形態２によって、セグメント確定処理の誤りによる性能劣化を回避できる。
【００７６】
（実施形態３）
実施形態３は、実施形態２によって確定セグメントが未確定状態に戻された直後に、新たに確定可能なセグメントについて再びセグメント確定処理を行うものである。実施形態２では、次のストロークが入力されるまでセグメントの再確定処理は行われない。しかし、セグメントが確定取消された場合には未確定セグメントの数が増えているので、タイムラグを最小限に抑えるには、確定取消後にすぐに再確定処理を行うのが望ましい。
【００７７】
実施形態３の構成を図１４に示す。本構成図では、実施形態２のセグメント確定取消手段であるセグメント確定取消部８・文字領域取消部９・最適パス取消部１０に、セグメント確定指示部１１を加えた４つの処理ブロックにより構成されたセグメント再確定部１２がセグメント再確定手段として実現される。これは、確定セグメントが取り消されるのに続いてセグメントを再確定する指示を行う事により、新たなストロークが入力されなくても最新のセグメント確定状態を実現するものである。確定セグメントの取り消しとセグメントの再確定の指示は、特に、利用者が行なう必要はなく、文字の修正指示を行なうと自動的に動くようにするのが好ましい。
【００７８】
通常、ストロークが入力されるとセグメント判定部２にて未確定セグメントが作成され、セグメント一時格納部３に格納される。その後、セグメント確定判定部５にて、セグメント一時格納部３に格納された未確定セグメントの内、確定可能なセグメントが判定され、確定可能なセグメントを確定セグメントとしているが、本実施形態では、手書き文字を削除した場合や手書き文字を書き足した場合に、ストローク入力を行なわなくても続いてセグメント確定取消処理とセグメント確定処理を行なう。
【００７９】
セグメント確定指示部１１は、セグメント確定取消部８・文字領域取消部９・最適パス取消部１０の処理の後、セグメント判定部２に対して確定処理の起動を指示する。セグメント判定部２は、セグメント判定をやり直し、確定セグメントから未確定セグメントに戻ったセグメントを、セグメント一時格納部３の確定セグメントのリストから未確定セグメントのリストに移す。セグメント判定部２が未確定セグメントの格納を終えると、セグメント確定判定部５は、セグメント確定処理を開始する。これにより、未確定セグメントのうち確定可能なものが確定セグメントとして、セグメント一時格納部３に格納される。
【００８０】
具体的には、図１３の例をとると、手書き文字「枠なし認識」の「し」を削除した場合、確定セグメント「し」が削除され、「認」の確定セグメント「言」と「忍」が未確定セグメントに戻される。実施形態２の場合は、次のストロークが入力されるまでセグメント判定・セグメント確定判定や文字領域判定・文字認識・最適パス生成は行なわれないが、本実施形態では、次のストロークの入力を待つ必要がなく、（ｃ）で未確定セグメントであった「認」の「言」と「忍」に対して、続いてセグメント判定・セグメント確定判定や文字領域判定・文字認識・最適パス生成が実行され、（ｄ）に示すように、認識結果が「枠な」から「枠な認」となる。
【００８１】
かかる構成により、手書き文字の削除や書き足しにより、修正文字以降のセグメントが未確定になった場合でも、次のストロークが入力されるのを待つこと無く、即座に未確定セグメントに対する認識処理が可能となる。
【００８２】
（実施形態４）
実施形態４の構成を図１５に示す。実施形態２・３においては、確定セグメントを取り消して再びセグメントの確定処理を行う機能を説明した。その結果、例えば図１３にあるように、認識結果文字列も修正可能となる。本実施形態では、実施形態２から４において、手書き文字の修正が発生して、認識文字列が変化した場合、既にアプリケーションに通知した認識結果文字列がどのように変化したかについて通知する例について、手書き文字入力を使用するスケジュール管理やワープロ等のソフトウェアに含まれる手書き文字認識文字を画面に表示するアプリケーションを例にとって説明する。
【００８３】
まず最初に、本発明において、手書き認識された文字がどのように表示されるのかについて説明する。本発明は、１ストローク入力される度に、入力された手書き文字を確定セグメントと未確定セグメントに分け、確定セグメントに対してのみ文字認識を行なう。１ストローク入力する度にこの処理が繰り返されるが、１ストローク入力したからといって新しく認識された文字が増えるとは限らないため、アプリケーションへの認識結果文字は、１回または複数回のストローク入力に１回、新しく認識された文字が増えた時のみ通知される。そのため、前から順番にストロークを入力していくと、通常、１文字ずつ認識結果として表示アプリケーションに通知され、表示アプリケーションは、通知された認識結果文字を画面上に追加表示していく。既に認識されている手書き文字（確定セグメントで構成されている）に対して、削除指示を出すかストロークを書き足すと、当該セグメント以降は全て未確定セグメントとなり（削除指示の場合は、当該文字の確定セグメントは削除され、それ以降のセグメントは未確定セグメントになる）、再度、セグメント判定から最適パス生成までの処理が実行され、新しい認識結果が生成された場合にのみ、新しい認識結果文字列（文字数は１以上）が表示アプリケーションに通知される。この場合、表示アプリケーションは、このまま新しい認識結果文字列を受け取って、画面に追加表示すると、一度表示されている手書き文字を修正することなく追加表示することになり、誤った表示をすることになる。
【００８４】
つまり、既に認識した手書き文字を削除したり、書き足したりすると、認識結果文字列が変化し、アプリケーションは受け取った認識結果の修正に対してユーザに示す文字列を変更するなど、何らかの処理が必要となる。つまり、既にアプリケーションに通知した認識結果に修正が生じた場合、認識エンジン側が修正内容をアプリケーションに通知する必要がある。
【００８５】
以下に、確定セグメントの取り消しによって認識結果が修正された内容を、本発明の実時間枠なしオンライン文字認識装置がアプリケーションに通知する実施例を示す。
【００８６】
図１５は、実施形態３の図１４に認識結果修正情報出力部１４を追加したものである。実施形態１・２では、最適パス生成部７が認識結果文字列をアプリケーションに通知していたが、本実施形態では、認識結果情報出力部１３が認識結果文字列又は認識結果修正情報のいずれか一方をアプリケーションに通知するものとする。
【００８７】
認識結果情報出力部１３は、最適パス生成部７を含み、修正がない場合は、認識結果文字列を、修正がある場合は、何文字目から修正したかという情報と修正された認識結果文字列（修正開始位置以降の全ての認識結果文字列）をアプリケーションに通知する。
【００８８】
まず、最適パス取消部１０は、手書き文字の修正により確定セグメントが未確定セグメントになった場合、最適パス生成部７が保持しているパス情報から未確定セグメントになったセグメントのパス情報を削除するが、その際、何文字目からパスを削除したかというパス削除情報を認識結果情報出力部１３に渡す。
【００８９】
認識結果情報出力部１３は、パス削除情報を受け取った直後に最適パス生成部で生成される認識結果文字列は修正された認識結果文字列であると判定し、何文字目から修正されたかという修正開始位置情報（＝パス削除情報）と修正された認識結果文字列をアプリケーションに通知し、直前にパス削除情報を受け取っていないと、最適パス生成部で生成された認識結果文字列は修正された認識結果文字列ではないと判定し、認識結果文字列のみアプリケーションに通知する。
【００９０】
以下に、認識結果修正情報がどのようにして作られるか説明する。
【００９１】
「枠なし文字認識エンジン」が既に認識された結果だとする。「認識エンジン」の「認識」を削除し、「認識」が書かれていた位置に「入力」を手書き入力するものとする。「認識」を削除すると、「エンジン」という手書き文字を構成するセグメントは未確定セグメントとなる。「認識」が削除された時点で、セグメント確定取消処理が実行され、最適パス取消部１０は、「枠なし文字認識エンジン」の５文字目までのパスを残して、６文字目以降のパスを削除し、６文字目から削除したというパス削除情報を認識結果情報出力部１３に渡す。最適パスの取り消し処理の後、セグメント確定指示部１１により、セグメント判定部２から最適パス生成部７までの処理が、６文字目以降の未確定セグメントに対して再度行われ、修正後の６文字目以降の認識結果文字列「入力エンジン」が、最適パス生成部７の認識結果文字列として生成される。認識結果情報出力部１３は、直前に最適パス取消部から受け取った６文字目からパスを削除したというパス削除情報を、６文字目から修正されたという修正開始位置情報（＝「６」）として、修正された認識結果文字列「入力エンジン」と共に表示アプリケーションに通知する。既に画面上に、「枠なし文字認識エンジン」と表示している表示アプリケーションは、修正開始位置情報「６」と修正された認識結果文字列「入力エンジン」を受け取り、表示している「枠なし文字認識エンジン」の６文字目からの表示を「入力エンジン」に変更して、「枠なし文字入力エンジン」と表示し直す。
【００９２】
かかる構成により、認識結果文字列が修正された場合でも、本発明の実時間枠なしオンライン手書き文字認識装置は、連携しているアプリケーションに修正内容を通知することが可能となる。
【００９３】
（実施形態５）
次に、本発明の実施の形態にかかる実時間オンライン枠なし手書き文字認識装置を実現するプログラムは、図１６に示す記録媒体の例のように、ＣＤ−ＲＯＭ９０−１やフレキシブルディスク９０−２等の可搬型記録媒体９０に記録されたプログラムだけではなく、通信回線の先に蓄えられた他の記憶装置９１や、コンピュータのハードディスクやＲＡＭ等の記録媒体９２のいずれに記録されたプログラムでも良く、本発明にかかる実時間オンライン枠なし手書き文字認識装置を利用する際に、コンピュータ９３により読み込まれ、主メモリ上で実行される。
【００９４】
このプログラムをコンピュータにローディングすることにより、筆記中に認識結果を逐次得ることが可能な実時間オンライン枠なし手書き文字入力装置を実現出来るようになる。
【００９５】
【発明の効果】
本発明の実時間オンライン枠なしオンライン認識装置によれば、筆記している位置から所定距離以上離れている部分までの認識結果が実時間で高い精度で得られ、ユーザは枠なし文字認識の待ち時間を気にする必要が無くなるようにすることが可能となる。
【００９６】
また、本発明の実時間オンライン枠なし手書き文字認識装置によれば、認識・確定処理のやり直し機能が加わる事により、もしも誤って確定してもそれが致命的ではなく、誤った部分のみをやり直す事が可能となるので、筆記位置と認識位置のズレを小さくしても（＝閾値ｄを小さくしても）問題は起きず、セグメント確定処理の誤りによる性能劣化を回避できる。
【００９７】
また、本発明の実時間オンライン枠なし手書き文字認識装置によれば、手書き文字の削除や書き足しにより、修正文字以降のセグメントが未確定になった場合でも、次のストロークが入力されるのを待つこと無く、即座に未確定セグメントに対する認識処理が可能となる。
【００９８】
また、本発明の実時間オンライン枠なし手書き文字認識装置によれば、認識結果文字列が修正された場合でも、連携しているアプリケーションに修正内容を通知することが可能となる。
【００９９】
また、このプログラムをコンピュータにローディングすることにより、筆記中に認識結果を逐次得ることが可能な実時間オンライン枠なし手書き文字入力装置を実現出来るようになる。
【図面の簡単な説明】
【図１】    本発明の実施形態１の構成図
【図２】    入力データのデータ構造（Ｃ言語表現）
【図３】    文字切り出しの改善方法を説明する図
【図４】    セグメント判定部の動作フローチャート
【図５】    セグメント判定部の動作例
【図６】    セグメントのデータ構造（Ｃ言語表現）
【図７】    セグメント確定判定部の動作例
【図８】    文字領域候補の生成
【図９】    文字領域リンクの生成
【図１０】  文字領域のデータ構造（Ｃ言語表現）
【図１１】  本発明の実施形態２の構成図
【図１２】  セグメント確定取消処理の流れ
【図１３】  セグメント確定取消処理
【図１４】  本発明の実施形態３の構成図
【図１５】  本発明の実施形態４の構成図
【図１６】  記録媒体の例示図
【図１７】  枠なし認識の文字切り出し誤り
【図１８】  枠なし文字認識
【図１９】  従来例１の構成図
【図２０】  従来例２の構成図
【図２１】  枠なし文字認識の従来例２の動作フローチャート
【図２２】  従来例２による文字切り出しの例
【図２３】  文字切り出しの改善方法を説明する図
【符号の説明】
１        ストローク入力部
２        セグメント判定部
３        セグメント一時格納部
４        文字領域判定部
５        セグメント確定判定部
６        個別文字領域認識部
７        最適パス生成部
８        セグメント確定取消部
９        文字領域取消部
１０      最適パス取消部
１１      セグメント確定指示部
１２      セグメント再確定部
１３      認識結果情報出力部
３０      従来例１の文字列パターン入力部
３１      従来例１のセグメント判定部
３２      従来例１の文字領域判定部
３３      従来例１の個別文字識別部
３４      従来例１の最適パス生成部
４０      従来例２のストローク入力部
４１      従来例２の文字境界判定部
４２      従来例２の文字パターン生成部
４３      従来例２の枠なし文字認識部
４４      従来例２のストローク一時格納部
９０      ＣＤ−ＲＯＭやフレキシブルディスク等の可搬型記録媒体
９０−１  ＣＤ−ＲＯＭ
９０−２  フレキシブルディスク
９１      通信回線の先に蓄えられた他の記憶装置
９２      コンピュータ上のＲＡＭ／ハードディスク等の記録媒体
９３      コンピュータ
【図１】
0003925247.tif 000002
【図２】
0003925247.tif 000003
【図３】
0003925247.tif 000004
【図４】
0003925247.tif 000005
【図５】
0003925247.tif 000006
【図６】
0003925247.tif 000007
【図７】
0003925247.tif 000008
【図８】
0003925247.tif 000009
【図９】
0003925247.tif 000010
【図１０】
0003925247.tif 000011
【図１１】
0003925247.tif 000012
【図１２】
0003925247.tif 000013
【図１３】
0003925247.tif 000014
【図１４】
0003925247.tif 000015
【図１５】
0003925247.tif 000016
【図１６】
0003925247.tif 000017
【図１７】
0003925247.tif 000018
【図１８】
0003925247.tif 000019
【図１９】
0003925247.tif 000020
【図２０】
0003925247.tif 000021
【図２１】
0003925247.tif 000022
【図２２】
0003925247.tif 000023
【図２３】
0003925247.tif 000024