以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る電子機器の外観を示す図である。この電子機器は、例えば、ペンまたは指によって手書き入力可能なペン・ベースの携帯型電子機器である。この電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、PDA等として実現され得る。以下では、この電子機器がタブレットコンピュータ10として実現されている場合を想定する。タブレットコンピュータ10は、タブレットまたはストレートコンピュータとも称される携帯型電子機器であり、図1に示すように、本体11とタッチスクリーンディスプレイ12とを備える。タッチスクリーンディスプレイ12は、本体11の上面に重ね合わせるように取り付けられている。
本体11は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ12には、フラットパネルディスプレイと、フラットパネルディスプレイの画面上のペンまたは指の接触位置を検出するように構成されたセンサとが組み込まれている。フラットパネルディスプレイは、例えば液晶表示装置(LCD)である。センサは、例えば静電容量方式のタッチパネルや電磁誘導方式のデジタイザなどである。以下では、デジタイザとタッチパネルの2種類のセンサの双方がタッチスクリーンディスプレイ12に組み込まれている場合を想定する。
このタッチスクリーンディスプレイ12は、指を使用した画面に対するタッチ操作のみならず、ペン100を使用した画面に対するタッチ操作も検出することができる。ペン100は例えば電磁誘導ペンである。ユーザは、外部オブジェクト(ペン100又は指)を使用してタッチスクリーンディスプレイ12上で手書き入力操作を行うことができる。手書き入力操作中においては、画面上の外部オブジェクト(ペン100又は指)の動きの軌跡、つまり手書き入力操作によって手書きされるストローク(手書きストロークの軌跡)がリアルタイムに描画され、これによって手書きにより入力された複数のストロークが画面上に表示される。外部オブジェクトが画面に接触されている間の外部オブジェクトの動きの軌跡が1つのストロークに相当する。手書きされた文字および文字以外の手書きされたオブジェクト(手書きされた図形、手書きされた表、など)に対応する多数のストロークの集合が手書き文書を構成する。
本実施形態では、この手書き文書は、イメージデータではなく、各ストロークの軌跡の座標列とストローク間の順序関係を示す時系列情報(手書き文書データ)として記憶媒体に保存される。この時系列情報の詳細は図4を参照して後述するが、時系列情報は、複数のストロークが手書きされた順を示し、かつ、複数のストロークにそれぞれ対応する複数のストロークデータを含む。換言すれば、この時系列情報は、複数のストロークにそれぞれ対応する時系列のストロークデータの集合を意味する。各ストロークデータは、ある一つのストロークに対応し、このストロークの軌跡上の点それぞれに対応する座標データ系列(時系列座標)を含む。これらストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序に相当する。
タブレットコンピュータ10は、記憶媒体から既存の任意の時系列情報を読み出し、この時系列情報に対応する手書き文書、つまりこの時系列情報によって示される複数のストロークを画面上に表示することができる。時系列情報によって示される複数のストロークも、手書きによって入力される複数のストロークである。
さらに、タブレットコンピュータ10は編集機能を有している。この編集機能は、「消しゴム」ツール、範囲選択ツール、および他の各種ツール等を用いたユーザによる編集操作に応じて、範囲選択ツールによって選択される表示中の手書き文書内の任意の部分(手書き文字、手書きマーク、手書き図形、手書き表、等)を削除または移動することができる。またさらに、範囲選択ツールによって選択される手書き文書内の任意の部分を、手書き文書を検索するための検索キーとして指定することもできる。
本実施形態では、手書き文書は、1つまたは複数のページとして管理され得る。この場合、時系列情報(手書き文書データ)を1つの画面に収まる面積単位で区切ることによって、1つの画面に収まる時系列情報のまとまりを1つのページとして記録してもよい。あるいは、ページのサイズを可変できるようにしてもよい。この場合、ページのサイズは1つの画面のサイズよりも大きい面積に広げることができるので、画面のサイズよりも大きな面積の手書き文書を一つのページとして扱うことができる。1つのページ全体をディスプレイに同時に表示できない場合は、そのページを縮小してするようにしてもよいし、縦横スクロールによってページ内の表示対象部分を移動するようにしてもよい。
図2は、タブレットコンピュータ10と外部装置との連携動作の例を示している。タブレットコンピュータ10は、パーソナルコンピュータ1やクラウドと連携することができる。すなわち、タブレットコンピュータ10は、無線LANなどの無線通信デバイスを備えており、パーソナルコンピュータ1との無線通信を実行することができる。さらに、タブレットコンピュータ10は、インターネット上のサーバ2との通信を実行することもできる。サーバ2はオンラインストレージサービス、他の各種クラウドコンピューティングサービスを実行するサーバであってもよい。
パーソナルコンピュータ1はハードディスクドライブ(HDD)のようなストレージデバイスを備えている。タブレットコンピュータ10は、時系列情報(手書き文書データ)をネットワーク越しにパーソナルコンピュータ1に送信して、パーソナルコンピュータ1のHDDに記録することができる(アップロード)。タブレットコンピュータ10とパーソナルコンピュータ1との間のセキュアな通信を確保するために、通信開始時には、パーソナルコンピュータ1がタブレットコンピュータ10を認証するようにしてもよい。この場合、タブレットコンピュータ10の画面上にユーザに対してIDまたはパスワードの入力を促すダイアログを表示してもよいし、タブレットコンピュータ10のIDなどを自動的にタブレットコンピュータ10からパーソナルコンピュータ1に送信してもよい。
これにより、タブレットコンピュータ10内のストレージの容量が少ない場合でも、タブレットコンピュータ10が多数の時系列情報あるいは大容量の時系列情報を扱うことが可能となる。
さらに、タブレットコンピュータ10は、パーソナルコンピュータ1のHDDに記録されている任意の1以上の時系列情報を読み出し(ダウンロード)、その読み出した時系列情報によって示されるストロークをタブレットコンピュータ10のディスプレイ12の画面に表示することができる。この場合、複数の時系列情報それぞれのページを縮小することによって得られるサムネイルの一覧をディスプレイ12の画面上に表示してもよいし、これらサムネイルから選ばれた1ページをディスプレイ12の画面上に通常サイズで表示してもよい。
さらに、タブレットコンピュータ10が通信する先はパーソナルコンピュータ1ではなく、上述したように、ストレージサービスなどを提供するクラウド上のサーバ2であってよい。タブレットコンピュータ10は、時系列情報(手書き文書データ)をネットワーク越しにサーバ2に送信して、サーバ2のストレージデバイス2Aに記録することができる(アップロード)。さらに、タブレットコンピュータ10は、サーバ2のストレージデバイス2Aに記録されている任意の時系列情報を読み出して(ダウンロード)、その時系列情報によって示されるストロークそれぞれの軌跡をタブレットコンピュータ10のディスプレイ12の画面に表示することができる。
このように、本実施形態では、時系列情報が保存される記憶媒体は、タブレットコンピュータ10内のストレージデバイス、パーソナルコンピュータ1内のストレージデバイス、サーバ2のストレージデバイスのいずれであってもよい。
次に、図3および図4を参照して、ユーザによって手書きされたストローク(文字、図形、表など)と時系列情報との関係について説明する。図3は、ペン100などを使用してタッチスクリーンディスプレイ12上に手書きされる手書き文書(手書き文字列)の例を示している。
手書き文書では、一旦手書きによって入力される文字や図形などの上に、さらに別の文字や図形などが手書きによって入力されるというケースが多い。図3においては、「ABC」の手書き文字列が「A」、「B」、「C」の順番で手書きによって入力され、この後に、手書きの矢印が、手書き文字「A」のすぐ近くに手書きによって入力された場合が想定されている。
手書き文字「A」は、ペン100などを使用して手書きされる2つのストローク(「∧」形状の軌跡、「−」形状の軌跡)によって、つまり2つの軌跡によって表現される。最初に手書きされる「∧」形状のペン100の軌跡は例えば等時間間隔でリアルタイムにサンプリングされ、これによって「∧」形状のストロークの時系列座標SD11、SD12、…SD1nが得られる。同様に、次に手書きされる「−」形状のペン100の軌跡も等時間間隔でリアルタイムにサンプリングされ、これによって「−」形状のストロークの時系列座標SD21、SD21、…SD2nが得られる。
手書き文字「B」は、ペン100などを使用して手書きされた2つのストローク、つまり2つの軌跡によって表現される。手書き文字「C」は、ペン100などを使用して手書きされた手書きされた1つのストローク、つまり1つの軌跡によって表現される。手書きの「矢印」は、ペン100などを使用して手書きされた手書きされた2つのストローク、つまり2つの軌跡によって表現される。
図4は、図3の手書き文書に対応する時系列情報200を示している。時系列情報は、複数のストロークデータSD1、SD2、…、SD7を含む。時系列情報200内においては、これらストロークデータSD1、SD2、…、SD7は、これらストロークが手書きされた順に時系列に並べている。
時系列情報200において、先頭の2つのストロークデータSD1、SD2は、手書き文字「A」の2つのストロークをそれぞれ示している。3番目と4番目のストロークデータSD3、SD4は、手書き文字「B」を構成する2つのストロークをそれぞれ示している。5番目のストロークデータSD5は、手書き文字「C」を構成する1つのストロークを示している。6番目と7番目のストロークデータSD6、SD7は、手書き「矢印」を構成する2つのストロークをそれぞれ示している。
各ストロークデータは、一つのストロークに対応する座標データ系列(時系列座標)、つまり一つのストロークの軌跡上の複数の点それぞれに対応する複数の座標を含む。各ストロークデータにおいては、複数の座標はストロークが書かれた順に時系列に並べられている。例えば、手書き文字「A」に関しては、ストロークデータSD1は、手書き文字「A」の「∧」形状のストロークの軌跡上の点それぞれに対応する座標データ系列(時系列座標)、つまりn個の座標データSD11、SD12、…SD1nを含む。ストロークデータSD2は、手書き文字「A」の「−」形状のストロークの軌跡上の点それぞれに対応する座標データ系列、つまりn個の座標データSD21、SD22、…SD2nを含む。なお、座標データの数はストロークデータ毎に異なっていてもよい。
各座標データは、対応する軌跡内のある1点に対応するX座標およびY座標を示す。例えば、座標データSD11は、「∧」形状のストロークの始点のX座標(X11)およびY座標(Y11)を示す。SD1nは、「∧」形状のストロークの終点のX座標(X1n)およびY座標(Y1n)を示す。
さらに、各座標データは、その座標に対応する点が手書きされた時点に対応するタイムスタンプ情報Tを含んでいてもよい。手書きされた時点は、絶対時間(例えば、年月日時分秒)またはある時点を基準とした相対時間のいずれであってもよい。例えば、各ストロークデータに、ストロークが書き始められた絶対時間(例えば、年月日時分秒)をタイムスタンプ情報として付加し、さらに、ストロークデータ内の各座標データに、絶対時間との差分を示す相対時間をタイムスタンプ情報Tとして付加してもよい。
このように、各座標データにタイムスタンプ情報Tが追加された時系列情報を使用することにより、ストローク間の時間的関係をより精度よく表すことができる。
さらに、各座標データには、筆圧を示す情報(Z)を追加してもよい。
図4で説明したような構造を有する時系列情報200は、個々のストロークの筆跡だけでなく、ストローク間の時間的関係も表すことができる。したがって、この時系列情報200を使用することにより、図3に示すようにたとえ手書き「矢印」の先端部が手書き文字「A」上に重ねてまたは手書き文字「A」に近接して書かれたとしても、手書き文字「A」と手書き「矢印」の先端部とを異なる文字または図形として扱うことが可能となる。
さらに、本実施形態では、上述したように、手書き文書データは、イメージまたは文字認識結果ではなく、時系列のストロークデータの集合から構成される時系列情報200として記憶されるので、手書き文字の言語に依存せずに手書き文字を扱うことができる。よって、本実施形態の時系列情報200の構造は、使用言語の異なる世界中の様々な国で共通に使用できる。
図5は、タブレットコンピュータ10のシステム構成を示す図である。
タブレットコンピュータ10は、図5に示されるように、CPU101、システムコントローラ102、主メモリ103、グラフィクスコントローラ105、BIOS−ROM105、不揮発性メモリ106、無線通信デバイス107、エンベデッドコントローラ(EC)108等を備える。
CPU101は、タブレットコンピュータ10内の各種モジュールの動作を制御するプロセッサである。CPU101は、ストレージデバイスである不揮発性メモリ106から主メモリ103にロードされる各種ソフトウェアを実行する。これらソフトウェアには、オペレーティングシステム(OS)201および各種アプリケーションプログラムが含まれている。アプリケーションプログラムには、手書きノートアプリケーションプログラム202が含まれている。この手書きノートアプリケーションプログラム202は、上述の手書き文書データを作成および表示する機能、手書き文書データを編集する機能、所望の手書き部分を含む手書き文書データや、ある手書き文書データ内の所望の手書き部分を検索するための手書き文書検索機能を有している。
また、CPU101は、BIOS−ROM105に格納された基本入出力システム(BIOS)も実行する。BIOSは、ハードウェア制御のためのプログラムである。
システムコントローラ102は、CPU101のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ102には、主メモリ103をアクセス制御するメモリコントローラも内蔵されている。また、システムコントローラ102は、PCI EXPRESS規格のシリアルバスなどを介してグラフィクスコントローラ104との通信を実行する機能も有している。
グラフィクスコントローラ104は、本タブレットコンピュータ10のディスプレイモニタとして使用されるLCD12Aを制御する表示コントローラである。このグラフィクスコントローラ104によって生成される表示信号はLCD12Aに送られる。LCD12Aは、表示信号に基づいて画面イメージを表示する。このLCD12A上にはタッチパネル12Bおよびデジタイザ12Cが配置されている。タッチパネル12Bは、LCD12Aの画面上で入力を行うための静電容量式のポインティングデバイスである。指が接触される画面上の接触位置および接触位置の動き等はタッチパネル12Bによって検出される。デジタイザ12CはLCD12Aの画面上で入力を行うための電磁誘導式のポインティングデバイスである。ペン100が接触される画面上の接触位置および接触位置の動き等はデジタイザ12Cによって検出される。
無線通信デバイス107は、無線LANまたは3G移動通信などの無線通信を実行するように構成されたデバイスである。EC108は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。EC108は、ユーザによるパワーボタンの操作に応じて本タブレットコンピュータ10を電源オンまたは電源オフする機能を有している。
図6に、手書きノートアプリケーションプログラム202によってユーザに提示される代表的な画面であるノートビュー画面を示す。
ノートビュー画面は、ページ(手書きページ)の新規作成および既存のページの閲覧および編集が可能な画面である。ノートビュー画面には、黒ペンボタンa1、赤ペンボタンa2、マーカーボタンa3、選択ボタンa4および消しゴムボタンa5が表示される。
例えば、黒ペンボタンa1がタップジェスチャによって選択された状態で、ペン100を用いた手書き入力操作がノートビュー画面上で行われると、手書きノートアプリケーションプログラム202は、ペン100の動きに合わせて黒色のストローク(軌跡)をノートビュー画面上に表示する。
図7は、検索キー入力ダイアログの例を示す。例えばタッチスクリーンディスプレイ12上でのタップジェスチャの検出に応答して、手書きノートアプリケーションプログラム202は、検索キー入力領域b1および検索ボタンb2を含む検索キー入力ダイアログを画面上に表示する。検索キー入力領域b1は、検索キーとすべき文字列、図形、表などを手書きするための入力領域である。検索ボタンb2は、検索処理の実行を要求するためのボタンである。ユーザは、手書き文字列に限らず、手書き図形、手書き表などを検索キー入力領域b1に手書きすることができる。
次に、図8を参照して、手書きノートアプリケーションプログラム202の機能構成について説明する。
手書きノートアプリケーションプログラム202は、手書き文書データを扱うことが可能なWYSIWYGアプリケーションであり、主制御部311、ストローク管理部312、検索エンジン313、行構造解析エンジン314、通信処理部315等を備える。主制御部311はタッチスクリーンディスプレイ12を用いて入力されるストロークデータを使用することによって、手書き文書(手書きページ)の作成、表示、編集等を行う。
主制御部311は、表示処理部401および検索処理部402を備える。表示処理部401は、手書きによって入力される複数のストロークをタッチスクリーンディスプレイ12内のLCD12Aの画面上に表示する。例えば、図6のノートビュー画面が表示されている状態においては、表示処理部401は、デジタイザ12Cからの入力座標列に基づきストロークをノートビュー画面上に描画する。検索処理部402は、検索エンジン313と共同して、上述の手書き文書検索を実行する。この検索処理部402は、インデックス生成部402Aを備える。インデックス生成部402Aは、検索エンジン313と共同して、各手書きページを検索するためのインデックス情報を生成する。
主制御部311は、タッチスクリーンディスプレイ12(例えばデジタイザ12C)からペン100の動きの軌跡に対応する座標列を受信する。表示処理部401は、この座標列に基づいて、手書き入力操作によって書かれる手書き文字、手書き図形などに対応する各ストロークをタッチスクリーンディスプレイ12内のLCD12Aの画面上に表示する。この表示処理部401により、画面にペン100が接触している間のペン100の軌跡、つまり各ストロークの軌跡がLCD12Aの画面上に描かれる。主制御部311は、タッチスクリーンディスプレイ12から受信される上述の座標列をストローク管理部312に送る。
ストローク管理部312は、複数のストロークに対応する複数のストロークデータを含む手書き文書(手書きページ)を手書きノートデータベース411に保存するように構成された保存部として機能する。より詳しくは、ストローク管理部312は、タッチスクリーンディスプレイ12から受信される上述の座標列に基づいて、図4で詳述したような構造を有する上述の時系列情報を生成し、この時系列情報をある手書きノートのページとして手書きノートデータベース411に保存する。手書きノートデータベース411は、記憶媒体内の一記憶領域である。さらに、ストローク管理部312は、手書きノートデータベース411から任意の手書きノートのページを読み出す。読み出されたページに対応する時系列情報は表示処理部401に送られる。表示処理部401は、時系列情報を解析し、この解析結果に基づいて、時系列情報によって示される各ストローク(手書きによって入力された各ストローク)を画面上に表示する。
上述したように、手書き文書検索は、検索処理部402と検索エンジン313とによって実行される。検索処理部402は、筆跡検索と文字列検索(テキスト検索)の2種類の検索方式を使用して、手書きノートデータベース411を検索することができる。
検索エンジン313は、筆跡検索エンジン313A、文字認識エンジン313B、および文字列検索エンジン313Cを備える。筆跡検索エンジン313Aは、検索処理部402の制御の下、上述の筆跡検索を実行する。この筆跡検索は、検索キーである複数のストロークの特徴量(筆跡特徴)と類似する特徴量(筆跡特徴)を有する手書き部分を含む手書き文書を検索するための検索方式である。
複数のストロークの特徴量(筆跡特徴)としては、これら各ストロークの特徴を表現可能な任意の情報を使用し得る。例えば、複数のストロークの特徴量(筆跡特徴)として、各ストロークの形状、筆画方向、傾斜、等を表す特徴量データを使用し得る。筆跡検索が実行される場合においては、筆跡検索エンジン313Aは、検索処理部402から検索キーである複数のストロークを受信する。そして、筆跡検索エンジン313Aは、複数の手書き文書(複数の手書きページ)内の複数の領域を検索するための特徴量インデックス情報と検索キーである複数のストロークの特徴量(クエリー特徴量)とを使用して、上述の検索キーに対応する領域(手書き部分)を含む1以上の手書き文書(手書きページ)を検索する。特徴量インデックス情報は、領域内のストローク群の特徴量を含む。
より詳しくは、筆跡検索エンジン313Aは、特徴量データベース412A内の特徴量インデックス情報から、クエリー特徴量と類似する特徴量を有する特徴量インデックス情報部分を見つけ出し、この特徴量インデックス情報部分を主制御部311に返す。この場合、クエリー特徴量との類似度が基準値以上である特徴量インデックス情報部分が特徴量インデックス情報から取得される。この類似度を算出するための方法としては、DP(Dynamic Programming)マッチングを使用してもよい。
主制御部311の検索処理部402は、筆跡検索エンジン313Aから受信される特徴量インデックス情報部分に基づいて、上述のクエリー特徴量と類似する特徴量を有する手書き部分を含む1以上の手書きページを検索する。
また、筆跡検索エンジン313Aは、インデックス生成部402Aの制御の下、各手書きページに対応する上述のインデックス情報を生成する処理も実行するように構成されている。ある手書きページの特徴量インデックス情報の生成は、この手書きページの保存時に実行されても良い。この場合、この手書きページに対応する複数のストロークデータは手書きノートデータベース411に保存されると共に、筆跡検索エンジン313Aに送られる。筆跡検索エンジン313Aは、この手書きページ内の各領域(各手書き部分)のストロークデータを解析して、上述の特徴量インデックス情報を生成する。生成された特徴量インデックス情報は、手書きノートデータベース411内の対応する手書きページに関連づけられた状態で、特徴量データベース412Aに格納される。
文字列検索は、検索キーである複数のストロークに対応する文字列を含む手書き文書を検索するための検索方式(テキスト検索)である。文字列検索(テキスト検索)においては、文字列検索エンジン313Cは、検索処理部402から複数のストロークに対応する文字列のコード情報(テキスト)を検索キー(検索語)として受信する。複数のストロークに対応する文字列のコード情報は、これら複数のストロークを文字認識エンジン313Bによって文字認識することによって得ることができる。そして、文字列検索エンジン313Cは、複数の手書き文書(複数の手書きページ)内の複数の領域を検索するための文字列インデックス情報と、検索キーである複数のストロークに対応する文字列のコード情報(テキスト)とを使用して、上述の検索キー(検索語)に対応する手書き部分を含む手書きページを検索する。文字列インデックス情報は、手書きページ内の領域に含まれるストローク群に対応する文字列のコード情報を含む。このコード情報は、例えば、各手書き文字列のストローク群を文字認識することによって生成することができる。
文字列検索の処理においては、文字列検索エンジン313Cは、文字列検索データベース412B内の文字列インデックス情報から、上述の検索語を含む文字列インデックス情報部分を見つけ出す。そして、文字列検索エンジン313Cは、この文字列インデックス情報部分を主制御部311に返す。主制御部311の検索処理部402は、文字列検索エンジン313Cから受信される文字列インデックス情報部分に基づいて、上述の検索語に対応する手書き部分を含む1以上の手書きページを検索することができる。
ところで、筆跡検索は、絵やマークなど、文字ではないクエリストロークによる検索が可能であるが、ユーザの書き方や癖に依存するため、別ユーザによるストロークに対して検索がヒットしづらい。
一方、文字列検索(テキスト検索)は、文字認識エンジン313Bによって得られるコード情報を使って検索するため、別ユーザによるストロークに対しても検索がヒットしやすい。しかしながら、文字認識エンジン313Bは、どのようなストロークに対しても何らかの文字列のコード情報を返却してくるため、検索キーとして入力されたストロークが文字ではなく絵のようなものであった場合、ユーザの意図しない文字列による検索が行われて、検索の精度が低下する。
そこで、本実施形態では、手書き文書検索を、筆跡検索と文字列検索(テキスト検索)とを併用することによって実行する。本実施形態は、筆跡検索、文字列検索(テキスト検索)、筆跡検索および文字列検索(テキスト検索)のハイブリッド検索、のいずれかを適応的に選択するようにしたものであり、以下、この点について詳述する。
検索処理部402のインデックス生成部402Aは、複数の手書きページを文字列検索(テキスト検索)するための文字列インデックス情報と、複数の手書きページを筆跡検索するための特徴量インデックス情報とを生成する。文字列インデックス情報は、ストローク群に対応する文字列のコード情報を含む。特徴量インデックス情報は、ストローク群の特徴量を示す。
文字列のコード情報は、ストローク群を文字認識エンジン313Bによって文字認識することによって得られる。生成された文字列インデックス情報は、インデックスデータベース412内の文字列検索データベース412Bに格納される。一方、特徴量インデックス情報は、この領域内のストローク群の特徴量(筆跡特徴)を示す情報である。生成された特徴量インデックス情報は、インデックスデータベース412内の特徴量データベース412Aに格納される。
さらに、主制御部311は、通信処理部315を介してサーバ2との通信を実行することができる。通信処理部315は任意の手書きページデータをサーバ2に送信(アップロード)する送信部として機能すると共に、さらに、任意の手書きページデータをサーバ2から受信する受信部として機能する。なお、行構造解析エンジン314の機能については後述する。
図9は、手書きノートデータベース411に格納される、手書きページデータ管理テーブルの構成を示す。手書きページデータ管理テーブルは、複数の手書きページに対応する複数のエントリを含む。各エントリは、例えば、ページID、ユーザID、ストロークID、ストロークデータを含む。ある手書きページデータに対応するエントリにおいて、「ページID」は、その手書きページデータに付与された識別情報を示す。「ユーザID」は、その手書きページデータを作成したユーザに付与された識別情報を示す。「ストロークID」は、その手書きページデータに手書きされたストロークに付与された識別情報を示す。「ストロークデータ」は、その手書きページデータに手書きされたストロークに対応する座標データ系列(時系列座標)を示す。
図10は、特徴量データベース412Aに格納される特徴量インデックス情報管理テーブルの構成例を示す。特徴量インデックス情報管理テーブルは複数のストロークに対応する複数のエントリを含む。各エントリは、例えば、ページID、ストロークID、特徴量を含む。あるストロークに対応するエントリにおいて、「ページID」は、そのストロークが手書きされた手書き文書に付与された識別情報を示す。「ストロークID」は、そのストロークに付与された識別情報を示す。「特徴量」は、そのストロークを解析することによって算出された特徴量(筆跡特徴)を示す。筆跡特徴としては、上述したように、各ストロークの形状等を表す特徴量データを使用し得る。
なお、ここでは、ストローク毎に特徴量を管理する場合を例示したが、手書きの図形、手書きの表、手書きの記号といった手書きオブジェクト(手書きブロック)を単位として、その手書きオブジェクトの特徴量を管理しても良い。手書きオブジェクトの特徴量としては、その手書きオブジェクトの形状等の特徴を表現可能な任意の特徴量を使用し得る。さらに、手書きオブジェクトの特徴量は、この手書きオブジェクトを構成する複数のストロークの書かれた順序、等を表す情報を含んでいてもよい。
また、特徴量インデックス情報管理テーブルは、各手書きオブジェクトが存在するページ内の位置を示す情報を含んでいても良い。
図11は、文字列検索データベース412Bに格納される文字列インデックス情報管理テーブルの構成例を示す。文字列インデックス情報管理テーブルは複数のストロークに対応する複数のエントリを含む。各エントリは、例えば、「ページID」、「ストロークID範囲」、「文字列」を含む。ある文字列ブロックに対応するエントリにおいて、「ページID」は、その文字列ブロックが手書きされた手書きページの識別情報を示す。「ストロークID範囲」は、その文字列ブロック内のストローク群に付与された識別情報の範囲を示す。「文字列」は、その文字列ブロックに対するコード情報(文字コード群)を示す。ある文字列ブロックのコード情報(文字コード群)は、この文字列ブロックの複数の文字列候補それぞれに対応する複数のコード情報が登録されていてもよい。また、文字列インデックス情報管理テーブルは、各文字列ブロックが存在するページ内の位置を示す情報を含んでいても良い。
ここで、図12乃至14を参照して、手書き文書検索の概要を示す。
いま、図12に示すように、例えばタッチスクリーンディスプレイ12上でのタップジェスチャによって表示される検索キー入力ダイアログの検索キー入力領域b1に「January」および「Tokyo」に対応する複数のストロークがペン100によって手書きされた場合を想定する。
検索キー入力ダイアログの検索キー入力領域b1に検索キー(クエリストローク)が手書きされると、検索処理部402は、まず、行構造解析エンジン314を使って、そのストローク群を行構造に分解し、各行構造の縦横比を取得する。行構造解析エンジン314は、ストローク群に対して行構造の解析を行うモジュールである。行構造解析エンジン314は、図13に示すように、検索処理部402から与えられたストローク群を「January」および「Tokyo」の2つの行構造に分解する。また、行構造解析エンジン314は、分解した各行構造毎に、ストローク群に外接する矩形(図13のc1)を仮想的に設定して、その矩形の縦方向の辺(図13のc2)の長さと横方向の辺(図13のc3)の長さを求め、当該矩形の縦横比を算出する。行構造解析エンジン314は、この算出した各行構造の縦横比を検索処理部402に返却する。
検索処理部402は、この行構造解析エンジン314から返却される各行構造の縦横比に応じて、筆跡検索、文字列検索(テキスト検索)、筆跡検索および文字列検索(テキスト検索)のハイブリッド検索、のいずれかを適応的に選択する。
より具体的には、検索処理部402は、縦横比が閾値以上(例えば横方向の辺の長さが縦方向の辺の長さの2倍以上)の行構造が存在する場合、そのストローク群は文字列であると判断して、文字列検索(テキスト検索)を選択し、縦横比が閾値以上の行構造が存在しない場合、そのストローク群は図形等の非文字列であると判断して、筆跡検索を選択することを基本とする。
図14に示すように、検索キーとして文字列が手書きされる場合(図14の(A))、そのストロークの縦横比は閾値以上となる蓋然性が高く、従って、ストロークの縦横比が閾値未満であれば、図形等の非文字列が検索キーとして手書きされた(図14の(B))蓋然性が高いという事実に基づき、検索処理部402は、筆跡検索、文字列検索(テキスト検索)のいずれかを効率的に選択する。
縦横比が閾値以上の行構造が存在する場合、検索処理部402は、文字列検索(テキスト検索)を行うために、文字認識エンジン313Bは、文字認識エンジン313Bを使って、行構造に分解された各ストローク群に対応するコード情報を取得する。
コード情報が取得された文字数が閾値以上(例えば2文字以上)の行構造が存在する場合、検索処理部402は、文字列検索(テキスト検索)の選択を確定する。一方、コード情報が取得された文字数が閾値以上の行構造が存在しない場合、検索処理部402は、筆跡検索を加えて、筆跡検索と文字列検索(テキスト検索)を組み合わせたハイブリット検索を選択する。
図15は、本タブレットコンピュータ10によって実行される手書き文書検索の手順を示すフローチャートである。
検索処理部402は、検索キー入力ダイアログの検索キー入力領域b1に手書きされた検索キーのストローク群(クエリストローク)を、行構造解析エンジン314を使って行構造に分解する(ブロックA1)。行構造解析エンジン314は、クエリストロークを行構造に分解し、各行構造について外接矩形の縦横比を算出する(ブロックA2)。
検索処理部402は、行構造解析エンジン314によって算出される縦横比が閾値以上(例えば横方向の辺の長さが縦方向の辺の長さの2倍以上)の行構造が存在するか否かを調べ(ブロックA3)、存在しない場合(ブロックA3のNO)、検索エンジン313と協働して筆跡検索を実施する(ブロックA4)。
一方、縦横比が閾値以上の行構造が存在する場合(ブロックA3のYES)、検索処理部402は、文字認識エンジン313Bを使って各行構造について文字認識を行う(ブロックA5)。検索処理部402は、文字認識エンジン313Bによってコード情報が取得された文字数が閾値以上(例えば2文字以上)の行構造が存在するか否か、即ち、認識文字列が2文字以上の行構造が存在するか否かを調べ(ブロックA6)、存在する場合(ブロックA6のYES)、検索エンジン313と協働して文字列検索(テキスト検索)を実施する(ブロックA7)。
また、(縦横比が閾値以上の行構造が存在するものの)認識文字列が2文字以上の行構造が存在しない場合(ブロックA6のNO)、検索処理部402は、検索エンジン313と協働して、筆跡検索と文字列検索(テキスト検索)を組み合わせたハイブリット検索を実施する(ブロックA8)。より具体的には、筆跡検索と文字列検索(テキスト検索)を実施し、結果を組み合わせる。
以上のように、本タブレットコンピュータ10は、クエリストローク列の縦横比およびクエリストローク列を文字認識して得られるコード情報数(文字数)に応じて検索方法を切り替えるといった独自の手法により、手書き文書を効率よく検索することを実現する。
ところで、以上の説明では、クエリクトローク列が、検索キー入力ダイアログの検索キー入力領域b1に手書きされる例を示したが、これに限らず、例えば、ノートビュー画面に表示される(複数のストロークを含む)既存の手書きページ上からクエリストローク列を選択するようにしてもよい。
また、以上の説明では、クエリストローク列全体として、いずれかの検索方法を選択する例を示したが、分解後の行構造毎に、検索方法を選択するようにしてもよい。
本実施形態の各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムを通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
また、本実施形態の各種処理の一部をサーバ2によって実行するようにしてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。