JP4499407B2 - インクディバイダおよび関連するアプリケーションプログラムインターフェース - Google Patents

インクディバイダおよび関連するアプリケーションプログラムインターフェース Download PDF

Info

Publication number
JP4499407B2
JP4499407B2 JP2003423829A JP2003423829A JP4499407B2 JP 4499407 B2 JP4499407 B2 JP 4499407B2 JP 2003423829 A JP2003423829 A JP 2003423829A JP 2003423829 A JP2003423829 A JP 2003423829A JP 4499407 B2 JP4499407 B2 JP 4499407B2
Authority
JP
Japan
Prior art keywords
ink
strokes
computer
application program
grouping
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2003423829A
Other languages
English (en)
Other versions
JP2004227564A (ja
Inventor
ダッジ スティーブ
ゴーナーズ アレクサンダー
ジェイ.ゴールドバーグ アリン
ドレーセビック ボディン
ジェイ.ターナー ジェロム
ポール ローテン マシュー
エル.チャンバーズ ロバート
ラグフパティー サシ
エイチ.カンナペル ティモシー
ジーリンスキー トビアス
シー.シラギー ゾルタン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004227564A publication Critical patent/JP2004227564A/ja
Application granted granted Critical
Publication of JP4499407B2 publication Critical patent/JP4499407B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/14Image acquisition
    • G06V30/142Image acquisition using hand-held instruments; Constructional details of the instruments
    • G06V30/1423Image acquisition using hand-held instruments; Constructional details of the instruments the instrument generating sequences of position coordinates corresponding to handwriting

Description

本発明の形態は、アプリケーションプログラムと、種々のインクおよびインクディバイダオブジェクト(ink divider object)を含む電子インクとの間の通信を容易にするシステム、方法、およびコンピュータ可読媒体に関する。こうしたシステム、方法、およびコンピュータ可読媒体の一部の例によって、アプリケーションプログラムまたはクライアントコードが種々の細分度(granularity)のインクストロークグループにアクセスできるようになり、アプリケーションプログラムの性能が向上し、こうしたプログラムおよびその関連するコードのデジタルインクとの対話の向上が可能となる。
一般に、本発明は、以下の特許出願で開示されているシステムおよび方法とともに使用することができる。
(a)「Handwriting Layout Analysis of Freeform Digital Ink Input」という名称の2002年5月14日出願(特許文献1)
(b)「Classification Analysis of Freeform Digital Ink Input」という名称の2002年5月14日出願(特許文献2)
(c)「An Incremental System for Real Time Digital Ink Analysis」という名称の2002年5月14日出願(特許文献3)
(d)「Interfacing With Ink」という名称の2002年6月28日出願(特許文献4)
これらの同時係属の米国特許出願のそれぞれを参照により本明細書にすべて組み込む。
一般のコンピュータシステム、特にMicrosoft WINDOWS(登録商標)などグラフィカルユーザインターフェース(GUI)システムを使用するコンピュータシステムは、テキストを入力するキーボード、およびユーザインターフェースを駆動させるポインティング装置(1つまたは複数のボタンを備えるマウスなど)など、1つまたは複数の個別の入力装置からユーザ入力を受け付けるように最適化される。ユビキタスなキーボード、およびマウスインターフェースによって、ドキュメント、スプレッドシート、データベースフィールド、図、写真などを迅速に作成し、変更することができる。しかし、コンピュータ以外の(従来の)ペンおよび用紙と比較して、キーボード、およびマウスインターフェースによって提供される柔軟性にはいくつかの点で大きなギャップがある。従来のペンおよび用紙を使用すると、ユーザは、書類の編集、欄外へのメモの書き留め、ならびに絵および他の形状の描画などを行うことができる。いくつかの場合、ユーザは、キーボードおよびマウスインターフェースの範囲を超えてメモを自由に書き留めることができるため、コンピュータ画面上で書類を見直すよりペンを使用して書類を作成することを好むかもしれない。
一部のコンピュータシステムでは、ユーザが画面上に描画することができる。例えば、Microsoft READERアプリケーションによって、ユーザは、電子インク(本明細書では「インク」または「デジタルインク」とも呼ぶ)をドキュメントに追加することができる。システムは、インクを格納し、要求に応じてそれをユーザに提供する。他のアプリケーション(例えばPalm3.xおよび4.x、およびPocketPCオペレーティングシステムに関連して当分野で知られている描画アプリケーションなど)では、図の捕捉および格納が可能である。また、Corel Drawなどの種々の描画アプリケーション、およびPhotoshopなどの写真および編集アプリケーションをWacomタブレット製品などスタイラスベースの入力製品とともに使用することができる。こうした描画は、描画の作成に使用するインクストロークと関連付けられた他のプロパティを含む。例えば、線幅および色をインクとともに格納することができる。こうしたシステムの1つの目的は、用紙に適用される物理的なインクのルックアンドフィールを複製することである。
電子インクを受け付けるコンピュータシステムは知られているが、現在のところ、その可用性および有用性は、少なくともいくつかの点で若干限られている。さらにその可用性および有用性を向上させるには、アプリケーションプログラムは、電子インクと対話し、インターフェースをとることができるようにするコードを含んでいなければならない。したがって、コードライタが容易に、フレキシブルに、かつ一貫性をもって異なる種々のインクのグループと対話し、インターフェースをとることができるようになるためのアプリケーションプログラムインターフェース(「API」)は、何らかのやり方で電子インクと対話するアプリケーションプログラムのコードを書きたい人には非常に有用である。
米国特許出願第10/143,865号明細書 米国特許出願第10/143,864号明細書 米国特許出願第10/143,804号明細書 米国特許出願第10/184,108号明細書
例えば、ユーザがあるページ上で入力を行い、電子インクと対話することができる自由な形式の描画面を実装するアプリケーションは、ユーザが提供するストロークを格納し、処理する範囲を決定するという問題に直面する。アプリケーション開発者にとって直接的な手法には次のものがある。それは、(1)各ストロークを別個に扱う、または(2)すべてのストロークをあるページ上で、または所与の編集セッションでいっしょに扱うことである。しかし、こうした手法のそれぞれには、エンドユーザにとっての使いやすさ、および既存のドキュメントレイアウトコードとの互換性の点からみると、実用上重大な制限がある。アプリケーションに理想の手法は、通常は実施はかなり難しいが、単語、行、段落を備えるグループ内のストロークを扱うことである。この手法は、使いやすさ、互換性、手書き認識の向上を可能にすること、および他の特徴などにかなりの利点がある。
本発明では、アプリケーション開発者が使用してこうした利点を容易に得ることができ、ストロークをどのようにグループ分けするかを決定する必要なく、したがってこの手法の大きな問題をとり除くことができるAPIを作り出す。
本発明の形態は、情報をアプリケーションプログラムから使用できるようにするシステムおよび方法に関する。これらのシステムおよび方法は、複数のインクストロークを格納することと、分割要求を発行し、あるいは受信することと、分割要求に応答して、格納されているインクストロークを、少なくとも第1の所定の細分度を有する1つまたは複数のストロークのグループにグループ分けすることと、1つまたは複数のストロークのグループに関する情報をアプリケーションプログラムから使用できるようにすることを含むことができる。アプリケーションプログラムから使用できるようになる「情報」は、例えば、1つまたは複数のストロークのグループうちの少なくとも1つと、第1の所定の細分度を有するいくつかのストロークのグループを示す情報と、1つまたは複数のストロークのグループのうちの少なくとも1つに対応するマシン生成テキストとを含むことができる。ストロークは、単語、行、段落、文、図などを含むグループなど、異なる種々の細分度にグループ分けすることができる。また、グループ分け動作では、ストロークを、1つを超える異なる細分度のグループにグループ分けすることができ、例えば、1つまたは複数のストロークを追加する、削除する、移動する、サイズ変更する、ないしは変更することによってインクストロークの組が変更された後で繰り返すことができる。アプリケーションプログラムコードは、解析中に使用すべき認識器を設定する、解析中に使用すべき言語を設定する、ストロークが解析される所望の細分度を設定する、インクストロークに含まれるテキストの行の期待される行間隔を設定するなど、上述の方法の操作中に種々のタイプの解析情報をパーサに提供することができる。
本発明の他の形態は、アプリケーションと、グループに分割すべきインクストロークを格納するインクディバイダオブジェクトとの間の通信を行うためのシステムおよび方法に関する。一部の例では、このシステムおよび方法は、(a)オプションでアプリケーションによってインクディバイダオブジェクトに分割要求を発行することと、(b)分割要求に応答して、格納されているインクストロークを、少なくとも第1の所定の細分度(単語、行、段落、文、図など)を有する1つまたは複数のストロークのグループにグループ分けする分割メソッドを呼び出すことと、(c)1つまたは複数のストロークのグループに関する情報をアプリケーションから使用できるようにすることを含む。分割メソッドの結果は、インク分割結果オブジェクト(ink division result object)に格納することができる。一部の例では、インク分割結果オブジェクトは、元々分割されていたインクストロークを含み(かつアプリケーションプログラムがそれにアクセスできるようにし)、異なる種々の細分度のストロークのグループを取り出せるようにする。本発明の他の例では、分割メソッドは、インクストロークに関連する所定の、あるいはあらかじめ設定されている言語特性を使用して、インクストロークのグループをよりよく規定できるよう助けることができる。
本発明のさらに別の形態は、上述で概要を述べた種々の方法を実行するコンピュータ実行可能命令を格納しているコンピュータ可読媒体に関する。本発明の別の形態は、種々のインクディバイダオブジェクト、インク分割結果オブジェクト、インク分割ユニット群オブジェクト(ink division units object)、およびインク分割ユニットオブジェクト(ink division unit object)のデータ構造を格納しているコンピュータ可読媒体に関する。
本発明のこれらおよび他の特徴および形態は、以下の詳細な説明および図面を考察することによってより明らかになる。
上述の概要、および以下の詳細な説明は、添付の図面と併せ読めば、よりよく理解されよう。添付の図面は、特許請求した本発明に関して限定的なものではなく、例示的なものとして含める。
以下の説明は、読者を助けるためにサブセクションに分割する。サブセクションは、用語、汎用コンピュータ、インクレイアウト分析および分類分析の一般的な背景、インクディバイダオブジェクトおよびAPI、インクディバイダオブジェクトおよびAPIの動作、アプリケーションプログラムインターフェース、代替のインクディバイダオブジェクト、および結論を含む。
I.用語
インク−オプションでプロパティを備える1連のまたは1組の1つまたは複数のストローク。1連のストロークは、ストロークを順序付けられた形で含むことができる。シーケンスは、捕捉された時間、またはストロークがあるページ上のどこに表示されるかによって順序付けることができる。他の順序も可能である。1組のストロークは、複数の1連のストローク、または順序付けられていないストローク、またはその任意の組合せを含むことができる。インクは、追加のプロパティ、メソッド、およびトリガイベントなどを含むように拡張することができる。
インクオブジェクト−プロパティ、メソッド、および/またはイベントを備えている、または備えていない1つまたは複数のインクストロークを格納するデータ構造。
ストローク−1連または1組の捕捉された点。例えば、1連の点は、レンダされると、線で結ぶことができる。あるいはまた、ストロークは点または次の点の方向へのベクトルとして表すことができる。簡単に言えば、ストロークは、点および/または点を結ぶものの基礎的な表現に関わらず、インクに関連する点またはセグメントの任意の表現を含むものである。
点−空間におけるある位置を規定する情報。例えば、点は、捕捉する空間(例えばデジタイザ上の点)、仮想インク空間(捕捉されたインクが表される、または格納される空間内の座標系)、および/または表示空間(表示装置の点またはピクセル)を基準にして規定することができる。
レンダ−グラフィックおよび/またはインクがどのように表示されるか、画面上か、印刷されるか、または別のデータ形式に出力されるかを決定するプロセス。
インキングセッション−アプリケーションがインクの作成または編集を開始したときからパーサ(インクディバイダオブジェクトなど)がインクストロークを検査し、解析されたインクエンティティを戻すことを要求されるまでの時間。所与のインキングセッション中にパーサを複数回呼び出すことができ、パーサの呼出の間にストロークを追加、削除、ないしは変更することができる。
II.汎用コンピュータ
図1は、本発明の種々の形態の実施に使用できる従来の汎用デジタルコンピューティング環境の例を示す概略図である。図1では、コンピュータ100は、処理ユニットまたはシステム110、システムメモリ120、およびシステムメモリを含む様々なシステム構成要素を処理ユニット110に結合するシステムバス130を含む。システムバス130は、種々のバス構造のうちの任意のものを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスなど、いくつかのタイプのバス構造のうちのどんなものでもよい。システムメモリ120は、読取り専用メモリ(ROM)140およびランダムアクセスメモリ(RAM)150を含む。
起動時などコンピュータ100内の要素間で情報の転送を助ける基本ルーチンを含むBIOS(basic input/output system)160がROM140に格納されている。コンピュータ100は、ハードディスク(図示せず)からの読出し、およびそこへの書込みを行うためのハードディスクドライブ170、取外し可能磁気ディスク190からの読出し、またはそこへの書込みを行うための磁気ディスクドライブ180、CD ROMまたは他の光媒体など取外し可能光ディスク192からの読出し、またはそこへの書込みを行うための光ディスクドライブ191も含む。ハードディスクドライブ170、磁気ディスクドライブ180、および光ディスクドライブ191は、それぞれハードディスクドライブインターフェース192、磁気ディスクドライブインターフェース193、および光ディスクドライブインターフェース194によってシステムバス130に接続されている。ドライブおよびその関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびパーソナルコンピュータ100用の他のデータの不揮発性記憶装置を提供する。動作環境の例では、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)など、コンピュータでアクセス可能なデータを格納することができる他のタイプのコンピュータ可読媒体も使用できることを、当業者であれば理解されよう。
オペレーティングシステム195、1つまたは複数のアプリケーションプログラム196、他のプログラムモジュール197、およびプログラムデータ198を含むいくつかのプログラムモジュールは、ハードディスクドライブ170、磁気ディスク190、光ディスク192、ROM140、またはRAM150に格納することができる。ユーザは、キーボード101やポインティング装置102などの入力装置を介してコマンドおよび情報をコンピュータ100に入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらおよび他の入力装置はしばしばシリアルポートインターフェース106を介して処理ユニット110に接続される。シリアルポートインターフェース106は、システムバス130に結合されているが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)など他のインターフェースによって接続することもできる。さらに、これらの装置を、適切なインターフェース(図示せず)を介して直接システムバス130に結合することもできる。モニタ107または他のタイプの表示装置も、ビデオアダプタ108などのインターフェースを介してシステムバス130に結合される。モニタ107に加えて、パーソナルコンピュータは一般に、スピーカ、プリンタなど他の周辺出力装置(図示せず)を含む。一例として、フリーハンド入力をデジタル式に捕捉するためにペンデジタイザ165および付属ペンすなわちユーザ入力装置166が設けられている。ペンデジタイザ165は、図1に示すように、シリアルポートインターフェース106およびシステムバス130を介して、または他の任意の適した接続を介して処理ユニット110に結合することができる。さらに、デジタイザ165をモニタ107から離して示しているが、デジタイザ165の使用可能なエリアは、モニタ107の表示エリアと同程度の範囲を占める。さらに、デジタイザ165をモニタ107と一体化する、あるいはモニタ107に重ねる別個の装置として、ないしはモニタ107に取り付ける装置として存在させても良い。
コンピュータ100は、リモートコンピュータ109など1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で動作することができる。リモートコンピュータ109は、サーバ、ルータ、ネットワークPC、ピア装置、または他の一般のネットワークノードとすることができ、図1にはメモリ記憶装置111のみを関連のアプリケーションプログラム196とともに示しているが、一般にコンピュータ100に関連して上述した多くの、またはすべての要素を含む。図1に示した論理接続は、ローカルエリアネットワーク(LAN)112、およびワイドエリアネットワーク(WAN)113を含む。こうしたネットワーキング環境は、有線および無線の通信システムを使用するオフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
LANネットワーキング環境で使用する場合、コンピュータ100は、ネットワークインターフェースまたはアダプタ114を介してローカルネットワーク112に接続される。WANネットワーキング環境で使用する場合、パーソナルコンピュータ100は一般に、モデム115、またはワイドエリアネットワーク113を介してインターネットなどに通信を確立する他の手段を含む。モデム115は、内蔵または外付けでもよく、シリアルポートインターフェース106を介してシステムバス130に接続される。ネットワーク式環境では、パーソナルコンピュータ100に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。
示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の技術を使用できることは理解されよう。TCP/IP、Ethernet(登録商標)、FTP、HTTPなどよく知られている様々な任意のプロトコルの存在が想定され、システムは、クライアント−サーバ構造でユーザがWebベースのサーバからWebページを取り出すことができるように動作することができる。従来の種々のWebブラウザのうちの任意のものを使用してWebページ上でデータを表示し処理することができる。
図2は、本発明の種々の形態とともに使用できるペンベースまたはスタイラスベースのコンピューティングシステム201の一例を示している。図1のシステムの任意またはすべての特徴、サブシステム、および機能を図2のコンピュータに含めることができる。ペンベースのコンピューティングシステム201は、複数のウィンドウ203が表示される、液晶ディスプレイ(LCD)画面など、例えばデジタル化フラットパネルディスプレイなどの大きい表示面202を含む。スタイラス204を使用して、ユーザは、デジタル化表示面202上で選択、強調表示、および/または書込みを行うことができる。適切なデジタル化表示面202の例には、MutohやWacomのペンデジタイザなどの電磁ペンデジタイザがある。他のタイプのペンデジタイザ、例えば光デジタイザを使用してもよい。ペンベースのコンピューティングシステム201は、スタイラス204を使用して示されたジェスチャを解釈してデータを処理し、テキストを入力し、作図し、および/またはスプレッドシート、文書処理プログラムなど従来のコンピュータアプリケーションタスクを実行する。
スタイラス204は、1つまたは複数のボタン、またはその選択能力を増大させる他の特徴を備えることができる。一例では、スタイラス204は、一端が筆記要素を構成し、もう一端が「イレーザ」端を構成する「鉛筆」または「ペン」として実装することができる。消しゴムのように表示を横切ると、イレーザは消去すべき表示の部分を示す。マウス、トラックボールなど他のタイプの入力装置を使用してもよい。さらに、ユーザ自身の指をスタイラス204とし、その指を使用してタッチセンシティブディスプレイまたは近接センシティブディスプレイ(proximity−sensitive display)上の表示画像の一部を選択し、あるいは示すこともできる。したがって、「ユーザ入力表示」という用語は、本明細書で使用する場合、広範な定義を有するものとし、スタイラス204など、よく知られている入力装置に対する種々の変形を含む。領域205は、スタイラス204がどこで表示面202に接触しているかをユーザが判断することができるフィードバック領域または接触領域を示す。
本発明の例によるアプリケーションプログラムインターフェースおよびシステム、および方法を、図2に関連して上述したような電子インクおよびインクストロークを受け付け、処理するペンベースのコンピューティングシステムとともに使用することができる。
III.インクレイアウト分析および分類分析の一般的な背景
A.インク分析システムおよび方法全体の概要
本発明の理解を助けるために、インク「レイアウト分析」およびインク分類分析(「インク解析」とも呼ぶ)に関するいくつかの背景情報の再検討を行うことが有効である。本発明から逸脱することなく任意の適したデータ処理システムおよび方法を使用することはできるが、本発明の一部の例では、例えば2002年5月14日出願の米国特許出願第10/143,865号に記載のもの(例えば、特許文献1参照)などのレイアウト分析システムおよび方法を使用することができ、また本発明の一部の例では、2002年5月14日出願の米国特許出願第10/143,864号に記載のもの(例えば、特許文献2参照)などの分類分析システムおよび方法を使用することができる。一般に、インクの解析は、本発明から逸脱することなく任意の適したやり方で行うことができる。
図3は、本発明の一部の例においてインクを解析し、分割するシステムおよび方法全体の一例を概して図示する概略図である。図3の例において、入来または入力されるインクストローク300は、まずレイアウト分析手順302の対象となる。これは、入力インクストローク300を組み合わせ、解析して、単語、行、段落(またはブロック)、および/または他のグループ304など関連するストロークの組にする。一般に、レイアウト分析方法またはシステム302は、あるページ上のインクストローク300のサイズおよびレイアウトに関連するある情報を確認し、サイズ、レイアウトなどに基づいていくつかのストロークを一緒にする。こうしたシステムまたは方法の例は、図5、図6A、および図6Bと併せて詳しく説明する。
レイアウト分析302の後、データを、他の種々のインク分析エンジンに挿入することができる。図3に示すシステムの例では、データは次に、分類分析システムまたはエンジン306に挿入される。この分類分析システムまたはエンジン306は、特定の入力データに含まれるストロークのタイプ(個々のストロークまたはストロークの組がフロー図、自由形式の図、手書きのテキスト、音楽、数学、チャート、グラフなどであるかどうか)を決定する。本発明の一部の例では、要望に応じて、ユーザは、(例えばブロックまたはラッソ選択(lasso select)および割当手順を使用して)「描画モード」、「テキストモード」などを選択する、あるいは特定のストロークタイプを1つまたは複数のストロークに割り当てることによって、入力ストロークのタイプなどについてシステムに「通知する」ことができる。
入力インクのさらなる処理は、分類分析システムまたはエンジン306によって認識される(ないしは決定される)ストロークタイプによって決まる。例えば、手書きのテキストとして分類されるストロークまたはストロークの組の場合、そのように分類されたストロークの組を、手書き認識システム310、または別の適切な処理システムに送信することができる。必要に応じて、または要望に応じて、手書き認識システム310または他の処理システムに挿入する前に、正規化アルゴリズムまたはシステム308を使用して入力インクデータを「正規化」して、入力インクデータを手書き認識システム310または他の処理システムによる分析に最適な向きに配置することができる(例えば、必要に応じて斜めの入力テキストストロークを水平方向の基準線に対して回転させる)。従来の正規化システムまたは方法308、および/または手書き認識システムまたは方法310を、本発明から逸脱することなく(必要に応じて、および/または要望に応じて)使用することができる。手書き認識システムまたは方法310から出力されたデータは、従来の文書処理システム(Microsoft WORD(登録商標)など)、電子メール処理システム、カレンダ、スケジュール表などで従来の任意のやり方で使用可能なマシン生成テキスト(行、単語、段落など)を構成し、またはそれにつながる。
別の例として、図3で図示したように、分類分析エンジン306が入力ストロークまたはストロークの組を描画ストロークを含むものと認識した場合、次いでこのデータは、注釈認識システムまたは方法314に転送される。注釈認識システムまたは方法314は、例えば図中のテキスト情報の認識に使用することができる。任意の適したやり方で、処理をさらに進めることができる。例えば、要望に応じて図を「クリーンアップ」して、手書きの注釈をマシン生成テキストと置き換え、また手書きの図の線または形状(円、三角、四角など)をマシン生成要素と置き換えることなどができる。また、図(手書きバージョンまたはその後のマシン生成バージョン)を、本発明から逸脱することなく任意の適したプログラムまたはシステムに挿入することができる。
本発明の一部の例で使用する分類分析システムおよび方法306は、本発明から逸脱することなく、他の特定の書き物や図のタイプを認識することもできる。例えば分類分析システムは、本発明から逸脱することなく、入力ストロークの組を、音符、数学的情報(式、数学記号(+、−、=、%、x、sin、cos、tanなど)など)、表、チャート、グラフ、フロー図、概略図、線画、スケッチ、いたずら書きなどを含むものとして認識することができる。こうしたストロークの組がある場合は、それらを、本発明から逸脱することなく、より特化された認識システム、および/または他の適した処理アプリケーションに送信することができる。
図3と併せて説明した一部またはすべての機能を、ユーザが電子ページまたは電子ドキュメント上に完全にすべてのインクを入力した後(例えば「save」、「parse」、「close」、または「recognize」コマンドなどユーザのコマンドの後)で入力インクデータに対して実行することができる。しかし、一般のレイアウト分析および手書き認識分析の実行にコンピュータ処理時間が必要であるために、処理がこれほど非常にごくまれに、特別な方式で行われる場合、ユーザは、かなりの遅延を経験することがある。こうした処理遅延は、特に、電子ドキュメントが長い、あるいは大量のインクを含んでいる場合、次の所望の操作(例えば、さらにインクを入れる、次のページに進む、印刷する、新しいドキュメントまたはアプリケーションを開くなど)に進む前に、コンピュータシステムがその分析を完了させるのを待っているユーザがフラストレーションを起こすほど長く続くことがある。
本発明の少なくとも一部の例によるシステムおよび方法によって、ユーザがペンベースのコンピューティングシステムを(例えばページ上でインクストロークを入力する、および/または変更するために)使用し続けている間に、ペンベースのコンピューティングシステムが、レイアウト分析302、分類分析306、手書き認識分析310などの種々の分析を漸進的に、リアルタイムに行うことができるようになる。さらに、本発明によるシステムおよび方法の一部の例では、種々のパーサエンジンが背景スレッドでアプリケーションデータ構造の「スナップショット」に対して作用し、ユーザがインクを入力するためにアプリケーションデータ構造を使用できない時間を最低限に抑えるようにする(「アプリケーションデータ構造」という用語は、本明細書で使用する場合、アプリケーションプログラムとともに使用するデータ構造を意味する)。本発明から逸脱することなく任意の適した漸進的データ分析システムおよび方法を使用することはできるが、適したシステムおよび方法の例が2002年5月14日出願の米国特許出願第10/143,804号に記載されている(例えば、特許文献3参照)。
B.レイアウト分析および分類のためのシステムおよび方法の例の説明
図4は、本発明を実施するのに有用なシステムの一例を示す概略図である。図示したように、システム全体410は、パーサ422を含む、またはそれと通信するアプリケーションシステムまたはプログラム420を含む。システム全体410は、図2で図示したようなペンベースのコンピューティングシステムで具現化することができる。ユーザ400は、インクストロークをシステム410に入力し(あるいはインクストロークがメモリや外部ソースなどからダウンロードされ)、インクストロークは、アプリケーションプログラム420によって、例えば(図6Aおよび図6Bに示すようなドキュメントツリーデータ構造402と考えることもできる)アプリケーションデータ構造402で格納される。パーサ422が動作している間にユーザ400が引き続きドキュメントツリーデータ構造402に変更を行うことができるように、パーサ422はミラーツリーデータ構造404を含んでいる。(例えばユーザ400やパーサ422によって、あるいは別のソースから)ドキュメントツリーデータ構造402に加えられる変更は、すぐにミラーツリーデータ構造404に渡され、その結果ミラーツリーデータ構造404がドキュメントツリーデータ構造402の内容を全体的に「ミラーする」。
ミラーツリーデータ構造404を使用して、パーサ422内の2つの分析エンジン406および408に入力データを供給する。図4に示す例では、一方の分析エンジンはレイアウト分析エンジン406(例えば図3と併せて上述したように、レイアウト分析302を実施することができる)、もう一方は認識エンジン408である(例えば、図3と併せて上述したように、手書き認識分析310および/または注釈認識エンジン314を実施することができる)。エンジン406および408は、ミラーツリーデータ構造404の「スナップショット」424および426を入力データとしてそれぞれ受信し、ドキュメントツリーデータ構造402またはミラーツリーデータ構造404に対して直接作用するのではなく、これらの「スナップショット」424および426に対してバックグラウンドで作用する。このようにユーザ400は、種々のパーサ分析エンジン406および408も動作している間に、アプリケーションプログラム420内のドキュメントツリーデータ構造402に対して引き続き操作を行う(インクの追加、インクの削除、インクの変更など)ことができ、エンジン406および408はデータに対して作用するため、ユーザ400は、操作の大幅な中断(処理遅延など)を経験しなくてすむ。
一部の例では、「スナップショット」424および426を生成するために、既存のスナップショットデータ構造をミラーツリーデータ構造404と比較することができる。両者の間の違いに注目し、スナップショット424または426をミラーツリーデータ構造404と同期させるために最低数の操作が行われる。このように、スナップショットの作成時にデータの最小の書き直しが行われて(例えば前のスナップショットから変更されていないデータは書き換えられない)、パーサ422の動作の高速化を助ける。
パーサエンジン406および408の出力は、変更済みまたは修正済みのデータ構造となり得る。例えば、レイアウト分析エンジン406が、図5に示したものに似ている場合、レイアウト分析エンジン406の出力は、関連する単語、行、段落などにグループ分けされる別個のインクストロークを含むデータ構造となり得る。このタイプのレイアウト分析エンジンの動作を以下でより詳しく説明する。同様に、パーサエンジン408が手書き認識システム310である場合、出力は、インクストロークをマシン生成テキストに結び付ける情報またはデータ構造を含んでいてもよい。
パーサエンジン406および408がスナップショット入力データ424および426に対する操作をそれぞれ完了すると、それぞれ矢印428および430で示すように、その結果得られる情報がアプリケーションプログラム420に送り返される。しかし、上述したように、ユーザ400は、パーサエンジン406および408がスナップショット424および426に対する操作を行っている期間中にドキュメントツリーデータ構造402を変更することができる。したがって、ドキュメントツリーデータ構造402に戻ってパーサ分析エンジン結果を書き込む前に、パーサ422は、オプションでミラーツリーデータ構造404を使用して、現在アプリケーションプログラム420内にあるドキュメントツリーデータ構造402を(ユーザの変更を含めて)、パーサエンジン406および408によって送信された修正済みのドキュメントツリーデータ構造と比較する。ユーザ400が、ドキュメントツリーデータ構造402に、パーサエンジン406および408からの修正済みのドキュメントツリーデータ構造402に含まれていない変更を(1つまたは複数のストロークを追加する、削除する、移動する、サイズ変更する、ないしは変更するなどによって)加えた場合、あるいはユーザがドキュメントツリーデータ構造402に(ストロークを追加する、削除する、ないしは変更するなどによって)加えた変更によって、パーサエンジン406および408によって加えられたデータ構造への変更の意味が失われる、あるいはそれと対立する場合、アプリケーションドキュメントツリーデータ構造402は、ユーザの加えた変更と対立しないパーサ分析エンジンによって加えられた変更のみを含むように修正される(ユーザの加えた変更は、パーサの加えた変更に優先する)。また、データ書込み時間(およびユーザ400が経験する関連の中断)を短縮するために、既存のバージョンから変更されたドキュメントツリーデータ構造402の一部のみが変更、または書き換えられる。このように、アプリケーションプログラム420内に存在する最終的に修正されたドキュメントツリーデータ構造402は、パーサエンジンがユーザによる変更と矛盾しない、あるいはユーザが加えた変更より優先しない変更を加えている限り、ユーザ400が加えたすべての変更、および前のパーサエンジン分析の結果を含む。
ドキュメントツリーデータ構造402がユーザ400およびパーサエンジン406および408によって最終的に変更可能な共有データを含んでいるため、パーサによって加えられた変更を含むようにドキュメントツリーデータ構造402が書き換えられている間、ユーザ400は、新しいデータをドキュメントツリーデータ構造402に入力することはできない。ユーザ400がそれを試みると、本発明によるシステムおよび方法は、こうした試みを任意の適したやり方で処理することができる。修正済みアプリケーションドキュメントツリーデータ構造402がデータ入力に対して利用できるようになるまで、例えば、新しいストロークまたは変更を無視する、あるいは一時バッファメモリに格納することができる。しかし、本発明のこの例によるアプリケーションプログラム420のドキュメントツリーデータ構造402は一般に、システムがデータ構造402の変更された部分を書き換えている間のみ使用できないため、使用できない期間は一般に非常に短く、ユーザは気づかないことが多い。
ドキュメントツリーデータ構造402が(ユーザおよび/またはパーサエンジンが加えた変更も含めて)書き換えられ、あるいは変更されると、ミラーツリーデータ構造404が書き換えられたまたは変更されたドキュメントツリーデータ構造402をミラーするように更新され、パーサエンジン406および408は、(必要に応じて)それらの分析を繰り返すことができる。好都合なことに、一部の例では、パーサエンジン406および408が最近変更されたドキュメントツリーデータ構造の一部分のみ(および最近の変更によって影響を受けた任意の部分)に対する操作を行って、処理時間を短縮させる。パーサエンジンの動作をユーザのデータ入力と同時に漸進的に更新することによって、パーサ422は、ユーザのデータ入力に概ねついていくことができ、それによってユーザが気づく処理遅延を最低限に抑えることができる。
上述したように、本発明の一部の例では、変更が行われたデータ構造の一部(およびこれらの変更によって影響を受けたすべてのエリア)に処理を限定することによって処理時間を短縮することができる。ユーザ入力または以前のパーサエンジンの動作がデータ構造の一部に影響を与えていない場合、パーサエンジンは、これらの同じ部分を再度分析する必要はない(またおそらく同じ結果に帰着する)。例として、一部の例によるシステムおよび方法は、変更の所定の距離内にあるデータ構造の任意の部分を再分析することができる。例えば、再分析は、任意の変更の行およびその変更の付近の1つまたは2つの任意の行、変更の付近のあらかじめ選択された半径の円内にある任意のストローク、変更を含む任意のテキストのブロック(以下で詳述)などを含み得る。以下で、これらの特徴を利用したパーサの例についてより詳しく説明する。
C.解析中に行われる処理の例
本発明の例によるシステムおよび方法で分析または処理されるデータは、任意の適した形または構造を呈する。例えば、図3に示した1つの手順では、インクレイアウト全体および入力インクから得られた統計に基づいていくつかの個々のストロークをグループ分けし、または関連付ける、レイアウト分析エンジン302による一連の決定の結果、入力インクデータの個々のストローク300が組み合わされて1つのデータ構造になる。レイアウト分析エンジン302は、インクストロークの階層的なグループをページ上に提供し、これによってグループにわたるグローバルな統計計算が可能になる。最初のストロークグループ分けの決定は、インクストロークのグループが小さい場合(例えば、個々のインクストロークを表す小さいグループまたはストロークの相対的に小さい組合せ)は、ローカルなレイアウト関係に基づいて、控えめである。後のストロークグループ分けの決定は、より大きい統計サンプルサイズがより大きいインクストロークグループ(例えば、より長い行にわたるストロークサイズ、相対的なストローク間隔、行の角度など)から収集されるため、より積極的に行うことができる。入力インクデータを数回通過して、ストロークをマージさせて、入力インクストロークの単語、行、および/またはブロック304などストロークの組を形成するかどうかを決定する、積極的な決定を徐々に行えるようにしてもよい。
図5は、本発明の一部の例に使用するデータ構造の生成および/または変更に有用なインクレイアウト分析パーサエンジン、システム、または方法302の一例に含まれるステップまたは解析エンジンの概略を示している。本発明の一部の例によるシステムおよび方法にデジタルインクを入力する際にユーザに提供される自由度が非常に高い(例えば、ユーザはデジタイザ入力画面上のどこにでも、任意の向きで、いつでも、所望のストロークサイズを使用して書き込むことができる)ため、図5のレイアウト分析手順302が開始するとき、入力データの適切なレイアウト、向き、またはタイプ(例えば入来入力データ500がテキスト、図、数学、音楽、フロー図、チャート、グラフなどであるか否かなど)の決定に使用可能な事前情報はない。図5の要素502は、このレイアウト分析手順の開始時に、可能な入力データ構造500のタイプの1つの概略的なグラフィカル表現を提供する。グラフィカル表現502は、図6Aの解析ツリーデータ構造により詳しく示している。一般に、(例えばユーザが引き続きインクストロークをペンベースのコンピューティングシステムに入力すると同時に)レイアウト分析手順302が開始するとき、システムは、所与のページ(または所与のドキュメント内)P608のすべてのストロークS600を別個の単語W602として扱い、すべての単語W602が別個の行L604として扱われ、すべての行L604が別個のブロックB606(または段落)として扱われる。レイアウト分析エンジン302は、一緒に、ストロークの関連付けまたはマージのタスクを行い、関連するインクデータの適切な単語、行、およびブロックを含むストロークの組を形成する。任意の適したレイアウト分析エンジンを本発明とともに使用することはできるが、図5の例について以下でより詳しく説明する。
例示したレイアウト分析エンジン302のこの説明では、「単語」、「行」、「ブロック」などの用語を使用しているが、これらの単語は、本明細書のこの部分では、便宜上、1つまたは複数の関連するストロークまたはストロークの組を表すために使用する。レイアウト分析302が本発明の少なくとも一部の例で最初に行われる時点で、個々のストロークまたはストロークの組が文書、図、音楽などを構成しているかどうかに関する最終的な決定はなされていない。また、上述の説明は「ページ」という用語を使用しているが、所与の電子ドキュメントを1ページずつ解析する必要はない。例えば、本発明から逸脱することなく、電子ドキュメントの「ブロック」または「段落」がドキュメントの2枚または3枚以上のページをまたぐこともあり得る。
本発明のこの例によるレイアウト分析エンジン302は、各パス(または各解析エンジンの動作)中、ストロークまたは行のマージ動作は起こるが分割は起こらないように、しきりに動作する。さらに、エンジン302は、望ましくないマージ動作を遡り、訂正する必要がないように適切なテストおよび許容度で行うことができる。
レイアウト分析エンジン302の動作の結果、電子ドキュメントの個々のストローク600が組み合わされて、適切な場合、単語W、行L、およびブロックB(または段落)を含む関連するストロークの組になる。図6Bは、レイアウト分析エンジン302からのデータ出力504の可能なデータ構造のグラフィカル表現506を図示している。図6Aと6Bとの比較から明らかなように、ページ(またはドキュメント)608は、全体的に同じストローク情報を含んでいるが、いくつかのストロークS600が、一緒に組み合わされ、または関連付けられて単語W610を形成し、いくつかの単語W610が、一緒に結合されて図6Bのデータ構造の行L612を形成する。当然、単語W610は、任意の数のストロークS600を含むことができ、同様に行L612は、任意の数の単語W610を含むことができる。また、図6Bの特定の解析ツリーの例には示していないが、2つまたは3つ以上の行612を一緒に結合させてブロックB614(または段落)を形成することもできる。
ドキュメント内のインクの構造の規定を助けることに加えて、解析ツリーにおける種々のノード(図6Bのノード600、610、612など)を使用して、ツリーの種々のレベルに関する空間情報を格納することができる。例えば、各行レベルノード612は、行のストローク、行の各ストロークの凸包、および/または他の任意の所望の情報を構成するすべての点の回帰線/適合線を格納することができる。また、解析ツリーデータ構造は、種々の基本操作を、それに含まれるストローク、単語、行、およびブロックに対して適用することによって変更することができる。適切な操作には、追加、削除、マージ、分割、および親の変更などがある。より複雑な操作を、これらの基本操作を使用して構成することができる。こうした操作は、データ構造ツリーに対して行われるので、異なるノードレベルで維持される統計は、新しい構成に対応するように自動的に更新される。
図5は、本発明の一部の例に有用な、適したレイアウト分析エンジン302の一例を示す概略図である。この例では、レイアウト分析手順302の第1のステップは、時間的行グループ分けステップ508である。これは一般に、時間的に隣接するストローク(すなわち連続的に書かれたストローク)の特徴を比較し、適切な場合はそれらを「行」として組み合わせる。時間的行グループを時間的に隣接する2つまたは3つ以上のストロークから作成すべきか否かを決定する際に、ストロークサイズ、ストローク間の間隔、ストローク角度など、種々の要因を考慮に入れることができる。この時間的行グループ分けステップ508が終了すると、分析302の次のステップ、空間的ブロックグループ分けステップ510は、ステップ508で形成された物理的に隣接する時間的行グループを比較し、近接して配置される時間的行グループを空間的ブロックとして互いに組み合わせる。空間的ブロックグループを隣接する時間的行グループから作成すべきかどうかを決定する際に、ストロークサイズ、ストローク間の間隔、ストローク角度など、様々な要因を考慮に入れることができる。
(ステップ508で)時間的にグループ分けされた行は、適切な場合、空間的行グループ分けステップ512でオプションで空間的ブロックの関係または向きを考慮に入れてさらにグループ分けすることができる。この空間的行グループ分けステップ512では、行の空間的関係に加えて、行の角度、ストロークサイズなどの要因を考慮に入れることはできるが、もう1つのストロークと比較したあるストロークの時間を考慮に入れる必要はない。また、上述の空間的ブロックグループ分け手順510の結果は、空間的行グループが2つの既存の時間的行グループの間に作成されるべきか否かを決定する際の一要因として使用することができる。
空間的行グループが完成すると、次いでこの例によるレイアウト分析手順302は、例えばストローク間の間隔、行の向き、ストロークサイズなどの要因に応じて、行グループ内の個々のストロークを組み合わせて1つまたは複数の空間的単語グループ516にする。その結果得られた出力504は、図6Bと併せて説明したようにストロークが単語、行、ブロックにグループ分けされた状態のデータ構造506となり得る。
また、図5では、レイアウト分析302の一部として使用できるオプションの解析エンジンまたはステップを破線内に示している。このオプションのステップは、「リスト検出」514と呼ばれる。多くの場合、表を書くときに、数字、文字、または黒丸の(縦方向の)列を書き、次いで(横方向に)リスト要素を記入する傾向にある。また別のときには、表の内容を書き上げ、次いで後で縦方向の列の数字、文字、黒丸を加える。このリスト決定エンジン514は、(例えば、時間的行グループの向きおよびタイミングを調べることによって)こうした空間的状況を検出し、リストの数字、文字、または黒丸のストロークを対応するリスト要素テキストに結び付けることができる。
この例示のインク分析エンジン302(図5)における様々なステップは、本発明から逸脱することなく順序を変更したり省略したりすることができる。例えば、要望に応じて、空間的行グループ分けステップ512を空間的ブロックグループ分けステップ510の前に行っても良い。
レイアウト分析エンジン302からの出力データ504を、例えば図3に示す分類エンジン306など任意の適したやり方で使用することができ、データはそこから別の適切な処理エンジン(注釈認識314、手書き認識310など)に進むことができる。レイアウト分析エンジン302、またはレイアウト分析エンジン302および分類エンジン306の組合せによって、図4と併せて示したパーサエンジン406を形成することができる。
当然、本発明は、レイアウト分析エンジン、または特定のタイプの任意の分析エンジンでの動作に限定されるものではない。個々のストロークをグループ分けし、または関連付けて適切なデータ構造にするのに適した他のエンジンまたは手順、または他の任意の所望の分析を、本発明から逸脱することなく行うことができる。また、要望に応じて、ユーザは、処理の前に、(例えば線を引くまたは縄で囲む、強調表示する、ないしは一緒に関連付けるべき入力データストロークを選択することによって)いくつかのストロークを常にグループにまとめるようシステムに指示することができる。
IV.インクディバイダオブジェクトおよびAPI
A.概要
本明細書では引き続き、特定の例、つまりInkDividerオブジェクトを含めて、本発明によるパーサおよびアプリケーションプログラムインターフェースの例の詳細な説明を行う。本発明によるシステムおよび方法の1つの機能(例えばInkDividerオブジェクト)は、アプリケーションによって提供されたインクストロークを集め、これらのストロークを指定された細分度の解析済みエンティティ(単語、行、文、段落、図など)に分割することである。適切な解析を行わなければ、電子インクは、非常に粗すぎる(すなわちグループ分けされていないストロークが大量にある)か、単一のインクオブジェクトとしてまとめられるかのいずれかの傾向にあり、特に個々のインクストローク、またはインクストロークの小さいグループの場合、所望の移動、選択、スケール変更、および他の操作を行うことが難しい、または不可能になる。本発明によるシステムおよび方法では、例えばインクディバイダオブジェクトおよびAPIを含み、解析技術および結果を開発者界に公開し、それによってコードライタが新しいアプリケーションのコードを書くときに解析エンジンの結果を駆使し使用できるようにする。
一般に、インキングセッション中、あるやり方では、インクストロークがそのアプリケーションに存在するインクストロークの集まりに追加される、および/またはそこから削除される。さらに、インキングセッション中、インクストロークの集まり内にある既存のストロークを移動する、サイズ変更する、部分的に削除する、および/ないしは変更することができる。
インキングセッションが終了したとき(およびオプションでインキングセッションが行われている間に漸進的に終了したとき)、動作しているアプリケーションプログラムは、ストローク(少なくとも前のパーサの呼出以降の新しいストロークおよび/または変更されたストローク、および/または新しいおよび/または変更されたストロークによって影響を受ける任意のストローク)をストロークの組または異なる細分度のグループに処理する、パーサ(例えばInkDividerオブジェクトに含まれる)を呼び出す。一般にパーサが呼び出されると、アプリケーションプログラムは、インクストロークをパーサに提供し、戻されたある情報を受け取る。一部の例では、戻された情報は、分割された元のストロークを識別するバックポインタを含む。本発明の一部の例によるシステムおよび方法は、指定された細分度のストロークの所望の集まりを取り出すメソッド(この例で「ResultByType」と呼ばれる)も提供することができる。例えば、アプリケーションプログラムは、分割結果に問合せを行い、所望の細分度タイプ(単語、行、ブロック、図など)に応じて異なる解析細分度のユニットを得ることができる。また、解析結果は、必要に応じて、および/または要望に応じて、手書き認識器にこのデータを送り込む前に水平方向の基準線に対して斜めの書き物を修正する目的で基準線の概念を有していてもよい。これを、例えば、コードライタが回転行列を使用できるようにすることによって達成することができる。
とりわけ、個々のインクストロークは、複数のインクストロークの集まりまたは異なる細分度グループに属していてもよく、例えば、ストロークは、「単語(Word)」の一部、および「段落(Paragraph)」の一部とすることができる。
この一般的な背景および概要を念頭において、本発明によるインクディバイダオブジェクトおよびAPIの例の種々の特徴を以下でより詳しく説明する。以下の説明のほとんどは、特定のインクディバイダオブジェクトおよびその関連のオブジェクト、プロパティなどに関連するが、本発明から逸脱することなく以下の特定の実装に種々の変更を加えることができることを当業者であれば理解されよう。
B.インクディバイダオブジェクト
図7は、本発明の一部の例に有用なInkDividerオブジェクト700の例の内容を概略的に示している。この例では、InkDividerオブジェクト700は、2つのプロパティ702、すなわちStrokesプロパティ704およびRecognizerContextプロパティ706を含む。このInkDividerオブジェクト700の例は、1つのメソッド708、すなわちDivideメソッド710も含む。
Strokesプロパティ704は、Divideメソッド710の対象となるインクストロークの集まりを戻す、および/または設定する。ストロークは一般に、使用されているアプリケーションプログラムによってStrokesプロパティ704に送信されて、Strokesプロパティ704のストロークの集まりにどのストロークを追加するか、および/またはそこからどのストロークを削除するか、および/ないしはその中のどのストロークに変更を加えるかが決定される。これを図7に矢印712で概略的に図示しており、これは、アプリケーションプログラムによって送信された(ないしは任意の適切なおよび/または望むやり方でStrokesプロパティ704に送信された)入来ストロークを表す。またストロークは、例えばインク挿入アクション、インク貼り付けアクション、インク切り取りまたは削除アクションなど、任意の適したやり方で最後のユーザによってStrokesプロパティ704に追加する、および/またはそこから削除することができる。要望に応じて、Strokesプロパティ704に送信されたストローク情報は、色など、インクストロークのすべての特徴およびプロパティを含んでいる必要はない。むしろ、要望に応じて、解析に関するインクストロークの特徴またはプロパティのみを送信することで十分である。
Strokesプロパティ704の入出力データは、以下の形式をとり得る。
[propputref]HRESULT Strokes([in]InkStrokes* Strokes)
[propget]HRESULT Strokes([out,retval]InkStrokes** Strokes)
RecognizerContextプロパティ706は、InkDividerオブジェクト700とともに使用する、および/またはそれに関連付けられるべき認識器を戻す、および/または設定する。このプロパティ706は、所望の解析操作がソフトウェアまたはアプリケーションプログラムが稼働しているシステムのデフォルトの言語とは異なる言語に基づく手書きテキストの認識を含む可能性があるため、本発明の少なくとも一部の例で有用である。例えば、ペンベースのコンピューティングシステムでは、そのオペレーティングシステムおよび/またはキーボードのデフォルトの言語が英語である。しかし、コンピュータユーザが二カ国語を使える場合、または別のユーザがコンピュータを使用する場合、いくつかの場合に、英語以外の言語で書き込む、またはメモすることがある。デフォルトの英語の手書き認識器がそのシステムで使用可能な唯一の選択肢である場合、このことによって認識器が英語以外の手書きテキストを認識しようと試みるので結果としてエラーになる可能性がある。例えば音符、数式および数学記号、図の特徴などを認識する特化された認識器など、他の特化された認識器もアプリケーションコードによって設定することができる。コードライタが異なる手書き認識器(異なる言語用の認識器を含む)を設定し、および/または使用できるようにすることによって、その結果得られる手書き認識結果を向上させることができる。図7に矢印714で、所望の手書き認識器を設定するコードライタの能力を示している。
本発明の一部の例では、RecognizerContextプロパティ706は、デフォルトでは「ヌル」値となり得る。これは、これらの例では、コンピュータのオペレーティングシステムのデフォルトの言語を手書き認識言語として使用し、および/または別の認識器を指定するようにRecognizerContextプロパティ706が変更されない限りおよびそれまでオペレーティングシステムに提供された認識器が認識器として使用されることを意味する。デフォルトまたは「ヌル」の言語値は、最初のシステムのセットアップ中に設定された「キーボード」デフォルトローカルIDに対応する。このデフォルトまたはヌルの入力の特徴を、図7に「NULL」とラベル付きの矢印716で示している。
RecognizerContextプロパティ706の入出力データは、以下の形式をとり得る。
[propputref]Recognizer([in]InkRecognizer* Recognizer)
[propget]Recognizer([out,reval]InkRecognizer** Recognizer)
動作中、本発明の少なくとも一部の例では、パーサは、インクストロークに関連する空間的および時間的メタデータに基づいて手書きテキストにおける単語の境目の決定時に第1のパスを試みる。これは、例えば、図5と併せて概説した時間的行グループ分け、空間的ブロックグループ分け、および空間的行グループ分けのステップを含む。これらの解析操作は比較的迅速に行うことはできるが、その結果には一般に、手書き認識器、およびその関連の言語モデルに関連付けられた精巧さおよび精度は含まれない。したがって、本発明の一部の例で、手書き認識器を使用して、テキストの各手書きの「行」で第2のパスを行い、よりよく単語の境目を識別するために手書き認識器に関連付けられている辞書を使用して単語間の境目を正確に識別する。また、認識器は、手書きテキストをマシン生成テキスト(例えば文書処理プログラム、電子メール、電子カレンダ、およびスケジュール表などに適した形式)に変換することもできる。
また図7は、この例におけるInkDividerオブジェクト700の一部を構成するDivideメソッド710を示している。このメソッド710は、RecognizerContextプロパティ706によって設定(矢印720)された認識器を使用して関連するストローク(Strokesプロパティ704から取得。矢印718参照)を分割または解析する。Divideメソッド710は、インク分割(または解析)の結果を含むInkDivisionResultオブジェクト800を生成し、戻す。InkDivisionResultオブジェクト800の生成および戻しを、図7に矢印722で示している。Divideメソッド710の使用可能な出力データ形式の一例は、次の通りである。
HRESULT Divide([out, retval]InkDivisionResult** divisionResults)
本発明の少なくとも一部の例では、Divideメソッド710が同時に実行され、または呼び出され、アプリケーションプログラム中のドキュメントに別のインクが追加され、そこから削除され、ないしはそこで変更される。本発明によるシステムおよび方法の別の例では、Divideメソッド710は、Strokesプロパティ704を介して提供されるストロークに対してバックグラウンドスレッドで動作し、解析操作のすべてが完了するまでInkDivisionResult800を戻さない。バックグラウンドスレッドで動作することによって、また別のストロークの入力または変更に影響を与えることがなければ、多くの場合、Divideメソッド710の使用は、ペンベースのコンピューティングシステムユーザにまったくまたはほぼトランスペアレントであり、また大幅な処理遅延をもたらさない。
Divideメソッド710が呼び出されるたびに、新しいInkDivisionResultオブジェクト800が作成される。これによって、Divideメソッド710が呼び出されるときにインク解析ツリーデータ構造(図6B参照)のスナップショットが有効に捕捉される。本発明の少なくとも一部の例で、アプリケーションプログラムの責任は、各InkDivisionResultオブジェクト800(以下で詳述)のStrokesを比較して、解析結果がDivideメソッド710の異なる呼出の間に変わったか否かを決定することである。
当然、本発明から逸脱することなく、インクディバイダオブジェクトは、図7に示した特定のメソッドおよびプロパティに加えて、および/またはそれらの代わりに、および/またはそれらと組み合わせて、メソッド、プロパティ、および/または要素を含むことができる。一例として、インクディバイダオブジェクトはさらに、「行間隔」プロパティを含むことができる(あるいはまた、行間隔プロパティを別のオブジェクトに関連付ける、または任意の適したやり方で提供することができる)。行間隔プロパティによって、コードライタは、入力時にテキストの行に期待される行間隔を設定することができるようになる。このように、解析中、レイアウト分析システム、および/または分類分析システム(またはパーサ内の他のシステム)は、テキストの行と図や図表との間を区別する際に、この期待される行間隔情報を使用し、よりよく働くことができる。パーサにこの行間隔の基準を与えることによって、複数行(段落の向き)、または単一行を図からより有効かつ効率的に区別することができる(例えば図の行は、一般に手書きの単一行より高い)。
手書きの行の期待される行間隔サイズへの制限は必要ないが、本発明の一部の例では、システムおよび方法は、ある範囲内の期待される行間隔を受け付ける。当然、期待される行間隔のこの範囲は大きく異っていてよい。本発明の一例では、期待される行間隔は、最小間隔100デジタイザピクセル、最大間隔50000デジタイザピクセルの範囲内でなければならない。デフォルトの間隔は1200ピクセルである。コードライタが期待される行間隔をこの範囲外に設定しようと試みた場合、行間隔プロパティは、エラーメッセージを戻す。あるいはまた、行間隔プロパティは、エラーメッセージを戻すことなく、関連の最小値または最大値に自動的に入力行間隔を変更する(例えば、アプリケーションプログラムコードが値を50003に設定しようと試みた場合、50000の行間隔値を自動的に設定する)。もう1つの代替として、有効な範囲外に行間隔値を設定しようと試みることによって、値が単に無視される(そして直前の行間隔値またはデフォルト値に戻る)。
出力の際に、行間隔プロパティは、アプリケーションプログラムに行間隔プロパティの直前の設定値を伝える、あるいはあらかじめ値が設定されていなかった場合はデフォルトに戻る。
一例として、本発明のこの例による行間隔プロパティの入出力データは、以下の形式をとり得る。
HRESULT[propput]LineHeight([in]Long LineHeight)
HRESULT[propget]LineHeight([out,retval]Long* LineHeight)
C.インク分割結果オブジェクト
図8は、本発明の一部の例によるInkDivisionResultオブジェクト800を図示している。上述したように、InkDividerオブジェクト700のDivideメソッド710は、選択されたRecognizerContextプロパティ706に基づいて(Strokesプロパティ704から得られた)ストロークの集まりを解析し、InkDivisionResultオブジェクト800を作成する。InkDivisionResultオブジェクト800は、分割および/または解析操作の結果生じるデータ構造を捕捉する。これは、本発明の少なくとも一部の例において、図6Bに示した形の「解析ツリー」とみなすことができる。その結果得られる、InkDivisionResultオブジェクト800に存在するデータ構造をさらに使用して、例えばその後のResultByType操作(以下で詳述)で、所与のストロークの集まりの異なるレベルの細分度のインクデータの組を取り出すことができる。
図8に図示すように、InkDivisionResultオブジェクト800のこの例は、「Strokes」804と呼ばれるプロパティ802を有する。このStrokesプロパティ804は、呼び出されると、元々InkDivisionResultオブジェクト800の生成に使用されたストロークへの参照を戻す。InkDividerオブジェクト700は、同時に特定の1組のストロークに対応するデータ構造を内部で構築する。しかし、これらのストロークを含むInkオブジェクトは固定的ではない。むしろ、任意の時点に(解析操作が実行中でさえも)、新しいストロークを追加することができ(例えば貼り付け操作によって個々に、またはまとめて)、既存のストロークを削除する、あるいは移動する、ないしは変更することができる。したがって、InkDivisionResultオブジェクト800中のStrokesプロパティ804は、アプリケーションプログラムコードまたはクライアントコードに、(a)どのストロークが特定のInkDivisionResultオブジェクト800を作成するために分割の対象となったか、(b)最後のInkDivisionResultオブジェクトの取得以降(例えば、最後のDivisionメソッド710の呼出以降)それらのストロークが影響を受けた、または変更されたかどうかを決定する手段を提供する。このStrokesプロパティ804によって、アプリケーションコードまたはクライアントコードが2つのInkDivisionResultオブジェクトを比較して、解析ツリーが1つのDivideメソッドの呼出から次の呼出の間に変わったか否かを判断できるようになる。
InkDivisionResultオブジェクト800のStrokesプロパティ804は、InkDivisionResultオブジェクト800の生成に使用されるストロークのリストを受信する、含む、かつ/または維持する。これは、図8に入力矢印806で示されている。この入力ストロークデータは、例えば、InkDividerオブジェクト700のStrokesプロパティ704から、あるいは他の任意の適したソースから取得する、または挿入することができる。InkDivisionResultオブジェクト800の取得に使用されるインクストロークを表すデータを出力する能力を、図8にStrokesプロパティ804からの矢印808として示している。Strokesプロパティ804の出力データ808は、以下の形式をとり得る。
[propget]HRESULT Strokes([out,retval]InkStrokes** Strokes)
特定のインク分割操作のために、InkDividerオブジェクト700が解析エンジンをカプセル化し、InkDivisionResultオブジェクト800が解析ツリーデータ構造をカプセル化するため、1つまたは複数のInkDivisionResultオブジェクト800が存在し続けている間にInkDividerオブジェクト700を(例えば別の操作用に)解放することが可能である。
代替として、InkDivisionResultオブジェクト800にStrokesプロパティ804を含めるのではなく、クライアントコードまたはアプリケーションプログラムコードがストローク情報を外部でキャッシュすることができる。しかし、あるインキングセッションの過程にわたってInkDivisionResultオブジェクト800が複数作成されることがあり得るので、複数のInkDivisionResultオブジェクト800の対および外部インクストロークデータの組を管理することは難しく、計算上費用がかかり得る。したがって、Strokesプロパティ804をInkDivisionResultオブジェクト800の一部として設けることによって、クライアントコードまたはアプリケーションコードのオーバーヘッドが低減し、インクディバイダAPIの有効な使用を助けることができる。
この例によるInkDivisionResultオブジェクト800は、さらに図8に示すように、さらにResultByType812と呼ばれるメソッド810を含む。このResultByTypeメソッド812は、呼び出されると、所与のDivisionType(単語、行、段落、図など分割のタイプ)の結果生じる(Units区分内の)ストロークの集まりの集まりを戻す。例として、このメソッド812は、クライアントコードまたはアプリケーションコードが単語、行、段落、図などを要求したか否かに応じて単語、行、段落、図などとしてグループ分けされた入力ストロークを戻す。このメソッド812は、要望に応じて、複数回呼び出して、異なる種々の解析細分度の分割結果を取り出すことができる。例えば、ある呼出は解析されたストロークの集まり中の単語を提供し、別の呼出は行を、また別の呼出は段落を、などを、提供することができる。
ResultByTypeメソッド812への入力は、少なくとも所望のInkDivisionTypeを含む。これは、上述したように、一部の例では、単語、行、段落、図などを意味する。この入力を、図8に入力矢印814で示している。出力は、所与のDivisionTypeのストロークの集まりの集まり(例えばInkDivisionUnitsオブジェクト)を含み、図8に出力矢印816で示している。このデータは、以下の形式をとり得る。
HRESULT ResultByType([in]InkDivisionType division Type,[out,retval]InkDivisionUnits* divisionUnits)
本発明の一部の例で、図8に矢印818で示すように、DivisionTypeが指定されていない(DivisionType=NULL)場合、戻されたInkDivisionUnitsオブジェクトの集まりは、本発明の少なくとも一部の例では、パーサによって識別されたすべての細分度を含み得る。一部の細分度は他の細分度を含む(例えば「行」は複数の「単語」を含み得る)ため、その結果得られる集まりは、重複する分割ユニットを含み得る。当然、適した任意のデフォルトの細分度(あるいはデフォルトの細分度でなくても)を、本発明から逸脱することなく容易に使用することができる。例えば、一部のバージョンでは、ユーザコードまたはアプリケーションコードによって別の細分度が指定されるかぎりおよびされるまで、デフォルトのDivisionTypeは「単語」となり得る。
図8に図示するように、ResultByTypeメソッド812は、矢印820で示すように、InkDividerオブジェクト700のDivideメソッド710から入力データ構造を受信することができる。
当然、本発明から逸脱しなければ、InkDivisionResultオブジェクト800は、図8に図示する特定のメソッドおよびプロパティに加えて、および/またはそれらの代わりに、および/またはそれらと組み合わせて、メソッド、プロパティ、および/または他の要素を含むことができる。
D.インク分割ユニット群オブジェクト
図9は、本発明の一部の例で有用なInkDivisionUnitsオブジェクト900を示している。このオブジェクト900は、解析操作の結果の集まりのラッパである。この集まりは、本発明の少なくとも一部の例では、一般にInkDividerオブジェクト700に元々与えられているすべてのストロークを有効に備えることを期待されている。例えば、「単語」に分割されたストロークの集まりは、単語ごとに単一のInkDivisionUnitオブジェクト1000を含むInkDivisionUnitsオブジェクト900の集まりによって表すことができる(図10も参照のこと。以下で詳述)。個々のInkDivisionUnitオブジェクト1000をそれぞれのストロークに拡張した結果生じるストロークは、InkDividerオブジェクト700に渡された元の組のストロークと一致することが予想される。
図9に示すように、この例のInkDivisionUnitsオブジェクト900は、Count904と呼ばれるプロパティ902を含む。Countプロパティ904は、所与のストロークの集まりに存在する分割ユニットのカウント(または数)を提供し、この情報をAPIが使用できるようにして、アプリケーションコードまたはクライアントコードで使用できるようにする。例えば、Countプロパティ904は、所与のストロークの集まりがx個の単語、および/またはy個の行、および/またはz個の段落を含むことをアプリケーションプログラムに通知することができる。このデータは、任意の適したやり方で、例えばInkDivisionResultオブジェクト800内に存在する所与のストロークの集まりについて図6Bの解析ツリーデータ構造を調べることによって決定することができる。Countプロパティ904の出力を、図9に矢印906で示している。出力データは、以下のように構成することができる。
[propget]HRESULT Count([out,retval]Long** Count)
この例のInkDivisionUnitsオブジェクト900はさらに、Item910と呼ばれるメソッド908を含む。Itemメソッド910は、呼び出されると、その集まりにおけるユニットのインデックス値が与えられると、ストロークの集まり中の特定のInkDivisionUnitオブジェクト1000を戻す(例えば「4番目の単語を戻す」)。出力を、図9に矢印912で示す。Itemメソッド910の出力データは、次のように構成することができる。
HRESULT Item([in]Long index,[out,retval]InkDivisionUnit* divisionUnit)
この例のInkDivisionUnitsオブジェクト900に含まれる別のプロパティ902は、「_NewEnum」914と呼ばれる。このプロパティ914は、評価されるストロークの集まりについて、IEnum VARIANTまたはIEnum UNKNOWNのいずれかの列挙子インターフェース(enumerator interface)を戻す。図9に出力矢印916および918でそれぞれ示すように、このプロパティ914を使用して、評価されるインクストロークの集まり中の個々のオブジェクトを取り出すことができる。_NewEnumプロパティ914によって評価されるデータは、以下の形式をとり得る。
[propget]HRESULT_NewEnum([out,retval]IUnknown**_NewEnum)
とりわけ、本発明のこの例では、(a)Countプロパティ904+Itemメソッド910、および(b)上述の_NewEnumプロパティ914が、クライアントコードまたはアプリケーションプログラムコードによって使用されるプログラミング言語およびコーディングスタイルに応じてインクストロークの集まりの要素にアクセスする事実上同等な2つの方法である。Itemメソッド910およびCountプロパティ904の組合せを従来の「for」ループに使用することができ、_NewEnumプロパティ914を、一部のプログラミング言語で使用可能な「for each」構文によって使用することができる。
当然、本発明から逸脱しなければ、InkDivisionUnitsオブジェクト900は、図9と併せて説明した特定のプロパティおよびメソッドに加えて、および/またはそれらの代わりに、および/またはそれらと組み合わせて、プロパティ、メソッド、および/または他の要素を含むことができる。
E.インク分割ユニットオブジェクト
本発明の一部の例によるAPIの別のオブジェクトは、図10に示すように、「InkDivisionUnit」オブジェクト1000と呼ばれている。このオブジェクト1000は、InkDivisionResult.ResultByType操作によって指定された細分度についての解析操作の結果生じるインクストロークの集まりの個々の要素を表す。例えば、InkDivisionUnitオブジェクト1000は、指定された解析細分度(または分割タイプ)が「単語」であった場合、解析されたインクストロークの集まりの個々の単語を含み得る。
この例のオブジェクト1000の第1のプロパティ1002は、Strokesプロパティ1004である。Strokesプロパティ1004は、インク分割の結果生じたユニットに含まれるストロークを含む(例えば選択された細分度に応じて、単語または行または段落のストローク)。このプロパティ1004によって、コードライタは、解析操作の各粗い結果を構成するストロークに素早くアクセスできるようになる。このStrokesプロパティ1004による、またはそれを介してアクセス可能なデータ出力は、以下の形式をとり得る。
[propget]HRESULT Strokes([out,retval]InkStrokes** Strokes)
RecognizedStringプロパティ1006もまた、図10に図示するようにInkDivisionUnitオブジェクト1000のこの例に含まれる。図10に矢印1032で示したこのプロパティ1006の出力は、手書き認識操作の結果生じるマシン生成テキスト(および/またはこの認識されたテキストのデータのメモリ位置へのポインタ)である。
InkDivisionUnitオブジェクト1000のこの例はさらに、図10に示すようにDivisionType1008と呼ばれるプロパティを含む。このプロパティ1008は、図10に出力矢印1034で示すように、オブジェクト1000内の分割ユニットのタイプ(単語、行、文、段落、図など)を戻す。出力されたDivisionTypeプロパティ1008のデータは、以下の形式をとり得る。
[propget]HRESULT divisionType([out,retval]InkDivisionType** divisionType)
本発明の一部の例および/または使用において、このDivisionTypeプロパティ1008は、所与のInkDivisionUnitsオブジェクトの集まり900が異なるInkDivisionTypeのInkDivisionUnitオブジェクト1000を含むという場合に有用となり得る。
InkDivisionUnitオブジェクト1000の少なくとも一部の例の別のプロパティは、RotationTransformプロパティ1010である。このプロパティ1010は、例えばInkDivisionUnitオブジェクト1000のストロークを水平方向に回転させるのに必要な変換行列情報を戻す。これは例えば、このオブジェクト1000のインクストロークを認識器に送信する前に水平方向の基準線に対して回転させるために使用することができる。このプロパティ1010からの出力データは、本発明の少なくとも一部の例では以下の形式をとり得る。
[propget] HRESULT RotationTransform([out,retval]InkTransform* Rotation Transform
RotationTransformプロパティ1010からの出力データの可用性を、図10に出力矢印1036で示している。
本発明の少なくとも一部の例において使用可能なRotationTransformプロパティ1010は、一部のアプリケーションプログラムにある有利な特徴を示し、水平方向に書かれていない手書きをそれでもなお正確に解析することができる。一般に、多くの知られている手書き認識器は、水平に書かれていない行を内部でうまく扱うことができず、こうした製品では、最適な認識結果は一般に、手書きの基準線が水平である場合にのみ得られる。しかし、一部のパーサシステムでは、パーサは、基準線を自動的に計算または決定し、必要に応じて回転変換を適用して、水平方向の線に対応するデータを取得し、それによって手書き認識器の手書き認識能力を向上させる。RotationTransformプロパティ1010によって、クライアントコードが、手書き情報が水平方向に集められたか否かを決定できるようになる。こうしたクライアントコードは、このプロパティを使用して、エンドユーザの手書きを水平にすることによって「クリーンアップ」し、および/またはユーザの手書きの周りの線または別の形状を正確に描くことができる。
本発明の一部の例では、個々のInkDivisionUnitオブジェクト1000が同じInkDivisionUnitsの集まり900に存在し、しかし異なるRotationTransformプロパティ1010を有することが可能である。例えば、ユーザが円を書き、すべての単語を要求した場合、InkDivisionUnitsの集まり900はすべての単語を含み、各InkDivisionUnitオブジェクト1000はそのRotationTransformプロパティ1010に異なる基準線角度を有することができる。
とりわけ、RotationTransformプロパティ1010は、すべてのInkDivisionUnitオブジェクト1000に関連があるわけではない。例えば、このプロパティ1010は、InkDivisionUnit「単語」およびInkDivisionUnit「行」には関連があるが、必ずしも「図」または「段落」に関連があるとは限らない。要望に応じて、InkDivisionUnit DivisionTypeが「段落」の場合、パーサは、本発明から逸脱することなく、その個々の成分の行に基づいて段落の回転角を計算することができる。また、要望に応じて、パーサは、少なくとも一部の場合、図の回転角をそのストロークに見られるパターンから計算することができる。したがって、RotationTransformプロパティ1010がすべてのInkDivisionTypeについて存在していることはあるが、これは必ずしもそうであるとは限らない。
InkDivisionUnitオブジェクト1000は、図10に示すように、InkDivisionType1022と呼ばれるEnum1020をさらに含む。所望のInkDivisionTypeは、デフォルトではクライアントコードまたはアプリケーションプログラムコードによって、あるいは他の任意の適切なやり方によって設定することができる。(出力矢印1038によって表される)この出力で、このEnum1022は、解析操作から望まれるInkDivisionUnitsのタイプを表す。この情報を、例えばInkDivisionResult.ResultByType操作によって使用することができる。一例として、このEnum1020のInkDivisionTypeは、次のように規定することができる。
InkDivisionType for Word=0
InkDivisionType for Line=1
InkDivisionType for Paragraph=2
InkDivisionType for Drawing=3
当然、本発明から逸脱することなく他の列挙型を使用することができる。例えば、特に極東言語用に設計されたシステムで使用する場合に、列挙型「Segment」を使用して単語または文字に一致させることができる。
別の例として、所与のInkDivisionUnitsオブジェクトの集まりが異なるInkDivisionTypeのInkDivisionUnitオブジェクトを含むことが可能となる場合、このEnumのエントリの特定の値は、例えば以下のようなものに変わり得る。
All InkDivisionTypes=0
InkDivisionType for Word=1
InkDivisionType for Line=2
InkDivisionType for Paragraph=4
InkDivisionType for Drawing=8
このように、InkDivisionTypeは、ビットフィールドになり、個々のタイプは、共に論理和をとり、Rresult−ByTypes操作から望まれるInkDivisionTypeの組合せを指定することができる。
当然、本発明から逸脱しなければ、InkDivisionUnitオブジェクト1000は、図10に示す特定のプロパティおよび列挙型に加えて、および/またはそれらの代わりに、および/またはそれらと組み合わせて、プロパティ、メソッド、列挙型、および/または他の要素を含むことができる。
V.インクディバイダオブジェクトおよびAPIの動作
A.インキングセッション中の性能
使用中、インクストロークを、本発明から逸脱することなく適した任意のやり方で、InkDividerオブジェクト700のStrokesプロパティ704の集まりに追加する、そこから削除する、および/ないしはそこで変更を行うことができる。要望に応じて、例えばストロークが既存のStrokesプロパティ704に追加され、そこから削除され、および/ないしはそこで変更されるたびに、まったく新しいStrokesプロパティ704を書き込み、挿入することができる。しかしこのようなやり方は、ストロークが変更されるたびにコンピュータが最初からStrokesプロパティ704内のすべてのインクストロークを解析し直す必要があるため、受け入れがたい処理遅延がもたらされることになる。
したがって、本発明の一部の例では、InkDividerオブジェクト700を使用するクライアントコード(またはアプリケーションプログラムコード)は、ストロークが追加され、削除され、ないしは変更されるたびにStrokesプロパティの集まり704全体を交換するのではなく、InkDividerオブジェクトのStrokesプロパティの集まり704に(a)個々のインクストロークを追加するメソッド、および(b)インクストロークの組を追加するメソッド(貼り付け操作などによる)、InkDividerオブジェクトのStrokesプロパティの集まり704から(c)インクストロークを削除するメソッド、および(d)インクストロークの組を削除するメソッド(切り取り操作などによる)を含む。現在のInkDividerオブジェクトのStrokesプロパティ704の中の影響を受けたストロークのみを追加し、削除し、ないしは変更するメソッドを使用することによって、内部解析ツリーデータ構造を漸進的に更新することができる。例えば、あるストロークが(おそらく「t」と交差するために)以前解析された行に追加されたとき、新しいストロークが「追加」メソッドを使用して(例えば「Ink Divider.Strokes.Add(newstroke)」操作によって)InkDividerオブジェクト700に渡される場合、内部パーサの解析ツリーデータ構造は、新しいストロークの位置から所定の距離以内で無効になり、それによって新しいストロークの隣接したエリア内のストローク(「ダーティ」ストロークまたは「ダーティ」ノードとも呼ぶ)のみ、すなわちこの例では文字「t」に関連する新しいストロークおよび近接した周囲のストロークを解析し直すことができる。この漸進的なストローク解析の一部の例では、実際に新しく追加されたインクストロークを解析するだけではなく、新しいストロークの存在を考慮に入れて新しいストロークの近辺の他のインクストロークも解析し直す。本発明の一部の例では、(新しく追加され、削除され、あるいは変更されたストロークが周囲のストロークとの関係で確実に表示され、周囲のストロークが最近の変更との関係で確実に表示されるようにするために)新しく追加された、削除された、および/ないしは変更されたストロークの周りの円形領域を解析し直す。
また、一部の例では、本発明によるシステムおよび方法は、Divideメソッドがクライアントコードまたはアプリケーションプログラムコードによって明示的に呼び出されるのを待つことなくバックグラウンドでできるだけ多くの解析を行う。例えば、InkDividerオブジェクトのStrokesプロパティ704が設定されている、あるいはストロークがInkDividerオブジェクトのStrokesプロパティ704に追加され、そこから削除され、そうでない場合はそこで変更されたとき、図4と併せて概説したように、解析が解析ツリーデータ構造の「スナップショット」に対してバックグラウンドスレッドで直ちに行われる。したがって、クライアントコードまたはアプリケーションプログラムコードが実際にDivideメソッドを呼び出したとき(例えばインキングセッションの最後に)、InkDividerオブジェクト700は、(a)最も最近追加/削除/変更されたストロークを解析し終え(すなわち「ダーティノード」がある場合はそれに焦点を当てて)、次いで(b)新しいInkDivisionResultオブジェクト800を作成し、戻すだけですむ。
B.インキングセッションに戻るときの性能
ユーザアプリケーションが複数回インキングセッションを開始し、終了し、インクオブジェクトをアプリケーションに「委ねる」予定でいる場合、InkDividerオブジェクト700は、アプリケーションプログラムがインクを含むドキュメントを開くたびに最初から既存のデータをすべて解析し直すことが求められることになる。これは、一部の状況では許容できるが、特に大量のインクデータを含むドキュメントを開くときは、性能が悪化し、処理遅延がもたらされることがある。
本発明の少なくとも一部の例では、既存のドキュメントを開き直すこうした状況で性能を向上させるために、以下のオプションが有用となり得る。
1.シャドーオブジェクトの保持
アプリケーションプログラムがインキングセッションを終了し、インクデータを画面に委ねるとき、本発明の少なくとも一部の例では、各InkDivisionUnitオブジェクト1000のStrokesプロパティの集まり1004中の元のストロークを集まりから切り離すのではなく、それらのコピーを作成し、維持することが有用となり得る。
この種のアプリケーションは、解析を必要とするすべてのインクストロークのシャドーインクオブジェクト、およびInkDividerオブジェクト700およびそのStrokesプロパティの集まり704(インクディバイダに接続されているストローク)を常に維持するように設計することができる。(例えばインキングセッションの最後に)Divideメソッドが呼び出されると、アプリケーションは、シャドーオブジェクトからインクオブジェクトを切り離すのではなく、インクオブジェクトをネイティブのアプリケーションオブジェクトにコピーする。
アプリケーションオブジェクトの任意のインクがインキングセッション中以外に(例えばスケール変更または回転など他の操作を実行することによって)編集される場合、本発明のこの例では、アプリケーションは、このアプリケーションオブジェクトに対応するストロークを削除し、シャドーの集まりに追加し直すことが必要となり得る。例えば、文書処理プログラムで提供された描画オブジェクトの位置変更が行われた場合、シャドーインクオブジェクトを更新して、この位置変更を反映させる必要がある。
インキングセッションに戻ると、Divideメソッド710が再度呼び出される前に、新しいストロークのみを追加し、または削除する必要がある。これによって、インキングセッション間のインクの漸進的な処理が可能になる。
一般に、漸進的な解析をサポートするには、単一のシャドーインクオブジェクトのみが必要であり、したがって所与のインクオブジェクトの2つの物理的コピーが存在し、それらは同期されなければならない。InkDividerオブジェクト700の結果を取得し、InkDivisionUnitオブジェクト1000ごとに別個のインクオブジェクトを作成する(その結果それらを描画要素として個々に稼働させ、編集することができる)描画アプリケーションプログラムの場合、描画アプリケーションプログラムが作成するインクオブジェクトごとに単一のシャドーインクオブジェクトが必要であるが、全体的にはインクの2つのコピーのみが依然として存在する。
この方法に対する利点は、インキングセッション間に移動するときの性能の向上である。欠点は、メモリのフットプリント、およびインクオブジェクトの集まりを同期状態に保つことの負担である。
2.低減ヒューリスティックス(Reduction Heuristics)
(セッションの終了後)インキングセッションに戻るときに解析性能を向上させる別の可能性は、パーサが処理する必要があるデータセットを低減することである。例えば、「委ねられた」インクオブジェクトが再解析から利益を受けるか否かを決定するヒューリスティックスを実施することが可能である。一例として、アプリケーションは、再解析を、新しいインクと交差する、あるいは新しいインクとのある空間的距離にある、「委ねられた」インクオブジェクトのみに限定することができる。一部の場合、シナリオおよび/または実装に応じて、「委ねられた」インクオブジェクトのzオーダ(z−order)も再解析の要因とすることができる。
この手法は最初、上記のシャドーオブジェクト手法より容易なように思われるかもしれないが、全部とはいわないが、InkDividerが変更するInkDivisionUnitsに関係するほとんどのストロークが必ず低減ヒューリスティックスに含まれることに注意する必要がある。こうしなかった場合は、解析結果、したがってエンドユーザのインキング経験が一貫性のないものになるおそれがある。
さらに、内部パーサ自体は、どのストロークを再解析するかを決定するのに使用する無効方式を知っているため、実際にどのストロークが含まれるべきかを決定するのによりよい立場にある。無効方式は、半径方向の無効を使用するが、本発明から逸脱することなく他の方式を使用してもよい。
VI.アプリケーションプログラムインターフェース
Ink APIの種々の機能を活用するのに多数のアプリケーションプログラムインターフェース(「API」)が可能である。一部の例を以下に示す。
(a)イベント:本発明の一部の例では、解析操作(例えば上述のInkDivisionResult800)の種々の部分の完了によって種々のイベントをトリガして、例えば解析操作の少なくとも一部が完了したこと、少なくとも一部の解析結果が入手可能であること、および/またはパーサを再度呼び出すことができることなどをクライアントコードに通知する。こうしたイベントの例には、「ParsingComplete」イベントおよび「DivisionComplete」イベントなどがある。「ParsingComplete」イベントは、本発明の一部の例で使用する場合、入力インクストロークが(例えば図6Bに示すような)解析ツリーデータ構造のそれぞれの位置に分割されていることをアプリケーションプログラムに通知する。現時点で、本発明のこの例では、認識器は、まだインクストロークデータに作用しないため、個々の単語ごとの結果を使用することができない。一方、「DivisionComplete」イベントを使用して、解析操作および認識操作全体が完了したことをアプリケーションプログラムに通知することができる。上述の例では、DivisionCompleteイベントは、実行されると、InkDivisionResultオブジェクト800がすぐに使用可能であることをアプリケーションコードに伝え、そのResultByTypeメソッドを使用して所望の解析細分度のInkDivisionUnitオブジェクトを取り出すことができる。
(b)疑似事実(Factoid):疑似事実を使用して、例えば、認識すべきインクの期待される情報またはパターンをパーサに通知することによって、認識を操縦することができる。例えば、疑似事実は、入来文字列が郵便番号の欄内にあったことをパーサに通知する。次いでパーサは、なじみのある5桁または9桁のパターンを探すことができる。さらにパーサは、郵便番号の欄に入来する場合は文字を数字として優先的に認識することができる(s字形のストロークを文字の「S」ではなく数字の「5」として優先的に認識する、および/または小文字の「l」または大文字の「I」ではなく数字の「1」を優先的に認識するなど)。
(c)シャドーオブジェクト:InkDividerオブジェクト700は、少なくとも一部の例では、外部で管理されるインクオブジェクトの代わりにそれが参照する内部Shadow Ink Objectを作成させるメソッドを提供する。当然、InkDivider(または関連のシャドーインクマネージャオブジェクト)もシャドーインクオブジェクトへのアクセス機構およびそれらを管理するメソッドを提供する。
(d)低減ヒューリスティックス:本発明の少なくとも一部の例では、パーサのAPIもまた、「推奨される」データセットの低減機構を含むように拡張し、その結果開発者のアプリケーション要件に互換性がある場合、開発者が低減ヒューリスティックスに神経を使う必要はなく、代わりにパーサに最善を尽くすよう伝えればよいことになる。
(e)パーサ交換(Parser Replacement):サードパーティが望む任意の認識器またはパーサを使用できるようにするために、パーサのAPIは、ユーザがダウンロードする新しい認識器およびパーサ用の「プラグイン」サポートを含むことができる。これらの代替の解析エンジンは必然的に、上述のAPIのRecognizerContextオブジェクトに似たそれ自体のオブジェクトモデルを有していることになる。
VII.代替のインクディバイダオブジェクト
図7〜10は、本発明の一部の例によるインクディバイダオブジェクトおよびそれに関連するいくつかのオブジェクトの例を示している。図11は、InkDividerオブジェクト1100の別の例を示している。このサンプルオブジェクト1100は、様々なプロパティ1102、メソッド1104、Enum1106、およびEvent1108を含むことができる。それぞれについて以下で詳述する。
「Ink」プロパティ1110は、処理すべきインクオブジェクトまたはストロークへの参照を戻す/設定する。このプロパティ1110は、上述のStrokesプロパティ704と同種のものである。「Inks」プロパティ1112は、Divideメソッド1120(以下で詳述)によって生成されたインクオブジェクトの集まりを戻す。DivisionGranularityプロパティ1114は、Inkプロパティ1110のインクがDivideメソッド1120によって解析される細分度を取得/設定する。デフォルトの任意の値(あるいはデフォルトの値がない場合でさえも)本発明から逸脱することなく使用することができるが、本発明の一部の例では、DivisionGranularityプロパティ1114は、デフォルトでは「単語」細分度である。DivisionGranularityプロパティ1114は、例えば、「段落」、「行」、「文」、「単語」、「図」などを表すEnumを含むことができるDivisionGranularityEnum1106を使用して設定することができる。所望のDivisionGranularityは、クライアントコードまたはアプリケーションプログラムコードによって、デフォルトで、または他の任意の適切なやり方で設定することができる。
Divideメソッド1120は、設定されたDivisionGranularityプロパティ1114に基づいてInkプロパティ1110に存在するインクストロークに対してインク解析操作を行う。DivisionCompleteイベント1130を実行して、Divideメソッド1120がその動作を終了したときアプリケーションプログラムに通知する。Divideメソッド1120からの解析結果がInksプロパティ1112に書き込まれ、矢印1132で示すように、アプリケーションプログラムコードまたはクライアントコードがそこから使用できるようにすることができる。クライアントコードまたはアプリケーションプログラムコードは、DivisionCompleteイベント1130を受信すると、Inksプロパティ1112を取り出し、解析操作の結果を取り出すことができることがわかる。
実装の細部に応じて、Inksプロパティ1112は、解析操作(すなわちDivideメソッド1120)が行われており、インクの内部解析ツリー表現が構築されている間にアクセス可能であってもアクセス不可であってもよい。
当然、本発明から逸脱しなければ、InkDividerオブジェクト1110は、プロパティ、メソッド、列挙型、イベント、および/または他の要素を、図11に図示した特定のプロパティ、メソッド、列挙型、およびイベントとの組合せで、および/またはそれらに加えて、および/またはそれらの代わりに含んでいてもよい。
VIII.結論
本発明は、種々の特定の例に関して説明してきたが、これらの特定の例は単に本発明を例として示すものであり、それを限定するものではない。例えば、本明細書では種々の特定の名前がオブジェクト、プロパティ、メソッド、列挙型、イベントなどに使用されているが、こうした特定の名前は単に考え得る名前の例にすぎず、本発明を限定するものと解釈されるべきではないことを当業者であれば理解されよう。当然、本発明から逸脱することなく他の名前をオブジェクト、プロパティ、メソッド、列挙型、イベントなどに使用してもよい。さらに、オブジェクト、プロパティ、メソッド、列挙型、イベントなどの特定の構成は、本発明から逸脱することなく、記載し図示した特定の構成と異なっていてもよい。
さらに、本発明の特定の特徴および機能を特定の例とともに記載していることは、この特徴または機能が本発明のその特定の例での使用に限定されること、あるいはすべての例がその特定の特徴または機能を含んでいなければならないことを意味するものではない。そうではなく、特別に指定のない限り、本発明の任意の例における上述の種々の特徴および機能を自由に使用することができる。添付の特許請求の範囲に定義した本発明の意図および範囲から逸脱することなく本発明の変形の例に変更および修正を加えることができることを当業者であれば理解されよう。
本発明の種々の形態の実施に使用することができる汎用デジタルコンピューティング環境を示す概略図である。 本発明の種々の形態に従って使用することができるスタイラスベースのコンピューティングシステムを示す平面図である。 本発明の例とともに使用できる解析システムおよび/または方法の一例を示す概要図である。 本発明の例とともに使用できる漸進的解析処理を説明する全体図である。 本発明の例とともに使用できる種々のレイアウト分析の例を示す図である。 例えば図5に図示した諸ステップを実行するレイアウト分析エンジンを使用して得られる解析ツリーデータ構造の例を示す図である。 例えば図5に図示した諸ステップを実行するレイアウト分析エンジンを使用して得られる解析ツリーデータ構造の例を示す図である。 本発明の一部の例で使用するInkDividerオブジェクトの構成要素および特徴を示す図である。 本発明の一部の例で使用するInkDivisionResultオブジェクトの構成要素および特徴を示す図である。 本発明の一部の例で使用するInkDivisionUnitsオブジェクトの構成要素および特徴を示す図である。 本発明の一部の例で使用するInkDivisionUnitオブジェクトの構成要素および特徴を示す図である。 本発明の一部の例で使用するInkDividerオブジェクトの別の例を示す図である。
符号の説明
100 コンピュータ
101 キーボード
102 ポインティング装置
106 シリアルポートインターフェース
107 モニタ
108 ビデオアダプタ
109 リモートコンピュータ
110 処理ユニットまたはシステム
111 メモリ記憶装置
112 ローカルエリアネットワーク(LAN)
113 ワイドエリアネットワーク(WAN)
114 アダプタ
115 モデム
120 システムメモリ
130 システムバス
140 読取り専用メモリ(ROM)
150 ランダムアクセスメモリ(RAM)
160 基本入出力システム(BIOS)
165 ペンデジタイザ
166 付属ペンまたはユーザ入力装置
170 ハードディスクドライブ
180 磁気ディスクドライブ
190 取外し可能磁気ディスク
191 光ディスクドライブ
192 ハードディスクドライブインターフェース
193 磁気ディスクドライブインターフェース
194 光ディスクドライブインターフェース
195 オペレーティングシステム
196 アプリケーションプログラム
197 プログラムモジュール
198 プログラムデータ
201 ペンベースまたはスタイラスベースのコンピューティングシステム
202 表示面
203 ウィンドウ
204 スタイラス
205 領域
300 インクストローク
302 レイアウト分析
304 単語、行、段落(またはブロック)、および/または他のグループ
306 分類分析システムまたはエンジン
308 正規化アルゴリズムまたはシステム
310 手書き認識システム
314 注釈認識システムまたは方法
400 ユーザ
402 ドキュメントツリーデータ構造
404 ミラーツリーデータ構造
406 レイアウト分析エンジン
408 認識エンジン
410 システム
420 アプリケーションシステムまたはプログラム
422 パーサ
424、426 スナップショット
500 入来入力データ
502、506 グラフィカル表現
504 データ出力
508 時間的行グループ分けステップ
510 空間的ブロックグループ分けステップ
512 空間的行グループ分けステップ
514 リスト検出
516 空間的単語グループ分け
600 ストローク
602、610 単語
604、612 行
606、614 ブロック
608 ページ
700 InkDividerオブジェクト
702、902、1002、1102 プロパティ
704 Strokesプロパティ
706 RecognizerContextプロパティ
708、802、810、908、1104 メソッド
710 Divideメソッド
800 InkDivisionResultオブジェクト
804 Strokesプロパティ
808 出力データ
812 ResultByTypeメソッド
900 InkDivisionUnitsオブジェクト
904 Countプロパティ
910 Itemメソッド
914 _NewEnumプロパティ
1000 InkDivisionUnitオブジェクト
1004 Strokesプロパティ
1006 RecognizedStringプロパティ
1008 DivisionTypeプロパティ
1010 RotationTransformプロパティ
1020 Enum
1022 InkDivisionType
1100 InkDividerオブジェクト
1106 列挙型
1108 イベント
1110 Inkプロパティ
1112 Inksプロパティ
1114 DivisionGranularityプロパティ
1116 DivisionGranularity列挙型
1120 Divideメソッド
1130 DivisionCompleteイベント

Claims (14)

  1. インクストロークデータをアプリケーションプログラムから使用できるようにする方法であって、前記アプリケーションプログラムはコンピュータシステムにおいて前記インクストロークデータを使用し、該コンピュータシステムは、前記アプリケーションプログラムを実行するコンピュータ、インクストロークデータを入力するためのポインティングデバイス、その各々が異なる細分度で複数のインクストロークデータセットをグループ分けする複数のグループ分け手段および記憶デバイスを有する方法において、
    前記ポインティングデバイスにより入力された複数のインクストロークデータの複数のセットを前記記憶デバイスに格納するステップと、
    前記インクストロークデータの複数のセットをグループ分けする場合に使用する細分度を前記アプリケーションプログラムから前記コンピュータにより受け取るステップと、
    前記分割要求に応答して、前記記憶デバイスに格納されているインクストロークデータの複数のセットを、当該受け取った細分度に対応するグループ分け手段により、当該受け取った細分度でグループ分けするステップと、
    当該グループ分けされたインクストロークデータの複数のセットをオブジェクトの形態で前記記憶デバイスに格納するステップと
    を含むことを特徴とする方法。
  2. 前記グループ分けされたインクストロークデータの複数のセットを使用することにより前記アプリケーションプログラムで生成されるマシン生成テキストは、前記コンピュータにより前記オブジェクトの中に格納されることを特徴とする請求項1に記載の方法。
  3. 前記グループ分けが完了したとき、前記コンピュータにより前記アプリケーションプログラムに通知すること
    をさらに備えることを特徴とする請求項1に記載の方法。
  4. 前記複数のグループ分け手段により使用される細分度は単語、行、段落、文、および図であることを特徴とする請求項1に記載の方法。
  5. インクストロークデータをアプリケーションプログラムから使用できるようにするためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記アプリケーションプログラムコンピュータシステムにおいて前記インクストロークデータを使用し、該コンピュータシステムは、前記アプリケーションプログラムを実行するコンピュータ、インクストロークデータを入力するためのポインティングデバイス、その各々が異なる細分度で複数のインクストロークデータセットをグループ分けする複数のグループ分け手段および記憶デバイスを有するコンピュータ可読媒体において、前記コンピュータ実行可能命令は、前記コンピュータに、
    前記ポインティングデバイスにより入力されたインクストロークデータを前記記憶デバイスに格納する手段と、
    前記インクストロークデータの複数のセットをグループ分けする場合に使用する細分度を前記アプリケーションプログラムから前記コンピュータにより受け取る手段と、
    前記記憶デバイスに格納されているインクストロークデータの複数のセットを、当該受け取った細分度に対応するグループ分け手段により、当該受け取った細分度でグループ分けさせる手段と、
    当該グループ分けされたインクストロークデータの複数のセットをオブジェクトの形態で前記記憶デバイスに格納する手段
    として機能させることを特徴とするコンピュータ可読媒体。
  6. 前記グループ分けされたインクストロークデータの複数のセットを使用することにより前記アプリケーションプログラムで生成されるマシン生成テキストを前記記憶デバイスに格納する手段として、前記コンピュータ実行可能命令は、前記コンピュータに機能させることを特徴とする請求項5に記載のコンピュータ可読媒体。
  7. 前記グループ分けが完了したとき前記アプリケーションに通知する手段として、前記コンピュータ実行可能命令は、前記コンピュータに機能させることを特徴とする請求項5に記載のコンピュータ可読媒体。
  8. 前記複数のグループ分け手段により使用される細分度は単語、行、段落、文、および図から成るグループからクライアントコードまたはアプリケーションコードに応じて選択されることを特徴とする請求項5に記載のコンピュータ可読媒体。
  9. パーサとアプリケーションプログラムとの間の通信を行う方法であって、
    前記アプリケーションプログラムから複数のインクストロークを表すデータを前記パーサに送信するステップと、
    コンピュータにより、前記パーサに、前記パーサの文字認識処理に必要な解析情報を提供するステップと、
    前記インクストロークを表すデータを所定の細分度で複数のストロークのグループに前記コンピュータによりグループ分けするステップと、
    前記アプリケーションプログラムから使用できるようにするために、グループ分けされた前記データをオブジェクトの形態で記憶デバイスに、前記コンピュータにより格納するステップと
    を備えることを特徴とする方法。
  10. 前記解析情報を提供することは前記グループ分けに使用すべき認識器を設定することを含むことを特徴とする請求項9に記載の方法。
  11. 前記解析情報を提供することは前記グループ分けに使用すべき言語を設定することを含むことを特徴とする請求項9に記載の方法。
  12. 前記解析情報を提供することは前記所定の細分度を設定することを含むことを特徴とする請求項9に記載の方法。
  13. 前記解析情報を提供することは前記インクストロークに含まれるテキストの行に対して期待される行間隔を設定することを含むことを特徴とする請求項9に記載の方法。
  14. 請求項9に記載の前記方法を実行するコンピュータ実行可能命令を格納するコンピュータ可読媒体。
JP2003423829A 2003-01-21 2003-12-19 インクディバイダおよび関連するアプリケーションプログラムインターフェース Expired - Lifetime JP4499407B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/347,331 US7218779B2 (en) 2003-01-21 2003-01-21 Ink divider and associated application program interface

Publications (2)

Publication Number Publication Date
JP2004227564A JP2004227564A (ja) 2004-08-12
JP4499407B2 true JP4499407B2 (ja) 2010-07-07

Family

ID=32712337

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003423829A Expired - Lifetime JP4499407B2 (ja) 2003-01-21 2003-12-19 インクディバイダおよび関連するアプリケーションプログラムインターフェース

Country Status (12)

Country Link
US (1) US7218779B2 (ja)
EP (2) EP1450294B9 (ja)
JP (1) JP4499407B2 (ja)
KR (1) KR100975504B1 (ja)
CN (1) CN1517904B (ja)
AT (2) ATE443299T1 (ja)
AU (2) AU2003266779B2 (ja)
BR (1) BR0306010A (ja)
CA (1) CA2449073C (ja)
DE (2) DE60329340D1 (ja)
MX (1) MXPA03011669A (ja)
RU (1) RU2358316C2 (ja)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
US7079713B2 (en) 2002-06-28 2006-07-18 Microsoft Corporation Method and system for displaying and linking ink objects with recognized text and objects
US7751623B1 (en) 2002-06-28 2010-07-06 Microsoft Corporation Writing guide for a free-form document editor
US7218779B2 (en) * 2003-01-21 2007-05-15 Microsoft Corporation Ink divider and associated application program interface
US20040243852A1 (en) * 2003-05-28 2004-12-02 Rosenstein Adam H. Method, system and software for state signing of internet resources
US7454393B2 (en) * 2003-08-06 2008-11-18 Microsoft Corporation Cost-benefit approach to automatically composing answers to questions by extracting information from large unstructured corpora
US7616333B2 (en) * 2003-08-21 2009-11-10 Microsoft Corporation Electronic ink processing and application programming interfaces
CA2470158C (en) * 2003-08-21 2011-01-04 Microsoft Corporation Electronic ink processing
ATE530992T1 (de) * 2003-08-21 2011-11-15 Microsoft Corp Elektronische tintenverarbeitung
EP1665128A4 (en) * 2003-08-21 2007-10-17 Microsoft Corp ELECTRONIC INK PROCESSING
US7721226B2 (en) 2004-02-18 2010-05-18 Microsoft Corporation Glom widget
US7659890B2 (en) 2004-03-19 2010-02-09 Microsoft Corporation Automatic height adjustment for electronic highlighter pens and mousing devices
US7574048B2 (en) * 2004-09-03 2009-08-11 Microsoft Corporation Freeform digital ink annotation recognition
US7702750B2 (en) 2004-09-29 2010-04-20 Citrix Systems, Inc. System and method for event detection and re-direction over a network using a presentation level protocol
US8069226B2 (en) 2004-09-30 2011-11-29 Citrix Systems, Inc. System and method for data synchronization over a network using a presentation level protocol
US20060085740A1 (en) * 2004-10-20 2006-04-20 Microsoft Corporation Parsing hierarchical lists and outlines
US7518749B2 (en) * 2004-11-12 2009-04-14 Microsoft Corporation Analysis alternates in context trees
US8214754B2 (en) 2005-04-15 2012-07-03 Microsoft Corporation Registration of applications and complimentary features for interactive user interfaces
US7928964B2 (en) * 2005-04-22 2011-04-19 Microsoft Corporation Touch input data handling
US20060267958A1 (en) * 2005-04-22 2006-11-30 Microsoft Corporation Touch Input Programmatical Interfaces
US7986307B2 (en) * 2005-04-22 2011-07-26 Microsoft Corporation Mechanism for allowing applications to filter out or opt into tablet input
US7680332B2 (en) * 2005-05-30 2010-03-16 Microsoft Corporation Grouping lines in freeform handwritten text
US7526737B2 (en) * 2005-11-14 2009-04-28 Microsoft Corporation Free form wiper
CN101495990B (zh) * 2005-12-02 2011-09-14 思杰系统有限公司 用于提供从代理服务器到虚拟计算环境的身份验证证明以访问远程资源的方法和设备
US8509563B2 (en) * 2006-02-02 2013-08-13 Microsoft Corporation Generation of documents from images
US8930834B2 (en) 2006-03-20 2015-01-06 Microsoft Corporation Variable orientation user interface
US20080040692A1 (en) * 2006-06-29 2008-02-14 Microsoft Corporation Gesture input
US9304675B2 (en) * 2006-09-06 2016-04-05 Apple Inc. Portable electronic device for instant messaging
US20080195931A1 (en) * 2006-10-27 2008-08-14 Microsoft Corporation Parsing of ink annotations
US8315482B2 (en) * 2007-06-26 2012-11-20 Microsoft Corporation Integrated platform for user input of digital ink
JP4960817B2 (ja) * 2007-09-19 2012-06-27 キヤノン株式会社 画像処理装置、および画像処理方法
EP2245536B1 (en) 2008-01-27 2018-10-24 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphics
US8504624B2 (en) * 2009-09-08 2013-08-06 Ricoh Co., Ltd. Stroke and image aggregation and analytics
US8751844B2 (en) * 2009-09-24 2014-06-10 Citrix Systems, Inc. Systems and methods for attributing an amount of power consumption to a workload
US20130067366A1 (en) * 2011-09-14 2013-03-14 Microsoft Corporation Establishing content navigation direction based on directional user gestures
JP5458196B2 (ja) * 2012-03-02 2014-04-02 株式会社 資生堂 塗布動作評価装置、塗布動作評価方法、及び塗布動作評価プログラム
JP2013246732A (ja) * 2012-05-28 2013-12-09 Toshiba Corp 手書き文書検索装置、方法及びプログラム
KR101337872B1 (ko) * 2013-04-04 2013-12-06 주식회사 디오텍 잉크 텍스트 데이터 편집장치 및 잉크 텍스트 데이터 편집방법
JP6109020B2 (ja) * 2013-09-10 2017-04-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 文書の分割・結合方法、装置、プログラム。
US20150104778A1 (en) * 2013-10-11 2015-04-16 Chi-Chang Liu System and method for computer based mentorship
US20150116283A1 (en) * 2013-10-24 2015-04-30 Livescribe Inc. Paper Strip Presentation Of Grouped Content
BR112016009938B1 (pt) * 2013-11-19 2022-01-25 Wacom Co., Ltd Métodos de geração de dados de tinta e de desenho para renderização de dados de imagem
JP2015148946A (ja) * 2014-02-06 2015-08-20 ソニー株式会社 情報処理装置、情報処理方法及びプログラム
US10698597B2 (en) * 2014-12-23 2020-06-30 Lenovo (Singapore) Pte. Ltd. Reflow of handwriting content
US9613263B2 (en) * 2015-02-27 2017-04-04 Lenovo (Singapore) Pte. Ltd. Ink stroke grouping based on stroke attributes
US10643067B2 (en) * 2015-10-19 2020-05-05 Myscript System and method of handwriting recognition in diagrams
US10755029B1 (en) 2016-01-05 2020-08-25 Quirklogic, Inc. Evaluating and formatting handwritten input in a cell of a virtual canvas
US10324618B1 (en) * 2016-01-05 2019-06-18 Quirklogic, Inc. System and method for formatting and manipulating digital ink
US20180173688A1 (en) * 2016-12-15 2018-06-21 Myscript System and method for management of handwritten diagram connectors
EP3736677A1 (en) 2019-05-10 2020-11-11 MyScript A method and corresponding device for selecting and editing handwriting input elements
EP3754537A1 (en) 2019-06-20 2020-12-23 MyScript Processing text handwriting input in a free handwriting mode
EP3772015B1 (en) 2019-07-31 2023-11-08 MyScript Text line extraction
EP3796145A1 (en) 2019-09-19 2021-03-24 MyScript A method and correspond device for selecting graphical objects
KR20210073196A (ko) * 2019-12-10 2021-06-18 삼성전자주식회사 필기 입력을 처리하는 방법 및 그 장치
US11531454B2 (en) * 2020-12-10 2022-12-20 Microsoft Technology Licensing, Llc Selecting content in ink documents using a hierarchical data structure
US11587346B2 (en) * 2020-12-10 2023-02-21 Microsoft Technology Licensing, Llc Detecting ink gestures based on spatial and image data processing
CN112869352B (zh) * 2021-02-04 2021-12-21 上海工程技术大学 一种插画绘图练习用工作台
US20230315271A1 (en) * 2022-03-18 2023-10-05 Sony Group Corporation Collaborative whiteboard for meetings

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000285251A (ja) * 1999-03-31 2000-10-13 Hitachi Ltd 手書き入力編集システム
JP2004501422A (ja) * 2000-04-13 2004-01-15 クゥアルコム・インコーポレイテッド マルチストロークのキャラクタ入力のための方法および装置
JP2004171521A (ja) * 2002-10-31 2004-06-17 Microsoft Corp インクツリーのための共通インタフェース
JP2004227564A (ja) * 2003-01-21 2004-08-12 Microsoft Corp インクディバイダおよび関連するアプリケーションプログラムインターフェース

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2089784C (en) 1992-04-15 1996-12-24 William Joseph Anderson Apparatus and method for disambiguating an input stream generated by a stylus-based user interface
US5903668A (en) * 1992-05-27 1999-05-11 Apple Computer, Inc. Method and apparatus for recognizing handwritten words
US5425110A (en) * 1993-04-19 1995-06-13 Xerox Corporation Method and apparatus for automatic language determination of Asian language documents
US5517578A (en) 1993-05-20 1996-05-14 Aha! Software Corporation Method and apparatus for grouping and manipulating electronic representations of handwriting, printing and drawings
JPH09319829A (ja) * 1996-06-03 1997-12-12 Nec Corp オンライン文字認識装置
US5999896A (en) * 1996-06-25 1999-12-07 Microsoft Corporation Method and system for identifying and resolving commonly confused words in a natural language parser
JP3825087B2 (ja) 1996-06-28 2006-09-20 松下電器産業株式会社 手書きデータ編集装置
US5892843A (en) * 1997-01-21 1999-04-06 Matsushita Electric Industrial Co., Ltd. Title, caption and photo extraction from scanned document images
US5889523A (en) 1997-11-25 1999-03-30 Fuji Xerox Co., Ltd. Method and apparatus for dynamically grouping a plurality of graphic objects
US7564995B1 (en) 2000-03-07 2009-07-21 Apple Inc. Method and apparatus for acquiring and organizing ink information in pen-aware computer systems
US7298903B2 (en) * 2001-06-28 2007-11-20 Microsoft Corporation Method and system for separating text and drawings in digital ink
US7050632B2 (en) * 2002-05-14 2006-05-23 Microsoft Corporation Handwriting layout analysis of freeform digital ink input

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000285251A (ja) * 1999-03-31 2000-10-13 Hitachi Ltd 手書き入力編集システム
JP2004501422A (ja) * 2000-04-13 2004-01-15 クゥアルコム・インコーポレイテッド マルチストロークのキャラクタ入力のための方法および装置
JP2004171521A (ja) * 2002-10-31 2004-06-17 Microsoft Corp インクツリーのための共通インタフェース
JP2004227564A (ja) * 2003-01-21 2004-08-12 Microsoft Corp インクディバイダおよび関連するアプリケーションプログラムインターフェース

Also Published As

Publication number Publication date
RU2358316C2 (ru) 2009-06-10
DE60314977D1 (de) 2007-08-30
RU2003136812A (ru) 2005-05-27
EP1811428B1 (en) 2009-09-16
EP1811428A1 (en) 2007-07-25
AU2003266779B2 (en) 2010-01-28
CN1517904B (zh) 2012-07-04
EP1450294A8 (en) 2006-06-07
CN1517904A (zh) 2004-08-04
ATE443299T1 (de) 2009-10-15
AU2003266779A1 (en) 2004-08-05
EP1450294B9 (en) 2008-08-13
BR0306010A (pt) 2005-05-17
US7218779B2 (en) 2007-05-15
AU2010201687A1 (en) 2010-05-20
ATE367621T1 (de) 2007-08-15
AU2010201687B2 (en) 2011-08-11
CA2449073C (en) 2012-01-24
KR20040067818A (ko) 2004-07-30
US20040141648A1 (en) 2004-07-22
KR100975504B1 (ko) 2010-08-11
EP1450294B1 (en) 2007-07-18
DE60314977T2 (de) 2007-12-06
EP1450294A1 (en) 2004-08-25
JP2004227564A (ja) 2004-08-12
CA2449073A1 (en) 2004-07-21
DE60329340D1 (de) 2009-10-29
MXPA03011669A (es) 2004-10-15

Similar Documents

Publication Publication Date Title
JP4499407B2 (ja) インクディバイダおよび関連するアプリケーションプログラムインターフェース
US7813556B2 (en) Incremental system for real time digital ink analysis
US7158675B2 (en) Interfacing with ink
JP4571867B2 (ja) 電子インク処理
CA2430802C (en) Method and system for displaying and linking ink objects with recognized text and objects
JP4502953B2 (ja) 電子インク処理
JP2004030632A (ja) ドキュメントの上に電子インクを重ねる方法
JP2007521535A (ja) 電子インク処理
US7958132B2 (en) Voting based scheme for electronic document node reuse
US7370288B1 (en) Method and system for selecting objects on a display device
US6970877B2 (en) Reducing and controlling sizes of prototype-based recognizers
JP2007521531A (ja) 電子インク処理
JP5162622B2 (ja) 電子インク処理

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090612

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090914

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090917

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091013

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100316

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100409

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100415

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4499407

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140423

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term