以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、ペンまたは指によって手書き入力可能なペン・ベースの携帯型電子機器である。この電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、PDA等として実現され得る。以下では、この電子機器がタブレットコンピュータ10として実現されている場合を想定する。タブレットコンピュータ10は、タブレットまたはストレートコンピュータとも称される携帯型電子機器であり、図1に示すように、本体11とタッチスクリーンディスプレイ17とを備える。タッチスクリーンディスプレイ17は、本体11の上面に重ね合わせるように取り付けられている。
本体11は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ17には、フラットパネルディスプレイと、フラットパネルディスプレイの画面上のペンまたは指の接触位置を検出するように構成されたセンサとが組み込まれている。フラットパネルディスプレイは、例えば、液晶表示装置(LCD)であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザなどを使用することができる。以下では、デジタイザとタッチパネルの2種類のセンサの双方がタッチスクリーンディスプレイ17に組み込まれている場合を想定する。
このタッチスクリーンディスプレイ17は、指を使用した画面に対するタッチ操作のみならず、ペン100を使用した画面に対するタッチ操作も検出することができる。ペン100は例えば電磁誘導ペンであってもよい。ユーザは、外部オブジェクト(ペン100又は指)を使用してタッチスクリーンディスプレイ17上で手書き入力操作を行うことができる。手書き入力操作中においては、画面上の外部オブジェクト(ペン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のディスプレイ17の画面に表示することができる。この場合、複数の時系列情報それぞれのページを縮小することによって得られるサムネイルの一覧をディスプレイ17の画面上に表示してもよいし、これらサムネイルから選ばれた1ページをディスプレイ17の画面上に通常サイズで表示してもよい。
さらに、タブレットコンピュータ10が通信する先はパーソナルコンピュータ1ではなく、上述したように、ストレージサービスなどを提供するクラウド上のサーバ2であってよい。タブレットコンピュータ10は、時系列情報(手書き文書データ)をネットワーク越しにサーバ2に送信して、サーバ2のストレージデバイス2Aに記録することができる(アップロード)。さらに、タブレットコンピュータ10は、サーバ2のストレージデバイス2Aに記録されている任意の時系列情報を読み出して(ダウンロード)、その時系列情報によって示されるストロークそれぞれの軌跡をタブレットコンピュータ10のディスプレイ17の画面に表示することができる。
このように、本実施形態では、時系列情報が保存される記憶媒体は、タブレットコンピュータ10内のストレージデバイス、パーソナルコンピュータ1内のストレージデバイス、サーバ2のストレージデバイスのいずれであってもよい。
次に、図3および図4を参照して、ユーザによって手書きされたストローク(文字、図形、表など)と時系列情報との関係について説明する。図3は、ペン100などを使用してタッチスクリーンディスプレイ17上に手書きされる手書き文書(手書き文字列)の例を示している。
手書き文書では、一旦手書きによって入力される文字や図形などの上に、さらに別の文字や図形などが手書きによって入力されるというケースが多い。図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のディスプレイモニタとして使用されるLCD17Aを制御する表示コントローラである。このグラフィクスコントローラ104によって生成される表示信号はLCD17Aに送られる。LCD17Aは、表示信号に基づいて画面イメージを表示する。このLCD17A上にはタッチパネル17Bおよびデジタイザ17Cが配置されている。タッチパネル17Bは、LCD17Aの画面上で入力を行うための静電容量式のポインティングデバイスである。指が接触される画面上の接触位置および接触位置の動き等はタッチパネル17Bによって検出される。デジタイザ17CはLCD17Aの画面上で入力を行うための電磁誘導式のポインティングデバイスである。ペン100が接触される画面上の接触位置および接触位置の動き等はデジタイザ17Cによって検出される。
無線通信デバイス107は、無線LANまたは3G移動通信などの無線通信を実行するように構成されたデバイスである。EC108は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。EC108は、ユーザによるパワーボタンの操作に応じて本タブレットコンピュータ10を電源オンまたは電源オフする機能を有している。
次に、手書きノートアプリケーションプログラム202によってユーザに提示される幾つかの代表的な画面の例を説明する。
図6は、手書きノートアプリケーションプログラム202によって表示されるデスクトップ/ドロア画面を示す。デスクトップ/ドロア画面は複数の手書き文書データを扱うための基本画面である。以下では、手書き文書データを手書きノートと称する。
デスクトップ/ドロア画面は、デスクトップ画面領域70とドロア画面領域71とを含む。デスクトップ画面領域70は作業中の複数の手書きノートに対応する複数のノートアイコン801〜805を表示するテンポラリ領域である。ノートアイコン801〜805の各々は、対応する手書きノート内のあるページのサムネイルを表示する。デスクトップ画面領域70は、さらに、ペンアイコン771、カレンダーアイコン772、スクラップノートアイコン773、タグアイコン774を表示する。
ペンアイコン771は、表示画面をデスクトップ/ドロア画面から図8で後述するノートビュー画面に切り替えるためのグラフィカルユーザインタフェース(GUI)である。カレンダーアイコン772は現在の日付を示すアイコンである。このカレンダーアイコン772は、表示画面をデスクトップ/ドロア画面から現在の日付に関連付けられたタイムラインノート画面に切り替えるためのGUIである。スクラップノートアイコン773は、スクラップデータを作成または閲覧するためのGUIである。作成されたスクラップデータはストラップブックに登録される。スクラップノートアイコン773は、スクラップブックに登録されている各スクラップデータのサムネイルを表示する。タグアイコン774は、任意の手書きノート内の任意のページに付箋紙(タグ)を貼り付けるためのGUIである。
ドロア画面領域71は、作成済みの全ての手書きノートを格納するためのストレージ領域を閲覧するための表示領域である。ドロア画面領域71は、全ての手書きノート内の幾つかの手書きノートに対応するノートアイコン80A,80B,80Cを表示する。ノートアイコン80A,80B,80Cの各々は、対応する手書きノート内のあるページのサムネイルを表示する。手書きノートアプリケーションプログラム202は外部オブジェクトを使用してユーザによって行われるドロア画面領域71上のジェスチャ(例えばスワイプジェスチャ等)を検出することができる。このジェスチャ(例えばスワイプジェスチャ等)の検出に応答して、手書きノートアプリケーションプログラム202は、ドロア画面領域71上の画面イメージを左方向または右方向にスクロールする。これにより、ドロア画面領域71に任意の手書きノートそれぞれに対応するノートアイコンを表示することができる。
さらに、手書きノートアプリケーションプログラム202は外部オブジェクトを使用してユーザによって行われるドロア画面領域71のノートアイコン上のジェスチャ(例えばタップジェスチャ等)を検出することができる。ドロア画面領域71上のあるノートアイコン上のジェスチャ(例えばタップジェスチャ等)の検出に応答して、手書きノートアプリケーションプログラム202は、このノートアイコンをデスクトップ画面領域70の中央部に移動する。そして、手書きノートアプリケーションプログラム202は、このノートアイコンに対応する手書きノートを選択し、そして、デスクトップ/ドロア画面の代わりに、図7に示すデスクトップ画面を表示する。図7のデスクトップ画面は、選択された手書きノート内の任意のページを閲覧可能な画面である。
さらに、手書きノートアプリケーションプログラム202は外部オブジェクトを使用してユーザによって行われるデスクトップ画面領域70上のジェスチャ(例えばタップジェスチャ等)も検出することができる。デスクトップ画面領域70の中央部に位置するノートアイコン上のジェスチャ(例えばタップジェスチャ等)の検出に応答して、手書きノートアプリケーションプログラム202は、中央部に位置するノートアイコンに対応する手書きノートを選択し、そして、デスクトップ/ドロア画面の代わりに、図7に示すデスクトップ画面を表示する。
上述したように、図7のデスクトップ画面は、選択された手書きノート内の任意のページを閲覧可能な画面である。ここでは、ノートアイコン801に対応する手書きノートが選択された場合を想定する。この場合、手書きノートアプリケーションプログラム202は、この手書きノートに含まれる複数のページ902,903,904,905を、これらページ901,902,903,904,905それぞれの少なくとも一部分が視認可能で且つこれらページ901,902,903,904,905が重なった形態で表示する。
デスクトップ画面は、さらに、上述のペンアイコン771、カレンダーアイコン772、スクラップノートアイコン773、タグアイコン774を表示する。
手書きノートアプリケーションプログラム202はユーザによって行われるデスクトップ画面上の様々なジェスチャを検出することができる。例えば、あるジェスチャの検出に応答して、手書きノートアプリケーションプログラム202は、一番上に表示されるべきページを任意のページに変更する(ページ送り、ページ戻し)。また、一番上のページ上で行われるあるジェスチャ(例えばタップジェスチャ)の検出に応答して、またはペンアイコン771上で行われるあるジェスチャ(例えばタップジェスチャ)の検出に応答して、手書きノートアプリケーションプログラム202は、一番上のページを選択し、そしてデスクトップ画面の代わりに、図8に示すノートビュー画面を表示する。
図8のノートビュー画面は、ページ(手書きページ)の新規作成、および既存のページの閲覧および編集が可能な画面である。図7のデスクトップ画面上のページ901が選択された場合には、図8に示すように、ノートビュー画面は、ページ901の内容を表示する。
ノートビュー画面は、さらに、黒ペンボタン501、赤ペンボタン502、マーカーボタン503、選択ボタン504、および消しゴムボタン505を表示する。
例えば、黒ペンボタン501がユーザによるタップジェスチャによって選択された状態で、ペン100を用いた手書き入力操作がノートビュー画面上で行われると、手書きノートアプリケーションプログラム202は、ペン100の動きに合わせて黒色のストローク(軌跡)をノートビュー画面上に表示する。
図9は、検索キー入力ダイアログの例を示す。例えば、デスクトップ画面上の空き領域上で行われるタップジェスチャの検出に応答して、手書きノートアプリケーションプログラム202は、検索キー入力領域511および検索ボタン512を含む検索キー入力ダイアログをデスクトップ画面上に表示する。検索キー入力領域511は、検索キーとすべき文字列、図形、表などを手書きするための入力領域である。検索ボタン512は、検索処理の実行を要求するためのボタンである。図9においては、検索キー入力領域511に手書き文字列「Determine」が検索キーとして入力された場合が例示されている。ユーザは、手書き文字列に限らず、手書き図形、手書き表などを検索キー入力領域511に手書きすることができる。
次に、図10を参照して、手書きノートアプリケーションプログラム202の機能構成について説明する。
手書きノートアプリケーションプログラム202は、手書き文書データを扱うことが可能なWYSIWYGアプリケーションであり、主制御部311、ストローク管理部312、検索エンジン313、および通信処理部314等を備える。主制御部311はタッチスクリーンディスプレイ17を用いて入力されるストロークデータを使用することによって、手書き文書(手書きページ)の作成、表示、編集等を行う。
主制御部311は、表示処理部401および検索処理部402を備える。表示処理部401は、手書きによって入力される複数のストロークをタッチスクリーンディスプレイ17内のLCD17Aの画面上に表示する。例えば、図8のノートビュー画面が表示されている状態においては、表示処理部401は、デジタイザ17Cからの入力座標列に基づきストロークをノートビュー画面上に描画する。検索処理部402は、検索エンジン313と共同して、上述の手書き文書検索を実行する。この検索処理部402は、インデックス生成部402Aを備える。インデックス生成部402Aは、検索エンジン313と共同して、各手書きページを検索するためのインデックス情報を生成する。
主制御部311は、タッチスクリーンディスプレイ17(例えばデジタイザ17C)からペン100の動きの軌跡に対応する座標列を受信する。表示処理部401は、この座標列に基づいて、手書き入力操作によって書かれる手書き文字、手書き図形などに対応する各ストロークをタッチスクリーンディスプレイ17内のLCD17Aの画面上に表示する。この表示処理部401により、画面にペン100が接触している間のペン100の軌跡、つまり各ストロークの軌跡がLCD17Aの画面上に描かれる。主制御部311は、タッチスクリーンディスプレイ17から受信される上述の座標列をストローク管理部312に送る。
ストローク管理部312は、複数のストロークに対応する複数のストロークデータを含む手書き文書(手書きページ)を手書きノートデータベース411に保存するように構成された保存部として機能する。より詳しくは、ストローク管理部312は、タッチスクリーンディスプレイ17から受信される上述の座標列に基づいて、図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によって文字認識することによって得ることができる。そして、文字列検索エンジン313Bは、複数の手書き文書(複数の手書きページ)内の複数の領域を検索するための文字列インデックス情報と、検索キーである複数のストロークに対応する文字列のコード情報(テキスト)とを使用して、上述の検索キー(検索語)に対応する手書き部分を含む手書きページを検索する。文字列インデックス情報は、手書きページ内の領域に含まれるストローク群に対応する文字列のコード情報を含む。このコード情報は、例えば、各手書き文字列のストローク群を文字認識することによって生成することができる。
文字列検索の処理においては、文字列検索エンジン313Cは、文字列検索データベース412B内の文字列インデックス情報から、上述の検索語を含む文字列インデックス情報部分を見つけ出す。そして、文字列検索エンジン313Cは、この文字列インデックス情報部分を主制御部311に返す。主制御部311の検索処理部402は、文字列検索エンジン313Cから受信される文字列インデックス情報部分に基づいて、上述の検索語に対応する手書き部分を含む1以上の手書きページを検索することができる。
上述したように、手書きページは手書き文字列のみならず、手書き図形、手書き表、手書きマークなどを含む場合がある。上述の筆跡検索は、手書き文字列のみならず、手書き図形、手書き表、手書きマークなどの文字以外の手書きオブジェクトを検索することができる。したがって、筆跡検索は、手書きページの検索に有用である。
しかし、検索キーとして入力された複数のストロークが手書き文字であるか手書き文字以外の他の手書きオブジェクトであるかに無関係に常に筆跡検索を実行すると、例えば、手書き文字列が検索キーとして入力された場合に、文字以外の手書き図形などが誤って検索されてしまう可能性がある。例えば、手書き文字「o」、「q」、または「d」等を含む手書き文字列が検索キーとして入力された場合には、丸形状の手書き図形、四角形状の手書き図形、等が誤って検索されてしまう可能性がある。
また、筆跡特徴はユーザ毎に異なる。また、たとえ同じユーザが同じ文字を手書きした場合であっても、急いで文字を手書きした場合と丁寧に文字を手書きした場合とではそれら文字の筆跡特徴が異なる場合もある。よって、検索キーとして入力された複数のストロークが手書き文字であるか手書き文字以外の他の手書きオブジェクトであるかに無関係に常に筆跡検索を実行すると、他人によって書かれた手書きページや、過去に自分で乱雑に書いた手書きページなどは正しく検索できない場合がある。
本実施形態では、手書き文書検索は、筆跡検索と文字列検索(テキスト検索)とを併用することによって実行される。すなわち、検索処理部402は、検索キーである複数のストロークの文字列尤度に応じて、筆跡検索または文字列検索(テキスト検索)の少なく一方を実行する。複数のストロークの文字列尤度は、それらストロークの文字列らしさを表すスコアである。本実施形態では、検索キーとして手書きされる複数のストローク全体が一つの手書きブロックとして扱われ、この手書きブロックの文字列尤度が算出される。
文字列尤度は、例えば、0〜100の範囲のスコアによって表現してもよい。文字列尤度スコア=100は最大尤度を表し、文字列尤度スコア=0は最小尤度を表す。検索キーである複数のストロークの文字列尤度を算出するための方法としては、これらストロークの形状の全体としての文字列らしさを評価可能な任意の方法を使用し得る。例えば、これらストロークの特徴量を抽出し、この特徴量に基づいてこれらストロークの文字列尤度を算出してもよい。また、手書き図形、手書き表等は、手書き文字に比べてストローク密度(一つの文字ブロック内のストロークの個数)が低い場合が多いので、文字ブロック内のストロークの個数等に基づいて文字列尤度を算出してもよい。また、検索キーである複数のストロークを文字認識し、文字列との類似の程度を表す値を文字列尤度を算出してもよい。
検索キーである複数のストロークの文字列尤度が比較的高いならば、つまりこれら複数のストロークが文字列である可能性が高いならば、検索処理部402は、文字列検索(テキスト検索)を実行する。一方、検索キーである複数のストロークの文字列尤度が比較的低いならば、つまりこれら複数のストロークが文字列である可能性が低いならば、検索処理部402は、筆跡検索を実行する。
このように、本実施形態では、検索キーである複数のストロークが一つの手書きブロックとして扱われ、この手書きブロックの文字列らしさの程度を示す文字列尤度に応じて、実行すべき検索方式が自動的に決定される。したがって、検索キーが文字列らしい場合には文字列検索が実行され、検索キーが文字列らしくない場合には筆跡検索が実行されるので、手書き文書の検索の精度を高めることができる。
なお、各手書きページの全ての領域に対して上述の文字列インデックス情報と上述の特徴量インデックス情報の双方を生成しても良いが、各手書きページ内の各領域が文字列領域であるか非文字列領域であるかに応じて、上述の文字列インデックス情報と上述の特徴量インデックス情報とを選択的に生成しても良い。
この場合、文字列検索(テキスト検索)においては、検索処理部402は、各手書きページ内の全領域では無く、各手書きページ内の各文字列領域を検索対象とする。文字列領域は文字列尤度が高い領域である。これにより、検索キーである複数のストロークが手書き文字列であるにもかかわらず、文字以外の手書き図形などが誤って検索されてしまうことをより効率よく防ぐことができる。
一方、筆跡検索においては、検索処理部402は、各手書きページ内の全領域では無く、各手書きページ内の各非文字列領域を検索対象とする。非文字列領域は文字列尤度が低い領域である。これにより、検索キーである複数のストロークが手書き図形であるにもかかわらず、手書き文字などが誤って検索されてしまうことをより効率よく防ぐことができる。
このように、本実施形態では、検索キーである複数のストロークの文字列尤度に応じて、使用すべき検索方式が自動的に選択され、かつ検索キーである複数のストロークの文字列尤度に応じて、各手書きページ内の検索対象領域が決定される。このことを実現するため、検索処理部402のインデックス生成部402Aは、複数の手書きページ内の複数の文字列領域を検索するための文字列インデックス情報と、複数の手書きページ内の複数の非文字列領域を検索するための特徴量インデックス情報とを生成する。文字列インデックス情報は各文字列領域内のストローク群に対応する文字列のコード情報を含む。特徴量インデックス情報は、各非文字列領域内のストローク群の特徴量を示す。
より詳しくは、インデックス生成部402Aは、手書きページ内の領域毎に、その領域の文字列尤度に応じて、上述の文字列インデックス情報または上述の特徴量インデックス情報を選択的に生成する。
インデックス作成対象の領域の文字列尤度が比較的高い場合には、インデックス生成部402Aは、検索エンジン313内の文字認識エンジン313Bと共同して、この領域を検索するための文字列インデックス情報を生成する。この文字列インデックス情報は、この領域内のストローク群に対応する文字列のコード情報を含む。この文字列のコード情報は、この領域内のストローク群を文字認識エンジン313Bによって文字認識することによって得られる。生成された文字列インデックス情報は、インデックスデータベース412内の文字列検索データベース412Bに格納される。
一方、インデックス作成対象の領域の文字列尤度が低い場合には、インデックス生成部402Aは、検索エンジン313内の筆跡検索エンジン313Aと共同して、この領域を検索するための特徴量インデックス情報を生成する。この特徴量インデックス情報は、この領域内のストローク群の特徴量(筆跡特徴)を示す情報である。生成された特徴量インデックス情報は、インデックスデータベース412内の特徴量データベース412Aに格納される。
さらに、主制御部311は、通信処理部314を介してサーバ2との通信を実行することができる。通信処理部314は任意の手書きページデータをサーバ2に送信(アップロード)する送信部として機能すると共に、さらに、任意の手書きページデータをサーバ2から受信する受信部として機能する。
図11は、手書きノートデータベース441に格納される、手書きページデータ管理テーブルの構成を示す。手書きページデータ管理テーブルは、複数の手書きページに対応する複数のエントリを含む。各エントリは、例えば、ページID、ユーザID、ストロークID、ストロークデータを含む。ある手書きページデータに対応するエントリにおいて、「ページID」は、その手書きページデータに付与された識別情報を示す。「ユーザID」は、その手書きページデータを作成したユーザに付与された識別情報を示す。「ストロークID」は、その手書きページデータに手書きされたストロークに付与された識別情報を示す。「ストロークデータ」は、その手書きページデータに手書きされたストロークに対応する座標データ系列(時系列座標)を示す。
図12は、特徴量データベース412Aに格納される特徴量インデックス情報管理テーブルの構成例を示す。特徴量インデックス情報管理テーブルは複数のストロークに対応する複数のエントリを含む。各エントリは、例えば、ページID、ストロークID、特徴量を含む。あるストロークに対応するエントリにおいて、「ページID」は、そのストロークが手書きされた手書き文書に付与された識別情報を示す。「ストロークID」は、そのストロークに付与された識別情報を示す。「特徴量」は、そのストロークを解析することによって算出された特徴量(筆跡特徴)を示す。筆跡特徴としては、上述したように、各ストロークの形状等を表す特徴量データを使用し得る。
なお、ここでは、ストローク毎に特徴量を管理する場合を例示したが、手書きの図形、手書きの表、手書きの記号といった手書きオブジェクト(手書きブロック)を単位として、その手書きオブジェクトの特徴量を管理しても良い。手書きオブジェクトの特徴量としては、その手書きオブジェクトの形状等の特徴を表現可能な任意の特徴量を使用し得る。さらに、手書きオブジェクトの特徴量は、この手書きオブジェクトを構成する複数のストロークの書かれた順序、等を表す情報を含んでいてもよい。
また、特徴量インデックス情報管理テーブルは、各手書きオブジェクトが存在するページ内の位置を示す情報を含んでいても良い。
図13は、文字列検索データベース412Bに格納される文字列インデックス情報管理テーブルの構成例を示す。文字列インデックス情報管理テーブルは文字列尤度の高い複数の領域(複数の文字列ブロック)に対応する複数のエントリを含む。各エントリは、例えば、「ページID」、「ストロークID範囲」、「文字列」を含む。ある文字列ブロックに対応するエントリにおいて、「ページID」は、その文字列ブロックが手書きされた手書きページの識別情報を示す。「ストロークID範囲」は、その文字列ブロック内のストローク群に付与された識別情報の範囲を示す。「文字列」は、その文字列ブロックに対するコード情報(文字コード群)を示す。ある文字列ブロックのコード情報(文字コード群)は、この文字列ブロックの複数の文字列候補それぞれに対応する複数のコード情報が登録されていてもよい。また、文字列インデックス情報管理テーブルは、各文字列ブロックが存在するページ内の位置を示す情報を含んでいても良い。
図14は、手書き文書検索の概要を示す。ここでは、検索キー入力領域511に手書き文字列「Meeting」に対応する複数のストロークがペン100によって手書きされた場合を想定する。これら複数のストロークは高い文字列尤度を有するストローク群である。
このため、検索処理部402は、使用すべき検索方式として上述の文字列検索を選択し得る。検索処理部402は、文字認識エンジン313Bを使用して手書き文字列「Meeting」を文字認識して、手書き文字列「Meeting」に対応するコード情報(文字列「Meeting」)を得る。そして、検索処理部402は、文字検索データベース412Bの文字列インデックス情報管理テーブルを参照して、文字列「Meeting」に対応する手書き部分(手書き文字列)を含む手書きページを検索する。いま、手書きページ611、612、613が、文字列「Meeting」に対応する手書き文字列を含む場合を想定する。この場合、手書きノートアプリケーションプログラム202は、手書きページ611、612、613それぞれのサムネイルを画面上に表示する。さらに、手書きノートアプリケーションプログラム202は、手書きページ611、612、613内のヒットワード(手書き文字列「Meeting」)を強調表示する。
図15は、手書き文字列と手書き文字列以外の手書きオブジェクトとを含む手書きページ610を示す。この手書きページ610は、図16に示すように、文字列尤度が高い領域(文字列ブロック)610Aと、文字列尤度が低い領域(非文字列ブロック)610Bとを含む。手書きノートアプリケーションプログラム202は、領域610A内のストローク群を検索するためのインデックス情報として上述の文字列インデックス情報を生成し、この文字列インデックス情報を文字列検索データベース412Bの文字列インデックス情報管理テーブルに登録する。また、手書きノートアプリケーションプログラム202は、領域610B内のストローク群を検索するためのインデックス情報として上述の特徴量インデックス情報を生成し、この特徴量インデックス情報を特徴量データベース412Aの特徴量インデックス情報管理テーブルに登録する。
このように、本実施形態では、手書きページ内の各領域の文字列尤度に応じて、特徴量インデックス情報と文字列インデックス情報が選択的に使用される。
したがって、文字列検索が実行される場合(つまり、検索キーの文字列尤度が高い場合)には、領域610Aは検索対象となるが、領域610Bは検索対象とならない。なぜなら、領域610Aに対応する文字列インデックス情報は文字列検索データベース412Bに登録されているが、領域610Bに対応する文字列インデックス情報は文字列検索データベース412Bに存在しないからである。
もし領域610Bに対応する文字列インデックス情報を生成したならば、文字列検索(テキスト検索)においては、領域610Aのみならず、領域610Bも文字列検索の対象となってしまう。この場合、検索キーである複数のストロークが手書き文字列であるにもかかわらず、文字以外の手書き図形などが誤って検索されてしまう可能性がある。なぜなら、もし領域610Bに対応する文字列インデックス情報を文字認識によって生成したならば、領域610B内の手書き図形が幾つかの誤った文字コードに変換されてしまう場合があるからである。
本実施形態においては、文字列検索(テキスト検索)においては、各手書きページ内の全領域では無く、各手書きページ内の文字列尤度が高い領域(文字列領域)を検索対象とすることができる。
また、本実施形態では、筆跡検索が実行される場合(つまり、検索キーの文字列尤度が低い場合)には、図16の手書きページ610の領域610Aは検索対象とならないが、手書きページ610の領域610Bが検索対象となる。なぜなら、領域610Bに対応する特徴量インデックス情報は特徴量データベース412Aに登録されているが、領域610Aに対応する特徴量インデックス情報は特徴量データベース412Aに存在しないからである。
もし領域610Aに対応する特徴量インデックス情報を生成したならば、筆跡検索においては、領域610Bのみならず、領域610Aも筆跡検索の対象となってしまう。この場合、検索キーである複数のストロークが手書き図形であるにもかかわらず、手書き文字が誤って検索されてしまう可能性がある。
本実施形態においては、筆跡検索においては、各手書きページ内の全領域では無く、各手書きページ内の文字列尤度が低い領域(文字列以外の領域)を検索対象とすることができる。
図17は、図15の手書きページ610を検索するためのインデックス情報を生成する動作を示す。主制御部311は、手書きページ610を構成する複数のストロークデータをストローク管理部312を介して文字認識エンジン313Bに送信し、手書きページ610内の各領域に対応する文字列尤度の算出を文字認識エンジン313Bに要求する。
文字認識エンジン313Bは、手書きページ610を構成する複数のストロークデータに基づき、手書きページ610の構造解析を行う。この構造解析処理では、文字認識エンジン313Bは、例えば、複数のストロークデータをグループ化してこれら複数のストロークデータを複数の領域(複数の手書きブロック)に分類し得る。この場合、文字認識エンジン313Bは、例えば互いに近傍に位置するストロークにそれぞれ対応するストロークデータ同士が同一ブロックに分類されるように、複数のストロークデータを複数の手書きブロックに分類し得る。
図15の手書きページ610は、領域610Aと領域610Bの2つの手書きブロック(2つの領域)に分類される。そして、文字認識エンジン313Bは、個々の手書きブロックについてその文字らしさ(文字列らしさ)を表す文字列尤度(文字列尤度スコア)を算出する。
領域610Bの文字列尤度は低いので、領域610B内に含まれる複数のストロークに対応する複数のストロークデータは筆跡検索エンジン313Aに送られる。筆跡検索エンジン313Aは領域610B内に含まれる複数のストロークそれぞれ特徴量を抽出し、それら特徴量を上述の特徴量インデックス情報として特徴量データベース412Aに格納する。文字列尤度が高い領域610Aは文字認識エンジン313Bによって文字認識され、領域610A内のストローク群が1以上の文字コードを含むコード情報(テキスト)に変換される。このコード情報(文字コード群)は文字列検索データベース412Bに上述の文字列インデックス情報として格納される。
文字列尤度を算出する処理は、各手書きページ内の全ての領域に対して個別に実行される。さらに、文字列尤度を算出する処理は、検索キーとして使用される複数のストロークに対しても実行される。
次に、図18、図19を参照して、検索キー入力領域511に手書き入力される複数のストロークと実行されるべき検索方式との関係について説明する。
図18においては、検索キー入力領域511に手書き文字列「Determine」が検索キーとして手書きされた場合が想定されている。検索処理部402は、文字認識エンジン313Bを使用して、手書き文字列「Determine」の文字列尤度を算出する。この場合、この文字列尤度の算出においては、この手書き文字列「Determine」に対応するストローク群全体が上述の一つの領域(一つの手書きブロック)として扱われる。このストローク群の文字列尤度は高いので、検索処理部402は、文字列検索(テキスト検索)を選択する。そして、検索処理部402は、手書き文字列「Determine」に対応するコード情報(テキスト)と上述の文字列インデックス情報とを使用して文字列検索(テキスト検索)を実行する。
図19においては、検索キー入力領域511に手書き図形が検索キーとして手書きされた場合が想定されている。この場合、検索処理部402は、この手書き図形に対応するストローク群全体を上述の一つの領域(一つの手書きブロック)として扱い、文字認識エンジン313Bを使用して、これらストローク群全体の文字列尤度を算出する。これらストローク群の文字列尤度は低いので、検索処理部402は、筆跡検索を選択する。そして、検索処理部402は、手書き図形のストローク群の特徴量(筆跡特徴)と上述の特徴量インデックス情報とを使用して筆跡検索を実行する。
なお、検索キー入力領域511に入力される複数のストロークの文字列尤度が、文字列に対応する高い文字列尤度と非文字列に対応する低い文字列尤度との中間の範囲に属する場合には、検索処理部402は、検索キー入力領域511に入力される複数のストロークに対応する文字列のコード情報を使用する文字列検索と、検索キー入力領域511に入力される複数のストロークの特徴量を使用する筆跡検索の双方を実行し得る。
また、図18、図19の説明では検索キー入力領域511に手書きされたストローク群を検索キーとして使用する場合を例示したが、上述の範囲選択ツールを使用して選択されるノートビュー画面上のストローク群を検索キーとして使用してもよい。
次に、各領域が文字列尤度が高い領域(文字列領域)または文字列尤度が低い領域(非文字列領域)のいずれであるかを判定するための閾値について説明する。
文字列尤度が高い領域(文字列領域)を判定するための閾値Th−1と文字列尤度が低い領域(非文字列領域)を判定するための閾値Th−2は同じ値(同じ文字列尤度スコア)であってもよいが、図20に示すように、閾値Th−1と閾値Th−2とを異なる同じ文字列尤度スコアに設定してもよい。
図20は、閾値Th−1に対応する文字列尤度スコアが閾値Th−2に対応する文字列尤度スコアよりも高いスコアに設定されている場合を示している。閾値Th−1に対応する文字列尤度スコアは例えば80であってもよい。この場合、文字列尤度スコアが80よりも高い領域が、文字列領域として決定される。文字列尤度スコアが80よりも高い手書きページ内の各文字列領域を検索するためのインデックス情報としては、上述の文字列インデックス情報が使用される。
閾値Th−2に対応する文字列尤度スコアは例えば20であってもよい。この場合、文字列尤度スコアが20よりも低い領域が、非文字列領域として決定される。文字列尤度スコアが20よりも低い手書きページ内の各非文字列領域を検索するためのインデックス情報としては、上述の特徴量インデックス情報が使用される。
手書きページ内の領域の文字列尤度スコアが閾値Th−1と閾値Th−2との間の範囲に属する場合には、この領域を検索するためのインデックス情報として、上述の特徴量インデックス情報と上述の文字列インデックス情報の双方が生成および保存される。
すなわち、インデックス生成部402Aは、複数の手書きページ内の複数の領域に対応する複数の文字列尤度に応じて、これら複数の領域の各々が、(i)文字列領域、(ii)非文字列領域、(iii)文字列領域と非文字列領域の中間の領域、のいずれであるかを決定する。そして、インデックス生成部402Aは、上述の文字列領域であると決定された各領域を検索するための文字列インデックス情報と、上述の中間の領域のであると決定された各領域を検索するための文字列インデックス情報とを生成する。さらに、インデックス生成部402Aは、上述の非文字列領域であると決定された各領域を検索するための特徴量インデックス情報であって、この非文字列領域であると決定された各領域内のストローク群の特徴量を示す特徴量インデックス情報を生成する。またさらに、インデックス生成部402Aは、上述の中間の領域であると決定された各領域を検索するための特徴量インデックス情報であって、この中間の領域であると決定された各領域内のストローク群の特徴量を示す特徴量インデックス情報を生成する。
このように、本実施形態では、文字列であるか文字列以外であるかを判別しがたい領域(ストローク群)については、特徴量インデックス情報と上述の文字列インデックス情報の双方が生成及び保存される。換言すれば、文字列であるか文字列以外であるかを判別しがたい領域については、筆跡検索/テキスト検索のいずれが実行される場合であった検索対象となる。よって、ロバスト性を有する検索が可能となる。
検索方式(筆跡検索/テキスト検索)を決定するために使用される文字列尤度スコアの閾値(閾尤度)は一つであってもよいが、上述の2つの異なる閾値Th−1,Th−2を、実行すべき検索方式の決定のために使用することもできる。この場合、検索キーとして入力されるストローク群の文字列尤度スコアが閾値(閾尤度)Th−1(=80)よりも高い場合には、文字列検索(テキスト検索)が実行される。また、検索キーとして入力されるストローク群の文字列尤度スコアが閾値(閾尤度)Th−2(=20)よりも低い場合には、筆跡検索が実行される。検索キーとして入力されるストローク群の文字列尤度スコアが閾値Th−1と閾値Th−2との間の範囲に属する場合には、筆跡検索と文字列検索(テキスト検索)の双方が実行される。この場合、筆跡検索によって検索される手書きページと文字列検索によって検索される手書きページの双方を、検索キーに対応する検索結果としてユーザに提示してもよい。
図21は、手書きノートアプリケーションプログラム202によって表示される検索結果画面600の例を示す。ここでは、検索キー入力領域601に入力された手書き文字列「TABLET」が検索キーとして使用された場合が想定されている。検索結果画面600上には、手書き文字列「TABLET」を含むいくつかの手書きページそれぞれに対応するサムネイル60Aが表示される。つまり、検索結果画面600上には、手書き文字列「TABLET」と推定されるストローク群を含むいくつかの手書き文書それぞれに対応するサムネイル601Aが表示される。図21においては、5個の手書きページが手書き文字列「TABLET」を含む手書き文書として検索された場合が例示されている。ヒットワード、つまり5個のサムネイル601A中の手書き文字列「TABLET」(すなわち、手書き文字列「TABLET」に対応するストローク群)は強調表示される。
また、手書きノートアプリケーションプログラム202は、あるサムネイル601A上で行われるタップジェスチャのようなジェスチャを検出すると、このサムネイル601Aに対応する手書きページを表示する。
図22のフローチャートは、手書きノートアプリケーションプログラム202によって実行されるインデックス生成処理の手順を示す。
インデックス生成部402Aは、文字認識エンジン313Bを使用して処理対象の手書きページの構造解析を実行し、これによって手書きページ内の各領域(各手書きブロック)の文字列尤度を算出する(ステップS11)。インデックス生成部402Aは、処理対象の領域の文字列尤度が上述の閾値Th−1よりも高いか否かを判定する(ステップS12)。処理対象の領域の文字列尤度が上述の閾値Th−1よりも高いならば(ステップS12のYES)、インデックス生成部402Aは、この処理対象の領域をテキスト検索方式で検索するための文字列インデックス情報を生成し、この文字列インデックス情報を文字列検索データベース412Bに保存する(ステップS13)。この文字列インデックス情報は、処理対象の領域内のストローク群に対応する文字列のコード情報を含む。
処理対象の領域の文字列尤度が上述の閾値Th−1よりも高くないならば(ステップS12のNO)、インデックス生成部402Aは、処理対象の領域の文字列尤度が上述の閾値Th−2よりも低いか否かを判定する(ステップS14)。処理対象の領域の文字列尤度が上述の閾値Th−2よりも低いならば(ステップS14のYES)、インデックス生成部402Aは、処理対象の領域を筆跡検索方式で検索するための特徴量インデックス情報を生成し、この特徴量インデックス情報を特徴量データベース412Aに保存する(ステップS15)。この特徴量インデックス情報は、処理対象の領域内のストローク群の特徴量(筆跡特徴)を示す。
処理対象の領域の文字列尤度が上述の閾値Th−2よりも低くないならば、つまり文字列尤度が上述の閾値Th−1と閾値Th−2との間の範囲に属するならば(ステップS14のNO)、インデックス生成部402Aは、処理対象の領域に対応する文字列インデックス情報と、処理対象の領域に対応する特徴量インデックス情報の双方を生成する(ステップS16)。このステップS16では、インデックス生成部402Aは、処理対象の領域に対応する特徴量インデックス情報を特徴量データベース412Aに保存すると共に、処理対象の領域に対応する文字列インデックス情報を文字列検索データベース412Bに保存する。
図22のインデックス生成処理では、各手書きページ内の各領域(各手書きブロック)の文字列尤度に応じて、作成すべきインデックス情報の種類を文字列インデックス情報と特徴量インデックス情報との間で自動的に変更したが、領域毎に文字列インデックス情報と特徴量インデックス情報の双方を生成するようにしても良い。
図23のフローチャートは、手書きノートアプリケーションプログラム202によって実行される手書き文書検索処理の手順を示す。
検索処理部402は、検索キー入力領域に手書きされる複数のストローク全体を一つの手書きブロックとして扱い、文字認識エンジン313Bを使用してこの手書きブロックの文字列尤度(つまり、検索キーである複数のストロークの文字列尤度)を算出する(ステップS21)。そして、検索処理部402は、検索キーである複数のストロークの文字列尤度が上述の閾値Th−1よりも高いか否かを判定する(ステップS22)。
検索キーである複数のストロークの文字列尤度が上述の閾値Th−1よりも高いならば(ステップS22のYES)、検索処理部402は、文字列検索(テキスト検索)を実行する(ステップS23)。この場合、検索処理部402は、文字列検索データベース412B内の文字列インデックス情報と、検索キーである複数のストロークに対応する文字列のコード情報とを使用して、文字列検索を実行する。そして、検索処理部402は、検索キーに対応する手書きデータ部分を含む各手書きページ、つまり検索キーの文字列に対応する手書きデータ部分を含む各手書きページを検索する。
検索キーである複数のストロークの文字列尤度が上述の閾値Th−1よりも高くないならば(ステップS22のNO)、検索処理部402は、検索キーである複数のストロークの文字列尤度が上述の閾値Th−2よりも低いか否かを判定する(ステップS24)。
検索キーである複数のストロークの文字列尤度が上述の閾値Th−2よりも低いならば(ステップS24のYES)、検索処理部402は、筆跡検索を実行する(ステップS25)。この場合、検索処理部402は、検索キーである複数のストロークの特徴量と特徴量データベース412A内の特徴量インデックス情報とを使用して、筆跡検索を実行する。そして、検索処理部402は、検索キーに対応する手書きデータ部分を含む各手書きページ、つまりこの検索キーである複数のストロークと類似する複数のストロークを含む各手書きページを検索する。
検索キーである複数のストロークの文字列尤度が上述の閾値Th−2よりも低くないならば(ステップS24のNO)、検索処理部402は、文字列検索(テキスト検索)と筆跡検索の双方を実行する(ステップS26)。この場合、検索処理部402は、文字列検索(テキスト検索)によって検索された各手書きページと筆跡検索によって検索された各手書きページの双方を上述の検索キーに対応する検索結果として出力する。この場合、検索処理部402は、検索結果画面上に同じ手書きページが複数表示されるのを防止するために文字列検索(テキスト検索)の検索結果と筆跡検索の検索結果とをマージしてもよい。
図23の手書き文書検索処理では、2つの閾値を使用して検索キーの文字列尤度を3つのレベルに分ける場合を例示したが、1つの閾値を使用して検索キーの文字列尤度を2つのレベルに分けてもよい。
以上説明したように、本実施形態においては、複数のストロークに対応する複数のストロークデータを含む複数の手書き文書が保存されると共に、これら複数の手書き文書内の複数の領域を検索するための第1インデックス情報(文字列インデックス情報)と、これら複数の手書き文書内の複数の領域を検索するための第2インデックス情報(特徴量インデックス情報)とが生成される。そして、検索キーである複数の第1ストロークの文字列尤度に応じて、実行されるべき検索方式(筆跡検索/文字列検索)が自動的に決定される。したがって、検索キーが文字列らしい場合には文字列検索が実行され、検索キーが文字列らしくない場合には筆跡検索が実行されるので、手書き文書の検索の精度を高めることができる。よって、手書き文字列のみならず、手書き図形、手書き表、手書きマークなどの文字以外の手書きオブジェクトを含み得る手書き文書を、効率よく検索することができる。
また、本実施形態では、複数の手書き文書内の複数の文字列領域を検索するための文字列インデックス情報と、これら複数の手書き文書内の複数の非文字列領域を検索するための特徴量インデックス情報とを生成することもできる。この場合、検索キーが文字列らしい場合には、複数の手書き文書内の複数の文字列領域を文字列検索の検索対象とすることができ、また文字列以外の手書きオブジェクトらしいストローク群が検索キーとして使用される場合には、複数の手書き文書内の複数の非文字列領域を筆跡検索の検索対象とすることができる。このように、本実施形態では、文字列らしい領域には文字列検索が適用され、それ以外の領域には筆跡検索が適用される。したがって、手書き文書の検索の精度をより高めることができる。
なお、本実施形態の手書き文書に対する各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムを通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
また、筆跡検索部402、インデックス生成部402A、検索エンジン313の全てあるいは任意の一部の機能をサーバ2によって実行するようにしてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。