(57)【特許請求の範囲】
【請求項１】
ペンベースの入力タブレットを有するコンピュータシステムにおいてインク情報を管理するためのシステムであって、
ペンベースの入力／表示タブレットに接続され、ペンベースの入力タブレットに入力されたインク情報を収集してインクストロークに体系化するペンドライバと、
１以上のインクフレーズデータ構造に体系化されたインク記憶領域と、
前記インクストロークを受信するために前記ペンドライバに接続されたインクマネージャであって、前記ペンドライバが収集したインク情報を検査し、インクフレーズ終端イベントの発生を検出したとき、個々のインクフレーズの終了を該インクマネージャに対して識別するように構成されたインクフレーズ終端エンジンを有するインクマネージャとから構成され、
これによって前記インクマネージャが前記インクフレーズ終端イベントの前に受信したインクストロークを選択されたフレーズデータ構造に記憶し、
前記インクマネージャと通信するクライアントアプリケーションは、未だ認識されていないインクストロークに関する付加情報である参照コンテクストであって、前記インクフレーズを認識するために提供される認識コンテクストの関連情報を含む該参照コンテクストを生成すると前記インクマネージャに送信し、
前記インクマネージャが前記参照コンテクストを受信すると、前記クライアントアプリケーションが後に前記未認識のインクストロークに関連する付加情報にアクセスするのに使用するため、該参照コンテクストと該インクストロークとを関連付ける、システム。
【請求項２】
前記ペンベースの入力タブレットに入力されるインク情報がクライアントアプリケーションに関連し、
前記インクマネージャは、前記インクフレーズ終端イベントの発生に応答して、個々のインクフレーズの未認識のインクストロークを前記クライアントアプリケーションへ渡すように構成される、請求項１のシステム。
【請求項３】
前記インクマネージャは、前記参照コンテクストを前記選択されたインクフレーズデータ構造に付加することにより前記参照コンテクストと前記未認識のインクストロークとを関連付ける、請求項２のシステム。
【請求項４】
前記インクフレーズ終端エンジンは各インクストロークについてタイムアウト処理を開始するように構成され、更に、前記インクフレーズ終端エンジンは次のインクストロークが検出される前にタイムアウト時間が経過した場合にインクフレーズ終端イベントの発生を識別するように構成される、請求項２のシステム。
【請求項５】
前記タイムアウトは前記コンピュータシステムのユーザによって設定可能な値である、請求項４のシステム。
【請求項６】
前記ペンベースの入力タブレットが表面を有し、前記タブレットにより生成されるインク情報が前記タブレットの表面の上方に持ち上げられているペンに対応する近接距離外データを含み、更に、前記終端エンジンは前記タブレットから近接距離外データを検出した時にインクフレーズ終端イベントの発生を検出する、請求項４のシステム。
【請求項７】
前記ペンベースのタブレットに入力されたインク情報に基いて仮説を生成するための１以上の手書き認識エンジンと、
前記インクマネージャと前記１以上の手書き認識エンジンとの両方に接続され、前記１以上の手書き認識エンジンと協働するように設定および構成された手書き認識マネージャとをさらに含み、
前記インクマネージャで受信したインクストロークが前記手書き認識マネージャへ渡され、
前記インクマネージャが各インクフレーズ終端イベントの発生を前記手書き認識マネージャに通知し、これに応答して該手書き認識マネージャが個々のインクフレーズに対応するインクストロークの１以上の仮説を選択された手書き認識エンジンに生成させる、請求項２のシステム。
【請求項８】
前記選択された手書き認識エンジンと協働する手書き認識マネージャは、前記インクマネージャによってインクストロークが受信されたときに、インクストローク及びワードギャップに基づいてインクフレーズの終端を検出するために、インクストローク又はワードの位置に基づく確率モデルを用いてインクストロークを単語単位に分割し、所与のインクストロークが新たな単語を表すものであるという判定に応じてインクフレーズ終端信号を前記インクマネージャへ発行することができる、請求項７のシステム。
【請求項９】
前記クライアントアプリケーションは、前記タブレット上に表示するための少なくとも１つのデータエントリフィールドを定義し、該少なくとも１つのデータエントリフィールドについて対応する境界座標を確立するように構成され、
前記終端エンジンは、インクストロークまたはその一部が前記少なくとも１つのデータエントリフィールドの境界座標の外側にある場合、インク終端イベントの発生を識別するように構成される、請求項７のシステム。
【請求項１０】
前記１以上の仮説が前記クライアントアプリケーションに供給される、請求項７のシステム。
【請求項１１】
前記インクマネージャは、前記クライアントアプリケーションからの前記インクフレーズの未認識のインクストロークに関連する参照コンテクストの受信に応じて、該参照コンテクストと前記インクストロークとを関連付け、
前記クライアントアプリケーションの要求に応じて前記関連する参照コンテクストを前記１以上の仮説と共に前記クライアントアプリケーションへ返す、請求項７のシステム。
【請求項１２】
前記インクマネージャは、前記クライアントアプリケーションが前記未認識のインクストロークを消費したという指示の受信に応じて、該インクストロークについて１以上の仮説を前記手書き認識マネージャに生成させないようにする、請求項７のシステム。
【請求項１３】
前記クライアントアプリケーションは、前記未認識のインクストロークを前記インクマネージャから受信すると、該未認識のインクストロークについて対応する認識コンテクストを前記フレーズデータ構造から特定し、
前記手書き認識マネージャは、前記認識コンテクストを受信し、選択された手書き認識エンジンが前記１以上の仮説を生成する際に該認識コンテクストを使用するように導くように構成され、
前記認識コンテクストは、インクフレーズを認識する際に使用される特定の語彙を指定する、請求項７のシステム。
【請求項１４】
前記クライアントアプリケーションからの認識コンテクストを使用する選択された認識エンジンにより生成された１以上の仮説は、前記クライアントアプリケーションへ供給される、請求項１３のシステム。
【請求項１５】
ペンベースの入力タブレットを有し、ペンがタブレットを移動するのに従ってインク情報を生成するための一体型表示装置を含むコンピュータシステムにおいてインク情報を管理するための方法であって、
入力タブレットによって生成されたインク情報を受信するステップと、
ペンがタブレットから持ち上げられたときを識別し、該インク情報を対応するインクストロークに体系化するステップと、
前記コンピュータシステム内のインクマネージャにより、前記インクストロークを１以上のインクフレーズ終端イベントによって定義される１以上のインクフレーズに体系化するステップと、
前記インクマネージャと通信するクライアントアプリケーションが、未だ認識されていないインクストロークに関する付加情報である参照コンテクストであって、前記インクフレーズを認識するために提供される認識コンテクストの関連情報を含む該参照コンテクストを生成するステップと、
前記クライアントアプリケーションが後に前記未認識のインクストロークに関連する付加情報にアクセスするのに使用するため、該参照コンテクストと前記インクストロークとを関連付けるステップと
からなる方法。
【請求項１６】
前記体系化するステップは、
前記インク情報を検査してインクフレーズ終端イベントが発生したか否かを判定するステップと、
前記インクフレーズ終端イベントの発生に応じて、該終端イベントの前に受信されたインクストロークを指定されたインクフレーズデータ構造に分離するステップと、
からなる、請求項１５の方法。
【請求項１７】
前記タブレットに入力されるインク情報がクライアントアプリケーションに関連し、
前記方法は、前記インクフレーズ終端イベントに応じて個々のインクフレーズの未認識のインクストロークを前記クライアントアプリケーションに随意渡すステップをさらに含む、請求項１６の方法。
【請求項１８】
前記参照コンテクストは該参照コンテクストを前記指定されたインクフレーズデータ構造に付加することにより関連付けられる、請求項１５の方法。
【請求項１９】
前記タブレットに入力されたインク情報がクライアントアプリケーションに関連し、
前記方法は、
前記インクフレーズデータ構造のインクストロークについて１以上の認識仮説を生成するステップと、
前記１以上の認識仮説を個々の参照コンテクストと共に前記クライアントアプリケーションへ渡すステップと、
をさらに含む、請求項１６の方法。
【請求項２０】
前記入力タブレットからのインク情報が前記タブレットの上方に持ち上げられているペンに対応する近接距離外データをさらに含み、
前記方法は、
前記インク情報を検査して近接距離外データを検出するステップと、
近接距離外データの検出に応じてインクフレーズ終端イベントの発生を識別するステップと、
をさらに含む、請求項１６の方法。
【請求項２１】
前記タブレットに入力されたインク情報がクライアントアプリケーションに関連し、該クライアントアプリケーションが前記タブレット上に表示するためのフォームを定義し、該フォームが手書き情報を受信するための１以上のデータエントリフィールドを有し、
前記方法は、
前記１以上のデータエントリフィールドについて前記クライアントアプリケーションによって確立された境界座標の集合を受信するステップと、
前記入力タブレットからのインク情報と前記１以上のデータエントリフィールドの境界座標とを比較するステップと、
前記１以上のデータフィールドのうちの少なくとも１つについて、前記インク情報が前記境界座標の外側へ移動することの検出に応じて、インクフレーズ終端イベントの発生を識別するステップと、
をさらに含む、請求項１６の方法。
【請求項２２】
前記コンピュータシステムは少なくとも１つの認識エンジンを含み、
前記方法は、
前記インクストロークを体系化するときに、インクストローク及びワードギャップに基づいてインクフレーズの終端を検出するための幾何学的確率モデルである単語分割モデルを該インクストロークに適用するように前記認識エンジンを随意構成するステップと、
所与のインクストロークが直前のインクストロークに比較して新たな単語の一部であることを前記単語分割モデルが判定した場合にインクフレーズ終端イベントの発生を識別するステップをさらに含む、請求項１６の方法。
【請求項２３】
各インクデータ点を受信したときにタイムアウト手段を開始するステップと、
次のインクデータ点を受信する前に前記タイムアウト時間が経過した場合にインクフレーズ終端イベントの発生を識別するステップと、
を更に含む、請求項１６の方法。
【請求項２４】
前記入力タブレットからのインク情報が前記タブレットの上方に持ち上げられているペンに対応する近接距離外データを含み、
前記方法は、
前記インク情報を検査して近接距離外データを検出するステップと、
近接距離外データの検出に応じてインクフレーズ終端イベントの発生を識別するステップと、
をさらに含む、請求項２３の方法。
【請求項２５】
タブレットを移動するペンの移動に従ってペンベースの入力タブレットにより生成されるインク情報を体系化するための実行可能なプログラム命令を保持するコンピュータ読取可能媒体であって、該実行可能なプログラム命令が、
前記入力タブレットにより生成されたインク情報を受信するためのプログラム命令と、
前記タブレットから前記ペンが持ち上げられたときを識別してインクフレーズ終端イベントが発生したか否かを判定するプログラム命令と、
前記コンピュータシステム内のインクマネージャにより、前記インクフレーズ終端イベントの発生に応じて該終端イベントの前に受信されたインクストロークを指定されたインクフレーズデータ構造に分離するプログラム命令と、
前記インクマネージャと通信するクライアントアプリケーションが、未だ認識されていないインクストロークに関する付加情報である参照コンテクストであって、前記インクフレーズを認識するために提供される認識コンテクストの関連情報を含む該参照コンテクストを生成するプログラム命令と、
前記クライアントアプリケーションが後に前記未認識のインクストロークに関連する付加情報にアクセスするのに使用するため、該参照コンテクストと前記インクストロークとを関連付けるためのプログラム命令と
からなる、コンピュータ読取可能媒体。
【請求項２６】
前記タブレットに入力されるインク情報がクライアントアプリケーションに関連し、
前記媒体は、前記インクフレーズ終端イベントに応じて個々のインクフレーズの未認識のインクストロークを前記クライアントアプリケーションへ渡すためのプログラム命令をさらに含む、請求項２５のコンピュータ読取可能媒体。
【請求項２７】
前記クライアントアプリケーションが前記未認識のインクストロークを消費したという指示の受信に応じて前記インクストロークの認識を阻止するためのプログラム命令をさらに含む、請求項２６のコンピュータ読取可能媒体。
【請求項２８】
前記参照コンテクストは、該参照コンテクストを前記指定されたインクフレーズデータ構造に付加することによって前記インクストロークに関連付けられている、請求項２５のコンピュータ読取可能媒体。
【請求項２９】
前記入力タブレットに入力されるインク情報がクライアントアプリケーションに関連し、
前記コンピュータ読取可能媒体は、
前記インクフレーズデータ構造のインクストロークについて１以上の認識仮説を生成するためのプログラム命令と、
前記１以上の認識仮説を前記クライアントアプリケーションへ渡すためのプログラム命令と、
をさらに含む、請求項２５のコンピュータ読取可能媒体。
【請求項３０】
前記インクフレーズの未認識のインクストロークに関連するクライアントアプリケーションからの参照コンテクストの受信に応じて該参照コンテクストと前記インクストロークとを関連付けるためのプログラム命令と、
前記クライアントアプリケーションからの要求に応じて、前記参照コンテクストを前記１以上の認識仮説と共に前記クライアントアプリケーションへ返すためのプログラム命令と、
をさらに含む、請求項２９のコンピュータ読取可能媒体。
【請求項３１】
前記クライアントアプリケーションが前記インクフレーズの未認識のインクストロークの受信に応じて認識コンテクストを確立し、前記１以上の認識コンテクストを生成するためのプログラム命令は該クライアントアプリケーションによって確立された認識コンテクストを使用するためのプログラム命令をさらに含み、前記認識コンテクストは、インクフレーズを認識する際に使用される特定の語彙を指定する、請求項２９のコンピュータ読取可能媒体。
【請求項３２】
前記検査するためのプログラム命令は、
各インクデータ点の受信時にタイムアウト手段を開始するためのプログラム命令と、
次のインクデータ点を受信する前にタイムアウト時間が経過した場合にインクフレーズ終端イベントの発生を識別するためのプログラム命令と、
をさらに含む、請求項２５のコンピュータ読取可能媒体。
【請求項３３】
前記インク情報が前記タブレットの上方に持ち上げられているペンに対応する近接距離外データをさらに含み、
前記検査するためのプログラム命令は、
前記インク情報を検査して近接距離外データを検出するためのプログラム命令と、
近接距離外データの検出に応じてインクフレーズ終端イベントの発生を識別するためのプログラム命令と、
をさらに含む、請求項３２のコンピュータ読取可能媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は概してコンピュータの分野に関し、具体的にはペン認識アプリケーションおよびその他のアプリケーションで使用するため、ペンベースのインク情報を取得および体系化することに関する。
【０００２】
【従来の技術】
パーソナルコンピュータなどのコンピュータは、しばしばキーボードやマウスなどの１以上の入力デバイスを有し、ユーザがそのコンピュータを制御できるようになっている。もっと複雑な入力デバイスとしては、音声認識入力システム、および、「ペン」やスタイラスを基にした入力システムが挙げられる。ペンベースの入力システムを用いると、ユーザは手書きや描画によりコンピュータを制御または操作することができる。これらの入力デバイスには通常、「タブレット」と呼ばれるハードウェアデバイスが含まれ、コンピュータのシリアルポートに接続される。タブレットは、組み込み型ディスプレイ装置を備えることにより、入力デバイスとしても出力デバイスとしても機能するようになっている場合がある。タブレットは、入力デバイスとして動作する場合、ペンがタブレットの表面を移動する際にペンの先端の位置を検知し、その情報をコンピュータのＣＰＵに提供する。ペンの移動をユーザに対して視覚的にフィードバックさせるため、コンピュータは通常「インク」（即ち、ペンの移動をトレースするようなピクセルの経路）を表示して実際のペンが落とすインクをシミュレートしている。タブレットが組み込み型ディスプレイ装置を備える場合、この電子的なインクは通常、移動するペンの先端の直下に直接描かれる。不透明な入力専用タブレットの場合、このインクは通常、タブレットに描かれたものを通常のコンピュータスクリーンに描き出す。タブレットに組み込まれているか否かに関わらず、スクリーンには、テキスト、画像、アイコンなど、通常のコンピュータによって生成された情報が表示される。
【０００３】
ペンベースのコンピュータは、タブレットに加えてソフトウェアペンドライバも有する場合があり、このドライバはタブレットとのインタフェースとして機能し、ペンの位置を周期的にサンプリングする（例えば１００回／秒など）。ソフトウェアペンドライバはこのインクデータをインクマネージャに渡し、インクマネージャがこのインクデータを体系化し、その認識処理を管理する。具体的には、インクマネージャはインクデータをペンがタブレットから持ち上げられるまでに収集されたインクデータとして定義されるインクストロークに体系化する。インクマネージャはこのインクストロークを認識装置に渡し、認識装置がニューラルネットワーク、語彙、文法などの様々なツールを用いてこのインクストロークを英数文字、記号、形状などに変換する。認識装置はそのインクストロークが何であるかについて複数の仮説を生成する場合があり、各々の仮説は対応する確率をもつ場合がある。そしてこれらの仮説は、入力イベントに従って認識されたインクデータを取り扱うことのできるアプリケーションプログラムに供給される。
【０００４】
マイクロソフト社のＷｉｎｄｏｗ９５(R)用のペンサービスを用いると、インクストロークはペン入力セッションに体系化される。「Programmer's Guide to Pen Service for Microsoft Windows95」（1995年発行）を参照して欲しい。ペン入力セッションは、ユーザがペンをタブレットに接触させるのとほぼ同時に開始され、ユーザがペンで書き込み領域外に触れたり（例えばＯＫボタンに触れる）、短時間どこにも触れないでいると終了する。ユーザが書きこみを再開すると、新たなセッションが開始される。すべてのインクストロークは、１つのペンデータオブジェクト内に集められた所定のペン入力セッションに対応している。ペン入力セッションに関連するアプリケーションプログラムは、基本的に２モードの動作のうちの一方を選択することができる。まず、アプリケーションは認識結果を受信することだけを選択することができ、これによってシステムがそのデフォルト設定に基づいてインクデータを処理および体系化し、デフォルト認識装置とのインタフェースをとることができるようにする。あるいは、アプリケーションプログラムは「未処理の」インクデータを要求し、それを任意数の方法で処理することもできる。例えば、アプリケーションプログラムは、データをバッファリングして認識を遅らせたり、データを破棄したりすることができる。このインクデータは、１ストロークづつアプリケーションに供給される。アプリケーションがデータを認識したい場合、アプリケーションは未処理のインクデータを認識装置自体に渡す。フィールド固有の認識コンテクスト（例えば名前、住所、社会保険またはその他の種類の入力フィールド）などの何らかの特別な認識要件、および、インク入力セッションと特定入力フィールドとの間の何らかの一意の協力関係は、１ストロークづつ判定しなければならず、通常、受信された最初のストロークに基づいて判定しなければならない。
【０００５】
こうしたインクデータの収集およびペン入力セッションへの１ストロークづつの体系化には、いくつかの欠点がある。上述のように、システムは通常、ユーザが入力した最初のインクストロークの位置のみによって、インクデータを特定のデータエントリフィールドに関連付ける。ペン入力領域が予約されていて、後続のストロークがその領域外にはみ出た場合、ユーザがこれらの後続のストロークをそのデータエントリフィールドの一部にすることを意図していても、システムはこれらのストロークをそのデータエントリフィールドに関連付けない。さらに、最初のストロークをわずかに置き誤っただけで（例えば大文字の「Ｔ」の横棒が最初に描かれ、高すぎる位置に描かれた場合など）、後続のセッション全体が誤った入力フィールドに関連付けられてしまう。インクが誤った入力フィールドに関連付けられると、前記認識により誤った位置が導出され、各入力フィールドについて特別な認識コンテクストを使用した場合（例えば名前−住所−社会保険のフィールドなど）、認識中に誤ったコンテクストが適用される場合がある。
【０００６】
アップルコンピュータ社（カリフォルニア州クパーチノ）の「Apple Newton」などのように、各ストロークを用いて入力フィールドを再度判定することによりこの状況を改善しようと試みるシステムであっても、誤ったモードの影響を受ける可能性があり、エンドユーザにとってもアプリケーション開発者にとってもこの問題を難しい状況にしている。例えば、誤って２つの入力フィールドにまたがった１つの単語は、たとえわずかな量であっても複数のセッションに分割され、誤認識を生じさせ、手動で訂正しなければならない不適正なデータエントリが生じる。
【０００７】
【発明が解決しようとする課題】
従って、認識処理を容易にし、かつ、インクデータと特定のデータエントリフィールドとの関連付けを改善するようなインクデータの体系化方法の改善が必要とされている。
【０００８】
【課題を解決するための手段】
本発明は、概してペンベースのコンピュータシステムにおけるクライアントアプリケーションおよび手書き認識ソフトウェアが、個々のインクストロークではなくインクフレーズ全体に基づいて極めて正確なインク関連の判定を行えるようにすることに関する。従って本発明は、インクストロークをインクフレーズに体系化し、これらのインクフレーズをアプリケーションに供給するように設計されたインクマネージャを対象とするものである。例示的実施形態において、本インクマネージャは、ペンベースの入力デバイス、１以上のアプリケーション（ペン認識アプリケーションまたはその他）、および、コンピュータシステム上で実行される手書き認識エンジンの間でインタフェースをとる。本インクマネージャは、ペンベースの入力デバイスから入力されたインクストロークなどのインク情報を取得し、その情報をインクフレーズに体系化する。本インクマネージャは、１以上のインクフレーズ終端テストをインク情報に適用するように構成されたインクフレーズ終端エンジン（その一部はペンドライバ構成要素で実行される場合もある）を含む。インクフレーズ終端エンジンがインクフレーズ終端イベントの発生を検出すると、インクマネージャは以下のステップを順番に実施する。
（１）インクストロークのインクフレーズへの体系化を終了するステップ。
（２）インクフレーズを供給することによりインクフレーズ終端イベントを現在のクライアントアプリケーションに随意通知し、これによって、そのアプリケーションがインクフレーズと特定の入力フィールドとの間の適当な関係を判定し、参照コンテクスト（例えばポインタなど）を指定して、特定の認識コンテクストを要求できるようにするステップ。
（３）適当な手書き認識エンジンに通知することによって、その手書き認識エンジンが動作を完了し、現在のインクフレーズに対応するその認識結果を提供できるようにするステップ。
（４）今ラベルを付けた（即ち認識した）インクフレーズを先に（ステップ２で）アプリケーションによって識別された何らかの参照コンテクストと共に前記現在のアプリケーションへ送信するステップ。
アプリケーションが参照コンテクスト及び／又は認識コンテクストを返す結果、これらはインクフレーズデータ構造に追加することができる。
【０００９】
重要なのは、フレーズ終端時まだ未認識のインクフレーズを直ぐにアプリケーションへ渡すことにより、本インクマネージャでは、アプリケーションが従来のシステム（ストロークではなくフレーズ）よりも適当なデータユニットに対して特定の入力フィールドを作成し、コンテクスト判定を行うことができることである。その結果、本システムは、１以上のインクストロークが全体的または部分的に入力フィールドの外に存在しても、ユーザのインクデータをユーザが意図する入力フィールドに確実に関連付けることができる。また、本システムは、インクフレーズに基づいてアプリケーションが再度判定した最も適当な認識コンテクストを使用するため、インクデータをより正確に認識することができる。
【００１０】
好ましい実施形態において、インクフレーズ終端エンジンは、３つのインクフレーズ終端テストをペンベースのデバイスで生成されたインク情報に適用し、また、自分自身のフレーズ終端テストを強制的に行うこともできる。まず、インクフレーズ終端エンジンは各インクサンプルを受信するとタイムアウト機構を開始する。次のインクサンプルを受信する前にタイムアウトした場合、インクフレーズ終端イベントが発生する。このタイムアウトの値はユーザが調節できることが好ましい。次に、インクフレーズ終端エンジンは、ペンベースの入力デバイスが取得した近接距離情報をモニタし、ペンが入力デバイスの表面からある近接距離外まで持ち上げられると、インクフレーズ終端イベントを発行する。つまり、入力デバイスは、ペンがまだ入力デバイスの表面に接触していなくても、表面付近にあるか否か（即ち距離内であるか距離外であるか）を検出するようなセンサを有する。オプションとして、現在のペンセッションに関連するアプリケーションは、インクサンプルがペン入力領域外に移動したときはいつでも、ペン入力領域の座標をインクマネージャに供給し、インクフレーズ終端エンジンにインクフレーズ終端イベントを発行させるための要求をすることができる。最後に、インクフレーズ終端イベントは手書き認識エンジンによってトリガすることができる。特に、手書き認識エンジンは、単語分割モデルをオン・ザ・フライで受信しているインク情報に適用することが好ましい。手書き認識エンジンは、新たなインクサンプルが新たな単語の開始を表すことを判定した場合（例えば、新たなインクサンプルが新たなライン上にある場合や、前のインクサンプルから水平方向に大幅に離れている場合など）、インクフレーズ終端イベントを発行することができる。
【００１１】
インクマネージャは、入力領域ベースのフレーズ終端と共に、クライアントアプリケーションによるストロークベースのインク蓄積やポイントベースのインク蓄積を含む代替のデータ処理方法をとることも可能であるが、インク情報のインクフレーズへの体系化は、低レベルインク収集および処理からペン認識アプリケーションを開放し、ペンベースの入力デバイス上の特定の領域へのインク情報の関連付けを改善し、認識処理を改善する。
【００１２】
【発明の実施の形態】
図１は、中央演算処理装置（ＣＰＵ）１０２を有するコンピュータシステム１００を示しており、コンピュータシステム１００は、１以上の命令セットを受信するための読み出し専用メモリ（ＲＯＭ）１０４と、情報を一時的に記憶および取得するための複数のバッファ１０７ａ〜ｄを有するランダムアクセスメモリ（ＲＡＭ）１０６とに接続される。ＣＰＵ１０２には、クロック１０８も接続され、クロックまたはタイミング信号またはパルスを供給している。コンピュータシステム１００は入出力回路（Ｉ／Ｏ）１１０をさらに含み、入出力回路はＣＰＵと、キーボード１１２、マウス１１４および大容量記憶装置１１６（ハードディスクなど）などの１以上の周辺装置との間にインタフェースを提供する。コンピュータシステム１００はペンベースの入力用タブレット１１８（本明細書で例示するように組み込み型ディスプレイスクリーンを備えていてもよいし、備えていなくてもよい）をさらに含み、タブレット１１８は同様にＩ／Ｏ回路１１０を介してＣＰＵ１０２に接続される。ユーザは、ペンまたはスタイラス１２０を用いてタブレット１１８に書くまたは描くことによってコンピュータシステム１００を制御、または、コンピュータシステム１００と対話することができる。当業者であれば、コンピュータシステム１００が様々な構成要素間を相互接続するための１以上のバス構造を含むことは明らかであろう。
【００１３】
本発明と共に用いるのに好ましいコンピュータシステム１００は、アップルコンピュータ社（カリフォルニア州クパーチノ）が販売しているパーソナルコンピュータの系統を汲むものである。しかしながら、本発明は、ＩＢＭ社（ニューヨーク州アーモンク）およびコンパックコンピュータ社（テキサス州ヒューストン）が販売しているパーソナルコンピュータを含むその他の種類のコンピュータのコンテクストで実施することもできる。これらのコンピュータは、いずれもコンピュータ自体に備えられたＡｐｐｌｅ  Ｍａｃ  ＯＳオペレーティングシステム、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ９５，９８オペレーティングシステムなどのオペレーティングソフトウェアによって制御および統制されている。本発明と共に用いるのに好ましいその他のコンピュータシステム１００としては、３Ｃｏｍ社（カリフォルニア州サンタクララ）のＰａｌｍＰｉｌｏｔおよびＷｉｎＣＥ互換の装置などの個人用携帯型情報端末（ＰＤＡ）も含まれる。
【００１４】
図２は、タブレット１１８の平面図である。例示的実施形態として、タブレット１１８は、入力デバイスとしても出力デバイスとしても動作するように構成されている。タブレット１１８は、出力デバイスとして動作する場合、ＣＰＵ１０２（図１）からＩ／Ｏ回路１１０を介してデータを受信し、そのデータを液晶ディスプレイスクリーン（ＬＣＤ）などのスクリーン２０２上に表示する。タブレット１１８の入力デバイスは、可視的スクリーン／タブレットの表面２０２の直下にある検知回路の薄層、または、スクリーン２０２を覆う薄い透明薄膜（図示せず）の一部として存在する検出回路の薄層であり、これらはタブレット１１８の表面にあるペン１２０の位置を検知することができる。動作中、ユーザは、ペン１２０を用いてタブレット１１８のスクリーン２０２上に「書く」ことにより、コンピュータシステム１００に入力することができる。ｘ−ｙ座標系に関するスクリーン２０２上のペン１２０の位置の情報は、毎秒１００回程度サンプリングし、Ｉ／Ｏ回路１１０を介してＣＰＵ１０２へ供給することが好ましい。ペンの向きおよびスクリーン２０２上のペンの圧力などのその他の情報も、ＣＰＵ１０２に供給することができる。
【００１５】
ユーザがタブレット１１８と対話することを容易にするため、コンピュータシステム１００（図１）は、スクリーン２０２上に特定のイメージを生成するように構成することができる。例えば、スクリーン２０２上に一連の水平線２０４ａ〜ｄなどを表示することにより、ユーザは手書きの文を揃えるのが容易になる。一並びのボタン２０６ａ〜ｆも表示することができる。ユーザはペン１２０でボタン２０６ａ〜ｆに触れることにより、コンピュータシステム１００に様々なコマンドを実行させることができる。同様にペンで作動する上向きのスクロールボタン２０８ａおよび下向きのスクロールボタン２０８ｂも設けることができる。以下で詳しく説明するように、コンピュータシステム１００上で動作しているアプリケーションプログラムは、フィールド２１０ａ〜ｃなど、１以上のデータエントリフィールドまたはボックスをスクリーン２０２上に生成することができる。市、州、電話番号などの特定の手書き情報をユーザに要求するため、これらのフィールドまたはボックス２１０ａ〜ｃは、出力構成要素またはディスプレイ構成要素２０２がタブレット１１８に組み込まれているか個別のスクリーンであるかに関わらず、出力構成要素またはディスプレイ構成要素２０２によってラベルを付けることができる。
【００１６】
本発明と共に用いるのに好ましいタブレット１１８としては、Ｗａｃｏｍ  Ｔｅｃｈｎｏｌｏｇｙ社（ワシントン州バンクーバー）のＷａｃｏｍ  ｇｒａｐｈｉｃｓ  ｔａｂｌｅｔなどが含まれる。
【００１７】
図３は、コンピュータシステム１００（図１）で動作するソフトウェアコンポーネントをかなり図式化した機能ブロック図である。これらのソフトウェアコンポーネントには、通常、アプリケーションプログラム３０２ａ，３０２ｂなどの１以上のアプリケーションプログラムまたはプロセスと、オペレーティングシステム３０４とが含まれる。コンピュータシステム１００上で動作し、オペレーティングシステム３０４と対話するアプリケーションプログラム３０２ａおよび３０２ｂは、矢印３０６ａおよび３０６ｂで示すように、アプリケーション・プログラム・インタフェース（ＡＰＩ）層３０８のシステムコールまたはタスクコマンドを通してコンピュータシステム１００の動作を制御する。本発明によると、オペレーティングシステム３０４には、インクフレーズ終端エンジン３１２を有する新規のインクマネージャ３１０が含まれる。このインクマネージャ３１０は、ＡＰＩ層３０８に接続され、矢印３１４を介してＡＰＩ層３０８の一部を担う。インクマネージャ３１０は、矢印３１８を介してＡＰＩ層３０８に接続されたイベントマネージャ３１６にも接続される。インクマネージャ３１０は、手書きコンテクストマネージャ３２０および手書き認識マネージャ３２２とも通信する関係にある。
【００１８】
コンピュータシステム１００にはエンジン１、エンジン２、...など、全体を符号３２４で示す１以上の手書き認識エンジンがインストールされる場合があり、これらは手書き認識マネージャ３２２によって選択することができる。入力用タブレット１１８は通常、１以上のドライバによってインクマネージャ３１０に接続される。具体的には、インクマネージャ３１０は、自身に接続されたペンドライバ３２６からインク情報を受信することができ、このペンドライバ３２６はタブレット専用ドライバ３２８にも接続される。ペンドライバ３２６およびタブレット専用ドライバ３２８は、いずれがタブレット１１８と直接インタフェースしてもよい。好ましい実施形態として、インクフレーズ終端エンジン３１２は、タイマー３１３を含み、以下で説明するように、受信したインク情報を評価するためにさらにペンドライバ３２６にも接続される。
【００１９】
さらに、インクマネージャ３１０は、インクマネージャ３１０に割り当てられたＲＡＭ１０６（図１）の一部を表すインク記憶領域３３０と直接的または間接的に通信する関係にある。インクマネージャ３１０は、１以上のインクフレーズデータ構造３３２をインク記憶領域３３０内に確立し、操作することができる。インクフレーズ終端エンジン３１２は、インクマネージャ３１０とペンドライバ３２６との間に分散配置できることが分かるであろう。また、ペンドライバ３２６は、インクマネージャ３１０の一部とすることもできることが分かるであろう。
【００２０】
インクマネージャ３１０、終端エンジン３１２およびペンドライバ３２６は、本明細書で説明する方法に関連するソフトウェアモジュールやライブラリなど、１以上のソフトウェアプログラムを含む場合があり、大容量記憶装置１１６（図１）やＲＡＭ１０６などのコンピュータ読み取り可能媒体に収められ、ＣＰＵ１０２などの１以上の処理要素によって実行することができる。フロッピー(R)ディスクおよびＣＤＲＯＭなど、その他のコンピュータ読み取り可能媒体を用いてプログラム命令を記憶し、実行することもできる。インクマネージャ３１０、終端エンジン３１２およびペンドライバ３２６は、順序論理回路および協働するステートマシンを生成するように構成された複数のレジスタおよび組み合わせ論理回路を用いて、ハードウェアで実施することもできる。
【００２１】
イベントマネージャ３１６は、オペレーティングシステム３０４内にソフトウェアモジュールやライブラリの集合を形成し、ＡＰＩ層３０８を介してイベントメッセージまたはイベントレコードを送受信することにより、ハードウェアイベントおよびソフトウェアイベントをアプリケーションプログラム３０２ａ，３０２ｂに通知することができる。例えば、アプリケーション３０２ａ，３０２ｂは、ＷａｉｔＮｅｘｔＥｖｅｎｔ（）関数またはシステムコールをイベントマネージャ３１６へ周期的に発行することにより、何らかのイベントが発生したか否かを確認することができる。イベントマネージャ３１６は、アプリケーションの要求に対し、何らかの未処理のイベントが存在する場合、そのイベントを応答として返す。各アプリケーションプログラム３０２ａおよび３０２ｂは、イベントマネージャ３１６への要求およびイベントマネージャ３１６からの受信を管理するためのイベントハンドラを含むことが好ましい。インクマネージャ３１０はイベントマネージャ３１６と通信する関係にあり、インクマネージャ３１０が責任を負うハードウェアイベントやソフトウェアイベント（例えばインクイベント）が発生した場合、これをイベントマネージャ３１６に渡して適当なアプリケーションまたはプロセスへ転送させるようにすることが好ましい。
【００２２】
手書き認識マネージャ３２２は、１以上の手書き認識エンジン３２４とそれらのクライアント（例えばインクマネージャ３１０やアプリケーションプログラム３０２ａ，３０２ｂ自体など）との間にインタフェースすなわち層を提供する。具体的には、手書き認識マネージャ３２２は、様々な手書き認識エンジン３２４の存在をシステム１００に知らせ、認識装置３２４とそれらのクライアントとの両方に一意の識別子を確立し、インク情報およびそれに対応する結果を適当な認識装置およびクライアントに関連づけるようにする。さらに、認識エンジン３２４の各々は、独自の認識処理の実行に加えて、独自の特定の内部インクストロークデータ構造、独自のインクストロークを蓄積するための方法、および、独自の認識結果データ構造を利用することもできる。
【００２３】
図４Ａ〜４Ｂは、本発明の好ましい実施形態を示すフロー図である。インク情報を管理する処理は、開始ブロック４０２から始まる。ユーザがコンピュータシステム１００（図１）上でアプリケーションおよびプロセスをオープンすると、これらはオペレーティングシステム３０４（図３）のウィンドウマネージャ（図示せず）により従来のz-ordering法で配置される。例えば、アプリケーション３０２ａなど、あるアプリケーションが最初にオープンされた場合、ブロック４０４に示すように、そのアプリケーションはそのアプリケーション３０２ａがインクマネージャ３１０から受信したいデータの種類を示す識別子を引数として用い、ＡＰＩ層３０８を介してＩｎｋＩｎｉｔ（）システムコールをインクマネージャ３１０へ発行することにより、インクマネージャ３１０に登録される。アプリケーション３０２ａは、ＡＰＩ層３０８を介して従来の汎用手順ポインタ（universal procedure pointer）を引数としてＩｎｋＳｅｔＥｎｄＯｆＰｈｒａｓｅＣａｌｌｂａｃｋ（）システムコールを発行することにより、インクマネージャ３１０にフレーズ端部の特別な処理を要求することもできる。インクマネージャ３１０は、フレーズ終端イベントが発生すると、以下で説明するようにこのポインタを用いてアプリケーション３０２ａを一意に識別し、通信する（例えば呼び出しなど）。アプリケーション３０２ａは、特定の手書き認識エンジン３２４（例えばエンジン１など）をさらに呼び出し、タブレット１１８で生成されたインク情報の処理に使用することもできる。
【００２４】
判定ブロック４０６に示すように、インクマネージャ３１０及び／又はペンドライバ３２６は、ユーザがインクデータを入力するとそのインクデータを調べる。判定ブロック４０６は、そのようなインクデータが検出されるまで「いいえ」の矢印４０７で示すようにループバックして判定ブロック４０６自体へ戻る。ユーザインクの場合、即ち、ユーザがペン１２０をタブレット１１８に接触させタブレット１１８の表面を移動させた場合、タブレット１１８によりインクデータ点などのインク情報が生成され、タブレット専用ドライバ３２８およびペンドライバ３２６により受信および処理される。このインク情報は、フォアグラウンドのアプリケーションプロセスを対象にしている。オープンされた最上位のアプリケーションまたはプロセスは通常、ユーザが現在実行しているアプリケーションであり、フォアグラウンドプロセスと呼ばれる。一方、その他のアプリケーションおよびプロセスはバックグラウンドプロセスと呼ばれる。ペンドライバ３２６は、このインク情報を取得するため、タブレット専用ドライバ３２８またはタブレット１１８を周期的にポーリングする（通常デバイスマネージャシステムサービスを介して）。あるいは、新たなインク情報が利用可能になるたびに、ペンドライバ３２６がタブレット専用ドライバ３２８（またはシステムデバイスマネージャ）から呼び出されるようにすることもできる。例えば、タブレット専用ドライバ３２８はＡｐｐｌｅ  Ｄｅｓｋｔｏｐ  Ｂｕｓ（ＡＤＢ）を介してタブレットと通信し、インク情報をＤＶ０１データ構造で記憶し、そのデータ構造を介してペンドライバ３２６と通信することもできる。ＤＶ０１データ構造およびＡＤＢは、いずれもアップルコンピュータ社によって定義され、実施されており、本発明に関する技術分野の当業者にとってよく知られているものである。
【００２５】
ブロック４０８に示すように、ペンドライバ３２６はこのインク情報（例えば、個々のインクデータ点やペン位置など）を収集し、対応するインクストロークに体系化する。具体的には、ペンドライバ３２６はインクデータ点の第１のバッファ１０７ａへの記憶を開始する。ペンドライバ３２６は、タブレット専用ドライバ３２８から得たインク情報がペン１２０（図１）がスクリーン２０２から持ち上げられたことを示す場合、インクデータ点の第１のバッファ１０７ａへの記憶を停止し、次のインクデータ点（即ち、ペン１２０が再びスクリーン２０２に接触し移動された場合）のために第２のバッファ１０７ｂを初期化し、以下同様に続けられる。従って、ペンドライバ３２６によって初期化された各バッファ１０７は、１インクストロークに対応するこれらのインクデータ点を保持する。新たなストロークを開始するために持ち上げられたときとは対照的に、ペン１２０がスクリーン２０２上で「飛び跳ねた」場合には新たなインクストロークの生成を避けるため、ペンドライバ３２６は次のインクデータ点が新たなストロークを表すものであるという結論を出す前にスクリーン２０２との接触がない短時間を要件として課すことができる。
【００２６】
インクマネージャ３１０は、ペンドライバ３２６を周期的にポーリングして収集されたインクストークを取得する。あるいは、ペンドライバ３２６は、新たなインクストロークを有する場合、イベント駆動型モデルの一部としてインクマネージャ３１０に通知することも好ましい。ブロック４１０に示すように、インクマネージャ３１０は取得したインクストロークをインクフレーズデータ構造３３２内に記憶する。
【００２７】
図５は、好ましいインクフレーズデータ構造３３２の極めて概念的なブロック図である。インクフレーズデータ構造３３２は、ヘッダフィールド５０２およびアプリケーション識別子（ＩＤ）フィールド５０４を含む複数のフィールドからなり、ヘッダフィールド５０２にはフレーズ終端タイプ、存在し得る変更鍵、ストローク数およびバウンディングボックスなどの情報が保持される。アプリケーションＩＤフィールド５０４は、ユーザがインクを入力したときにフォアグラウンドにあったプロセスの一意のプロセス識別子を保持することが好ましい。このデータ構造３３２はインクストロークフィールド５０６をさらに含み、インクストロークフィールド５０６にはインクマネージャ３１０がペンドライバ３２６から取得したインクストローク情報を記憶することが好ましい。以下で説明するように、このデータ構造３３２は、参照コンテクスト（ＲＥＦ  ＣＯＮ）フィールド５０８、認識コンテクストフィールド５１０および認識結果フィールド５１２をさらに含む。
【００２８】
ブロック４１２（図４Ａ）に示すように、インクマネージャ３１０は、各インクストロークを個々のインクフレーズデータ構造３３２に記憶するだけでなく、各インクストロークを手書き認識マネージャ３２２にも渡す。指定された（またはデフォルトの）手書き認識エンジン３２４と協働する手書き認識マネージャ３３２は、インクストロークの特定の事前認識処理を実施するが、まだ認識は行わない。例えば、手書き認識マネージャ３３２および指定されたエンジン３２４は、ストロークおよびギャップサイズの移動平均を計算することにより、基本的な単語分割モデルを実行することができる。
【００２９】
さらに、判定ブロック４１４に示すように、ペンドライバ３２６に関連するインクマネージャ３１０のインクフレーズ終端エンジン３１２は、タブレット１１８およびタブレット専用ドライバ３２８から受信した新たなインク情報を検査して、インクフレーズ終端イベントが発生したか否かを判定すなわち検出する。好ましい実施形態において、インクフレーズ終端エンジンは、１フレーズが終端したか否かを検出するため、３つの規準またはテストをインク情報に適用する。まず、インクフレーズ終端エンジン３１２は「タイムアウト」をインク情報に適用する。具体的には、インクフレーズ終端エンジン３１２は、ペンドライバ３２６において各インクデータ点の受信があると、タイマー３１３を始動／リセットし、次のインクデータ点の受信の前にタイマー３１３がタイムアウトした場合、インクフレーズ終端イベントを識別する。このタイムアウトの値は、数分の１秒のオーダであり、所定の範囲内でユーザが設定できることが好ましい。さらに具体的には、ユーザは、インクマネージャ３１０の設定パラメタを表示させ、従来のスライダを用いてこのタイムアウトを調節できるようにすることが好ましい。あるいは、このタイムアウトは、アプリケーション３０２ａから特別なインクマネージャＡＰＩシステムコールを用いて指定できるようにすることもできる。ペンドライバ３２６は、かかるインクフレーズ終端イベントが検出されると、そのイベントを特別なバッファタイプとしてセーブし、インクマネージャ３１０へ送信する。終端エンジン３１２は概ねペンドライバ ３２６内で実施することもできることが分かるであろう。
【００３０】
また、インクフレーズ終端エンジン３１２は、ペンドライバ３２６で収集されたインク情報に「近接距離外」テストを適用する。具体的には、タブレット１１８およびそれに関連するタブレット専用ドライバ３２８は、ペン１２０がスクリーン２００と接触している場合だけでなく、ペンがスクリーンに近接している場合も判定するように設定または構成されることが好ましい。つまり、タブレット１１８は、ペン１２０が近くにあるが（例えば１／２インチ〜３／４インチ程度上方にあるとき）、まだスクリーン２０２には接触していない場合を検出する。ペンのＸ−Ｙ座標を含むこの近接距離情報は、タブレット１１８（および、もし用いられている場合には関連するタブレット専用ドライバ３２８）によってペンドライバ３２６へ供給される。ペン１２０がタブレット１１８の検出能力を超えるところまで持ち上げられた場合（即ちペン１２０が近接距離外まで移動された場合）、インクフレーズ終端エンジン３１２がそのような状況の発生を検出し、ペンドライバ３２６がそのイベントを特別なバッファタイプとして再びセーブし、これをインクマネージャ３１０へ送信する。つまり、ペンドライバ３２６は、タブレット１１８やタブレットドライバ３２８からのインクデータ及び／又は近接位置情報の受信が停止したことを通知する。
【００３１】
またｈ、インクフレーズ終端エンジン３１２は、フォアグラウンドのアプリケーション３０２ａによって定義された１以上のデータエントリフィールドのバウンディング座標またはスクリーン領域に基づき、インク情報に「領域外」テストを適用する。具体的には、アプリケーション３０２ａは、データエントリフィールド２１０ａ〜ｃを定義し、これらのデータエントリフィールド２１０ａ〜ｃの座標をインクマネージャ３１０へ供給することができる。インクフレーズ終端エンジン３１２は、インクデータ点の位置情報とアプリケーション３０２ａから供給されたバウンディング座標とを比較する。ペンドライバ３６によって取得されたインク情報がこれらのデータエントリフィールドのうちの１つ、例えばボックス２１０ｂ（図２）に初めから含まれていた場合、ペンドライバ３２６はインクマネージャ３１０に通知する。
【００３２】
手書き認識エンジン３２４と協働する手書き認識マネージャ３２２は、終端エンジン３１２が適用する３つのインクフレーズ終端イベントに加えて、「認識区切り」テストをインクマネージャ３１０から受信されるインクストロークに適用する。特に、手書き認識マネージャ３２２および専用エンジン３２４は、インクマネージャ３１０から受信したインクストロークの処理の一部として、ストロークギャップおよびワードギャップに基づく幾何学的確率モデルなどの基本的な単語分割モデルを適用する。この単語分割モデルにより新たなインクストロークが新たな単語を構成することが結論された場合、手書き認識マネージャ３２２はインクマネージャ３１０へ通知し、インクマネージャ３１０がこの通知をインクフレーズ終端イベントとして取り扱うことが好ましい。例えば、新たなインクストロークが最後のインクストロークが位置していたライン（例えばライン２０４ｂ）に比較して新しいライン（例えばライン２０４ｃ）上に位置している場合、単語分割モデルがフレーズイベント終了通知をインクマネージャ３１０へ発行することが好ましい。最後のインクストークとは実質的に異なるＸ座標をもつインクストローク（例えば２つのインクストロークが数インチ離れている場合など）の場合、同様に手書き認識マネージャがインクマネージャ３１０へ通知することが好ましい。つまり、単語分割モデルは、何らかの所定の面内（即ちスクリーン２０２の面内）の語間の制限をインクストロークに適用することが好ましい。当業者であれば、この単語分割モデルには、新たな単語の開始を検出するための他の制限を用いることもできることが分かるであろう。
【００３３】
上述のインクフレーズ終端テストはいずれも、ペンドライバ３２６およびインクマネージャ３１０で受信されるインク情報に対しても実質的に同様に適用することができ、インクフレーズは何らかのこのようなイベントが発生した時に終了する。つまり、ペンドライバ３２６及び／又はインクマネージャ３１０は、これらの何らかのインクフレーズ終端イベントの発生を常に探し続ける。上述のインクフレーズ終端イベントが何も発生しなければ、判定ブロックから「いいえ」の矢印４１６で示すように、インクマネージャ３１０はブロック４０６へ戻り、ペンドライバ３２６から得たインクストロークを個々のインクフレーズデータ構造３３２へ記憶し、これらを手書き認識マネージャ３２２へ渡し続ける。
【００３４】
インクマネージャ３１０は、インクフレーズ終端イベントの通知を得た場合（ペンドライバ３２６または手書き認識マネージャ３２２を介して終端エンジン３１２から）、好ましくは以下のように応答する。まずブロック４２２（図４Ｂ）に示すように、インクマネージャ３１０は、インクフレーズ終端イベントの発生をフォアグラウンドのアプリケーション３０２ａに通知する。例えば、インクマネージャ３１０は、アプリケーション３０２ａによって指定された汎用手順ポインタを用い、まだラベルの付いていない（即ち未認識の）インクフレーズを引数としてフレーズ終端呼び出しを通してアプリケーション３０２ａの手順を呼び出すことができる。アプリケーション３０２ａは、この呼び出しに対してある特定の方法で応答することが好ましい。
【００３５】
アプリケーション３０２ａは、フレーズ終端呼び出しを介してインクフレーズを受信すると、アプリケーションで生成したそのインクフレーズの参照コンテクスト（ＲＥＦ  ＣＯＮ）をインクマネージャ３１０へ供給することができる。このＲＥＦ  ＣＯＮは、そのインクフレーズを内部的に識別したり、そのインクフレーズに関するその他の情報を提供するためにアプリケーション３０２ａによって生成された単なるタグでよい。典型的には、このＲＥＦ  ＣＯＮは、アプリケーション３０２ａで使用する様々な情報を保持したデータ構造を指すポインタである。ブロック４２４に示すように、例えば、ＲＥＦ  ＣＯＮは、フィールド５０８（図５）へ挿入することにより、個々のインクフレーズデータ構造３３２に付加される。インクマネージャ３１０は、インクフレーズデータ構造３２２にＲＥＦ  ＣＯＮを付加することなく、ＲＥＦ  ＣＯＮをアプリケーション３０２ａに渡された対応するインクストロークに関連付けられることが分かるであろう。例えば、インクマネージャ３１０は、自分がアクセスすることのできる何らかのデータ構造または記憶装置にＲＥＦ  ＣＯＮを記憶することができる。
【００３６】
アプリケーション３０２ａは、インクフレーズの認識中に使用される手書きコンテクストを識別することもできる。例えば、アプリケーション３０２ａがインクマネージャ３１０から受信したインクフレーズを検査し、スクリーン２０２上の個々のストロークの位置情報に基いてそれらのストロークが概ねデータエントリフィールド２１０ａ内に位置していることを判定したものと仮定する。さらにそのデータエントリフィールド２１０ａが「都市」に対応しているものと仮定すると、アプリケーション３０２ａは、このインクフレーズに対して認識を実施する場合、インクマネージャ３１０に都市の語彙を利用させるように指令することができる。この認識コンテクストは、インクフレーズデータ構造のフィールド５１０（図５）内にロードすることができる。あるいは、アプリケーション３０２ａは、それらのインクストロークが数式や音楽成分を受け取るためのスクリーン位置に対応していることを結論し、それらに対応する認識コンテクストを供給することもできる。また、アプリケーション３０２ａは、特定のコンテクストに依存したペン操作を確認する（即ち何もしないで、断る）こともできる。
【００３７】
次に判断ブロック４２６に示すように、アプリケーション３０２ａは、そのインクフレーズを「消費」することを希望するか否かをインクマネージャ３１０に宣言する。消費する場合、ブロック４２７に示すようにインクマネージャ３１０は対応する認識装置に各々のインク情報を破棄させ、次いでブロック４２８に示すようにそれ自体のインクフレーズデータ構造３３２を破棄する。アプリケーション３０２ａがそのインクフレーズを消費しない場合には、ブロック４３０に示すようにインクマネージャ３１０はフレーズ終端イベントを手書き認識マネージャ３２２に通知し、手書き認識マネージャ３２２に命令してそのフレーズを認識させる。手書き認識マネージャ３２２はインクマネージャ３１０がペンドライバ３２６からインクストロークを取得するのに従ってそれらのインクストロークを受信するので、インクマネージャはそれらのインクストロークを手書き認識マネージャ３２２へ再送信する必要はない。実際、インクマネージャ３１０は、手書き認識マネージャ３２２にそのインクフレーズ終端イベントに関連するインクストローク（データ構造３２２のデータフィールド５０６（図５）にあるインクストロークに対応するインクフレーズ終端イベント）を認識するように知らせるだけである。手書き認識マネージャ３２２は、その認識プロセスに何らかのコンテクストを使用する場合、手書きコンテクストマネージャ３２０と交信して適当なコンテクストを識別することができる。
【００３８】
処理中のインクストロークは個々のインクフレーズ終端イベントによって定義されるインクフレーズに対応するため、これらのストロークは複数の単語に対応する。従って、呼び出された認識エンジン３２４は複数の仮説を生成し、各々の仮説は各々のインクフレーズ内に異なる単語区切りを有する。例えば、最初の文字があいまいで字間があいまいな同一のインクは、「boat ramp」と認識される場合もあれば「to a tramp」と認識される場合もある。あるいは、この認識結果は、選択された認識エンジンが知っている幾何学的な形状、英数文字、楽譜記号、数式、その他の記号になる場合もあることが分かるであろう。
【００３９】
認識処理の完了時、手書き認識マネージャ３２２はその結果をインクマネージャ３１０へ送信する。具体的には、手書き認識マネージャ３２２は、呼び出した認識装置３２４（例えばエンジン１）の識別子（ＩＤ）をインクマネージャ３１０に提供し、さらに各仮説について、認識結果、フレーズ化した仮設の各々についての単語数、フレーズ化した仮設の各々における代替単語リスト、及び、各単語に使用される可能性のあるストロークの記述を供給することもできる。ブロック４３２に示すように、インクマネージャ３１０はそれらの認識結果を個々のインクフレーズデータ構造３３２に付加することが好ましい。特に、インクマネージャ３１０は認識結果をフィールド５１２（図５）にロードする。また、ブロック４３４に示すように、インクマネージャ３１０は、これらの認識結果および以前に生成したＲＥＦ  ＣＯＮをアプリケーション３０２ａにも転送する。そのＲＥＦ  ＣＯＮが元のアプリケーション３０２ａによって生成されたものであった場合、そのアプリケーションは、そのＲＥＦＣＯＮを任意数の目的に使用することができ、例えばそのインクが入力された特定の入力フィールドを識別するデータブロックを指すポインタとして使用することができる。
【００４０】
当業者であれば、アプリケーション３０２ａが認識結果を受信する際に、いかなる数のステップを用いてもよいことが分かるであろう。例えば、アプリケーション３０２ａは、認識エンジン３２４から複数の仮説が返ってきた場合、その認識結果をユーザに表示して正しい結果を確認または選択させることもできる。また、アプリケーション３０２ａは、認識結果を入力として取り扱い、それらの認識結果を従来の方法で処理することもできる。Ｍａｃ  ＯＳなどの適当なシステムソフトウェア環境では、アプリケーション３０２ａが「インク認識」できない場合（InkInit()を呼び出せない場合、インクマネージャ３１０、ペンドライバ３２６の知識がない場合など）であっても、ラベルを付けたインクフレーズをイベントとしてアプリケーション３０２ａに提示することができる。この「互換性」動作の場合、認識されたインクフレーズは、予めインストールされているシステムデフォルトのイベントハンドラとインクマネージャ３１０の一部とにより、従来のキーボードにおけるキー押下をシミュレートするキー押下イベントなどの従来の非インクイベントに変換される。
【００４１】
矢印４３６（図４Ｂ）に示すように、アクティブなインクフレーズが破棄された後または認識されてアプリケーション３０２ａに提示された後、インクマネージャ３１０およびペンドライバ３２６はユーザからのペン入力待ちを再開する。インク活動が再開されると（すなわち、さらなるインク情報がペンドライバ３２６で受信されると）、ペンドライバ３２６は再びデータ点をインクストロークに蓄積し始め（ブロック４０６から出てゆく「はい」の矢印以降を続け）、そのインクストロークをインクマネージャ３１０へ送信し、インクマネージャ３１０がそれらのインクストロークを新たなインクフレーズに蓄積し始め（ブロック４１０）これらのサイクル全体が再開される。
【００４２】
当業者であれば、ユーザが指定された時間非アクティブであれば、インクマネージャ３１０およびペンドライバ３２６は１以上の掃除機能（例えば、メモリの開放、データ構造の破棄など）を実施することもできることが分かるであろう。また、インクマネージャ３１０は、InkDisposePhrase()システムコールをアプリケーションプログラム302aに提供することにより、ペン活動中に使用されるメモリリソースを再割り当てすることもできる。
【００４３】
上記の説明は本発明の特定の実施形態を例示している。しかしながら、説明した実施形態に他の変形または変更を施して、それらの特定の実施形態の一部または全ての利点が得られるようすることも可能であることは、明らかである。例えば、アプリケーションプログラム３０２ａは、未処理のインク情報の受信をインクマネージャに要求することもできる。その場合、インクマネージャ３１０またはペンドライバ３２６は、ペンドライバ３２６で受信したインクデータをアプリケーションプログラム３０２ａへ直接供給する。従って、特許請求の範囲の記載は、そうした変形または変更のすべてをカバーし、本発明の思想および範囲内に入れることを意図している。
【図面の簡単な説明】
【図１】  本発明によるコンピュータシステムのかなり概略的なブロック図である。
【図２】  図１のタブレットの平面図である。
【図３】  図１のコンピュータシステムのソフトウェアコンポーネントを示すかなり概略的な機能ブロック図である。
【図４Ａ】〜
【図４Ｂ】  本発明の方法を示すフロー図である。
【図５】  インクフレーズデータ構造のかなり概略的なブロック図である。
【図１】
0004446369.tif 000002
【図２】
0004446369.tif 000003
【図３】
0004446369.tif 000004
【図４Ａ】
0004446369.tif 000005
【図４Ｂ】
0004446369.tif 000006
【図５】
0004446369.tif 000007