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