(57)【特許請求の範囲】
【請求項１】
ディスプレイと、
手書きによって入力される手書き文書を作成する処理手段とを具備し、
前記処理手段は、
前記手書き文書にさらに手書きされた第１ストロークに対応する第１ストロークデータを、マークアップ言語によって記述される階層化された文書構造の形式で第１のファイルに保存し、
前記第１ストロークの入力に応じて、前記第１ストロークデータに基づいて前記第１ストロークの軌跡を前記ディスプレイ上に描画し、
前記第１ストロークデータに対応する第１文字コードを取得し、前記第１文字コードを前記第１のファイルとは異なる第２のファイルに保存し、
前記第２のファイルへの前記第１文字コードの保存中に、さらに新たな第２ストロークが手書きされた場合、前記第２ストロークに対応する第２ストロークデータの前記第１ファイルへの保存と、前記第２ストロークデータに基づく前記第２ストロークの軌跡の前記ディスプレイ上への描画は、前記第１ストロークデータに対応する前記第１文字コードの前記第２のファイルへの保存の終了を待つこと無く実行される、電子機器。
【請求項２】
前記階層化された文書構造は、前記第１のファイル内の前記第１ストロークデータが手書きされた時間に関する時間情報を含み、
前記処理手段は、前記時間情報に基づいて、前記第１のファイルから前記第１ストロークデータを取得する請求項１記載の電子機器。
【請求項３】
前記第２のファイルにおいては、前記第１文字コードが前記第１ストロークデータに対応する識別情報に関連付けられていて、
前記第１のファイルの階層化された文書構造は、
前記第１ストロークデータ内に含まれる複数の座標データに対応する複数の第１要素と、
前記第１ストロークデータの識別情報を含む第２要素であって、前記複数の第１要素をグループ化する第２要素とを少なくとも含む請求項１記載の電子機器。
【請求項４】
前記第２要素は前記第１ストロークデータが手書きされた時間に関する時間情報を含む請求項３記載の電子機器。
【請求項５】
前記処理手段は、前記第２要素の時間情報に基づいて、前記第１ストロークデータが未処理のストロークデータであるか否かを判定する請求項４記載の電子機器。
【請求項６】
前記処理手段は、検索キーである第３の文字コードと前記第２のファイル内の複数の文字コードとを使用して前記第３の文字コードに対応するストロークデータを検索するテキスト検索を実行する請求項１記載の電子機器。
【請求項７】
前記処理手段は、前記第１文字コードを前記第１ストロークデータに対応する識別情報に関連付けて前記第２のファイルに保存する請求項１記載の電子機器。
【請求項８】
前記処理手段は、前記第１ストロークデータに対応する筆跡特徴量を取得し、前記筆跡特徴量を前記第２のファイルに保存する請求項１記載の電子機器。
【請求項９】
手書きによって入力される手書き文書を作成する手書き文書処理方法であって、
前記手書き文書にさらに手書きされた第１ストロークに対応する第１ストロークデータを、マークアップ言語によって記述される階層化された文書構造の形式で第１のファイルに保存することと、
前記第１ストロークの入力に応じて、前記第１ストロークデータに基づいて前記第１ストロークの軌跡をディスプレイ上に描画することと、
前記第１ストロークデータに対応する第１文字コードを取得し、前記第１文字コードを前記第１のファイルとは異なる第２のファイルに保存することとを具備し、
前記第２のファイルへの前記第１文字コードの保存中に、さらに新たな第２ストロークが手書きされた場合、前記第２ストロークに対応する第２ストロークデータの前記第１ファイルへの保存と、前記第２ストロークデータに基づく前記第２ストロークの軌跡の前記ディスプレイ上への描画は、前記第１ストロークデータに対応する前記第１文字コードの前記第２のファイルへの保存の終了を待つこと無く実行される、手書き文書処理方法。
【請求項１０】
手書きによって入力される手書き文書を作成するためのプログラムであって、
前記手書き文書にさらに手書きされた第１ストロークに対応する第１ストロークデータを、マークアップ言語によって記述される階層化された文書構造の形式で第１のファイルに保存する手順と、
前記第１ストロークの入力に応じて、前記第１ストロークデータに基づいて前記第１ストロークの軌跡をディスプレイ上に描画する手順と、
前記第１ストロークデータに対応する第１文字コードを取得し、前記第１文字コードを前記第１のファイルとは異なる第２のファイルに保存する手順とを、コンピュータに実行させ、
前記第２のファイルへの前記第１文字コードの保存中に、さらに新たな第２ストロークが手書きされた場合、前記第２ストロークに対応する第２ストロークデータの前記第１ファイルへの保存と、前記第２ストロークデータに基づく前記第２ストロークの軌跡の前記ディスプレイ上への描画は、前記第１ストロークデータに対応する前記第１文字コードの前記第２のファイルへの保存の終了を待つこと無く実行される、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、手書き文書を処理する技術に関する。
【背景技術】
【０００２】
近年、タブレット、ＰＤＡ、スマートフォンといった種々の電子機器が開発されている。この種の電子機器の多くは、ユーザによる入力操作を容易にするために、タッチスクリーンディスプレイを備えている。【０００３】
ユーザは、タッチスクリーンディスプレイ上に表示されるメニューまたはオブジェクトを指などでタッチすることにより、これらメニューまたはオブジェクトに関連づけられた機能の実行を電子機器に指示することができる。【０００４】
しかし、タッチスクリーンディスプレイを備える既存の電子機器の多くは、画像、音楽、他の各種メディアデータに対する操作性を追求したコンシューマ向け製品であり、会議、商談、商品開発などのビジネスシーンにおける利用については必ずしも適していない場合がある。このため、ビジネスシーンにおいては、いまなお、紙の手帳が広く利用されている。【０００５】
最近では、手書き文書を認識することによって得られるテキストを使用して手書き文書を検索するための技術も開発されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−１５５１１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、従来では、手書き文書の作成中又は編集中にこの手書き文書を検索するための情報を生成する技術については考慮されていないのが現状である。【０００８】
本発明の一形態の目的は、手書き文書を効率よく処理することができる電子機器および手書き文書処理方法を提供することである。
【課題を解決するための手段】
【０００９】
実施形態によれば、電子機器は、ディスプレイと、手書きによって入力される手書き文書を作成する処理手段とを具備する。前記処理手段は、前記手書き文書にさらに手書きされた第１ストロークに対応する第１ストロークデータを、マークアップ言語によって記述される階層化された文書構造の形式で第１のファイルに保存し、前記第１ストロークの入力に応じて、前記第１ストロークデータに基づいて前記第１ストロークの軌跡を前記ディスプレイ上に描画し、前記第１ストロークデータに対応する第１文字コードを取得し、前記第１文字コードを前記第１のファイルとは異なる第２のファイルに保存する。前記第２のファイルへの前記第１文字コードの保存中に、さらに新たな第２ストロークが手書きされた場合、前記第２ストロークに対応する第２ストロークデータの前記第１ファイルへの保存と、前記第２ストロークデータに基づく前記第２ストロークの軌跡の前記ディスプレイ上への描画は、前記第１ストロークデータに対応する前記第１文字コードの前記第２のファイルへの保存の終了を待つこと無く実行される。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態に係る電子機器の外観を示す斜視図である。
【図２】図２は、同実施形態の電子機器と外部装置との連携動作を示す図である。
【図３】図３は、同実施形態の電子機器のタッチスクリーンディスプレイ上に手書きされる手書き文書の例を示す図である。
【図４】図４は、同実施形態の電子機器によって記憶媒体に保存される、図３の手書き文書に対応する手書き文書情報の概要を説明するための図である。
【図５】図５は、同実施形態の電子機器のシステム構成を示すブロック図である。
【図６】図６は、同実施形態の電子機器によって表示されるデスクトップ／ドロア画面を示す図である。
【図７】図７は、同実施形態の電子機器によって表示されるデスクトップ画面を示す図である。
【図８】図８は、同実施形態の電子機器によって表示されるノートビュー画面を示す図である。
【図９】図９は、同実施形態の電子機器によって表示される検索キー入力ダイアログを示す図である。
【図１０】図１０は、同実施形態の電子機器によって実行される手書きノートアプリケーションプログラムの機能構成を示すブロック図である。
【図１１】図１１は、同実施形態の電子機器によって管理される手書き文書のデータ構造を示す図である。
【図１２】図１２は、同実施形態の電子機器によって管理される特徴量情報を示す図である。
【図１３】図１３は、同実施形態の電子機器によって管理される文字列情報を示す図である。
【図１４】図１４は、同実施形態の電子機器によって実行される筆跡検索の概要を説明するための図である。
【図１５】図１５は、同実施形態の電子機器によって実行される、ストロークデータ、特徴量情報、および文字列情報を保存する処理の手順を示すフローチャートである。
【図１６】図１６は、同実施形態の電子機器によって実行される検索処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、実施の形態について図面を参照して説明する。  
図１は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、ペンまたは指によって手書き入力可能なペン・ベースの携帯型電子機器である。この電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、ＰＤＡ等として実現され得る。以下では、この電子機器がタブレットコンピュータ１０として実現されている場合を想定する。タブレットコンピュータ１０は、タブレットまたはストレートコンピュータとも称される携帯型電子機器であり、図１に示すように、本体１１とタッチスクリーンディスプレイ１７とを備える。タッチスクリーンディスプレイ１７は、本体１１の上面に重ね合わせるように取り付けられている。
【００１２】
本体１１は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ１７には、フラットパネルディスプレイと、フラットパネルディスプレイの画面上のペンまたは指の接触位置を検出するように構成されたセンサとが組み込まれている。フラットパネルディスプレイは、例えば、液晶表示装置（ＬＣＤ）であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザなどを使用することができる。以下では、デジタイザとタッチパネルの２種類のセンサの双方がタッチスクリーンディスプレイ１７に組み込まれている場合を想定する。
【００１３】
このタッチスクリーンディスプレイ１７は、指を使用した画面に対するタッチ操作のみならず、ペン１００を使用した画面に対するタッチ操作も検出することができる。ペン１００は例えば電磁誘導ペンであってもよい。ユーザは、外部オブジェクト（ペン１００又は指）を使用してタッチスクリーンディスプレイ１７上で手書き入力操作を行うことができる。手書き入力操作中においては、画面上の外部オブジェクト（ペン１００又は指）の動きの軌跡、つまり手書き入力操作によって手書きされるストローク（手書きストロークの軌跡）がリアルタイムに描画され、これによって手書きにより入力された複数のストロークが画面上に表示される。外部オブジェクトが画面に接触されている間の外部オブジェクトの動きの軌跡が１つのストロークに相当する。手書きされた文字および文字以外の手書きされたオブジェクト（手書きされた図形、手書きされた表、など）に対応する多数のストロークの集合が手書き文書を構成する。
【００１４】
本実施形態では、この手書き文書は、イメージデータではなく、各ストロークの軌跡の座標列とストローク間の順序関係を示す時系列情報（手書き文書情報）として記憶媒体に保存される。この手書き文書情報の例は図４を参照して後述するが、この手書き文書情報は、複数のストロークが手書きされた順を示し、且つ複数のストロークにそれぞれ対応する複数のストロークデータを含む。換言すれば、この手書き文書情報は、複数のストロークにそれぞれ対応する時系列のストロークデータの集合を意味する。各ストロークデータは、ある一つのストロークに対応し、このストロークの軌跡上の複数の点それぞれに対応する複数の座標データ（時系列座標）を含む。これらストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序に相当する。
【００１５】
タブレットコンピュータ１０は、記憶媒体から既存の任意の手書き文書情報を読み出し、この手書き文書情報によって示される複数のストロークの軌跡を画面上に描画することができる。手書き文書情報によって示される複数のストロークも、手書きによって入力される複数のストロークである。
【００１６】
さらに、タブレットコンピュータ１０は編集機能を有している。この編集機能は、「消しゴム」ツール、範囲選択ツール、および他の各種ツール等を用いたユーザによる編集操作に応じて、範囲選択ツールによって選択される表示中の手書き文書内の任意の部分（手書き文字、手書きマーク、手書き図形、手書き表、等）を削除または移動することができる。またさらに、範囲選択ツールによって選択される手書き文書内の任意の部分を、手書き文書を検索するための検索キーとして指定することもできる。
【００１７】
本実施形態では、手書き文書は、１つまたは複数のページとして管理されうる。この場合、手書き文書情報を１つの画面に収まる面積単位で区切ることによって、１つの画面に収まる手書き文書情報のまとまりを１つのページとして記録してもよい。あるいは、ページのサイズを可変できるようにしてもよい。この場合、ページのサイズは１つの画面のサイズよりも大きい面積に広げることができるので、画面のサイズよりも大きな面積の手書き文書を一つのページとして扱うことができる。１つのページ全体をディスプレイに同時に表示できない場合は、そのページを縮小してするようにしてもよいし、縦横スクロールによってページ内の表示対象部分を移動するようにしてもよい。
【００１８】
図２は、タブレットコンピュータ１０と外部装置との連携動作の例を示している。タブレットコンピュータ１０は、パーソナルコンピュータ１やクラウドと連携することができる。すなわち、タブレットコンピュータ１０は、無線ＬＡＮなどの無線通信デバイスを備えており、パーソナルコンピュータ１との無線通信を実行することができる。さらに、タブレットコンピュータ１０は、インターネット上のサーバ２との通信を実行することもできる。サーバ２はオンラインストレージサービス、他の各種クラウドコンピューティングサービスを実行するサーバであってもよい。
【００１９】
パーソナルコンピュータ１はハードディスクドライブ（ＨＤＤ）のようなストレージデバイスを備えている。タブレットコンピュータ１０は、手書き文書情報をネットワーク越しにパーソナルコンピュータ１に送信して、パーソナルコンピュータ１のＨＤＤに記録することができる（アップロード）。タブレットコンピュータ１０とパーソナルコンピュータ１との間のセキュアな通信を確保するために、通信開始時には、パーソナルコンピュータ１がタブレットコンピュータ１０を認証するようにしてもよい。この場合、タブレットコンピュータ１０の画面上にユーザに対してＩＤまたはパスワードの入力を促すダイアログを表示してもよいし、タブレットコンピュータ１０のＩＤなどを自動的にタブレットコンピュータ１０からパーソナルコンピュータ１に送信してもよい。
【００２０】
これにより、タブレットコンピュータ１０内のストレージの容量が少ない場合でも、タブレットコンピュータ１０が多数の手書き文書情報あるいは大容量の手書き文書情報を扱うことが可能となる。
【００２１】
さらに、タブレットコンピュータ１０は、パーソナルコンピュータ１のＨＤＤに記録されている任意の１以上の手書き文書情報を読み出し（ダウンロード）、その読み出した手書き文書情報によって示されるストロークをタブレットコンピュータ１０のディスプレイ１７の画面に表示することができる。この場合、複数の手書き文書情報それぞれのページを縮小することによって得られるサムネイルの一覧をディスプレイ１７の画面上に表示してもよいし、これらサムネイルから選ばれた１ページをディスプレイ１７の画面上に通常サイズで表示してもよい。
【００２２】
さらに、タブレットコンピュータ１０が通信する先はパーソナルコンピュータ１ではなく、上述したように、ストレージサービスなどを提供するクラウド上のサーバ２であってよい。タブレットコンピュータ１０は、手書き文書情報をネットワーク越しにサーバ２に送信して、サーバ２のストレージデバイス２Ａに記録することができる（アップロード）。さらに、タブレットコンピュータ１０は、サーバ２のストレージデバイス２Ａに記録されている任意の手書き文書情報を読み出して（ダウンロード）、その手書き文書情報によって示されるストロークそれぞれの軌跡をタブレットコンピュータ１０のディスプレイ１７の画面に表示することができる。
【００２３】
このように、本実施形態では、手書き文書情報が保存される記憶媒体は、タブレットコンピュータ１０内のストレージデバイス、パーソナルコンピュータ１内のストレージデバイス、サーバ２のストレージデバイスのいずれであってもよい。
【００２４】
次に、図３および図４を参照して、ユーザによって手書きされたストローク（文字、図形、表など）と手書き文書情報との関係について説明する。図３は、ペン１００などを使用してタッチスクリーンディスプレイ１７上に手書きされる手書き文書（手書き文字列）の例を示している。
【００２５】
手書き文書では、一旦手書きによって入力される文字や図形などの上に、さらに別の文字や図形などが手書きによって入力されるというケースが多い。図３においては、「ＡＢＣ」の手書き文字列が「Ａ」、「Ｂ」、「Ｃ」の順番で手書きによって入力され、この後に、手書きの矢印が、手書き文字「Ａ」のすぐ近くに手書きによって入力された場合が想定されている。
【００２６】
手書き文字「Ａ」は、ペン１００などを使用して手書きされる２つのストローク（「∧」形状の軌跡、「−」形状の軌跡）によって、つまり２つの軌跡によって表現される。最初に手書きされる「∧」形状のペン１００の軌跡は例えば等時間間隔でリアルタイムにサンプリングされ、これによって「∧」形状のストロークの時系列座標ＳＤ１１、ＳＤ１２、…ＳＤ１ｎが得られる。同様に、次に手書きされる「−」形状のペン１００の軌跡も等時間間隔でリアルタイムにサンプリングされ、これによって「−」形状のストロークの時系列座標ＳＤ２１、ＳＤ２１、…ＳＤ２ｎが得られる。
【００２７】
手書き文字「Ｂ」は、ペン１００などを使用して手書きされた２つのストローク、つまり２つの軌跡によって表現される。手書き文字「Ｃ」は、ペン１００などを使用して手書きされた手書きされた１つのストローク、つまり１つの軌跡によって表現される。手書きの「矢印」は、ペン１００などを使用して手書きされた手書きされた２つのストローク、つまり２つの軌跡によって表現される。
【００２８】
図４は、図３の手書き文書に対応する手書き文書情報２００を示している。手書き文書情報２００は、複数のストロークデータＳＤ１、ＳＤ２、…、ＳＤ７を含む。手書き文書情報２００内においては、これらストロークデータＳＤ１、ＳＤ２、…、ＳＤ７は、これらストロークが手書きされた順に時系列に並べられている。
【００２９】
手書き文書情報２００において、先頭の２つのストロークデータＳＤ１、ＳＤ２は、手書き文字「Ａ」の２つのストロークをそれぞれ示している。３番目と４番目のストロークデータＳＤ３、ＳＤ４は、手書き文字「Ｂ」を構成する２つのストロークをそれぞれ示している。５番目のストロークデータＳＤ５は、手書き文字「Ｃ」を構成する１つのストロークを示している。６番目と７番目のストロークデータＳＤ６、ＳＤ７は、手書き「矢印」を構成する２つのストロークをそれぞれ示している。
【００３０】
各ストロークデータは、一つのストロークに対応する座標データ系列（時系列座標）、つまり一つのストロークの軌跡上の複数の点それぞれに対応する複数の座標を含む。各ストロークデータにおいては、複数の座標はストロークが書かれた順に時系列に並べられている。例えば、手書き文字「Ａ」に関しては、ストロークデータＳＤ１は、手書き文字「Ａ」の「∧」形状のストロークの軌跡上の点それぞれに対応する座標データ系列（時系列座標）、つまりｎ個の座標データＳＤ１１、ＳＤ１２、…ＳＤ１ｎを含む。ストロークデータＳＤ２は、手書き文字「Ａ」の「−」形状のストロークの軌跡上の点それぞれに対応する座標データ系列、つまりｎ個の座標データＳＤ２１、ＳＤ２２、…ＳＤ２ｎを含む。なお、座標データの数はストロークデータ毎に異なっていてもよい。
【００３１】
各座標データは、対応する軌跡内のある１点に対応するＸ座標およびＹ座標を示す。例えば、座標データＳＤ１１は、「∧」形状のストロークの始点のＸ座標（Ｘ１１）およびＹ座標（Ｙ１１）を示す。ＳＤ１ｎは、「∧」形状のストロークの終点のＸ座標（Ｘ１ｎ）およびＹ座標（Ｙ１ｎ）を示す。
【００３２】
さらに、各座標データは、その座標に対応する点が手書きされた時点に対応するタイムスタンプ情報（時間情報）Ｔを含んでいてもよい。手書きされた時点は、絶対時間（例えば、年月日時分秒）またはある時点を基準とした相対時間のいずれであってもよい。例えば、各ストロークデータに、ストロークが書き始められた絶対時間（例えば、年月日時分秒）をタイムスタンプ情報（時間情報）Ｔとして付加し、さらに、ストロークデータ内の各座標データに、絶対時間との差分を示す相対時間をタイムスタンプ情報（時間情報）Ｔとして付加してもよい。ある座標データに対応する相対時間（時間情報）は、ストロークが書き始められた時間とこの座標データに対応する点が手書きされた時間との間の時間間隔に相当する。
【００３３】
このように、各ストロークデータにタイムスタンプ情報Ｔが追加された手書き文書情報を使用することにより、ストローク間の時間的関係をより精度よく表すことができる。
【００３４】
さらに、各座標データには、筆圧を示す情報（Ｚ）を追加してもよい。
【００３５】
図４で説明したような構造を有する手書き文書情報２００は、個々のストロークの筆跡だけでなく、ストローク間の時間的関係も表すことができる。したがって、この手書き文書情報２００を使用することにより、図３に示すようにたとえ手書き「矢印」の先端部が手書き文字「Ａ」上に重ねてまたは手書き文字「Ａ」に近接して書かれたとしても、手書き文字「Ａ」と手書き「矢印」の先端部とを異なる文字または図形として扱うことが可能となる。
【００３６】
さらに、本実施形態では、上述したように、手書き文書情報は、イメージまたは文字認識結果ではなく、時系列のストロークデータの集合として記憶されるので、手書き文字の言語に依存せずに手書き文字を扱うことができる。よって、本実施形態の手書き文書情報２００の構造は、使用言語の異なる世界中の様々な国で共通に使用できる。
【００３７】
図５は、タブレットコンピュータ１０のシステム構成を示す図である。  
タブレットコンピュータ１０は、図５に示されるように、ＣＰＵ１０１、システムコントローラ１０２、主メモリ１０３、グラフィクスコントローラ１０４、ＢＩＯＳ−ＲＯＭ１０５、不揮発性メモリ１０６、無線通信デバイス１０７、エンベデッドコントローラ（ＥＣ）１０８等を備える。
【００３８】
ＣＰＵ１０１は、タブレットコンピュータ１０内の各種モジュールの動作を制御するプロセッサである。ＣＰＵ１０１は、ストレージデバイスである不揮発性メモリ１０６から主メモリ１０３にロードされる各種ソフトウェアを実行する。これらソフトウェアには、オペレーティングシステム（ＯＳ）２０１、および各種アプリケーションプログラムが含まれている。アプリケーションプログラムには、手書きノートアプリケーションプログラム２０２が含まれている。この手書きノートアプリケーションプログラム２０２は、上述の手書き文書情報を作成および表示する機能、手書き文書情報を編集する機能、所望の手書き部分を含む手書き文書情報や、ある手書き文書情報内の所望の手書き部分を検索するための手書き文書検索機能を有している。手書き文書検索機能は、筆跡検索およびテキスト検索（文字列検索）の双方を実行することができる。筆跡検索は、検索キーである手書きストローク群の筆跡特徴量と類似する筆跡特徴量を有するストロークデータ群を検索するための検索方式である。テキスト検索（文字列検索）は、検索キーであるテキスト（文字コード）に対応する手書き文字（ストロークデータ群）を検索するための検索方式である。
【００３９】
手書き文書検索機能は、さらに、手書き文書情報を検索するためのインデックス情報を生成する機能を有している。本実施形態では、特徴量情報と文字列情報とがインデックス情報として生成される。特徴量情報は、各手書き文書情報の各ストロークデータの筆跡特徴量を含み、上述の筆跡検索方式で手書き文書を検索するためのインデックス情報として使用される。文字列情報は、各手書き文書情報内の各手書き文字に対応する文字コードを含み、上述のテキスト検索方式で手書き文書を検索するためのインデックス情報として使用される。
【００４０】
また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０５に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００４１】
システムコントローラ１０２は、ＣＰＵ１０１のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ１０２には、主メモリ１０３をアクセス制御するメモリコントローラも内蔵されている。また、システムコントローラ１０２は、ＰＣＩ  ＥＸＰＲＥＳＳ規格のシリアルバスなどを介してグラフィクスコントローラ１０４との通信を実行する機能も有している。
【００４２】
グラフィクスコントローラ１０４は、本タブレットコンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７Ａを制御する表示コントローラである。このグラフィクスコントローラ１０４によって生成される表示信号はＬＣＤ１７Ａに送られる。ＬＣＤ１７Ａは、表示信号に基づいて画面イメージを表示する。このＬＣＤ１７Ａ上にはタッチパネル１７Ｂおよびデジタイザ１７Ｃが配置されている。タッチパネル１７Ｂは、ＬＣＤ１７Ａの画面上で入力を行うための静電容量式のセンサである。指が接触される画面上の接触位置および接触位置の動き等はタッチパネル１７Ｂによって検出される。デジタイザ１７ＣはＬＣＤ１７Ａの画面上で入力を行うための電磁誘導式のセンサである。ペン１００が接触される画面上の接触位置および接触位置の動き等はデジタイザ１７Ｃによって検出される。
【００４３】
無線通信デバイス１０７は、無線ＬＡＮまたは３Ｇ移動通信などの無線通信を実行するように構成されたデバイスである。ＥＣ１０８は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。ＥＣ１０８は、ユーザによるパワーボタンの操作に応じて本タブレットコンピュータ１０を電源オンまたは電源オフする機能を有している。
【００４４】
次に、手書きノートアプリケーションプログラム２０２によってユーザに提示される幾つかの代表的な画面の例を説明する。
【００４５】
図６は、手書きノートアプリケーションプログラム２０２によって表示されるデスクトップ／ドロア画面を示す。デスクトップ／ドロア画面は複数の手書き文書情報を扱うための基本画面である。以下では、手書き文書情報を手書きノートと称する。
【００４６】
デスクトップ／ドロア画面は、デスクトップ画面領域７０とドロア画面領域７１とを含む。デスクトップ画面領域７０は作業中の複数の手書きノートに対応する複数のノートアイコン８０１〜８０５を表示するテンポラリ領域である。ノートアイコン８０１〜８０５の各々は、対応する手書きノート内のあるページのサムネイルを表示する。デスクトップ画面領域７０は、さらに、ペンアイコン７７１、カレンダーアイコン７７２、スクラップノートアイコン７７３、タグアイコン７７４を表示する。
【００４７】
ペンアイコン７７１は、表示画面をデスクトップ／ドロア画面から図８で後述するノートビュー画面に切り替えるためのグラフィカルユーザインタフェース（ＧＵＩ）である。カレンダーアイコン７７２は現在の日付を示すアイコンである。このカレンダーアイコン７７２は、表示画面をデスクトップ／ドロア画面から現在の日付に関連付けられたタイムラインノート画面に切り替えるためのＧＵＩである。スクラップノートアイコン７７３は、スクラップデータを作成または閲覧するためのＧＵＩである。作成されたスクラップデータはストラップブックに登録される。スクラップノートアイコン７７３は、スクラップブックに登録されている各スクラップデータのサムネイルを表示する。タグアイコン７７４は、任意の手書きノート内の任意のページに付箋紙（タグ）を貼り付けるためのＧＵＩである。
【００４８】
ドロア画面領域７１は、作成済みの全ての手書きノートを格納するためのストレージ領域を閲覧するための表示領域である。ドロア画面領域７１は、全ての手書きノート内の幾つかの手書きノートに対応するノートアイコン８０Ａ，８０Ｂ，８０Ｃを表示する。ノートアイコン８０Ａ，８０Ｂ，８０Ｃの各々は、対応する手書きノート内のあるページのサムネイルを表示する。手書きノートアプリケーションプログラム２０２は外部オブジェクトを使用してユーザによって行われるドロア画面領域７１上のジェスチャ（例えばスワイプジェスチャ等）を検出することができる。このジェスチャ（例えばスワイプジェスチャ等）の検出に応答して、手書きノートアプリケーションプログラム２０２は、ドロア画面領域７１上の画面イメージを左方向または右方向にスクロールする。これにより、ドロア画面領域７１に任意の手書きノートそれぞれに対応するノートアイコンを表示することができる。
【００４９】
さらに、手書きノートアプリケーションプログラム２０２は外部オブジェクトを使用してユーザによって行われるドロア画面領域７１のノートアイコン上のジェスチャ（例えばタップジェスチャ等）を検出することができる。ドロア画面領域７１上のあるノートアイコン上のジェスチャ（例えばタップジェスチャ等）の検出に応答して、手書きノートアプリケーションプログラム２０２は、このノートアイコンをデスクトップ画面領域７０の中央部に移動する。そして、手書きノートアプリケーションプログラム２０２は、このノートアイコンに対応する手書きノートを選択し、そして、デスクトップ／ドロア画面の代わりに、図７に示すデスクトップ画面を表示する。図７のデスクトップ画面は、選択された手書きノート内の任意のページを閲覧可能な画面である。
【００５０】
さらに、手書きノートアプリケーションプログラム２０２は外部オブジェクトを使用してユーザによって行われるデスクトップ画面領域７０上のジェスチャ（例えばタップジェスチャ等）も検出することができる。デスクトップ画面領域７０の中央部に位置するノートアイコン上のジェスチャ（例えばタップジェスチャ等）の検出に応答して、手書きノートアプリケーションプログラム２０２は、中央部に位置するノートアイコンに対応する手書きノートを選択し、そして、デスクトップ／ドロア画面の代わりに、図７に示すデスクトップ画面を表示する。
【００５１】
図７は上述のデスクトップ画面を示す。  
このデスクトップ画面は選択された手書きノート内の任意のページを閲覧可能な画面である。ここでは、ノートアイコン８０１に対応する手書きノートが選択された場合を想定する。この場合、手書きノートアプリケーションプログラム２０２は、この手書きノートに含まれる複数のページ９０１，９０２，９０３，９０４，９０５を、これらページ９０１，９０２，９０３，９０４，９０５それぞれの少なくとも一部分が視認可能で且つこれらページ９０１，９０２，９０３，９０４，９０５が重なった形態で表示する。
【００５２】
デスクトップ画面は、さらに、上述のペンアイコン７７１、カレンダーアイコン７７２、スクラップノートアイコン７７３、タグアイコン７７４を表示する。
【００５３】
手書きノートアプリケーションプログラム２０２はユーザによって行われるデスクトップ画面上の様々なジェスチャを検出することができる。例えば、あるジェスチャの検出に応答して、手書きノートアプリケーションプログラム２０２は、一番上に表示されるべきページを任意のページに変更する（ページ送り、ページ戻し）。また、一番上のページ上で行われるあるジェスチャ（例えばタップジェスチャ）の検出に応答して、またはペンアイコン７７１上で行われるあるジェスチャ（例えばタップジェスチャ）の検出に応答して、手書きノートアプリケーションプログラム２０２は、一番上のページを選択し、そしてデスクトップ画面の代わりに、図８に示すノートビュー画面を表示する。
【００５４】
図８のノートビュー画面は、ページ（手書きページ）の新規作成、および既存のページの閲覧および編集が可能な画面である。図７のデスクトップ画面上のページ９０１が選択された場合には、図８に示すように、ノートビュー画面は、このページ９０１の内容を表示する。
【００５５】
ノートビュー画面は、さらに、黒ペンボタン５０１、赤ペンボタン５０２、マーカーボタン５０３、選択ボタン５０４、および消しゴムボタン５０５を表示する。
【００５６】
例えば、黒ペンボタン５０１がユーザによるタップジェスチャによって選択された状態で、ペン１００を用いた手書き入力操作がノートビュー画面上で行われると、手書きノートアプリケーションプログラム２０２は、ペン１００の動きに合わせて黒色のストローク（軌跡）をノートビュー画面上に表示する。
【００５７】
図９は、検索キー入力ダイアログの例を示す。例えば、デスクトップ画面上の空き領域上で行われるタップジェスチャの検出に応答して、手書きノートアプリケーションプログラム２０２は、検索キー入力領域５１１、筆跡検索ボタン５１２Ａ、テキスト検索ボタン５１２Ｂ、および検索実行ボタン５１２を含む検索キー入力ダイアログをデスクトップ画面上に表示する。筆跡検索ボタン５１２Ａは上述の筆跡検索方式を選択するためのボタンである。テキスト検索ボタン５１２Ｂは上述のテキスト検索方式を選択するためのボタンである。検索ボタン５１２Ｃは、検索処理の実行を要求するためのボタンである。
【００５８】
筆跡検索方式が選択された場合においては、検索キー入力領域５１１は、検索キーとすべき文字列、図形、表などを手書きするための入力領域として使用することができる。ユーザは、手書き文字列に限らず、手書き図形、手書き表などを検索キー入力領域５１１に手書きすることができる。図９においては、検索キー入力領域５１１に手書き文字列「Ｄｅｔｅｒｍｉｎｅ」が検索キーとして入力された場合が例示されている。検索キー入力領域５１１に手書き文字列「Ｄｅｔｅｒｍｉｎｅ」が検索キーとして入力された状態で検索ボタン５１２Ｃがユーザによって選択されると、手書き文字列「Ｄｅｔｅｒｍｉｎｅ」の筆跡特徴と類似する筆跡特徴を有するストロークデータ群を含む手書き文書を検索するための筆跡検索が実行される。
【００５９】
テキスト検索方式が選択された場合においては、例えばソフトウェアキーボードが画面上に表示される。ユーザは、ソフトウェアキーボードを操作することによって任意のテキスト（文字列）を検索キーとして検索キー入力領域５１１に入力することができる。検索キー入力領域５１１にテキストが検索キーとして入力された状態で検索ボタン５１２Ｃがユーザによって選択されると、このテキストに対応するストロークデータ群を含む手書き文書を検索するためのテキスト検索が実行される。
【００６０】
次に、図１０を参照して、手書きノートアプリケーションプログラム２０２の機能構成について説明する。
【００６１】
手書きノートアプリケーションプログラム２０２は、手書き文書情報を扱うことが可能なＷＹＳＩＷＹＧアプリケーションであり、主制御部３００、描画モジュール３１１、筆跡管理モジュール３１２、筆跡検索モジュール３１３Ａ、文字認識モジュール３１３Ｂ、及び文字検索モジュール３１３Ｃ等を備える。主制御部３００は、描画モジュール３１１、筆跡管理モジュール３１２、筆跡検索モジュール３１３Ａ、及び文字認識モジュール３１３Ｂ、文字検索モジュール３１３Ｃ等と共同して、手書き文書（手書きページ）の作成、表示、編集、検索等を行う。
【００６２】
本実施形態では、手書き文書情報（複数のストロークデータ）と筆跡特徴量情報／文字列情報とは互いに異なるファイルを用いて管理される。手書き文書情報については、マークアップ言語に対応するファイル形式を使用して管理される。マークアップ言語に対応するファイル形式としては、例えば、ｘｍｌ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイルを使用し得る。この場合、手書き文書情報内の複数のストロークデータは、マークアップ言語によって記述される階層化された文書構造の形式で第１のファイル（ｘｍｌファイル）に保存される。例えば１つのｘｍｌファイルで１つの手書きページ（手書きページデータ）を管理しても良い。この場合、手書きページの数に対応する数のｘｍｌファイルが作成される。
【００６３】
一方、手書きページデータに対応する筆跡特徴量情報／文字列情報は、この手書きページデータの複数のストロークデータを保存するｘｍｌファイルとは別の第２のファイル、例えば、データベースファイルに保存される。この場合、筆跡特徴量情報／文字列情報は、ある１以上のストロークデータに対応する筆跡特徴量／文字コードがこの１以上のストロークデータに対応する識別情報に関連づけられた状態で（例えばテーブル形式）データベースファイルのような第２のファイルに保存される。
【００６４】
もし手書きページデータ（ストロークデータ）とこの手書きページデータに対応する筆跡特徴量情報／文字列情報とを同一のデータベースを使用して管理すると、データベース内の筆跡特徴量情報／文字列情報の保存／更新処理が実行されている間は、ストロークデータの保存／更新や、ストロークデータの描画処理を行うことができなくなる場合がある。なぜなら、通常、データベースにおいては、２つの異なるリード処理を同時に行うことは可能であるが、２つの異なるライト処理を同時に行うことはできず、データの整合性を保証するためにこれらライト処理間の排他制御を行うことが要求されるからである。手書きページデータ（ストロークデータ）および筆跡特徴量情報／文字列情報がそれぞれ異なるテーブルで管理されていたとしても、これらテーブルが同じデータベースファイル内のテーブル群である限り、同様の排他制御が必要となる。
【００６５】
手書きされたストロークの描画自体は、このストロークに対応するストロークデータをデータベースに保存する前に実行してもよい。しかし、もしこのストロークデータがデータベースに保存される前に電子機器が予期せぬエラーによって電源断されると、ストロークが描画されてユーザに提示されたにもかかわらず、このストロークに対応するストロークデータが消失してしまうことになる。したがって、データベース内の筆跡特徴量情報／文字列情報の更新処理が実行されている間は、実際には、上述したように、ストロークデータの保存／更新のみならず、描画処理の実行も停止することが必要となる。
【００６６】
手書きページの作成中はこの手書きページに対応する筆跡特徴量情報／文字列情報の生成処理を実行しないようにしてもよい。しかし、このようにすると、作成中の手書きページに対応する筆跡特徴量情報／文字列情報が存在しなくなり、作成中の手書きページに対する検索が全く実行できなくなるという自体が生じる可能性がある。
【００６７】
本実施形態では、手書きページデータ（ストロークデータ）はｘｍｌファイルに保存され、この手書きページデータに対応する筆跡特徴量情報／文字列情報は別のファイル（データベースファイル）に保存される。したがって、たとえある手書きページデータに対応する筆跡特徴量情報／文字列情報をデータベースファイルに保存する処理の実行中であっても、この筆跡特徴量情報／文字列情報の保存の終了を待つことなく、この手書きページデータに新たなストロークデータを保存（追加）する処理、およびこの新たなストロークデータに対応するストロークを描画する処理を即座に行うことができる。換言すれば、手書きページデータの作成または編集操作が行われている間に、この手書きページデータに対応する筆跡特徴量情報／文字列情報を生成および保存する処理をほぼリアルタイムに行うことが可能となる。例えば、新たなストロークが手書きされると、このストロークの軌跡が描画されると共に、このストロークに対応するストロークデータがｘｍｌファイルに即座に保存される。そして、このストロークデータはｘｍｌファイルから読み出され、このストロークデータに対応する筆跡特徴量情報／文字列情報が生成される。生成された筆跡特徴量情報／文字列情報はデータベースファイルのような別のファイルに保存される。
【００６８】
本実施形態では、上述のように、手書きページデータは複数のストロークデータの集合から構成されており、また各ストロークデータは複数の座標データから構成されている。また、手書きページデータは、ストロークが手書きされた時間に関する時間情報やストロークの筆圧情報を含む場合もある。ｘｍｌファイルは複数の要素間の関係を、階層化された文書構造によって管理することができる。したがって、ｘｍｌファイルは各々が複数の座標データを含む複数のストロークデータの管理に有用である。また、ｘｍｌファイルはテキストベースのデータであるので、データベースファイルに比べ、柔軟な仕様変更が可能である。よって、ｘｍｌファイルを使用することにより、ストロークデータに関する属性の追加または座標データに関する属性の追加等にも柔軟に対応することができる。
【００６９】
以下、手書きノートアプリケーションプログラム２０２内の各部の機能を説明する。  
主制御部３００は、タッチスクリーンディスプレイ１７（例えばデジタイザ１７Ｃ）からペン１００の動きの軌跡に対応する座標列を受信する。主制御部３００は、例えば、１ストローク単位で、このストロークの軌跡上の複数の点に対応する複数の座標データ（複数のポイントデータ）を筆跡管理モジュール３１２に送信する。筆跡管理モジュール３１２は、ある手書きページに手書きされる複数のストロークに対応する複数のストロークデータをｘｍｌファイルに保存するストローク処理部として機能する。より詳しくは、筆跡管理モジュール３１２は、主制御部３１１から受信される複数の座標データ（複数のポイントデータ）をｘｍｌファイルに保存する。そして、筆跡管理モジュール３１２は、これら複数の座標データ（複数のポイントデータ）をｘｍｌファイルから読み出し、読み出した複数の座標データ（複数のポイントデータ）を描画モジュール３１１に送信する。なお、筆跡管理モジュール３１２は、主制御部３１１から受信される複数の座標データ（複数のポイントデータ）をすぐにｘｍｌファイルに保存することができるので、最初に、主制御部３００から受信される複数の座標データを描画モジュール３１１に送信し、次いで、これら複数の座標データをｘｍｌファイルに保存してもよい。さらに、筆跡管理モジュール３１２は、任意のｘｍｌファイルから手書きページ（ストロークデータ群）を読み出し、各ストロークデータの複数の座標データを描画モジュール３１１に送信することもできる。
【００７０】
描画モジュール３１１は、手書きされる複数のストロークに対応する複数の軌跡を画面上に描画するように構成されている。この描画モジュール３１１は、筆跡管理モジュール３１２から複数の座標データを受信し、これら座標データに基づいて、ストロークに対応する軌跡を描画する。この場合、描画モジュール３１１自体がストロークに対応する軌跡を画面上に描画（表示）してもよいし、主制御部３００が、描画モジュール３１１から描画結果（軌跡）を受信し、この描画結果（軌跡）に基づいてストロークに対応する軌跡を画面上に表示してもよい。
【００７１】
筆跡検索モジュール３１３Ａ、および文字認識モジュール３１３Ｂは、主制御部３００と共同して、作成又は編集中の手書きページに対応する上述の筆跡特徴量情報／文字列情報をこの手書きページを検索するためのインデックス情報として生成する生成部として機能する。より詳しくは、筆跡検索モジュール３１３Ａは、作成又は編集中の手書きページに対応するｘｍｌファイル内の複数のストロークデータから、これら複数のストロークデータに対応する複数の筆跡特徴量を、これら複数のストロークデータを筆跡検索方式で検索するためのインデックス情報（筆跡特徴量情報）として生成する。そして、筆跡検索モジュール３１３Ａは、生成した複数の筆跡特徴量を上述の複数のストロークデータの識別情報と関連づけて特徴量データベース４１２Ａに保存する。
【００７２】
筆跡検索モジュール３１３Ａによるストロークデータの処理、つまり筆跡特徴量情報を生成する処理は、未処理のストロークデータ、つまり筆跡特徴量が生成されていないストロークデータに対して実行される。すなわち、筆跡検索モジュール３１３Ａは、作成又は編集中の手書きページに対応するｘｍｌファイルから未処理の各ストロークデータを取得する。そして、筆跡検索モジュール３１３Ａは、未処理の各ストロークデータを処理することによって、この未処理の各ストロークデータの筆跡特徴量を計算する。ストロークデータの筆跡特徴量としては、ストロークデータ（ストローク）の特徴を表現可能な任意の情報を使用し得る。例えば、ストロークの筆跡特徴量として、このストロークの形状、筆画方向、傾斜、等を表す特徴量データを使用し得る。
【００７３】
特徴量データベース４１２Ａは筆跡特徴量情報を保存するためのデータベースファイルである。特徴量データベース４１２Ａ内のテーブルにおいては、多数のストロークデータの識別情報（ストロークＩＤ）とこれら多数のストロークデータに対応する多数の筆跡特徴量とが格納される。さらに、特徴量データベース４１２Ａ内のテーブルにおいては、各ストロークデータの筆跡特徴量はこのストロークデータの識別情報（ストロークＩＤ）に関連付けられるだけでなく、このストロークデータが含まれている手書きページの識別情報（ページＩＤ）にも関連付けられていてもよい。
【００７４】
文字認識モジュール３１３Ｂは、主制御部３００と共同して、作成又は編集中の手書きページに対応するｘｍｌファイル内の複数のストロークデータから、これら複数のストロークデータに対応する複数の文字コードを、これら複数のストロークデータをテキスト検索方式で検索するためのインデックス情報（文字列情報）として生成する。そして、文字認識モジュール３１３Ｂは、生成した複数の文字コードを上述の複数のストロークデータの識別情報と関連づけて文字検索データベース４１２Ｂに保存する。２以上のストロークデータによって一つの文字が構成されている場合には、この文字に対応する文字コードはこれら２以上のストロークデータに関連づけられた状態で文字検索データベース４１２Ｂに保存される。
【００７５】
文字認識モジュール３１３Ｂによるストロークデータの処理（文字認識処理）、つまり文字コードを生成する処理は、未処理のストロークデータ、つまり文字コードが生成されていないストロークデータに対して実行される。すなわち、文字認識モジュール３１３Ｂは、作成又は編集中の手書きページに対応するｘｍｌファイルから未処理の各ストロークデータを取得する。そして、文字認識モジュール３１３Ｂは、未処理の各ストロークデータを文字認識することによって、この未処理の各ストロークデータの文字コードを生成する。
【００７６】
文字検索データベース４１２Ｂは文字列情報を保存するためのデータベースファイルである。文字検索データベース４１２Ｂ内のテーブルにおいては、多数のストロークデータの識別情報（ストロークＩＤ）とこれら多数のストロークデータに対応する多数の文字コードとが格納される。さらに、文字検索データベース４１２Ｂ内のテーブルにおいては、各ストロークデータの文字コードはこのストロークデータの識別情報（ストロークＩＤ）に関連付けられるだけでなく、このストロークデータが含まれている手書きページの識別情報（ページＩＤ）にも関連付けられていてもよい。
【００７７】
この文字検索データベース４１２Ｂのデータベースファイルは、特徴量データベース４１２Ａと異なるデータベースファイルであってもよい。これにより、筆跡特徴量情報を保存する処理と同時に文字列情報を保存する処理を実行することができる。
【００７８】
筆跡検索モジュール３１３Ａは、筆跡特徴量情報を生成する生成部として機能するだけでなく、上述の筆跡検索を実行するための検索部としても機能する。すなわち、筆跡検索モジュール３１３Ａは、検索キーであるストロークデータの筆跡特徴量と特徴量データベース４１２Ａ内の筆跡特徴量情報とを使用して、検索キーであるストロークデータに対応するストロークデータを検索する。
【００７９】
筆跡検索が実行される場合においては、筆跡検索モジュール３１３Ａは、主制御部３００から検索キーである１以上のストロークに対応するストロークデータを受信する。そして、筆跡検索モジュール３１３Ａは、特徴量データベース４１２Ａ内の筆跡特徴量情報と検索キーであるストロークデータの筆跡特徴量（クエリー特徴量）とを使用して、上述の検索キーに対応するストロークデータ（手書き部分）を検索する。
【００８０】
より詳しくは、筆跡検索モジュール３１３Ａは、特徴量データベース４１２Ａ内の筆跡特徴量情報から、クエリー特徴量と類似する筆跡特徴量を見つけ出し、この筆跡特徴量に対応するストロークＩＤおよびページＩＤを検索結果として主制御部３００に返す。この場合、クエリー特徴量との類似度が基準値以上である特徴量情報が特徴量データベース４１２Ａから取得される。この類似度を算出するための方法としては、ＤＰ（Dynamic Programming）マッチングを使用してもよい。
【００８１】
主制御部３００は、筆跡検索モジュール３１３Ａから受信される検索結果（ストロークＩＤおよびページＩＤ）に基づいて、上述の検索キーに対応するストロークデータ（手書き部分）を含む１以上の手書きページを表示する。この場合、主制御部３００は、これら１以上の手書きページ内の手書き部分（ヒットワード）を強調表示してもよい。
【００８２】
文字検索モジュール３１３Ｃは、上述のテキスト検索を実行するための検索部として機能する。すなわち、文字検索モジュール３１３Ｃは、検索キーであるテキスト（１以上の文字コード）と文字検索データベース４１２Ｂ内の文字列情報とを使用して、検索キーであるテキスト（１以上の文字コード）に対応するストロークデータ（手書き部分）を検索する。
【００８３】
テキスト検索が実行される場合においては、文字検索モジュール３１３Ｃは、主制御部３００から検索キーであるテキストに対応する１以上の文字コードを受信する。そして、文字検索モジュール３１３Ｃは、文字検索データベース４１２Ｂ内の文字列情報と検索キーである１以上の文字コードとを使用して、上述の検索キーに対応するストロークデータ（手書き部分）を検索する。
【００８４】
より詳しくは、文字検索モジュール３１３Ｃは、文字検索データベース４１２Ｂ内の文字列情報から、検索キーである１以上の文字コードと同じ１以上の文字コードを見つけ出し、この１以上の文字コードに対応する１以上のストロークＩＤおよびページＩＤを検索結果として主制御部３００に返す。
【００８５】
主制御部３００は、文字検索モジュール３１３Ｃから受信される検索結果（１以上のストロークＩＤおよびページＩＤ）に基づいて、上述の検索キーであるテキスト対応するストロークデータ（手書き部分）を含む１以上の手書きページを表示する。この場合、主制御部３００は、これら１以上の手書きページ内の手書き部分（ヒットワード）を強調表示してもよい。
【００８６】
メタデータベース４１２Ｃは、複数の手書きページそれぞれに対応する複数のメタデータ、例えば、ページ作成日時、ページ更新日時、ページＩＤ（ＵＵＩＤ）、ページタイトル、等、を管理するためのデータベースである。
【００８７】
なお、ここでは、筆跡特徴量情報および文字列情報の双方を異なるデータベースファイルに保存する例を説明したが、筆跡特徴量情報または文字列情報の少なくとも一方を、ある一つのデータベースファイルに保存してもよい。
【００８８】
図１１は、手書きページ内のストロークデータ群を管理するためのｘｍｌファイルの文書構造を示す。  
このｘｍｌファイルのｘｍｌインスタンスは、「ｒｏｏｔ」要素、「ｐａｇｅ＿ｄａｔａ」要素、「ｓｔｒｏｋｅｓ」要素、「ｓｔｒｏｋｅ」要素、「ｐｏｉｎｔｓ」要素、「ｐｏｉｎｔ」要素を含む。これら要素によって階層化された文章構造が定義される。「ｒｏｏｔ」要素は、ｘｍｌインスタンス内の全ての要素の起点となる要素（ノード）である。「ｐａｇｅ＿ｄａｔａ」要素は、「ｒｏｏｔ」要素の子要素である。
【００８９】
この「ｐａｇｅ＿ｄａｔａ」要素は、３つの属性、つまり「ｕｕｉｄ」属性、「ｃｒｅａｔｅ＿ｔｉｍｅ」属性、「ｕｐｄａｔｅ＿ｔｉｍｅ」属性を含む。「ｕｕｉｄ」属性の属性値“ＩＤ１”は、このｘｍｌファイルに含まれる手書きページのページＩＤを示す。「ｃｒｅａｔｅ＿ｔｉｍｅ」属性の属性値“ＴＩＭＥ１”は、この手書きページの作成日時に関する時間情報である。このＴＩＭＥ１は、作成日時を示す絶対時間（年月日時分秒）であってもよい。「ｕｐｄａｔｅ＿ｔｉｍｅ」属性の属性値“ＴＩＭＥ２”は、この手書きページの更新日時に関する時間情報である。ＴＩＭＥ２も更新日時を示す絶対時間（年月日時分秒）であってもよい。
【００９０】
さらに、「ｐａｇｅ＿ｄａｔａ」要素は、この手書きページの幅を示す「幅」属性、この手書きページの高さを示す「高さ」属性、この手書きページのタイトルを示す「タイトル」属性、等を有していても良い。
【００９１】
「ｓｔｒｏｋｅｓ」要素は、「ｐａｇｅ＿ｄａｔａ」要素の子要素である。この「ｓｔｒｏｋｅｓ」要素は、ｘｍｌインスタンス内の複数の「ｓｔｒｏｋｅ」要素をグループ化するための要素（ノード）として機能する。この「ｓｔｒｏｋｓ」要素は、少なくとも１つの属性、例えば「ｓｔｒｏｋｅ＿ｃｏｕｎｔ」属性を含む。この「ｓｔｒｏｋｅ＿ｃｏｕｎｔ」属性は、このｘｍｌファイルに現在含まれているストロークデータの数（総数）を示す。新たなストロークデータがｘｍｌファイルに保存される度に、「ｓｔｒｏｋｅ＿ｃｏｕｎｔ」属性の属性値は更新される。図１１では、説明の簡単化のために、「ｓｔｒｏｋｅ＿ｃｏｕｎｔ」属性の属性値は“２”である場合が例示されている。
【００９２】
複数の「ｓｔｒｏｋｅ」要素は、互いに兄弟関係である要素群である。ある一つの「ｓｔｒｏｋｅ」要素は、ある一つのストロークデータに対応する。各「ｓｔｒｏｋｅ」要素は、この「ｓｔｒｏｋｅ」要素の子要素である「ｐｏｉｎｔｓ」要素と共同して、複数の「ｐｏｉｎｔ」要素をグループ化するための要素（ノード）として機能する。
【００９３】
各「ｓｔｒｏｋｅ」要素は、少なくとも３つの属性、つまり「ｓｔｒｏｋｅ＿ｉｄ」属性、「ｔｉｍｅ」属性、「ｃｏｌｏｒ」属性を含む。「ｓｔｒｏｋｅ＿ｉｄ」属性は、対応するストロークデータの識別情報（ストロークＩＤ）を示す。「ｔｉｍｅ」属性は、対応するストロークデータが手書きされた時間に関する時間情報である。「ｔｉｍｅ」属性は、対応するストロークデータが手書きされた絶対時間（年月日時分秒）であってもよい。「ｃｏｌｏｒ」属性は、対応するストロークデータに対応する軌跡の色を示す。
【００９４】
さらに、「ｓｔｒｏｋｅ」要素は、このストロークデータに対応する軌跡の幅（線幅）を示す「幅」属性、このストロークデータに対応する軌跡の線種（例えば、実線、破線、等）を示す「タイプ」属性、等を有していても良い。
【００９５】
「ｐｏｉｎｔｓ」要素は、「ｓｔｒｏｋｅ」要素の子要素である。「ｐｏｉｎｔｓ」要素は、この「ｐｏｉｎｔｓ」要素の子要素である複数の「ｐｏｉｎｔ」要素をグループ化するための要素（ノード）として機能する。この「ｐｏｉｎｔｓ」要素は、少なくとも１つの属性、例えば「ｐｏｉｎｔ＿ｃｏｕｎｔ」属性を含む。「ｐｏｉｎｔ＿ｃｏｕｎｔ」属性は、「ｐｏｉｎｔｓ」要素に含まれる「ｐｏｉｎｔ」要素の総数、つまり座標データの総数を示す。
【００９６】
ある「ｐｏｉｎｔｓ」要素によってグループ化された複数の「ｐｏｉｎｔ」要素は、あるストローク内の複数の座標データに対応する。一つの「ｐｏｉｎｔ」要素は、一つの座標データに対応する。
【００９７】
ここで、各「ｐｏｉｎｔ」要素は、例えば、要素内容を含まない空き要素であってもよい。各「ｐｏｉｎｔ」要素は、例えば、４つの属性、つまり「ｘ」属性、「ｙ」属性、「ｄｕｒａｔｉｏｎ」属性、「ｐｒｅｓｓｕｒｅ」属性を含む。「ｘ」属性は、対応する座標データ（対応する点）のｘ座標を示す。「ｙ」属性は、対応する座標データ（対応する点）のｙ座標を示す。「ｄｕｒａｔｉｏｎ」属性は、対応するストロークデータの手書き開始時間から対応する座標データが手書きされるまでの時間間隔に関する時間情報である。「ｐｒｅｓｓｕｒｅ」属性は、対応する座標データ（対応する点）の筆圧を示す。
【００９８】
このように、本実施形態のｘｍｌファイルにおいては、個々の座標データは、タグ付けされた「ｐｏｉｎｔ」要素として管理される。さらに、同一のストロークに属する複数の座標データに対応する複数の「ｐｏｉｎｔ」要素は、これら複数の座標データを含むストロークデータのストロークＩＤを含む「ｓｔｒｏｋｅ」要素によってグループ化される。
【００９９】
したがって、ストロークデータ群をデータベースのテーブル形式で管理せずとも、所望のストローク内の全ての座標データまたは所望のストローク内の任意の座標データなどをｘｍｌファイルから容易に取得することができる。
【０１００】
さらに、個々の「ｓｔｒｏｋｅ」要素は時間情報を含むので、個々のストロークが手書きされた時間も容易に認識することができる。  
また、ｘｍｌファイルはテキストベースのファイルであるので、例えば、各要素に付随する属性の種類等を容易に追加することもできる。また、「ｓｔｒｏｋｅ」要素内の子要素として登録可能な「ｐｏｉｎｔ」要素の数も制限されない。
【０１０１】
筆跡検索モジュール３１３Ａおよび文字認識モジュール３１３Ｂの各々は、複数の「ｓｔｒｏｋｅ」要素それぞれに対応する複数の「ｔｉｍｅ」属性（時間情報）に基づいて、ｘｍｌファイルから未処理のストロークデータ群を容易に取得することができる。すなわち、筆跡検索モジュール３１３Ａおよび文字認識モジュール３１３Ｂの各々は、「ｓｔｒｏｋｅ」要素の「ｔｉｍｅ」属性に基づいて、つまりあるストロークデータが手書きされた時間に関する時間情報に基づいて、このストロークデータが未処理のストロークデータであるか否かを判定する。例えば、前回の筆跡特徴量／文字コード生成処理の時間（ｘｍｌファィルから最後にストロークデータを取得した時間）よりも遅い時間情報を有する「ｓｔｒｏｋｅ」要素（ストロークデータ）は未処理のストロークデータであると判定される。筆跡検索モジュール３１３Ａおよび文字認識モジュール３１３Ｂの各々は、筆跡管理モジュール３１２に対して各ストロークデータの時間情報を要求して、各「ｓｔｒｏｋｅ」要素の「ｔｉｍｅ」属性を筆跡管理モジュール３１２から受信しても良い。そして、筆跡検索モジュール３１３Ａおよび文字認識モジュール３１３Ｂの各々は、未処理のストロークデータを決定し、決定した未処理のストロークデータを筆跡管理モジュール３１２に要求しても良い。
【０１０２】
図１２は、特徴量データベース４１２Ａに格納される筆跡特徴量管理テーブルの構成例を示す。筆跡特徴量管理テーブルは複数のストロークデータに対応する複数のエントリを含む。各エントリは、例えば、ページＩＤ、ストロークＩＤ、特徴量（筆跡特徴量）を含む。あるストロークデータに対応するエントリにおいて、「ページＩＤ」は、そのストロークデータが手書きされた手書きページに付与された識別情報を示す。「ストロークＩＤ」は、そのストロークに付与された識別情報を示す。「特徴量」は、そのストロークを解析することによって算出された特徴量（筆跡特徴量）を示す。筆跡特徴量としては、上述したように、各ストロークの形状等を表す特徴量データを使用し得る。
【０１０３】
なお、ここでは、ストローク毎に特徴量を管理する場合を例示したが、手書きの図形、手書きの表、手書きの記号といった手書きオブジェクト（手書きブロック）を単位として、その手書きオブジェクトの特徴量を管理しても良い。手書きオブジェクトの特徴量としては、その手書きオブジェクトの形状等の特徴を表現可能な任意の特徴量を使用し得る。さらに、手書きオブジェクトの特徴量は、この手書きオブジェクトを構成する複数のストロークの書かれた順序、等を表す情報を含んでいてもよい。
【０１０４】
図１３は、文字検索データベース４１２Ｂに格納される文字列情報管理テーブルの構成例を示す。文字列情報管理テーブルは複数の文字ブロックに対応する複数のエントリを含む。各エントリは、例えば、「ページＩＤ」、「ストロークＩＤ範囲」、「文字列」を含む。ある文字ブロックに対応するエントリにおいて、「ページＩＤ」は、その文字ブロックが手書きされた手書きページの識別情報を示す。「ストロークＩＤ範囲」は、その文字ブロック内のストローク群に付与された識別情報の範囲を示す。「文字列」は、その文字ブロックに対する（文字コード）を示す。ある文字ブロックの文字コードとして、この文字ブロックの複数の文字候補それぞれに対応する複数の文字コードが登録されていてもよい。
【０１０５】
図１４は、手書き文書検索の概要を示す。ここでは、検索キー入力領域５１１に手書き文字列「Ｍｅｅｔｉｎｇ」に対応する複数のストロークがペン１００によって手書きされ、さらにユーザによって筆跡検索が選択された場合を想定する。
【０１０６】
筆跡検索モジュール３１３Ａは、主制御部３００から検索キーである１以上のストロークに対応するストロークデータを受信する。筆跡検索モジュール３１３Ａは、このストロークデータの筆跡特徴量（クエリー特徴量）を計算する。そして、筆跡検索モジュール３１３Ａは、特徴量ベース４１２Ａを参照して、手書き文字列「Ｍｅｅｔｉｎｇ」の筆記特徴と類似する筆跡特徴を有する手書き部分（ストロークデータ）を含む手書きページを検索する。いま、手書きページ６１１、６１２、６１３が、手書き文字列「Ｍｅｅｔｉｎｇ」と類似する筆跡特徴を有する手書き部分を含む場合を想定する。この場合、主制御部３００は、筆跡検索モジュール３１３Ａから受信される検索結果に基づき、手書きページ６１１、６１２、６１３それぞれのサムネイルを画面上に表示する。さらに、主制御部３００は、手書きページ６１１、６１２、６１３内のヒットワード（手書き文字列「Ｍｅｅｔｉｎｇ」）を強調表示する。
【０１０７】
図１５のフローチャートは、手書きページの作成／編集処理中に手書きノートアプリケーションプログラム２０２によって実行される、ストロークデータ、筆跡特徴量情報および文字列情報の保存処理の手順を示す。
【０１０８】
筆跡管理モジュール３１２は、作成／編集処理対象の手書きページに手書きされる複数のストロークに対応する複数のストロークデータを第１記憶領域に保存する（ステップＳ１１）。この場合、筆跡管理モジュール３１２は、複数のストロークデータを、マークアップ言語によって記述される階層化された文書構造の形式で、記憶媒体上の第１記憶領域内の第１のファイル（ｘｍｌファイル）に保存する。
【０１０９】
筆跡検索モジュール３１３Ａは、手書きページの作成／編集処理中に、ｘｍｌファイルから未処理の複数のストロークデータを取得する。たとえば、ペン１００が画面から離れた時に、またはペン１００が画面から離れている状態が一定期間継続した時に、筆跡検索モジュール３１３Ａは、未処理のストロークデータの取得を行っても良い。そして、筆跡検索モジュール３１３Ａは、これら取得された複数のストロークデータに対応する複数の筆跡特徴量を、第１記憶領域と異なる第２記憶領域に保存する（ステップＳ１２）。この場合、筆跡検索モジュール３１３Ａは、複数の筆跡特徴量を上述の複数のストロークデータのストロークＩＤと関連づけて、ｘｍｌファイルと異なる第２のファイル（特徴量データベースファイル）に保存する。
【０１１０】
文字認識モジュール３１３Ｂは、手書きページの作成／編集処理中に、ｘｍｌファイルから未処理の複数のストロークデータを取得する。たとえば、ペン１００が画面から離れた時に、またはペン１００が画面から離れている状態が一定期間継続した時に、文字認識モジュール３１３Ｂは、未処理のストロークデータの取得を行っても良い。そして、文字認識モジュール３１３Ｂは、これら取得された複数のストロークデータに対応する複数の文字コードを第２記憶領域と異なる第３記憶領域に保存する（ステップＳ１３）。この場合、文字認識モジュール３１３Ｂは、複数の文字コードを上述の複数のストロークデータのストロークＩＤと関連づけて、上述のｘｍｌファイルおよび特徴量データベースファイルとそれぞれ異なる第３のファイル（文字検索データベースファイル）に保存する。
【０１１１】
図１６のフローチャートは、手書きノートアプリケーションプログラム２０２によって実行される手書き文書検索処理の手順を示す。  
ユーザによって筆跡検索方式が選択されたならば（ステップＳ２１のＹＥＳ）、主制御部３００は、検索キーであるストロークデータを筆跡検索モジュール３１３Ａに送信する。筆跡検索モジュール３１３Ａは、筆跡検索を実行する（ステップＳ２３）。この場合、筆跡検索モジュール３１３Ａは、検索キーであるストロークデータの筆跡特徴量と特徴量データベース４１２Ａ内の特徴量情報とを使用して、筆跡検索を実行する。そして、筆跡検索モジュール３１３Ａは、検索キーに対応する手書きデータ部分を含む各手書きページ、つまりこの検索キーであるストロークデータと類似する筆跡特徴を有するストロークデータを含む各手書きページを検索する。
【０１１２】
ユーザによってテキスト検索方式が選択されたならば（ステップＳ２２のＹＥＳ）、主制御部３００は、検索キーである文字コードを文字検索モジュール３１３Ｃに送信する。文字検索モジュール３１３Ｃは、テキスト検索（文字列検索）を実行する（ステップＳ２４）。この場合、文字検索モジュール３１３Ｃは、検索キーである文字コードと文字検索データベース４１２Ｂとを使用して、テキスト検索を実行する。そして、文字検索モジュール３１３Ｃは、検索キーに対応する文字コードを含む手書きページを検索する。
【０１１３】
以上説明したように、本実施形態においては、手書きされる複数のストロークに対応する複数のストロークデータは、マークアップ言語によって記述される階層化された文書構造の形式で第１のファイルに保存される。また未処理の１以上のストロークデータが取得され、この１以上のストロークデータに対応する筆跡特徴量またはこの１以上のストロークデータに対応する文字コードの少なくとも一方が、第１のファイルと異なる第２のファイルに保存される。
【０１１４】
したがって、手書きページデータに対応する筆跡特徴量情報／文字列情報を生成して筆跡特徴量情報／文字列情報をデータベースファイルのような第２のファイルに保存する処理の実行中であっても、この手書きページデータに新たなストロークデータを保存（追加）する処理、およびこの新たなストロークデータに対応するストローク（軌跡）を描画する処理を迅速に行うことができる。換言すれば、手書きページデータの作成または編集操作が行われている間に、この手書きページデータに対応する筆跡特徴量情報／文字列情報を生成および保存する処理を行うことが可能となる。
【０１１５】
また、複数のストロークデータの保存形式として、マークアップ言語によって記述される階層化された文書構造の形式を使用することにより、各々が複数の座標データを含む複数のストロークデータの管理を容易に行うことができる。
【０１１６】
さらに、第２のファイルにおいては、１以上のストロークデータに対応する筆跡特徴量または１以上のストロークデータに対応する文字コードの少なくとも一方が、この１以上のストロークデータに対応する識別情報に関連付けられている。したがって、第２のファイルを使用することにより、検索キーであるストロークの筆跡特徴量に類似する筆跡特徴量を有するストロークデータ、または検索キーである文字コードに対応するストロークデータを効率よく検索することができる。またさらに、第１のファイルの階層化された文書構造は、一つのストロークデータ内に含まれる複数の座標データに対応する複数の第１要素と、この一つのストロークデータの識別情報を含む第２要素であって、複数の第１要素をグループ化する第２要素とを少なくとも含む。したがって、第１のファイルから目的のストロークデータを取得する処理などを効率よく行うことができる。
【０１１７】
なお、本実施形態の手書き文書情報（手書きページ）に対する各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムを通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【０１１８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【図１】
0005869179.tif 000002
【図２】
0005869179.tif 000003
【図３】
0005869179.tif 000004
【図４】
0005869179.tif 000005
【図５】
0005869179.tif 000006
【図６】
0005869179.tif 000007
【図７】
0005869179.tif 000008
【図８】
0005869179.tif 000009
【図９】
0005869179.tif 000010
【図１０】
0005869179.tif 000011
【図１１】
0005869179.tif 000012
【図１２】
0005869179.tif 000013
【図１３】
0005869179.tif 000014
【図１４】
0005869179.tif 000015
【図１５】
0005869179.tif 000016
【図１６】
0005869179.tif 000017