(57)【要約】【課題】手書き文字入力をスケーリングして手書き文字認識を実行する方法、コンピュータ・プログラム、およびデータ処理システムを提供すること。【解決手段】手書き文字ストロークからストローク・パラメータを導出し、手書き文字ストロークが供給された入力エリアを画定する。入力エリアに従ってストローク・パラメータをスケーリングする。【選択図】図４
2005202959.tif 000002
【特許請求の範囲】
【請求項１】
手書き文字認識のために、コンピュータで手書き文字入力をスケーリングする方法であって、
第１手書き文字ストロークからストローク・パラメータを導出するステップと、
前記第１手書き文字ストロークが供給された入力エリアを画定するステップと、
前記入力エリアに従って前記ストローク・パラメータをスケーリングするステップと
を含む方法。
【請求項２】
前記導出するステップが、前記第１手書き文字ストロークの始点および終点を検出するステップを含む請求項１に記載の方法。
【請求項３】
前記画定するステップが、前記第１手書き文字ストロークの座標極値に境界を定める請求項１に記載の方法。
【請求項４】
前記導出するステップが、前記第１手書き文字ストロークの長さパラメータを計算するステップを含む請求項１に記載の方法。
【請求項５】
前記画定するステップが、前記第１手書き文字ストロークの前記長さパラメータを２乗することによって前記入力エリアの面積を計算するステップを含む請求項４に記載の方法。
【請求項６】
前記スケーリングするステップが、前記ストローク・パラメータに、前記入力エリアの面積に対する基準エリアの面積の比を掛けるステップを含む請求項１に記載の方法。
【請求項７】
前記第１手書き文字ストロークの始点および終点の座標を求めるステップと、
第２手書き文字ストロークの始点および終点の座標を求めるステップと
をさらに含み、
前記画定するステップが、前記第１手書き文字ストロークおよび前記第２手書き文字ストロークの座標の座標極値を識別するステップを含む
請求項１に記載の方法。
【請求項８】
手書き文字ストロークから導出されるパラメータをスケーリングするためのコンピュータ・プログラムであって、コンピュータに、
コンピュータ・インターフェースに入力された第１ストロークの始点および終点を求め、前記始点および前記終点の決定に応答して前記第１ストロークのストローク長パラメータを計算する第１ステップと、
前記第１ストロークが供給された入力エリアを画定し、前記第１ストロークのストローク長パラメータを前記入力エリアに従ってスケーリングする第２ステップと
を実行させるためのコンピュータ・プログラム。
【請求項９】
前記第２ステップが、前記第１ストロークの座標極値に境界を定める請求項８に記載のコンピュータ・プログラム。
【請求項１０】
前記第２ステップが、前記第１ストロークの前記ストローク長パラメータを、前記入力エリアの面積に対する基準エリアの面積の比としてスケーリングする請求項８に記載のコンピュータ・プログラム。
【請求項１１】
前記第１ステップが、前記コンピュータ・インターフェースに入力された第２ストローク入力の始点および終点を求めるステップを含み、該ステップに応答して前記第２ステップが、前記入力エリアを再画定する請求項８に記載のコンピュータ・プログラム。
【請求項１２】
前記第１ステップが、前記第２ストロークのストローク長パラメータを計算する請求項１１に記載のコンピュータ・プログラム。
【請求項１３】
前記第２ステップが、再画定した入力エリアに従って、前記第２ストロークの前記ストローク長パラメータを再スケーリングする請求項１２に記載のコンピュータ・プログラム。
【請求項１４】
前記第２ステップが、前記第１ストロークおよび前記第２ストロークの座標極値に境界を定める請求項１１に記載のコンピュータ・プログラム。
【請求項１５】
前記第２ステップが、再画定した前記入力エリアに従って前記第１ストロークの前記ストローク長パラメータを再スケーリングする請求項１４に記載のコンピュータ・プログラム。
【請求項１６】
第１手書き文字ストロークを受け取るポインティング・デバイスと、
１組の命令を含むメモリと、
前記１組の命令の実行に応答して、前記第１手書き文字ストロークの始点および終点を求め、前記始点および前記終点からストローク長パラメータを計算し、前記始点および前記終点の決定に応答して、前記第１手書き文字ストロークが供給された入力エリアを画定し、計算した前記ストローク長パラメータを、前記入力エリアに従ってスケーリングする処理装置と
を備えるデータ処理システム。
【請求項１７】
前記入力エリアを画定する際に、前記第１手書き文字ストロークの座標極値に境界を定める請求項１６に記載のデータ処理システム。
【請求項１８】
前記処理装置が、第２手書き文字ストロークの始点および終点の決定に応答して、前記第１手書き文字ストロークおよび前記第２手書き文字ストロークの座標極値に境界を定めるように、前記入力エリアを再画定する請求項１６に記載のデータ処理システム。
【請求項１９】
前記処理装置が、前記入力エリアの再画定に応答して、前記ストローク長パラメータを再スケーリングする請求項１８に記載のデータ処理システム。
【請求項２０】
前記処理装置が、前記第２手書き文字ストロークの前記始点および前記終点の決定に応答して、前記第２手書き文字ストロークのストローク長パラメータを計算し、再画定した前記入力エリアに関して前記第２手書き文字ストロークの前記ストローク長パラメータをスケーリングする請求項１８に記載のデータ処理システム。
【請求項２１】
手書き文字ストロークから導出されるパラメータをスケーリングするためのコンピュータ・プログラムであって、コンピュータに、
入力された第１ストロークを表示するように適合されたコンピュータ・インターフェースにキャプチャ・エリアを表示する第１ステップと、
前記第１ストロークが供給された入力エリアを画定し、前記ストロークを前記入力エリアに従ってスケーリングする第２ステップと、
前記コンピュータ・インターフェースのウィンドウ内にスケーリングした前記ストロークを表示する第３ステップと
を実行させるためのコンピュータ・プログラム。
【請求項２２】
前記ウィンドウが、前記コンピュータ・インターフェースの事前定義エリアである請求項２１に記載のコンピュータ・プログラム。
【請求項２３】
前記第１ステップが、前記キャプチャ・エリア内に入力された第２ストロークを表示し、前記第２ステップが、前記第２ストロークの入力に応答して、前記入力エリアを再画定し、再画定した前記入力エリアに従って前記第２ストロークをスケーリングし、再画定した前記入力エリアに従って前記第１ストロークを再スケーリングする請求項２０に記載のコンピュータ・プログラム。
【請求項２４】
前記第３ステップが、再スケーリングした前記第１ストロークおよびスケーリングした前記第２ストロークを前記ウィンドウ内に表示する請求項２３に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には改良型のデータ処理システムに関し、より詳細には、手書き文字認識を実行する方法および装置に関する。さらに詳細には、本発明は、手書き文字認識を容易にするために手書き文字入力をスケーリングする方法および装置を提供する。
【背景技術】
【０００２】
本願は、２００４年１月１４日付けの米国特許出願第１０／７５６９１８号および同第１０／７５６９１９号に関連している。
【０００３】
手書き文字認識の分野では、手書きサンプルのより正確な認識を実現するためにソフトウェア・ベンダによって様々な手法が取られてきた。大規模な文字セットを有する文字言語、例えば中国語や韓国語には、ソフトウェア・ベンダが効率的な手書き文字認識アルゴリズムを開発するのに特に問題がある。例えば中国語は数千の文字を含む。したがって、中国語の手書き文字認識を実施するための基準文字辞書は、必然的に数千のエントリを含む。基準辞書内に維持される文字のデータ・サイズにより、手書きの中国語文字の手書き文字分析を実行する効率が制限される。
【０００４】
手書き文字認識の解決策では、手書き文字ストロークの入力中にストロークをサンプリングし、サンプルを、基準文字辞書内に維持される基準文字と比較することが必要となる。例えば、多くの手書き文字認識アルゴリズムでは、基準文字辞書への照会のために、ビットマップなどの手書き文字のイメージの構築が必要となる。大規模な文字セットを含む言語では、潜在的マッチを識別するのに数千の比較が行われる可能性がある。こうした技法は大量のデータを扱うため、手書き文字認識アルゴリズムを効果的に実装するには大きな処理能力が必要となる。
【０００５】
手書き文字と基準文字辞書の文字との比較中に直面する具体的な問題は、ユーザによって入力される文字サイズが変動する結果として生じる。例えば、ユーザによっては、入力装置のキャプチャ・エリアの大部分を占める文字を書いたり、あるいは、キャプチャ・エリアの一部だけを占めるサイズで同一の文字を書いたりすることがある。基準文字辞書の文字データは、一様なサイズの文字セットから導出される。したがって、手書き文字と基準文字辞書の文字との比較結果は、文字入力サイズの変動のためにしばしば異なる文字マッチとなる。
【特許文献１】米国特許出願第１０／７５６９１８号
【特許文献２】米国特許出願第１０／７５６９１９号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
文字入力をスケーリングして、手書き文字と基準文字辞書の文字との比較結果を改善する手書き文字認識技法を提供できれば有利であろう。手書きストロークが供給された入力エリアを画定し、その入力エリアに従って手書き文字ストローク・パラメータをスケーリングする手書き文字認識技法を提供できればさらに有利であろう。後続の手書き文字ストロークの入力後に、再画定した入力エリアに従って手書きストローク・パラメータを再スケーリングできればさらに有利であろう。
【課題を解決するための手段】
【０００７】
本発明は、手書き文字入力をスケーリングして手書き文字認識を実行する方法、コンピュータ・プログラム、およびデータ処理システムを提供する。ストローク・パラメータが手書き文字ストロークから導出され、手書き文字ストロークが供給された入力エリアが画定される。ストローク・パラメータは、入力エリアに従ってスケーリングされる。
【０００８】
本発明の特徴と考えられる新規な機能は添付の特許請求の範囲に示されている。しかし、本発明自体、ならびに本発明の好ましい使用の形態、別の目的、および別の利点は、添付の図面と共に以下の例示的実施形態の詳細な説明を参照することによって最良に理解されよう。
【発明を実施するための最良の形態】
【０００９】
ここで図を参照すると、図１は、本発明を実施することができるデータ処理システムのネットワークを示す。ネットワーク・データ処理システム１００は、本発明を実施することができるコンピュータのネットワークである。ネットワーク・データ処理システム１００はネットワーク１０２を含む。ネットワーク１０２は、ネットワーク・データ処理システム１００内で互いに接続された様々な装置およびコンピュータ間の通信リンクを提供するのに使用される媒体である。ネットワーク１０２は、ワイヤ、ワイヤレス通信リンク、光ファイバ・ケーブルなどの接続を含むことができる。
【００１０】
図示する例では、サーバ１０４が記憶装置１０６と共にネットワーク１０２に接続される。加えて、クライアント１０８、１１０、および１１２がネットワーク１０２に接続される。こうしたクライアント１０８、１１０、および１１２は、例えばパーソナル・コンピュータやネットワーク・コンピュータでよい。図示する例では、サーバ１０４は、ＨＴＭＬ文書のようなデータ、および添付されたスクリプト、アプレット、またはその他のアプリケーションをクライアント１０８、１１０、および１１２に提供する。クライアント１０８、１１０、および１１２はサーバ１０４に対するクライアントである。ネットワーク・データ処理システム１００は、図示していない追加のサーバ、クライアント、およびその他の装置を含むことができる。
【００１１】
図示する例では、ネットワーク・データ処理システム１００は、ネットワーク１０２が、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）を使用して互いに通信するネットワークおよびゲートウェイの世界的な集合を表すインターネットである。インターネットの中心部は、データおよびメッセージを経路指定する、数千の商用コンピュータ・システム、政府コンピュータ・システム、教育コンピュータ・システム、およびその他のコンピュータ・システムを含むメジャー・ノードまたはホスト・コンピュータ間の高速データ通信回線のバックボーンである。もちろん、ネットワーク・データ処理システム１００は、例えばイントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）などのいくつかの異なるタイプのネットワークとして実装することもできる。図１は一例であり、本発明のアーキテクチャ上の制限ではない。図示するサーバ１０４はウェブ・サーバであり、ＨＴＴＰサーバとも呼ばれ、ウェブ・ブラウザなどのクライアントから要求を受けたとき、ＨＴＴＰを使用してＨＴＭＬ文書および何らかの関連ファイル／スクリプトを供給するサーバ・ソフトウェアを含む。クライアントとサーバの間の接続は通常、要求された文書またはファイルを供給した後に切断される。ＨＴＴＰサーバはウェブ・サイトおよびイントラネット・サイト上で使用される。
【００１２】
図２を参照すると、本発明の好ましい実施形態による、図１のサーバ１０４などのサーバとして実装することのできるデータ処理システムのブロック図が示されている。データ処理システム２００は、クライアント１０８、１１０、および１１２のうち１つまたは複数から得られた手書き文字ストロークから計算されるパラメータを解析するのに使用することのできるコンピュータの一例である。より具体的には、データ処理システム２００は、クライアントで処理されてディスプレイ装置上にコンピュータ・インターフェースを提供するデータを供給し、そのコンピュータ・インターフェースにより、クライアントのユーザは、ポインティング・デバイスを使用することによって手書き文字入力を与える。図示する例では、データ処理システム２００によってクライアントに提供されるアプリケーションが、ユーザが入力した文字ストロークからパラメータを導出する。入力エリアを画定し、その入力エリアおよび基準エリアに関してストローク・パラメータをスケーリングする。入力エリアは、ユーザが入力した１つまたは複数の文字ストロークから画定または再画定される。基準エリアは、基準文字辞書の基準文字のサイズを示す。スケーリング因子は、画定した入力エリアおよび基準エリアから導出される。例えば、スケーリング因子は、入力エリアに対する基準エリアの比（例えば面積比）として計算することができる。ストローク・パラメータは、スケーリング因子に基づいて調整される。次いでクライアント・アプリケーションが、スケーリングしたストローク・パラメータを含むストローク・パラメータをデータ処理システム２００に通信する。追加のストロークが入力されたとき、入力エリアおよびスケーリング因子を調整することができる。パラメータの受信に応答して、データ処理システム２００は、１つまたは複数の候補文字を識別し、その候補文字をクライアントに通信する。
【００１３】
ストローク・パラメータは、ユーザが入力したストロークの属性を定義し、サーバにより、基準文字辞書内の基準文字のストロークの対応する属性と比較される。例えば、ユーザが入力した手書き文字ストロークの長さの数値的尺度を与えるストローク長パラメータをクライアントで求めることができる。ストローク長パラメータをサーバに通信し、基準文字ストロークの基準長パラメータと比較することにより、手書き文字ストロークの長さと基準文字ストロークの長さとの間の一致の程度を示す数値的尺度が得られる。手書き文字ストロークが入力された軌跡の数値的尺度を与えるストローク角パラメータをクライアントで求めることができる。ストローク角パラメータをサーバに通信し、基準文字ストロークの基準角パラメータと比較することにより、手書き文字ストロークの角度と基準文字ストロークの角度との間の一致の程度を示す数値的尺度が得られる。手書き文字ストロークの中心点の位置または座標を識別する中心パラメータをクライアントで求めることができる。中心パラメータをサーバに通信し、それを手書き文字ストロークの他の中心パラメータと比較して、ストローク間の位置関係を求めることができる。ストローク中心パラメータの比較に基づく手書き文字ストロークの位置尺度を基準文字ストローク間の中心パラメータの関係と比較して、手書き文字ストロークの相対位置と基準文字ストロークの相対位置との間の数値的対応を求めることができる。本明細書では角度パラメータ、長さパラメータ、および中心パラメータをストローク・パラメータ・セットと総称する。
【００１４】
次いで、長さパラメータ、角度パラメータ、および中心パラメータの比較結果を評価して、手書き文字ストロークと基準ストロークとの間の対応を求める。このプロセスを基準文字辞書の残りの基準文字についてサーバで反復する。基準文字のうち１つまたは複数を、入力である文字との潜在的マッチとして識別し、それをクライアントに通信する。
【００１５】
データ処理システム２００は、システム・バス２０６に接続された複数のプロセッサ２０２および２０４を含む対称型マルチプロセッサ（ＳＭＰ）システムでよい。あるいは、単一プロセッサ・システムを使用してもよい。システム・バス２０６には、ローカル・メモリ２０９に対するインターフェースを提供するメモリ・コントローラ／キャッシュ２０８も接続される。Ｉ／Ｏバス・ブリッジ２１０がシステム・バス２０６に接続され、Ｉ／Ｏバス２１２に対するインターフェースを提供する。メモリ・コントローラ／キャッシュ２０８とＩ／Ｏバス・ブリッジ２１０は、図示するように一体化することができる。
【００１６】
Ｉ／Ｏバス２１２に接続されたＰＣＩバス・ブリッジ２１４が、ＰＣＩローカル・バス２１６に対するインターフェースを提供する。いくつかのモデムをＰＣＩローカル・バス２１６に接続することができる。典型的なＰＣＩバス実装は、４つのＰＣＩ拡張スロットまたはアドイン・コネクタをサポートする。図１のクライアント１０８、１１０、および１１２に対する通信リンクは、アドイン・ボードを介してＰＣＩローカル・バス２１６に接続されたモデム２１８およびネットワーク・アダプタ２２０を介して設けることができる。
【００１７】
追加のＰＣＩバス・ブリッジ２２２および２２４が、追加のモデムまたはネットワーク・アダプタをサポートすることができる追加のＰＣＩローカル・バス２２６および２２８に対するインターフェースを提供する。このようにして、データ処理システム２００により、複数のネットワーク・コンピュータに対する接続が可能となる。図示するように、メモリ・マップ・グラフィックス・アダプタ２３０およびハード・ディスク２３２も直接的または間接的にＩ／Ｏバス２１２に接続することができる。以下でより完全に説明するように、システム２００は、本発明の一実施形態による手書き文字認識アルゴリズムを実行する。
【００１８】
図２に示すハードウェアは変更可能である。例えば、光ディスク・ドライブなどの他の周辺装置を、図示するハードウェアに加えて、またはその代わりに使用することもできる。図示する例は、本発明に関するアーキテクチャ上の制限を示唆するものではない。
【００１９】
図２に示すデータ処理システムは、例えば、ＡＩＸオペレーティング・システムまたはＬＩＮＵＸオペレーティング・システムが動作する、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポーレーションの製品であるIBM eServer pSeriesシステムでよい。
【００２０】
次に図３を参照すると、本発明を実施することのできるデータ処理システムを示すブロック図が示されている。データ処理システム３００は、図１のクライアント１０８などのクライアント・コンピュータの一例であり、ユーザから手書き文字を受け取るため、および手書き文字のストローク・パラメータを計算するために使用することができる。より具体的には、データ処理システム３００は、システム２００からウェブ・ページ・ダウンロードを受信し、ウェブ・ページ・ダウンロードの処理に応答して、手書き文字入力用のコンピュータ・インターフェースを表示する。手書き文字の各文字ストロークが、ストローク開始イベントおよびストローク終了イベントについて評価される。データ処理システム３００は、ストローク開始イベントおよびストローク終了イベントの判定の際に、入力エリアおよび１つまたは複数のストローク・パラメータを計算する。
【００２１】
データ処理システム３００は、計算したストローク・パラメータのうち１つまたは複数をスケーリングし、ストローク・パラメータをデータ処理システム２００に通信して、データ処理システム２００で実行される手書き文字認識アルゴリズムにサブミットする。データ処理システム２００で識別した候補文字は、データ処理システム３００に通信し、ユーザは、クライアント・コンピュータ・インターフェースに供給される文字と、データ処理システム２００で識別された候補文字との間のマッチを確認することができる。ユーザが文字ストロークをクライアント・コンピュータ・インターフェースに引き続き供給するとき、追加のストローク・パラメータを計算する。追加のストロークが入力されるとき、入力エリアを調整し、入力エリアの調整に応答してストローク・パラメータのうち１つまたは複数をスケーリングする。候補文字がデータ処理システム３００のユーザによってマッチと確認されるまで、さらに手書き文字分析を行うためにストローク・パラメータをシステム２００に通信する。
【００２２】
データ処理システム３００は、ＰＣＩローカル・バス・アーキテクチャを使用する。図示する例ではＰＣＩバスを使用しているが、ＡＧＰやＩＳＡなどの他のバス・アーキテクチャも使用することができる。プロセッサ３０２およびメイン・メモリ３０４は、ＰＣＩブリッジ３０８を介してＰＣＩローカル・バス３０６に接続される。ＰＣＩブリッジ３０８はまた、プロセッサ３０２用の統合メモリ・コントローラ／キャッシュ・メモリも含むことができる。直接コンポーネント相互接続またはアドイン・ボードを介してＰＣＩローカル・バス３０６への追加の接続を行うことができる。図示する例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ３１０、ＳＣＳＩホスト・バス・アダプタ３１２、および拡張バス・インターフェース３１４が、直接コンポーネント接続によってＰＣＩローカル・バス３０６に接続される。一方、オーディオ・アダプタ３１６、グラフィックス・アダプタ３１８、およびオーディオ／ビデオ・アダプタ３１９は、拡張スロットに挿入されたアドイン・ボードによってＰＣＩローカル・バス３０６に接続される。グラフィックス・アダプタ３１８は、コンピュータ・インターフェースすなわちＧＵＩを提供するディスプレイ装置１０７を駆動し、ユーザが提供した手書き文字を表示する。拡張バス・インターフェース３１４は、キーボード／マウス・アダプタ３２０、モデム３２２、および追加のメモリ３２４に対する接続を提供する。マウス１０９などのポインティング・デバイスがアダプタ３２０に接続され、それにより、ユーザによるシステム３００へのポインタ入力の供給が可能となる。ＳＣＳＩホスト・バス・アダプタ３１２は、ハード・ディスク・ドライブ３２６、テープ・ドライブ３２８、およびＣＤ−ＲＯＭドライブ３３０に対する接続を提供する。典型的なＰＣＩローカル・バス実装は、３つまたは４つのＰＣＩ拡張スロットまたはアドイン・コネクタをサポートする。
【００２３】
「マウス」という用語は、本明細書で使用する際には、限定はしないが、マウス、トラック・ボール、ライト・ペン、スタイラス、タッチ・スクリーンまたはタッチ・パッドなどを含む、オペレーティング・システムがサポートする任意のタイプのグラフィカル・ポインティング・デバイスを指す。ポインティング・デバイスは通常、データ処理システムのユーザがデータ処理システムのＧＵＩと対話するのに使用される。「ポインタ」とは、マウスやその他のそうした装置で制御されるアイコン・イメージであり、選択または操作することのできるアイコンやメニューなどを視覚的にユーザに示すためにデータ処理システムのビデオ・ディスプレイ装置上に表示される。
【００２４】
オペレーティング・システムはプロセッサ３０２上で動作し、図３のデータ処理システム３００内の様々なコンポーネントの制御を調整および提供するのに使用される。オペレーティング・システムは、マイクロソフト・コーポレーションから入手可能なＷｉｎｄｏｗｓ  ＸＰなどの市販のオペレーティング・システムでよい。Ｊａｖａなどのオブジェクト指向プログラミング・システムがオペレーティング・システムと共に動作することができ、データ処理システム３００上で実行中のＪａｖａプログラムまたはアプリケーションからオペレーティング・システムへの呼出しを実現する。「Ｊａｖａ」はサン・マイクロシステムズ社の商標である。オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムに対する命令は、ハード・ディスク・ドライブ３２６などの記憶装置に配置され、メイン・メモリ３０４にロードしてプロセッサ３０２で実行することができる。
【００２５】
データ処理システム３００は、本発明の一実施形態による文字ストローク収集アルゴリズムを実行するように適合されたウェブ・ブラウザを実行する。好ましくは、ブラウザが文書、例えばＨＴＭＬで符号化されたウェブ・ページをシステム２００からダウンロードしたときに、ストローク収集アルゴリズムがＪａｖａアプレットとしてシステム３００に配布される。したがって、データ処理システム３００で実行されるブラウザは、Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ、Ｎｅｔｓｃａｐｅなどの、Ｊａｖａが使用可能な様々な周知のウェブ・ブラウザのいずれかとして実装することができる。
【００２６】
図３のハードウェアは実装に応じて変更可能である。フラッシュ読取り専用メモリ（ＲＯＭ）、同等の不揮発性メモリ、光ディスク・ドライブなどのその他の内部ハードウェアまたは周辺装置を、図３に示すハードウェアに加えて、またはその代わりに使用することができる。さらに、本発明のプロセスは、マルチプロセッサ・データ処理システムに適用することができる。
【００２７】
別の例として、データ処理システム３００は、オペレーティング・システム・ファイルやユーザ生成データを格納する不揮発性記憶を提供するためのＲＯＭやフラッシュＲＯＭと共に構成された携帯情報端末（ＰＤＡ）装置でよい。
【００２８】
図３に示す例および上述の例はアーキテクチャ上の制限を示唆するものではない。例えば、データ処理システム３００は、ＰＤＡの形態を取ることに加えて、ノートブック・コンピュータまたはハンドヘルド・コンピュータでもよい。データ処理システム３００はキオスクまたはウェブ・アプライアンスでもよい。
【００２９】
図４に、クライアントが本発明の好ましい実施形態によるサーバ１０４と接続するときにディスプレイ装置１０７上に出力されるＧＵＩ４００を示す。ＧＵＩ４００は、クライアントがサーバ１０４から通信されたウェブ・ページを処理したことに応答して表示される。ＧＵＩ４００は、ウェブ・ブラウザ・インターフェース４０８のウィンドウ４０４内に表示されることが好ましい。図４に示すように、ＧＵＩ４００は、クライアントに供給された手書き文字と、本発明の実施形態によるデータ処理システム２００によって識別されデータ処理システム３００に通信された候補文字とを表示するキャプチャ・エリア４０２を含む。ユーザは、マウス１０９などのポインティング・デバイスを介して手書き文字をキャプチャ・エリア４０２に供給する。加えて、ＧＵＩ４００は、最後に決定した候補文字を表示し、ユーザによる候補文字マッチの確認を受ける候補文字ディスプレイ４１０を含む。
【００３０】
ＧＵＩ４００はまた、キャプチャ・エリア４０２に供給されたスケーリング後の手書き文字または手書き文字ストロークを出力するウィンドウ４４２も含むことができる。スケーリング・ウィンドウ４４２のグラフィック出力は、ユーザがキャプチャ・エリア４０２に入力した手書き文字ストロークに対応する拡大文字ストロークまたは縮小文字ストロークを含むことができる。図示する例では、スケーリング・ウィンドウ４４２は、文字４０６を所定量だけスケーリングすることによって文字４０６から導出されるスケーリング済み文字４０７を出力する。具体的には、スケーリング済み文字４０７は、ユーザがキャプチャ・エリア４０２に入力したストローク４１２、４１４、および４１６にそれぞれ対応するスケーリング済み文字ストローク４１３、４１５、および４１７からなる。スケーリング・ウィンドウ４４２は、一貫したサイズを有する視覚出力を提供し、入力した手書き文字データの一様な視覚フィードバックをユーザに提供する機構を提供する。
【００３１】
スケーリング・ウィンドウ４４２は、ＧＵＩ４００の事前定義エリアに設定した固定の寸法でよい。さらに、スケーリング・ウィンドウ４４２内に表示されるスケーリング済みストロークは、ユーザによる後続の手書きストロークの入力後に再スケーリングすることができる。例えば、ストローク４１２がユーザによって入力された文字４０６の第１ストロークであると仮定する。スケーリング済みストローク４１３は、スケーリング・ウィンドウ４４２内に収まるように手書き文字ストローク４１３をスケーリングすることによって導出される。さらに、ストローク４１４がユーザによって入力された文字４０６の第２ストロークであると仮定する。スケーリング済みストローク４１５はストローク４１４をスケーリングすることによって導出される。スケーリング済みストローク４１３および４１５がどちらもスケーリング・ウィンドウ４４２内に収まるように、スケーリング済みストローク４１５に比例してスケーリング済みストローク４１３を再スケーリングすることが好ましい。追加の手書き文字ストロークがキャプチャ・エリア４０２に入力されたとき、対応するスケーリング済みストロークを手書き入力から導出し、先にスケーリングしたストロークを互いに比例するように再スケーリングしてスケーリング・ウィンドウ４４２内に表示することができる。本発明の好ましい実施形態によれば、スケーリング・ウィンドウ４４２内に表示されるスケーリング済みストロークは、キャプチャ・エリアの一部である入力エリアに従ってスケーリングされる。入力エリアの面積は、手書きストロークの極値から計算される。入力エリアの画定および面積の計算は以下でより完全に説明する。
【００３２】
図示する例では、キャプチャ・エリア４０２に入力された完全な中国語文字４０６が示されている。文字４０６の入力はいくつかのハンド・ストロークを必要とする。図示した特定の文字は、３つのストローク４１２、４１４、および４１６の入力を必要とする。クライアントで実行されるストローク収集アルゴリズムは、キャプチャ・エリア４０２に供給される各文字ストロークの開始および終了を検出する。ストロークの完了を検出したとき、検出したストロークから入力エリアおよびストローク・パラメータ・セットを計算する。以下でより完全に説明するように、入力エリアに従ってストローク・パラメータのうち１つまたは複数をスケーリングする。次いでストローク・パラメータをデータ処理システム２００に通信し、ユーザ入力にマッチする可能性のある１つまたは複数の候補文字を識別する。
【００３３】
図５は、本発明の好ましい実施形態によるクライアントで実行されるストローク収集アルゴリズムの処理の流れ図である。ストローク収集アルゴリズムを開始し、ストローク・カウンタｉをゼロに初期化する（ステップ５０２）。ストローク収集アルゴリズムは、ストローク開始イベントのポーリング（ステップ５０４）に進む。図示する例では、ストローク開始イベントは、マウス・ボタンの押下などのポインティング・デバイス「ダウン」イベントである。ストローク開始イベントの検出時に、ストローク収集アルゴリズムは、ストローク開始イベントの座標を一時的に記録し（ステップ５０６）、ストローク終了イベントのポーリング（ステップ５０８）に進む。図示する例では、ストローク終了イベントは、マウス・ボタンの解放などのポインティング・デバイス「アップ」イベントである。
【００３４】
ストローク終了イベントの検出時に、ストローク終了イベントの座標を読み取り（ステップ５１０）、ストローク・カウンタｉを増分する（ステップ５１１）。ストローク開始座標およびストローク終了座標からストローク・パラメータ・セットｉを計算し（ステップ５１２）、計算したストローク・パラメータのうち１つまたは複数をクライアントによって格納することができる（ステップ５１３）。加えて、ストローク開始座標およびストローク終了座標から、または計算したストローク・パラメータのうち１つまたは複数から入力エリアｉを画定し、その面積を計算する（ステップ５１４）。次いで、入力エリアおよび基準エリアからスケーリング因子を導出し、ストローク・パラメータのうち１つまたは複数をスケーリング因子に従って調整する（ステップ５１５）。次いで、スケーリングしたストローク・パラメータを含むストローク・パラメータ・セットｉを、手書き文字認識アルゴリズムで分析するためにデータ処理システム２００に通信する（ステップ５１６）。続行するかどうかについての評価を行い（ステップ５１７）、ルーチンはステップ５０４に戻って別のストローク開始イベントをポーリングする。そうでない場合はルーチンは終了する（ステップ５１８）。
【００３５】
手書き文字ストロークから他のストローク・パラメータを導出することができ、ここで説明したストローク・パラメータと共に、またはその代わりにデータ処理システム２００に通信することができる。例えば、クライアントは、所定の時間間隔で供給されたストローク・ピクセル間の距離を計算することにより、ストローク速度を測定することができる。加えて、ストローク比の測定をクライアントで行うことができる。様々な他のストローク・パラメータをユーザ入力から導出することができる。さらに、クライアントは、追加のストローク・パラメータを計算し、その追加のストローク・パラメータを一時的に格納することができる。一部のストローク・パラメータは、データ処理システム３００に格納して、必要に応じてデータ処理システム２００に通信することができる。すなわち、手書き文字認識アルゴリズムは、クライアントによる計算後にサーバに送られたストローク・パラメータに基づいて候補文字の識別を試みるように構成することができる。サーバは、例えばストローク・パラメータと基準パラメータの比較結果をより良いものにするために、必要ならクライアントに追加のストローク・パラメータを要求することができる。
【００３６】
図６は、本発明の好ましい実施形態によるストローク収集アルゴリズムのストローク・パラメータ計算サブルーチンで実行される処理の流れ図５５０である。図６に図示し説明する処理ステップは、図５のステップ５１２に対応する。ストローク開始イベントに続いてストローク終了イベントを検出すると、ストローク・パラメータ・セットｉの計算を開始する（ステップ５５２）。ストローク開始座標およびストローク終了座標からストローク長パラメータを計算する（ステップ５５４）。例えば、ストローク開始イベントおよびストローク終了イベントに対応するポインタ・アイコン座標を代数的に処理して、ストロークの始点と終点の間の直線的「長さ」を求めることができる。加えて、例えばストローク開始座標とストローク終了座標の三角関数的関係によってストローク角パラメータを計算する（ステップ５５６）。ストローク角パラメータはストロークの方向を示す。ストローク中心パラメータを計算する（ステップ５５８）ことが好ましく、そのストローク中心パラメータは、ストローク長パラメータ、ストローク角パラメータ、およびストローク開始イベント座標またはストローク終了イベント座標から導出することができる。ストローク・パラメータを計算すると、ストローク・パラメータ計算サブルーチンは終了する（ステップ５６０）。
【００３７】
図７は、本発明の好ましい実施形態によるストローク収集アルゴリズムによるストローク・パラメータの計算を示す図である。マウス１０９などのポインティング・デバイスに与えられる適切なコマンドに応答して、ストローク開始イベントを検出する。例えば、ストローク開始イベントは、マウス・ポインタがキャプチャ・エリア４０２内に位置する間に、マウス「ダウン」イベント、またはマウス・ボタンの押下によるマウス・ドラッグ操作の開始に応答して検出することができる。あるいは、タッチ・パッドに手書き文字が与えられる場合、タッチ・パッド上で検出したスタイラス・ダウン・イベントに応答してストローク開始イベントを判定することができる。ストローク４１２の始点４２０を識別する。始点４２０は、ストローク開始イベントを検出したときのマウス位置に対応する。あるいは、始点４２０は、ストローク開始イベントを検出したときのタッチ・パッド上のスタイラス位置に対応する。ユーザがマウス１０９を移動するとき、その移動に従ってキャプチャ・エリア４０２内にストローク４１２を表示する。マウス「アップ」やボタン解放イベントなどのマウス１０９に与えられる適切なコマンドに応答して、ストローク終了イベントを検出する。あるいは、手書き文字がタッチ・パッドに与えられる場合、タッチ・パッド上で検出したスタイラス・アップ・イベントに応答してストローク終了イベントを検出することができる。ストローク４１２の終点４２２を識別する。終点４２２は、ストローク終了イベントを検出したときのマウス位置またはスタイラス位置に対応する。
【００３８】
マウスの位置を追跡し、それぞれの座標を始点４２０および終点４２２と関連付けるのに、座標系、例えばデカルト座標系を使用する。この例では、ストローク４１２は、ｘ座標７およびｙ座標１０の始点４２０と、ｘ座標７およびｙ座標３の終点４２２を有する。ストローク４１２の始点と終点の対を検出した後、始点座標および終点座標から１つまたは複数のストローク・パラメータを導出し、データ処理システム２００上で動作する手書き文字認識アルゴリズムにサブミットする。本発明の好ましい実施形態によれば、始点座標および終点座標からストローク長パラメータ（Ｌ）、ストローク角パラメータ（θ）、およびストローク中心パラメータ（Ｃ）を計算する。例えば、ストローク長は、始点座標および終点座標の代数的操作によって計算することができる。また例えば、ストロークの始点４２０および終点４２２の座標間の三角関数的関係により、始点座標および終点座標からストローク角パラメータを導出する。
【００３９】
加えて、始点座標と終点座標の一方、ストローク長パラメータ、ならびにストローク角パラメータをオペランドとして使用する三角関数計算により、ストローク中心パラメータを計算する。ストローク中心パラメータは、ストローク４１２の中心点の座標である。好ましい実施形態では、ストローク・パラメータは、ストロークを直線運動として近似することによって計算される。したがって、すべてのストローク・パラメータは、ストロークの始点座標および終点座標だけを使用して導出することができる。ストローク・パラメータのうち１つまたは複数がスケーリングされ、ネットワーク１０２によりデータ処理システム２００に送信される。
【００４０】
特に、クライアント・システム３００上で動作するストローク収集アルゴリズムは、ユーザが手書き入力を完了する前に、ユーザが入力している文字を識別しようと試みる。したがって、あるストローク入力から導出されたストローク・パラメータ・セットの通信を、ユーザによる後続のストロークの供給と同時に、データ処理システム２００に対して行うことができる。図５〜７に関連して説明したストローク収集アルゴリズムは、データ処理システム２００がデータ処理システム３００と接続するときにウェブ・ページの添付ファイルとしてダウンロードされるＪａｖａアプレットとして実装することが好ましい。
【００４１】
図８は、本発明の好ましい実施形態によるデータ処理システム２００で実行される手書き文字認識アルゴリズムの処理の流れ図６００である。手書き文字認識アルゴリズムは、クライアント・システムからストローク・パラメータ・セットを受信したときに開始する（ステップ６０２）。ストローク・パラメータ・セットの受信に応答して、基準文字辞書の検索を実行する（ステップ６０４）。基準文字辞書は、例えばテーブル、ファイル・システム、または別の適切なデータ構造として実装することができる。一般には、基準文字辞書は、ユーザの手書き文字ストロークから計算されたストローク・パラメータと突き合わせることができる各文字の属性を含む。
【００４２】
より具体的には、基準文字辞書は、ストローク長パラメータ、ストローク角パラメータ、ストローク中心パラメータなどの各ストロークの属性を含む。本明細書では、基準文字ストロークのストローク長パラメータ、ストローク角パラメータ、およびストローク中心パラメータを基準パラメータ・セットと総称する。基準文字辞書に維持される特定の基準文字エントリに関する基準パラメータを、クライアントからサーバに通信されたストローク・パラメータ・セットの対応するストローク・パラメータと比較する。ストローク・パラメータ・セットと基準パラメータ・セットとの間の対応の数値的尺度、すなわちマッチ確率を、基準文字辞書で定義される基準文字のうちの１つまたは複数について生成する。
【００４３】
Ｎ個の可能な文字マッチ、すなわち候補文字を基準文字辞書から取り出し、システム３００に通信する（ステップ６０６）。基準文字辞書から取り出す候補文字の数を手書き文字認識アルゴリズム内に符号化することができ、またはクライアントによって提供することができる。
【００４４】
あるいは、所定のしきい値を超えるマッチ確率が得られるそれぞれの基準パラメータを有する基準文字辞書の文字エントリを、クライアントに通信する候補文字として選択することもできる。データ処理システム２００はクライアントからの応答を待つ（ステップ６０８）。クライアントが候補文字のいずれかを、入力した文字とのマッチとして確認するかどうかについて評価を行う（ステップ６１０）。
【００４５】
Ｎ個の候補文字のいずれも、入力した手書き文字に対応しないとクライアントが応答を与えた場合、またはクライアントが候補文字マッチを確認することができなかった場合、手書き文字認識処理は追加のストローク・パラメータ・セットの受信を待つ（ステップ６１２）。追加のストローク・パラメータ・セットの受信時に、基準文字辞書の別の照会を実行する。
【００４６】
クライアント応答がＮ個の候補文字のうちの１つを手書き文字に対応する文字マッチと確認した場合、手書き文字認識処理は終了する（ステップ６１４）。したがって、基準文字辞書照会は、ユーザが供給した文字の各ストロークについて、手書き文字認識アルゴリズムで得られる候補文字がユーザによってマッチと確認されるまで続行する。図８を参照しながら例示および説明した手書き文字認識アルゴリズムをＪａｖａサーブレットとして実装することが好ましい。手書き文字認識アルゴリズムのより詳細の処理の説明は、図１８を参照しながら述べる。
【００４７】
図９は、基準文字辞書７００のレコード７２０〜７２５の図である。通常、中国語文字の基準文字辞書は数千のレコードを有することになる。図示し説明するレコードは、本発明の理解を容易にするためだけに選んだものである。基準文字辞書７００は、各フィールド７１０〜７１８内にデータ要素をそれぞれ含むレコード７２０〜７２５を有するテーブルとして実装されるが、適宜他のデータ構造を代用することもできる。フィールド７１０〜７１８は通常、挿入、削除、クエリ、および辞書７００のその他のデータ・オペレーションまたは操作の処理を容易にする名前または識別子を有する。図示する例では、フィールド７１０、７１１、および７１２は、それぞれ文字番号、文字、およびストロークというラベルを有する。フィールド７１３〜７１７は、それぞれ基準パラメータ・セット１〜基準パラメータ・セット５とラベルが付けられる。この例では、フィールド７１８はオーディオというラベルを有する。基準パラメータ・セット・フィールド７１４〜７１７は、各レコード７２０〜７２５についての基準パラメータ・セットを含む。
【００４８】
各レコード７２０〜７２５は、特定のレコードを辞書７００のその他のエントリと区別するために、キー・フィールド７１０内に固有の索引番号を含む。本明細書では、関連するキー・フィールド７１０の値を介して特定のレコードをアドレス指定することをレコードの索引付けと呼ぶ。文字フィールド７１１は、それぞれのレコード７２０〜７２５で定義される基準文字のイメージ・データを含む。例えば、レコード７２３は、図４を参照しながら説明したコンピュータ・インターフェースに供給される手書き文字に対応するイメージ・ファイル、またはイメージ・ファイルへの参照（イメージ・ファイルのアドレスなど）を文字フィールド７１１内に有する。
【００４９】
ストローク・フィールド７１２は、それぞれのレコード７２０〜７２５で定義される基準文字の構成文字ストロークの数を指定する値を有するデータ要素を含む。例えば、レコード７２３で定義される属性を有する文字は、１つの垂直ストロークおよび２つの水平ストロークからなり、したがってストローク・フィールド７１２はレコード７２３内に値３を含む。基準パラメータ・セット・フィールド７１３〜７１７は、それぞれのレコード７２０〜７２５に記載の文字の各ストロークについての基準パラメータ・セットを含む。例えばレコード７２３の基準パラメータ・セット・フィールド７１３〜７１５は、レコード７２３で定義される文字のストロークの基準パラメータ・セットをそれぞれ含み、基準パラメータ・セット・フィールド７１６および７１７はヌルに設定される。基準パラメータ・セット・フィールド７１３〜７１７に格納される基準パラメータは、固定の基準文字サイズまたは基準エリアに従って導出することが好ましい。例えば、基準パラメータが導出される基準文字のサイズは、固定のピクセル・ボリュームまたはエリアでよい。加えて、それぞれのレコード７２０〜７２５で定義される文字の正確な発音の音声記録であるオーディオ・ファイルを含むまたは参照するオーディオ・フィールド７１８を辞書７００に含めることができる。
【００５０】
ストローク・パラメータ・セットを受信したとき、システム２００は基準辞書に照会する。一般には、手書き文字認識アルゴリズムは、辞書７００の各エントリを循環し、ストローク・パラメータ・セットのストローク・パラメータを、対応する基準パラメータ・セットのパラメータと比較する。例えば、ストローク・パラメータ・セットの長さパラメータを、基準文字辞書の基準パラメータ・セットの長さパラメータと比較する。同様に、ストローク・パラメータ・セットの角度パラメータおよび中心パラメータを、それぞれ基準パラメータ・セットの角度パラメータおよび中心パラメータと比較する。ストローク・パラメータ・セットと基準パラメータ・セットとの比較に応答して、マッチ確率を生成する。マッチ確率の評価に応答して、１つまたは複数の候補文字をサーバで選択し、データ処理システム３００に返して、候補文字ディスプレイ４１０内に表示する。例えば、データ処理システム２００は、辞書照会から得られる最高のマッチ確率を有する３つの基準文字辞書エントリの文字フィールド７１１で識別されるイメージをクライアントに通信することができる。加えて、候補文字イメージと共に候補文字のオーディオ・ファイルをクライアントに通信することができる。
【００５１】
次に図１０を参照すると、ユーザが文字４０６の第１ストローク４１２を入力した後のキャプチャ・エリア４０２および候補ディスプレイ４１０の図が示されている。ストローク４１２についてのストローク・パラメータ・セットをクライアントで計算する。次いで、以下でより完全に説明するように、入力エリアを画定し、計算したストローク・パラメータのうちの少なくとも１つを、入力エリアおよび基準エリアに関してスケーリングする。次いでスケーリング済みストローク・パラメータを含むストローク・パラメータ・セットをデータ処理システム２００に通信し、候補文字を識別する。データ処理システム２００は、ストローク・パラメータ・セットを用いて基準文字辞書に照会し、ストローク・パラメータ・セットとレコード７２０〜７２５の基準パラメータ・セットとの比較に基づいて１つまたは複数の候補文字を識別する。データ処理システム２００で識別した候補文字をクライアントに通信し、候補ディスプレイ４１０内に出力する。図示する例では、３つの候補文字４３０、４３２、および４３４が識別され、候補ディスプレイ４１０内に表示されている。システム２００で識別された候補文字がクライアントに入力した文字とマッチする場合、ユーザは、候補ディスプレイ４１０内の正しい候補文字を選択することができる。この例では、第１ストローク４１２の入力後に識別した候補文字のいずれもユーザが書く文字４０６とマッチしない。
【００５２】
次に図１１を参照すると、文字４０６の第１ストローク４１２および第２ストローク４１４をユーザが入力した後のキャプチャ・エリア４０２および候補ディスプレイ４１０の図が示されている。ストローク４１４についてのストローク・パラメータ・セットを計算し、第１ストローク４１２および第２ストローク４１４に従って入力エリアを調整または再画定することができる。第２ストローク４１４について計算したストローク・パラメータのうち少なくとも１つを調整済み入力エリアに従ってスケーリングすることができる。次いで第２ストローク４１４のストローク・パラメータ・セットをシステム２００に通信し、基準文字辞書７００にさらに照会する。加えて、クライアントで格納した第１ストローク４１２のストローク・パラメータ・セットを取り出して、第２ストローク４１４の入力後に計算した入力エリアに従って再スケーリングすることができる。第１ストローク４１２の再スケーリング済みストローク・パラメータ・セットを、第２ストローク４１４のスケーリング済みストローク・パラメータ・セットと共にデータ処理システム２００に通信する。データ処理システム２００は、クライアントがストローク４１４から計算したストローク・パラメータ・セットを用いて基準文字辞書７００に照会し、１つまたは複数の候補文字を識別する。データ処理システム２００で識別した候補文字をクライアントに通信し、候補ディスプレイ４１０内に出力する。図示する例では、基準文字辞書の２回目の照会後に候補文字４３０および４３２が候補としては除外されており、新しい候補文字４３６および４３８が識別され、クライアントに通信され、候補ディスプレイ４１０内に表示されている。候補文字４３６が、キャプチャ・エリア４０２に供給された文字とマッチする。ユーザは、例えばポインタを候補文字４３６の表示エリア内に配置して入力をマウスに与えることにより、候補文字４３６が入力した文字とマッチすることを確認する。クライアントは、ユーザによる確認入力が供給されたとき、確認メッセージをシステム２００に与える。次いで、候補ディスプレイ４１０からユーザが選択した候補文字をキャプチャ・エリア４０２内に表示し、選択した文字のオーディオ再生をデータ処理システム２００で出力することが好ましい。次いでユーザは、キャプチャ・エリア４０２内で追加の文字の入力を開始することができる。
【００５３】
本発明の好ましい実施形態によれば、ストローク・パラメータ・セットのストローク・パラメータのうち少なくとも１つが、ユーザがその中に手書き文字ストロークを供給する入力エリアに従ってスケーリングされる。ストロークの始点および終点から導出される長さパラメータを、ユーザが手書き文字ストロークを供給する入力エリアに従ってスケーリングすることが好ましい。本明細書での入力エリアとは、ストローク座標極値に文字ストロークの境界を定めるエリアである。入力エリアは、ストロークの始点および終点の座標により画定される。ストローク・パラメータのスケーリングは、画定した入力エリアおよび基準エリアから導出されるスケーリング因子を求めることによって実行される。
【００５４】
例示的実施形態では、スケーリング因子は、最後に画定した入力エリアに対する基準エリアの比である。例えば、図９の基準文字辞書７００のレコード７２３で定義される基準文字８００の図を示す図１２を考慮する。基準文字８００の属性、具体的には長さ、角度、および中心の基準パラメータが、基準パラメータ・フィールド７１３〜７１５で指定される。例えば、基準文字ストローク８０２の属性が、レコード７２３のフィールド７１３に格納された基準パラメータ・セットで定義されると仮定する。したがって、基準長パラメータＬ６は、基準文字８００の一番上の水平ストロークの長さを表し、ユーザが入力したストロークの長さと基準文字８００の一番上の水平ストロークとの間の対応、または対応の欠如を識別するための基盤を提供する。
【００５５】
ユーザが入力した手書き文字ストロークから導出されるパラメータとレコード７２０〜７２５の基準パラメータとの間の対応を求めることにより、入力された手書き文字と基準文字との間の潜在的文字マッチを行う。したがって、ユーザが文字を入力するサイズにより、手書き文字識別が変化する可能性がある。例えば、図１３および１４は、基準文字８００に対応する２つの正しく書かれた手書き文字８１０および８２０の図である。すなわち、文字８１０および８２０のストローク間のストローク長の比、方向、および相対位置は、概して基準文字８００に一致する。しかし、手書き文字８１０は、手書き文字８２０よりもずっと小さいフォント・サイズで書かれている。したがって、基準文字ストロークの長さパラメータを、手書き文字８１０および８２０の手書きストローク８１２または８２２などの長さパラメータと比較するとき、基準文字パラメータが導出されるサイズとは異なるサイズでユーザがストロークを供給することにより、マッチが適切に識別されない可能性がある。したがって、本発明は、文字が入力される入力エリアに従って入力ストロークをスケーリングする技法を提供する。
【００５６】
本発明は、基準文字辞書７００で定義される基準文字に関連する基準エリア８０５を使用することにより、基準文字サイズとユーザが入力する文字のサイズとの間の関係を数値化する。本明細書では、基準エリアは、基準文字辞書の各基準文字を含めることができる事前定義エリアである。
【００５７】
次に図１５を参照すると、本発明の好ましい実施形態による手書き文字ストロークの第１ストローク４１２の入力後の入力エリア４４０の画定の図が示されている。入力エリア４４０を破線で例示的に示すが、入力エリア４４０は、コンピュータ・インターフェースのキャプチャ・エリア内に表示されても、されなくてもよい。ユーザが入力する任意のストロークのｘ座標およびｙ座標の極値が境界になるように入力エリア４４０を画定することが好ましい。第１ストローク４１２は、座標（ｘ１，ｙ１）および（ｘ２，ｙ２）をそれぞれ有する始点４２０および終点４２２を有する。ストローク４１２の長さパラメータＬ１は、例えば式１に示すピタゴラスの定理の計算によって得られる。
【００５８】
【数１】
2005202959.tif 000003
【００５９】
単一のストロークの入力後、入力エリア４４０の面積Ａｃ１を計算する。図示する例では、入力エリア４４０は、ストローク４１２の座標極値にその境界を定め、第１ストローク４１２の長さパラメータＬ１に等しい辺の長さＨおよびＷを有する正方形である。すなわち、その面積は式２のようになる。
式２：  Ａｃ１＝（ｘ２−ｘ１）２＋（ｙ２−ｙ１）２
【００６０】
次いで、入力エリアおよび基準エリアから導出されたスケーリング因子に従って長さパラメータＬ１をスケーリングする。データ処理システム２００との接続時に基準エリアをデータ処理システム３００に通信することが好ましい。すなわち、基準エリアは、クライアントに送られるストローク収集アルゴリズム内に符号化される。長さパラメータの例示的スケーリング計算は、以下に従って計算される。
式３：  ＬＳ１＝（Ａｒ／Ａｃ１）Ｌ１
上式で、ＬＳ１は、第１ストローク４１２のスケーリング済み長さパラメータであり、Ａｒは事前定義した基準エリアの面積であり、Ｌ１は第１ストローク４１２の長さパラメータであり、Ａｃ１は第１ストローク４１２の入力後に計算した入力エリアの面積である。入力エリアの面積に対する基準エリアの面積の比Ａｒ／Ａｃ１はスケーリング因子である。
【００６１】
したがって、大き過ぎる入力ストロークから計算した長さパラメータは、スケーリング因子に比例して小さい値に調整される。小さ過ぎる入力ストロークから計算した長さパラメータは、スケーリング因子だけ大きい値に調整される。
【００６２】
スケーリング済み長さパラメータを含むストローク４１２に関するストローク・パラメータ・セットをデータ処理システム２００に通信し、前述のように候補文字を識別する。
【００６３】
例えば、データ処理システム２００で識別される候補文字のいずれも、ユーザが入力した文字とマッチしないと仮定する。ここで図１６を参照すると、本発明の好ましい実施形態による手書き文字の第２ストローク４１４をユーザが入力した後の入力エリア画定の図が示されている。ユーザが２つ以上のストロークを入力したとき、ｘ座標およびｙ座標のストローク極値に基づいて入力エリアを画定し、その面積を計算することが好ましい。ユーザが２つ以上のストロークを入力したときの入力エリア面積の例示的計算を以下で与える。
【００６４】
式４：  Ａｃｉ＝（ｘｍａｘ−ｘｍｉｎ）×（ｙｍａｘ−ｙｍｉｎ）
上式で、Ａｃｉは、ｉが少なくとも２で始まるｉ番目のストロークの入力後に計算した入力エリア面積であり、ｘｍａｘは、ユーザが入力したストロークの任意の始点または終点の最も右側のｘ座標であり、ｘｍｉｎは、ユーザが入力したストロークの任意の始点または終点の最も左側のｘ座標であり、ｙｍｉｎは、ユーザが入力したストロークの任意の始点または終点の最低のｙ座標であり、ｙｍａｘは、ユーザが入力したストロークの任意の始点または終点の最高のｙ座標である。
【００６５】
図示する例では、第２ストローク４１４は、ｘ座標およびｙ座標がそれぞれ（ｘ３，ｙ３）および（ｘ４，ｙ４）である始点４２４および終点４２６を有する。ストローク収集アルゴリズムは、第１ストローク４１２および第２ストローク４１４の始点座標および終点座標を評価する。図示する例では、最も左側のｘ座標を第２ストローク４１４の始点４２４と識別し、最も右側のｘ座標を第２ストローク４１４の終点４２６と識別する。同様に、入力エリア４４０の最低のｙ座標を第１ストローク４１２の終点４２２のｙ座標と識別し、最高のｙ座標を第１ストローク４１２の始点４２０のｙ座標と識別する。したがって、図示する例の入力エリア面積は以下のように計算される。
Ａｃ２＝（ｘ４−ｘ３）×（ｙ１−ｙ２）
【００６６】
次いでストローク４１４の長さパラメータを、新しく計算した入力エリア面積に対する基準エリア面積の比に従い、以下の式に従ってスケーリングする。
ＬＳ２＝（Ａｒ／Ａｃ２）Ｌ２
【００６７】
上式でＬＳ２は、第２ストローク４１４のスケーリング済み長さパラメータであり、ＡＣ２は、第２ストローク４１４の入力後に計算した入力エリア面積であり、Ｌ２は第２ストローク４１４の長さパラメータである。スケーリング済み長さパラメータＬＳ２を含むストローク・パラメータ・セットをデータ処理システム２００に通信し、基準文字辞書７００に照会する。
【００６８】
データ処理システム２００でマッチを識別し、データ処理システム３００でマッチを確認するまで、データ処理システム３００が、文字ストロークから計算した各長さパラメータを一時的に格納することが好ましい。加えて、先のストローク入力から計算した長さパラメータを、最後に計算した入力エリアの面積に従ってスケーリングし、最後のストローク・パラメータ・セットと共にデータ処理システム２００に通信することが好ましい。例えば、第１ストローク４１２から計算した長さパラメータＬ１は、第２ストローク４１４の入力後に計算した入力エリア面積ＡＣ２に従って再スケーリングすることができる。次いで、第１ストローク４１２についての再スケーリング済み長さパラメータを、第２ストローク４１４のストローク・パラメータ・セットと共にデータ処理システム２００に通信する。したがって、手書き文字認識アルゴリズムは、最後に計算した入力エリアの面積に従ってスケーリングした複数のストロークの長さパラメータを用いて基準文字辞書に照会することができる。
【００６９】
次に図１７を参照すると、流れ図９００が、本発明の好ましい実施形態によるデータ処理システム３００で実行されるストローク収集アルゴリズムで実施される処理を示している。ストローク収集アルゴリズムを起動し、ストローク・カウンタ・インデックスｉを１に初期化する（ステップ９０２）。ストロークｉの入力を検出し（ステップ９０４）、ストロークｉについてストローク座標を求める（ステップ９０６）。長さパラメータＬｉ、角度パラメータΘｉ、中心パラメータＣｉを含むストローク・パラメータ・セットｉを計算する。入力ストロークｉに従って入力エリアｉを画定して、その面積を計算し（ステップ９１０）、計算したストローク長パラメータＬｉを一時的に格納することができる（ステップ９１２）。次に、スケーリング後の長さパラメータＬｓｉを前述と同様に計算する（ステップ９１４）。
【００７０】
インデックスｊを現ストローク・カウントにセットし（ステップ９１６）、評価を行って、現ストローク・パラメータ・セットが第１ストローク入力から導出されるかどうかを判定する（ステップ９１８）。現ストローク・パラメータ・セットが第１ストロークから導出されない場合、すなわちインデックスｊが１より大きい場合、インデックスｊを減分し（ステップ９２０）、先の長さパラメータＬｊを取り出し、最新の入力エリアｉの面積に従ってスケーリングする（ステップ９２２）。次いで処理はステップ９１８に戻る。ストローク収集アルゴリズムは、第１ストローク・パラメータＬ１を最新の入力エリアｉの面積に従って再スケーリングするまで、先に受け取ったストローク長パラメータの再スケーリングを続行する。
【００７１】
次いでストローク収集アルゴリズムは、現ストロークから計算したスケーリング済みパラメータ・セットｉをクライアントに送信する（ステップ９２４）。スケーリング済みパラメータ・セットｉは、ストロークｉの始点および終点から計算した角度パラメータΘｉおよび中心パラメータＣｉ、ならびにスケーリング済み長さパラメータＬｓｉを含む。加えて、ストローク収集アルゴリズムは、任意の再スケーリング済み長さパラメータをクライアントに送信する（ステップ９２６）。スケーリング済み長さパラメータ・セットｉおよび任意の再スケーリング済み長さパラメータＬｓｊ〜Ｌｓ（ｉ−１）は、単一のデータ・パッケージ、例えばデータ処理システム３００とデータ処理システム２００の間の単一のＨＴＴＰセッションとしてデータ処理システム２００に通信することが好ましい。
【００７２】
次いでストローク収集アルゴリズムは、追加のストローク入力が行われたかどうかを評価する（ステップ９２８）。追加のストロークが入力された場合、ストローク・インデックス・カウンタｉを増分し（ステップ９３０）、ストローク収集アルゴリズムはステップ９０６に戻る。そうでない場合、ストローク収集アルゴリズムは終了する（ステップ９３２）。
【００７３】
再び図１２〜１４を参照すると、ユーザが供給する入力文字のサイズと基準ストローク・パラメータを導出する基準エリアとの違いのために、ストローク長パラメータのスケーリングを行わないストローク長パラメータと基準長パラメータとの比較によって望ましくない比較結果が生成される可能性があることについて先に触れた。
【００７４】
しかし、特に手書き文字ストロークから行われる角度パラメータの計算は、文字の入力サイズに依存しない。例えば、手書き文字８１０および８２０は２つの異なるサイズであるが、手書き文字８１０および８２０のそれぞれのストローク８１２および８２２により、それぞれのストロークについて等しい角度パラメータが得られる。入力される文字の追加のストロークがユーザによって入力されたとき、再画定された入力エリアは、ユーザが文字を供給しているエリアについてのより正確な表示となることにも留意されたい。
【００７５】
本発明の別の実施形態によれば、入力ストローク・サイズに依存しないストローク属性の尺度としての角度パラメータの信頼性により、サーバは、基準角度パラメータとストローク角パラメータの間の最初の比較、または最初の１組の比較に対してより高い重みを加える。
【００７６】
次に図１８を参照すると、流れ図１０００は、本発明の好ましい実施形態による基準文字辞書７００への照会のためにデータ処理システム２００で実行されるサーバ側手書き文字認識処理を示している。手書き文字認識アルゴリズムを起動する。ストローク・カウンタｉを１に初期化し、レコード・インデックス・カウンタｋをゼロに初期化する（ステップ１００２）。スケーリング済みストローク・パラメータ・セットｉをクライアントから受け取り（ステップ１００４）、基準文字辞書７００のレコードｋの基準パラメータ・セットと比較する（ステップ１００６）。ストローク・パラメータ・セットｉのストローク角パラメータとレコードｋの基準角度パラメータとの間の比較結果を、ストローク数の関数として、すなわちｉの関数として重み付けする（ステップ１００８）。
【００７７】
好ましくは、ストローク角パラメータと基準角度パラメータの間で行った比較結果を、最初のストローク・パラメータ・セットについて最も重く重み付けし、次いで後続のストローク・パラメータ・セットの比較について減少させる。ストローク角パラメータは、ユーザが提供するストロークの入力サイズの如何にかかわらず正確なストローク属性の尺度を与えるので、手書き文字の最初に入力したストロークについて、ストローク角パラメータと基準角度パラメータの比較結果を重み付けする利点が得られる。候補文字を決定する際の角度パラメータ比較の重みを、最初のストローク・パラメータ・セットの比較後に１つまたは複数の後続のストロークについて減少させることが好ましい。
【００７８】
次いで手書き文字認識アルゴリズムは、現ストローク・パラメータ・セットｉと比較するための追加のレコードが基準文字辞書７００内に残っているかどうかについての評価に進む（ステップ１０１０）。現ストローク・パラメータ・セットｉと比較するための追加のレコードが残っている場合、レコード・インデックス・カウンタｋを増分し（ステップ１０１２）、処理はステップ１００６に戻り、ストローク・パラメータ・セットｉを次の基準文字辞書レコードと比較する。あるいは、手書き文字認識アルゴリズムは、ストローク・パラメータ・セットｉと基準文字辞書レコードの基準パラメータ・セットとの間の比較結果に基づく候補文字の識別に進む（ステップ１０１４）。次いで候補文字をクライアントに送り（ステップ１０１６）、候補文字とクライアントで入力された文字とがマッチするかどうかについて評価を行う（ステップ１０１８）。マッチが確認されない場合、手書き文字認識アルゴリズムは、ストローク・カウンタｉの増分に進み（ステップ１０２０）、次のストローク・パラメータ・セットの受信を待つ（ステップ１０２１）。あるいは、手書き文字認識アルゴリズムは終了する（ステップ１０２２）。
【００７９】
記載のように、本発明は、手書き文字ストロークが供給される入力エリアに従って手書き文字ストローク・パラメータをスケーリングする方法およびコンピュータ・プログラムを提供する。検出した手書き文字ストロークの始点および終点からストローク長パラメータおよび入力エリアを計算する。基準文字パラメータが導出される基準文字サイズの関係尺度を与える入力エリアおよび基準エリアに従ってストローク長パラメータをスケーリングする。スケーリング済みストローク長パラメータを手書き文字認識アルゴリズムに供給し、それを使用して、クライアントで入力された文字とマッチする可能性のある候補文字を識別する。したがって、ストローク・パラメータと基準文字辞書の基準パラメータとの間の比較結果が改善される。
【００８０】
本発明を完全に機能するデータ処理システムの状況で説明したが、本発明のプロセスをコンピュータ可読媒体の形態の命令および様々な形態として配布することができ、また本発明は、その配布のために使用される信号担持媒体のタイプに関係なく等しく適用される。コンピュータ可読媒体の例には、フレキシブル・ディスク、ハード・ディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの記録可能型媒体や、デジタル／アナログ通信リンク、例えば無線周波数／光波伝送などの伝送形式を使用する有線／ワイヤレス通信リンクなどの伝送型媒体が含まれる。コンピュータ可読媒体は、特定のデータ処理システムで実際に使用するために復号化されるコード化フォーマットの形態を取ることができる。
【００８１】
例示の目的で本発明を説明してきたが、上述の説明は網羅的なものではなく、本発明は開示の形態の発明に限定されない。多数の修正形態および変形形態が当業者には明らかであろう。
【図面の簡単な説明】
【００８２】
【図１】本発明を実施することができるデータ処理システムのネットワークを示す図である。
【図２】本発明の好ましい実施形態によるサーバとして実装することのできるデータ処理システムのブロック図である。
【図３】本発明を実施することのできるデータ処理システムを示すブロック図である。
【図４】本発明の好ましい実施形態による手書き文字入力を受諾し、候補文字を表示するコンピュータ・インターフェースの図である。
【図５】本発明の好ましい実施形態による手書き文字ストロークを収集するためにクライアントで実行される処理の流れ図である。
【図６】本発明の好ましい実施形態によるクライアントで実行されるストローク・パラメータ計算の流れ図である。
【図７】本発明の好ましい実施形態によるクライアントによるストローク・パラメータの計算を示す図である。
【図８】本発明の好ましい実施形態によるサーバで実行される手書き文字認識アルゴリズムの処理の流れ図である。
【図９】本発明の好ましい実施形態による候補文字を識別するのに使用される基準文字辞書レコードの図である。
【図１０】本発明の好ましい実施形態による第１文字ストロークのユーザ入力後のコンピュータ・インターフェース内のキャプチャ・エリアおよび候補ディスプレイを示す図である。
【図１１】本発明の好ましい実施形態による第２文字ストロークのユーザ入力後の図１０に記載のキャプチャ・エリアおよび候補ディスプレイを示す図である。
【図１２】本発明の好ましい実施形態による基準文字辞書のレコードで定義される基準文字の図である。
【図１３】図１２に記載の基準文字に対応する正確に書かれた手書き文字の図である。
【図１４】図１２に記載の基準文字に対応する正確に書かれた手書き文字の図である。
【図１５】本発明の好ましい実施形態による文字の第１ストロークの入力後の入力エリアの計算の図である。
【図１６】本発明の好ましい実施形態による文字の第２ストロークの入力後の入力エリアの画定および面積計算の図である。
【図１７】本発明の好ましい実施形態によるストローク収集アルゴリズムで実行される処理を示す流れ図である。
【図１８】本発明の好ましい実施形態に従って処理されるサーバ側手書き文字認識処理を示す流れ図である。
【符号の説明】
【００８３】
１００  ネットワーク・データ処理システム
１０２  ネットワーク
１０４  サーバ
１０６  記憶装置
１０７  ディスプレイ装置
１０８  クライアント
１０９  マウス
１１０  クライアント
１１２  クライアント
２００  データ処理システム
２０２  プロセッサ
２０４  プロセッサ
２０６  システム・バス
２０８  メモリ・コントローラ／キャッシュ
２１０  Ｉ／Ｏバス・ブリッジ
２１２  Ｉ／Ｏバス
２１４  ＰＣＩバス・ブリッジ
２１６  ＰＣＩローカル・バス
２１８  モデム
２２０  ネットワーク・アダプタ
２２２  ＰＣＩバス・ブリッジ
２２４  ＰＣＩバス・ブリッジ
２２６  ＰＣＩローカル・バス
２２８  ＰＣＩローカル・バス
２３０  メモリ・マップ・グラフィックス・アダプタ
２３２  ハード・ディスク
３００  データ処理システム
３０２  プロセッサ
３０４  メイン・メモリ
３０６  ＰＣＩローカル・バス
３０８  ＰＣＩブリッジ
３１０  ローカル・エリア・ネットワーク・アダプタ
３１２  ＳＣＳＩホスト・バス・アダプタ
３１４  拡張バス・インターフェース
３１６  オーディオ・アダプタ
３１８  グラフィックス・アダプタ
３１９  オーディオ／ビデオ・アダプタ
３２０  キーボード／マウス・アダプタ
３２２  モデム
３２４  メモリ
３２６  ハード・ディスク・ドライブ
３２８  テープ・ドライブ
３３０  ＣＤ−ＲＯＭドライブ
４００  ＧＵＩ
４０２  キャプチャ・エリア
４０４  ウィンドウ
４０６  文字
４０８  ウェブ・ブラウザ・インターフェース
４１０  候補文字ディスプレイ
４１２  ストローク
４１３  文字ストローク
４１４  ストローク
４１５  文字ストローク
４１６  ストローク
４１７  文字ストローク
４２０  始点
４２２  終点
４２４  始点
４２６  終点
４３０  候補文字
４３２  候補文字
４３６  候補文字
４３８  候補文字
４４０  入力エリア
４４２  ウィンドウ
７００  基準文字辞書
７１０  フィールド
７１１  フィールド
７１２  フィールド
７１３  フィールド
７１４  フィールド
７１５  フィールド
７１６  フィールド
７１７  フィールド
７１８  フィールド
７２０  レコード
７２１  レコード
７２２  レコード
７２３  レコード
７２４  レコード
７２５  レコード
８００  基準文字
８０２  基準文字ストローク
８０５  基準エリア
８１０  手書き文字
８１２  手書きストローク
８２０  手書き文字
８２２  手書きストローク
【図１】
2005202959.tif 000004
【図２】
2005202959.tif 000005
【図３】
2005202959.tif 000006
【図４】
2005202959.tif 000007
【図５】
2005202959.tif 000008
【図６】
2005202959.tif 000009
【図７】
2005202959.tif 000010
【図８】
2005202959.tif 000011
【図９】
2005202959.tif 000012
【図１０】
2005202959.tif 000013
【図１１】
2005202959.tif 000014
【図１２】
2005202959.tif 000015
【図１３】
2005202959.tif 000016
【図１４】
2005202959.tif 000017
【図１５】
2005202959.tif 000018
【図１６】
2005202959.tif 000019
【図１７】
2005202959.tif 000020
【図１８】
2005202959.tif 000021