(57)【特許請求の範囲】
【請求項１】
利用者によって入力されたインクデータに基づいて文字認識辞書を参照して文字認識を行なう際に使用される続けストローク辞書の学習方法であって、
それぞれ１つの字画に相当するストロークを複数個集めたものを分解ストローク群として、続けストローク辞書が、続けストロークとその続けストロークに対応する分解ストローク群とを格納し、
文字認識の結果、誤認識となったインクデータがあった場合に、
当該インクデータに対する正しい字を本来の字画に基づいて入力し、
誤認識となったインクデータを第１のインクデータとし、本来の字画に基づいて入力されたインクデータを第２のインクデータとして、
前記第１及び第２のインクデータを比較して各インクデータに含まれるストロークの相互の対応関係をストロークの入力順に調べ、１対１対応にないストロークが前記第１のインクデータにあった場合にはそのストロークを続けストロークとし、当該続けストロークとされたストロークに対応する複数のストロークを前記第２のインクデータ中から検索して当該続けストロークに対応する分解ストローク群とし、
そののち、前記続けストローク辞書を更新する、手書き文字認識辞書学習方法。
【請求項２】
前記続けストローク辞書は、続けストロークごとの特徴量を格納する続けストローク認識辞書と、前記続けストロークごとに対応する分解ストローク群を格納する続けストローク変換辞書と、から構成されていることを特徴とする、請求項１に記載の手書き文字認識辞書学習方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、オンライン手書き文字認識に関し、特に、１文字中の複数の字画が１つのストロークとして連続して入力する場合にも対応できる手書き文字認識辞書学習方法に関する。
【０００２】
【従来の技術】
オンライン手書き文字認識は、入力した手書き文字の画数が何画であるか、入力した手書き文字のうちどこからどこまでが１画の字画に対応するのか、各字画がどのような順（すなわち筆順）で入力されたかなどの情報（これらの情報を字画情報ということにする）を利用できるので、オフライン手書き文字認識よりも高い認識率を達成することができる。画数や筆順などの字画情報を利用して文字認識を行なう場合には、ユーザ（入力者）が正しい画数、筆順で一画、一画を分けて楷書体で手書き文字を入力することが前提であり、例えば行書体や草書体に見られるように本来複数の字画であるところを１ストロークで書いたときには、正しく手書き文字認識を行なうことができない。しかしながら、ユーザの書き癖として本来複数の字画であるところを１ストロークで書くことはしばしばあることであり、一画、一画を分離して手書き文字入力を行なうことはユーザにとってはストレスを感じる作業である。また、一画、一画を分離して手書き文字入力を行なうことを強要された場合には、入力速度を向上させることが難しくなる。
【０００３】
以下、本来複数の字画であるべきところが１ストロークで書かれている文字を「くずし字」あるいは「続け字」という。このような「くずし字」の例として例えば行書体が挙げられる。また、「文字」とは、文字コードと１対１に対応するものを指し、具体的にはこのように文字コードによって一意に指定されるものの名前のことを意味し、「インクデータ」とは、利用者がペンなどの入力デバイスによって入力した軌跡データを指し、「手書き文字」とは、手書き文字認識処理を施すことを意図して利用者が入力したインクデータのことを指す。
【０００４】
オンライン手書き文字認識をくずし字あるいは続け字に対応させるために、これまで、いくつかの方法が提案されている。第１に、辞書データからくずし字を合成しながら検索を進める方法がある。この方法では、認識辞書には字画ごとのデータを持たせておき、入力したストローク数に応じてインクデータと認識辞書との比較を行なった場合に候補文字が見つからなければ、認識辞書中で複数の字画に対応するデータを合成し、合成後のデータと入力したインクデータとを比較して候補文字を探索する。しかしながら、この第１の方法では、辞書との比較時に字画の合成処理を行なう必要があり、また認識のための計算量が膨大となり、処理時間がかかりすぎるという問題点がある。
【０００５】
くずし字あるいは続け字に対応する第２の方法として、字画のくずしやストロークの連続化が部首を単位として行なわれやすいことに着目し、部首ごとに辞書を編成して部首データとその画数との組を複数登録しておく方法がある。しかしこの方法は、部首ごとの辞書構造が例えばツリー構造とする必要があって複雑であり、文字認識のための処理が複雑化するという問題点がある。
【０００６】
くずし字あるいは続け字に対応する第３の方法として、インクデータから抽出され文字認識に使用される特徴量として、くずし字や続け字によって変動しない量すなわち画数やストロークの入力順などに依存しない量を用いる方法がある。しかしながらこの方法では、安定した特徴量が得られず、また、字画情報を実質的に利用しないこととなって、認識率が向上しない。
【０００７】
そこで本発明者らは、特願平７−６０６５０号において、くずし字に対応した新規の手書き文字認識方法を提案した。この特願平７−６０６５０号に示される方法は、利用者が入力したインクデータを構成するストロークを入力ストロークとして、入力されたインクデータと文字認識辞書とを比較して文字認識を行なう前に、各入力ストロークについてその入力ストロークが複数の字画に対応しているかどうかを判定し、複数の字画に対応していると判定した場合には、本来の複数の字画に対応する複数のストロークにその入力ストロークを置き換え、そののち文字認識を行なうという方法である。入力ストロークが複数の字画に対応するかどうかの判定や、入力ストロークを複数のストロークに置き換える場合には、続けストローク辞書を使用する。
【０００８】
図１０に示すように、続けストローク辞書９１は、続けストロークとこの続けストロークに対応する分解ストローク群とを格納したものである。続けストロークとは、本来ならば複数の字画に対応するにも関わらずユーザの書き癖などによってそのユーザにおいては習慣的に１ストロークで入力されるもののことであり、インクデータの入力時には１ストローク分のデータとして扱われるものである。各続けストロークごとに対応して設定される分解ストローク群は、それぞれ、当該続けストロークを本来の複数の字画で入力した場合の各字画にそれぞれ対応するストロークの集合であり、本来の字画における筆順に関する情報を含んでいてもよい。図１０に示す例は、本来は２画である漢字のわかんむり「冖」（「冥」の冠部）についてのものである。わかんむり「冖」は１ストロークで入力されやすいので、続けストローク辞書９１には、くずして入力した場合の１ストローク（続けストローク）のデータと、「冖」の各字画に対応する２ストロークのデータがストローク群として格納されている。図中の丸付数字は、筆順情報として付加されている情報を示している。
【０００９】
続けストロークは、文字ごとにその文字に特有のものとして定められるのではなく、複数の文字に共通な部品として設定される。結局、各入力ストロークについてその入力ストロークと類似している続けストロークが続けストローク辞書に登録されているかどうかを調べ、登録されている場合にはその続けストロークに対応する分解ストローク群によってその入力ストロークを置き換えることによって、くずし字のインクデータが本来の字画のインクデータに戻されることになり、正しい文字認識を行なうことが可能になる。また、続けストロークであるかどうかの判定は、１画文字の文字認識に他ならないから、通常の文字認識エンジンを使用して実施することが可能である。
【００１０】
【発明が解決しようとする課題】
上述した特願平７−６０６５０号に示される方法によれば、付加的なハードウェアをほとんど必要とせずに、くずし字や続け字に対する手書き文字認識を高速かつ正確に行なえる。しかしながらこの方法には、続けストローク辞書をより効率的に編成するとともに、個々のユーザの書き癖に応じて続けストローク辞書を学習できるようにすることにおいて、さらなる改良の余地が残されている。
【００１１】
本発明の目的は、くずし字に対応した手書き文字認識方法及び装置において、続けストローク辞書の編成方法に改良を加え辞書学習が容易に行なえるようにするとともに、この続けストローク辞書の学習方法を提供することにある。
【００１４】
本発明の手書き文字認識辞書学習方法は、利用者によって入力されたインクデータに基づいて文字認識辞書を参照して文字認識を行なう際に使用される続けストローク辞書の学習方法であって、それぞれ１つの字画に相当するストロークを複数個集めたものを分解ストローク群として、続けストローク辞書が、続けストロークとその続けストロークに対応する分解ストローク群とを格納し、文字認識の結果、誤認識となったインクデータがあった場合に、当該インクデータに対する正しい字を本来の字画に基づいて入力し、誤認識となったインクデータを第１のインクデータとし、本来の字画に基づいて入力されたインクデータを第２のインクデータとして、第１及び第２のインクデータを比較して各インクデータに含まれるストロークの相互の対応関係をストロークの入力順に調べ、１対１対応にないストロークが第１のインクデータにあった場合にはそのストロークを続けストロークとし、当該続けストロークとされたストロークに対応する複数のストロークを第２のインクデータ中から検索して当該続けストロークに対応する分解ストローク群とし、そののち、続けストローク認識辞書及び続けストローク変換辞書を更新する。
【００１５】
本発明の手書き文字認識辞書学習方法においては、続けストロークごとの特徴量を格納する続けストローク認識辞書と、続けストロークごとに対応する分解ストローク群を格納する続けストローク変換辞書とによって、続けストローク辞書を構成することができる。
【００１７】
【作用】
本発明の手書き文字認識方法では、分解ストローク群を格納する続けストローク変換辞書と、続けストロークとこの続けストロークに対応する分解ストローク群へのポインタを格納する続けストローク認識辞書とによって、続けストローク辞書を構成する。このように続けストローク辞書を編成することによって、複数の続けストロークが１つの分解ストローク群を"共用"することが可能になるので、続けストローク辞書全体としての規模が小さくなり、かつ、辞書のメンテナンス等が容易になる。また、辞書学習を行なう場合に、既登録の分解ストローク群を利用できるのであれば、続けストロークのみを登録すればよいことになる。このことは、既登録の分解ストローク群からの選択が行なえる場合には、学習対象の分解ストローク群をユーザが楷書体で入力することを省略できることを意味し、辞書学習がユーザにとってより容易なものとなる。
【００１８】
さらに本発明の手書き文字認識辞書学習方法では、誤認識された方のインクデータを第１のインクデータとし、本来の字画で入力された方のインクデータを第２のインクデータとして、第１のインクデータと第２のインクデータに含まれるストロークを相互に比較して、続けストロークとそれに対応する分解ストローク群とを抽出している。これは、くずし字（第１のインクデータ）であっても本来の字画（第２のインクデータ）であってもユーザの意識としては筆順は同じであり、第１のインクデータ中のストロークであって複数の字画に対応していないストロークは、第２のインクデータ中の分解ストローク群とならないストロークと、入力順にしたがって、１対１で対応するはずであることを利用している。そこで、入力順に第１のインクデータと第２のインクデータからそれぞれ１ストロークずつを取り出して相互が対応するかを判断し、１対１に対応しているときはそれぞれ次のストロークを取り出すようにすると、１対１に対応しないストロークが第１のインクデータ中に識別されれば、それは続けストロークということになる。この続けストロークに対応する分解ストローク群は、第２のインクデータから現在取り出されているストロークとこれに引き続いて入力されたいくつかのストロークとによって構成されるはずである。そこで、第２のインクデータから１ストロークを取り出して現在取り出されているストロークと合成し、続けストロークと比較する。合成したストローク群が続けストロークと類似していれば、この合成したストローク群が分解ストローク群ということになる。類似していなければ、さらに１ストロークを第２のインクデータから取り出してストローク群に追加し、続けストロークと比較することを続けストロークと類似するまで繰り返す。
【００１９】
続けストロークと合成したストローク群が類似すれば、ここで続けストロークとそれに対応する分解ストローク群が確定したことになるから、再び、第１及び第２のインクデータから１ストロークずつを取り出して相互に比較することを実行すればよい。以上の操作を繰り返すことにより、辞書学習用の続けストロークデータとそれに対応する分解ストローク群が得られることになる。
【００２０】
なお、ここでは、本来の字画とユーザが入力した字画とで筆順が同じ場合について述べたが、本発明の文字認識辞書学習方法は筆順にとらわれず、筆順が本来の字画とユーザが入力した字画とで異なっている場合でも、全ストロークを総当たりすることにより、学習を行なうことができる。
【００２１】
【実施例】
次に、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例の手書き文字認識装置の構成を示すブロック図であり、図２は続けストローク辞書の編成を示す図である。
【００２２】
この手書き文字認識装置は、オンライン手書き文字認識を実行するものであって、利用者によるインクデータが入力するとともに必要な情報を表示するための入力・表示パネル１１と、入力・表示パネル１１に対して入力されたインクデータを受け付け手書き文字データなのか辞書学習等のための指示なのか判別をする入力処理部１３と、手書き文字のインクデータを格納するインクデータ格納部１４と、続けストロークを格納する続けストローク辞書２１と、文字認識に使用される文字認識辞書２２と、続けストローク辞書２１及び文字認識辞書２２を参照しインクデータ格納部１４内のインクデータに対してその画数に依存した文字認識を行なう文字認識エンジン部１５と、文字認識エンジン部１５による文字認識結果を格納する認識結果格納部１６と、文字認識結果に応じて入力・表示パネル１１に対して表示を行なう出力処理部１７と、続けストローク辞書２１の学習のためにこれを更新する辞書更新部１８とによって構成されている。入力・表示パネル１１は、表示部とインクデータ２０の入力部とが一体になったいわゆる表示一体型入力パネルであり、例えば、液晶フラットディスプレイ上に透明型タブレットを積層した構成のものを使用できる。利用者は、ペン１２でこの入力・表示パネルの入力・表示画面をなぞることによって、所望のインクデータ２０を入力できる。
【００２３】
続けストローク辞書２１は、続けストロークとその続けストロークに対応しそれぞれ１つの字画に相当する１ないし複数のストロークからなる分解ストローク群とを格納している。続けストロークとは、本来ならば複数の字画に対応するにも関わらずユーザの書き癖などによってそのユーザにおいては習慣的に１ストロークで入力されるもののことである。例えば漢字の場合、文字が異なっていても部分的あるいは局所的には共通の字画群で構成されている場合が多いから、文字ごとにその文字に特有のものとして続けストロークを定めるのではなく、複数の文字に共通な部品として続けストロークを設定する。本実施例では、図２に示すように、続けストローク辞書２１は、続けストローク認識辞書２５と続けストローク変換辞書２６とによって構成されている。
【００２４】
このように続けストローク辞書２５と続けストローク変換辞書２６とを分離しているのは、異なる続けストロークを同一の分解ストローク群に対応付けるとともに、続けストローク辞書２１の辞書学習を容易にするためである。例えば、わかんむり「冖」に対し３通りのくずし方があるとすれば、この３通りのくずし方を続けストローク認識辞書２５に登録しておき、一方、続けストローク変換辞書２６では、わかんむり「冖」に対応する分解ストローク群を１つだけ登録しておく。具体的には、続けストローク認識辞書２５には、続けストロークごとに、その続けストロークの特徴量と、続けストローク変換辞書２６内の対応する分解ストローク群（変換ベクタ）へのポインタとを格納している。一方、続けストローク変換辞書２６では、分解ストローク群ごとに連続したアドレス領域が割り当てられており、各分解ストローク群ごとの記憶領域では、その先頭アドレスにその分解ストローク群を構成するストロークの数（分解ストローク数）が格納され、引き続いて、その分解ストローク群を構成する各ストロークをそれぞれベクトルデータである変換ベクタとして格納されている。変換ベクタの格納順はその分解ストローク群内での筆順に対応させておけばよい。
【００２５】
このように続けストローク辞書２１を編成した場合、続けストローク認識辞書２５において異なる続けストロークに対して同一のポインタを設定しておけば、これら異なる続けストロークが続けストローク変換辞書２６中の同じ分解ストローク群に対応することになる。すなわち、例えばわかんむり「冖」に対する３通りのくずし方に対して同一の分解ストローク群が対応することになる。続けストローク辞書２１を続けストローク認識辞書２５と続けストローク変換辞書２６に分けて続けストローク変換辞書２６では分解ストローク群の重複を避けるようにすることによって、異なるくずし方が存在するような場合であっても続けストローク辞書２１全体としての容量の増大をある程度までに抑えられ、辞書の保守が容易になり、かつ後述するように、学習を簡単に行なえるようになる。また、例えば、若干波打った横棒の入力ストローク
【００２６】
【外１】
0003732546.tif 000002
は、単なる横棒「―」（１画）に対応する場合と四つ点（４画）に対応する場合があるが、このような場合には、四つ点の場合とともに単なる横棒の場合も文字認識の候補とすることが望ましいから、分解ストローク群と置換せずに入力ストロークをそのまま使用するという続けストロークを設けた方がよいことがある。そこで、続けストローク認識辞書２５中の続けストロークとして、例えばポインタに−１を格納することによって、分解ストローク群に対応しないものを設定することも可能である。
【００２７】
字のくずし方はユーザによって千差万別というほど異なってはいないので、ユーザごとに続けストローク辞書２１を設ける必要はなく、多数のユーザによる学習データに基づいて各ユーザに共通のものとして続けストローク辞書２１を設定し、さらにユーザごとの学習によって続けストローク辞書２１を更新すればよい。続けストローク辞書２１の学習については後述する。
【００２８】
本実施例においては、文字認識エンジン部１５は、具体的には、インクデータ格納部１４内の各入力ストロークについてその入力ストロークに類似する続けストロークが続けストローク認識辞書２１に格納されているかどうかを判定し、類似する続けストロークが格納されている場合には、その続けストロークに対応するポインタを用いて続けストローク変換辞書２６から分解ストローク群を読み出し、入力ストロークを読み出した分解ストローク群で置き換え、置き換え後のインクデータに基づき文字認識辞書２２を用いて文字認識を行なうように、構成されている。続けストロークに類似しているかどうかの判定は、続けストローク認識辞書中の各続けストロークの特徴量と入力ストロークの特徴量とを比較し、両方の特徴量の差があるしきい値以下であるかどうかで行なう。また文字認識エンジン部１５での文字認識の方法としては、例えば、１文字分のインクデータから、その形状の特徴を表わす特徴量を求め、文字認識辞書２２中の各文字（候補文字）の特徴量（クラスタ）とインクデータから求めた特徴量とを比較し、両者の距離に応じてそのインクデータに対する候補文字を定めることにより文字認識を行なう方法などが用いられる。
【００２９】
次に、本実施例におけるオンライン手書き文字認識の手順について、図３を用いて説明する。
【００３０】
まず、利用者が入力した一字分のインクデータを取得し（ステップ１０１）、このインクデータをインクデータ格納部１４に格納する。そして、インクデータ格納部１４より、１ストローク分のデータを入力ストロークとして文字認識エンジン部１５に取り出し（ステップ１０２）、続けストローク認識辞書２５内を参照して、取り出されたストロークと類似の続けストロークが続けストローク認識辞書２５内に格納されているかを調べる（ステップ１０３）。取り出された入力ストロークと類似の続けストロークがない場合には、その入力ストロークは本来の字画での１画に相当するものとして、ステップ１０７に移行する。
【００３１】
一方、ステップ１０３で類似の続けストロークがあった場合には、その続けストロークに対応して続けストローク認識辞書２５に格納されているポインタ値に基づいて、続けストローク変換辞書２６から分解ストローク群を読み出す。ポインタは対応する分解ストローク群の格納場所の先頭のアドレスを示しており、このアドレスにはその分解ストローク群のストローク数（分解ストローク数）が格納されているから、まず分解ストローク数を読み出し、続けストローク変換辞書２６中の引き続くアドレスから分解ストローク数だけの変換ベクタを読み出すことによって、入力ストロークに対応する分解ストローク群を読み出すことができる。そして、入力ストロークの大きさと適合するように、読み出された分解ストローク群の大きさの正規化を行なう（ステップ１０５）。そして、インクデータ格納部１４中のインクデータにおいて、取り出された入力ストロークと正規化された分解ストローク群とを入れ換え（ステップ１０６）、ステップ１０７に移行する。ステップ１０７では、インクデータ格納部１４中のインクデータにおいて、未取り出しのすなわち上述のステップ１０２からの処理をまだ受けていない入力ストロークがあるかどうかを判断する。未取り出しの入力ストロークがある場合にはステップ１０２に戻り、全ての入力ストロークが取り出されている場合には、文字認識処理へと移行する。
【００３２】
文字認識処理では、まず、インクデータ格納部１４中のインクデータから特徴量を抽出する（ステップ１０８）。このときの処理対象は、続けストロークが対応する分解ストローク群に置き換えられているインクデータである。次に、抽出された特徴量に基づいて文字認識辞書２２と比較し（ステップ１０９）、文字認識辞書２２中の各文字の特徴量と抽出された特徴量との差（認識距離値）に応じて文字認識の候補文字を選択する（ステップ１１０）。そして、このように選択された候補文字を認識結果格納部１６に格納して入力・表示パネル１１に出力し、後処理を行なって（ステップ１１１）、入力された１文字分のインクデータに対する処理を終了する。
【００３３】
なお上述の処理を行なったときに、入力ストロークが複数の続けストロークに類似することがあるが、本実施例では文字認識によって正しい文字が最終的に１つ認識されればよいので、文字認識の前処理である類似の続けストロークの検索段階では、複数の続けストロークが該当するものとされても構わない。このような場合には、これら複数の続けストロークにそれぞれ対応する分解インクデータ群によって複数通りの置き換えを行ない、得られた複数のインクデータのそれぞれについて文字認識を行ない、これらのインクデータに対する文字認識で得られる認識距離値のうち、値が小さいものをもって候補文字とすればよい。
【００３４】
次に、本実施例における続けストローク辞書２１の学習について説明する。辞書更新部１８は、利用者からの学習の指示に応じて続けストローク辞書２１、すなわち続けストローク認識辞書２５と続けストローク変換辞書２６の更新を行なうものである。学習を行なわせようとするのは、一般に、本来ならば複数の字画に対応するものを１ストロークで手書き文字入力したときに手書き文字認識が意図した通りに行なわれなかった場合であるが、文字認識がうまく行なわれなかった理由は、詳細に検討すると、▲１▼入力ストロークに類似する続けストロークが続けストローク認識辞書２５に登録されていない、▲２▼ユーザが入力ストロークによって入力を意図した字画に相当する分解ストローク群が続けストローク変換辞書２６に登録されていない、▲３▼続けストロークと分解ストローク群との対応関係がそのユーザの書き癖を的確に表わしたものではない、のいずれかあるいはこれらが複合したものとして考えることができる。一方、本実施例では、入力ストロークと類似している続けストロークが複数あれば、それら複数の続けストロークにそれぞれ対応して分解ストローク群への置き換えが複数通り発生するから、１つの入力ストロークを複数の分解ストローク群に対応させるためには、ほぼ同じような続けストロークの複数個を続けストローク認識辞書２５に登録し、それぞれ異なる分解ストローク群と対応付けておけばよい。したがって、入力を意図した字画に相当する分解ストローク群が登録されているが上述の▲１▼や▲３▼に該当する場合には、新たに続けストローク（この場合、既存のものと同様の続けストロークであってもよい）を登録し、この新たに登録した続けストロークと正しい分解ストローク群とをポインタによって対応付ければよいことになる。上述の▲２▼の場合には、その分解ストローク群を登録した上で新たな続けストロークを登録し、ポインタによってその続けストロークと新たに登録した分解ストローク群とを対応付ければよいことになる。
【００３５】
そこで、辞書更新部１８は、ユーザから続けストローク辞書２１の学習を指示された場合に、図４に示すようにして、続けストローク辞書２１の更新を行なう。図４は、辞書更新の基本的動作を示すフローチャートである。ここでは、既に入力されているものに対する指定あるいはユーザによる入力によって、続けストロークとして登録したい入力ストロークと、それに対応する分解ストローク群とが明示されているものとする。
【００３６】
まず、指定された分解ストローク群が既に続けストローク変換辞書２６に登録済みであるか判定し（ステップ１５１）、未登録であればその分解ストローク群を続けストローク変換辞書２６に登録する（ステップ１５２）。次に、指定された入力ストロークの特徴量を求め、求めた特徴量を続けストロークとして続けストローク認識辞書２５に登録する（ステップ１５３）。この時点では登録した続けストロークに対応するポインタは空値となっているから、指定された分解ストローク群に対する値をポインタに設定し（ステップ１５４）、辞書更新の処理を終了する。
【００３７】
ところで本実施例では、上述したように、１つの入力ストロークが複数の続けストロークに類似することがある。図５は特徴空間３０内での続けストロークの配置の一例を示す図である。ここでは、「∫」を横倒しにしたような２通りの続けストロークＡ,Ｂがあってそれぞれ「凵」形の２画の分解ストローク群とハの字形の２画の分解ストローク群に対応しているものとする。続けストロークＡ,Ｂの特徴量は、いずれも図において×印で示されている。この入力ストロークの特徴量が、続けストロークの特徴量からしきい値である半径Ｒの範囲内にあれば、この入力ストロークは続けストロークと類似していると判断されることになる。もし、入力ストロークの特徴量が図示Ｃで示されるようであれば、この入力ストロークは続けストロークＡにも続けストロークＢにも類似することになる。ただし、続けストロークＢの特徴量の方に近いから、候補としては続けストロークＢの方が順位が上になる。この場合、ユーザとしては続けストロークＡに対応する分解ストローク群を意図しつつ入力ストロークＣを入力したにも関わらず、入力ストロークＣが続けストロークＢに対応する分解ストローク群（ハの字形の分解ストローク群）に置き換えられた結果で誤認識となったときには、改めて入力ストロークＣを続けストロークとして続けストローク辞書２１に登録する必要はない。続けストロークＡに対応する分解ストローク群で入力ストロークＣを置き換えたインクデータについても文字認識が行なわれているはずなので、続けストローク辞書２１に登録する代りに、文字認識段階での学習処理を行なえばよい。
【００３８】
以上が辞書更新の基本的処理であるが、本実施例の手書き文字認識装置では、グラフィカルユーザインタフェース（ＧＵＩ）によって、ユーザが簡単に続けストローク辞書２１の学習を行なえるようになっている。図６は、辞書学習のためのユーザインタフェース画面の一例を示す図である。この画面３１は、ユーザが入力・表示パネル１１に対して特定の入力操作（例えば、誤認識となった文字をペン１２でクリックする）を行なって学習モードへの移行を指示した場合に、入力・表示パネル１１に現れるものである。
【００３９】
画面３１には、１文字分のインクデータを表示するための対象文字表示窓３２と、学習対象のストロークを表示するためのストローク表示窓３３と、ストローク表示窓３３に表示すべき入力ストロークを選択するためのスクロールボタン３４と、分解ストローク群３５を表示するための分解ストローク群表示窓３５と、分解ストローク群表示窓３５に表示する分解ストローク群を選択するためのスクロールボタン３６と、登録ボタン３７と、クリアボタン３８と、終了ボタン３９とが設けられている。対象文字表示窓３２には、誤認識となった文字をクリックした場合にその文字に対応するインクデータが表示される。また、各スクロールボタン３４,３６は、いずれも、左向きのボタン「<<」と右向きのボタン「>>」によって構成されている。
【００４０】
ストローク表示窓３３は、対象文字表示窓３２に表示されているインクデータ中の個々の入力ストロークが１つずつ表示される領域であって、スクロールボタン３４の左右のボタンのいずれかを１回クリックすることにより、インクデータでの入力順に応じて、現在表示されている入力ストロークの直前あるいは直後に入力された入力ストロークが表示されるようになっている。
【００４１】
一方、分解ストローク群表示窓３５には、ストローク表示窓３３に表示されている入力ストロークに対応する分解ストローク群が表示されており、ストローク表示窓３３に表示されている入力ストロークが変われば、それに対応して分解ストローク群表示窓３５に表示される分解ストローク群も変化する。さらに、スクロールボタン３６を操作することにより、続けストローク変換辞書２６に登録されている全ての分解ストローク群が、分解ストローク群表示窓３５に順次表示される。入力ストロークが複数の続けストロークに類似して複数の分解ストローク群に対応することがあるから、スクロールボタン３６が操作された場合には、まず、この候補として挙げられた分解ストローク群を表示するようにすることが望ましい。また、クリアボタン３８をクリックすると、分解ストローク群表示窓３５の表示がクリアされ、ここにユーザがペン１２によって分解ストローク群を入力できるようになっている。ここでの分解ストローク群の入力は、くずさずに、本来の字画に応じて行なわれる。スクロールボタン３６によって選択した場合にせよ、ユーザが分解ストローク群を入力した場合にせよ、所望の分解ストローク群が分解ストローク群表示窓３５に表示されている状態で登録ボタン３７をクリックすることにより、辞書学習が行なわれ、続けストローク辞書２１の更新が行なわれるようになっている。そして、終了ボタン３９をクリックすることによって、続けストローク辞書２１の学習の処理を終了させることができる。
【００４２】
以上のようなグラフィカルユーザインタフェースを設けることによって、ユーザは、ストローク表示窓３３と分解ストローク群表示窓３５とを見比べつつ、何が誤認識の原因かを調べることができ、所望の分解ストローク群に対応しなかった入力ストロークに関して上述のようにして辞書学習を行なうことにより、次回からは、この入力ストロークに対して適切な分解ストローク群が対応するようになり、文字認識が正しく行なわれるようになる。
【００４３】
この学習処理をまとめたものが図７のフローチャートである。まず、ストローク表示窓３３に表示する入力ストロークを選択することにより、入力ストロークの指定を行なう（ステップ２０１）。その結果、その時点で入力ストローク群に対応している分解ストローク群が、分解ストローク群表示窓３５に表示される（ステップ２０２）。ここでユーザは辞書学習を行なうかどうかを判断し（ステップ２０３）、辞書学習を行なわないのであれば終了ボタン３９をクリックして処理を終了させ、辞書学習を行なう場合には、正しい分解ストローク群を選択あるいは入力する（ステップ２０４）。これによって、続けストローク辞書２１への登録すなわち学習が行なわれ（ステップ２０５）、学習処理が終了する。
【００４４】
以上が辞書学習の一例であるが、本実施例では、全自動モードとも呼ばれる辞書学習モードも備えている。この全自動モードでは、正しい字を楷書体で手書き文字入力することによって、自動的に続けストローク辞書が更新されるようになっている。以下、全自動モードでの続けストローク辞書の学習手順について、図８を用いて説明する。
【００４５】
まず、入力・表示パネル１１上において、誤認識文字を指定する（ステップ２１１）。そしてユーザは、正しい字を楷書体で入力する（ステップ２１２）。ここで楷書体で入力するとは、くずさずに本来の字画で手書き文字入力を行なうことを意味する。楷書体で入力された手書き文字は、通常の手順によって文字認識され、認識結果が表示される。ユーザはその認識結果を見て、正しく認識されているかどうかを判断する（ステップ２１３）。正しく認識されなかった場合には、ステップ２１２に戻って、正しく認識されるまで楷書体での手書き文字入力を繰り返す。正しく認識された場合には、誤認識文字のインクデータと正しく入力された字のインクデータを比較し、誤認識文字のインクデータ中のどの入力ストロークが続けストロークに対応し、その続けストロークが正しい字のインクデータでのどのストロークに対応するかを判断する（ステップ２１４）。誤認識文字のインクデータと正しく入力された字のインクデータはインクデータ格納部１４に格納されており、辞書更新部１８は、インクデータ中の各ストロークについての特徴量に基づいて、上述の処理を実行する。そして、対応関係が明らかになったら、見つかった続けストロークとそれに対応する分解ストローク群を続けストローク辞書２１に登録し（ステップ２１５）、処理を終了する。
【００４６】
ここで、ステップ２１４での処理について、図９を用い具体例を挙げて説明する。ここでは、本来６画である「字」という文字をくずして４画で入力したら誤認識が起き、これに対応してユーザが楷書体で「字」の字を手書き文字入力したものとして、説明を行なう。
【００４７】
図９において、くずし字の入力データと楷書体の入力データは、それぞれ、誤認識した手書き文字のインクデータ、正しい字として入力された手書き文字のインクデータである。それぞれのインクデータから入力順に１ストロークずつを取り出してその特徴量を相互に比較する。図では特徴量そのものは表示できないので、ストロークが示されている。図示した例では、３画目まではくずし字と楷書体とではストロークが類似し、１対１に対応している。しかし４画目では、くずし字と楷書体とではストロークが１対１には対応していない。そこで、くずし字の４画目が続けストロークとなるべき入力ストロークであると判断する。
【００４８】
次に、楷書体での一連のどの入力ストロークがこの続けストロークに対応するかを調べ、この続けストロークに対応する分解ストローク群を判別する。ここで挙げた例の場合、楷書体のインクデータにおいて、４画目以降の一連の複数の入力ストロークがこの続けストロークに対応しているはずである。そこで、４画目と５画目の入力ストロークを合成したものと続けストロークを比較し、４画目と５画目と６画目の入力ストロークを合成したものと続けストロークを比較し、というように、順に入力ストロークを加えて合成したものと続けストロークとを順次比較し、どの画数まで加えたものが続けストロークに最も類似しているかを調べる。ここでは４画目から６画目までのストロークを加えたものが続けストロークと極めて類似しているので、楷書体のインクデータにおける４画目から６画目までのストロークをこの続けストロークに対する分解ストローク群とする。この例では、くずし字の入力ストロークも楷書体の入力ストロークもこれで終ってしまうが、このように続けストロークと分解ストローク群との対応が見つかれば、引き続き、未処理の入力ストロークについて同様の処理を繰り返せばよい。この繰り返しによって、続けストロークの検出と、続けストロークと分解ストローク群の対応付けとが自動的に行なわれることになる。以上のように続けストロークとそれに対応する分解ストローク群が抽出されたら、それらを用いて辞書学習を行なえばよい。
【００４９】
【発明の効果】
以上説明したように本発明は、分解ストローク群を格納する続けストローク変換辞書と、続けストロークとこの続けストロークに対応する分解ストローク群へのポインタを格納する続けストローク認識辞書とによって、続けストローク辞書を構成することにより、複数の続けストロークが１つの分解ストローク群を"共用"することが可能になるので、続けストローク辞書全体としての規模が小さくなり、かつ、辞書のメンテナンス等が容易になるという効果がある。また、辞書学習を行なう場合に既登録の分解ストローク群を利用できるので、辞書の膨張を防ぐことが可能になるとともに、辞書学習がユーザにとってより容易なものとなるという効果がある。
【００５０】
さらに本発明の手書き文字認識辞書学習方法では、誤認識された方のインクデータを第１のインクデータとし、本来の字画で入力された方のインクデータを第２のインクデータとして、第１のインクデータと第２のインクデータに含まれるストロークを相互に比較して続けストロークとそれに対応する分解ストローク群とを抽出することにより、辞書学習用の続けストロークデータとそれに対応する分解ストローク群が自動的に得られ、また、辞書学習のための操作がユーザにとって簡単なものになるという効果がある。
【図面の簡単な説明】
【図１】本発明の一実施例の手書き文字認識装置の構成を示すブロック図である。
【図２】図１の手書き文字認識装置での続けストローク辞書の編成を示す図である。
【図３】手書き文字認識の処理手順を示すフローチャートである。
【図４】続けストローク辞書の更新の基本的処理を示すフローチャートである。
【図５】特徴空間における続けストロークの相互間の関係を示す図である。
【図６】続けストローク辞書の学習のためのユーザインタフェース画面の一例を示す図である。
【図７】続けストローク辞書の学習手順を示すフローチャートである。
【図８】全自動モードでの続けストローク辞書の学習手順を示すフローチャートである。
【図９】入力ストロークと分解ストローク群との対応付けを示す図である。
【図１０】続けストローク辞書の構成の一例を示す図である。
【符号の説明】
１１    入力・表示パネル
１２    ペン
１３    入力処理部
１４    インクデータ格納部
１５    文字認識エンジン部
１６    認識結果格納部
１７    出力処理部
１８    辞書更新部
２０    インクデータ
２１    続けストローク辞書
２２    文字認識辞書
２５    続けストローク認識辞書
２６    続けストローク変換辞書
３０    特徴空間
３１    画面
３２    インクデータ表示窓
３３    ストローク表示窓
３５    分解ストローク群表示窓
１０１〜１１１,１５１〜１５４     ステップ
２０１〜２０５,２１１〜２１５     ステップ
【図１】
0003732546.tif 000003
【図２】
0003732546.tif 000004
【図３】
0003732546.tif 000005
【図４】
0003732546.tif 000006
【図５】
0003732546.tif 000007
【図６】
0003732546.tif 000008
【図７】
0003732546.tif 000009
【図８】
0003732546.tif 000010
【図９】
0003732546.tif 000011
【図１０】
0003732546.tif 000012