以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る電子機器の外観の一例を示す斜視図である。この電子機器は、例えば、ペンまたは指によって手書き入力可能なペン・ベースの携帯型電子機器である。この電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、PDA等として実現され得る。以下では、この電子機器がタブレットコンピュータ10として実現されている場合を説明する。タブレットコンピュータ10は、タブレットまたはスレートコンピュータとも称される携帯型電子機器であり、本体11は、薄い箱型の筐体を有している。
タッチスクリーンディスプレイ17は、本体11の上面に重ね合わせるように取り付けられている。タッチスクリーンディスプレイ17には、フラットパネルディスプレイと、フラットパネルディスプレイの画面上のペンまたは指の接触位置を検出するように構成されたセンサとが組み込まれている。フラットパネルディスプレイは、例えば、液晶表示装置(LCD)であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザ等を使用することができる。以下では、デジタイザ及びタッチパネルの2種類のセンサの双方がタッチスクリーンディスプレイ17に組み込まれている場合を説明する。このため、タッチスクリーンディスプレイ17は、指を使用した画面に対するタッチ操作のみならず、ペン100を使用した画面に対するタッチ操作も検出することができる。
ペン100は、例えばデジタイザペン(電磁誘導ペン)であってもよい。ユーザは、ペン100を使用してタッチスクリーンディスプレイ17上で手書き入力操作を行うことができる(ペン入力モード)。ペン入力モードにおいては、画面上のペン100の動きの軌跡、つまり、手書き入力操作によって手書きされるストロークが求められ、これによって手書きにより入力された複数のストロークが画面上に表示される。ペン100が画面に接触されている間のペン100の動きの軌跡が1つのストロークに相当する。複数のストロークが文字、記号等を構成する。手書きされた文字、手書きされた図形、手書きされた表等に対応する多数のストロークの集合が手書き文書を構成する。
本実施形態では、この手書き文書は、イメージデータではなく、各ストロークの軌跡の座標列とストローク間の順序関係とを示す時系列情報(手書き文書データ)として記憶媒体に保存される。ただし、この手書き文書は、イメージデータに基づいて生成されても良い。時系列情報の詳細は図4を参照して後述するが、時系列情報は、複数のストロークが手書きされた順を示し、かつ複数のストロークにそれぞれ対応する複数のストロークデータを含む。換言すれば、時系列情報は、複数のストロークにそれぞれ対応する時系列のストロークデータの集合を意味する。各ストロークデータは、ある1つのストロークに対応し、このストロークの軌跡上の点それぞれに対応する座標データ系列(時系列座標)を含む。これらストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序に相当する。
タブレットコンピュータ10は、記憶媒体から既存の任意の時系列情報を読み出し、この時系列情報に対応する手書き文書、つまり、この時系列情報によって示される複数のストロークを画面上に表示することができる。時系列情報によって示される複数のストロークも、手書きによって入力される複数のストロークである。
更に、本実施形態に係るタブレットコンピュータ10は、ペン100を使用せずに、指で手書き入力操作を行うためのタッチ入力モードも有している。タッチ入力モードが有効な場合、ユーザは、指を使用してタッチスクリーンディスプレイ17上で手書き入力操作を行うことができる。タッチ入力モードにおいては、画面上の指の動きの軌跡、つまり、手書き入力操作によって手書きされるストロークが求められ、これによって手書きにより入力された複数のストロークが画面上に表示される。
タブレットコンピュータ10は、編集機能を有している。この編集機能は、「消しゴム」ツール、範囲選択ツール、及び他の各種ツール等を用いたユーザによる編集操作に応じて、範囲選択ツールによって選択される表示中の手書き文書内の任意の手書き部分(手書き文字、手書きマーク、手書き図形及び手書き表等)を削除または移動することができる。また、範囲選択ツールによって選択される手書き文書内の任意の手書き部分を、手書き文書を検索するための検索キーとして指定することもできる。また、範囲選択ツールによって選択される手書き文書内の任意の手書き部分に対して、手書き文字認識/手書き図形認識/手書き表認識のような認識処理を実行することもできる。
本実施形態では、手書き文書は、1つまたは複数のページとして管理され得る。この場合、時系列情報(手書き文書データ)を1つの画面に収まる面積単位で区切ることによって、1つの画面に収まる時系列情報のまとまりを1つのページとして記録してもよい。あるいは、ページのサイズを可変できるようにしてもよい。この場合、ページのサイズは1つの画面のサイズよりも大きい面積に広げることができるので、画面のサイズよりも大きな面積の手書き文書を1つのページとして扱うことができる。1つのページ全体をディスプレイに同時に表示できない場合は、そのページを縮小して表示するようにしてもよいし、縦横スクロールによってページ内の表示対象部分を移動するようにしてもよい。
図2は、タブレットコンピュータ10と外部装置との連係動作の一例を示している。タブレットコンピュータ10は、無線LAN等の無線通信デバイスを備えており、パーソナルコンピュータ1との無線通信を実行することができる。更に、タブレットコンピュータ10は、無線通信デバイスを使用してインターネット3上のサーバ2との通信を実行することもできる。サーバ2は、オンラインストレージサービス、他の各種クラウドコンピューティングサービスを実行するサーバであってもよい。
パーソナルコンピュータ1は、ハードディスクドライブ(HDD:Hard Disk Drive)のようなストレージデバイスを備えている。タブレットコンピュータ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においては、「A」、「B」及び「C」の手書き文字が、この順番で手書きによって入力され、この後に、手書きの矢印が、手書き文字「A」のすぐ近くに手書きによって入力されている。
手書き文字「A」は、ペン100等を使用して手書きされた2つのストローク(「∧」形状の軌跡、「−」形状の軌跡)によって、つまり、2つの軌跡によって表現される。最初に手書きされる「∧」形状のペン100の軌跡は例えば等時間間隔でリアルタイムにサンプリングされ、これによって「∧」形状のストロークの時系列座標SD11、SD12、…、SD1nが得られる。同様に、次に手書きされる「−」形状のペン100の軌跡も等時間間隔でリアルタイムにサンプリングされ、これによって「−」形状のストロークの時系列座標SD21、SD22、…、SD2nが得られる。
手書き文字「B」は、ペン100等を使用して手書きされた2つのストローク、つまり、2つの軌跡によって表現される。手書き文字「C」は、ペン100等を使用して手書きされた1つのストローク、つまり、1つの軌跡によって表現される。手書きの「矢印」は、ペン100等を使用して手書きされた2つのストローク、つまり、2つの軌跡によって表現される。
図4は、図3の手書き文書に対応する時系列情報200を示している。時系列情報は、複数のストロークデータSD1、SD2、…、SD7を含む。時系列情報200内においては、これらストロークデータSD1、SD2、…、SDは、これらのストロークが手書きされた順に時系列に並べられている。
時系列情報200において、先頭の2つのストロークデータSD1、SD2は、手書き文字「A」の2つのストロークをそれぞれ示している。3番目と4番目のストロークデータSD3、SD4は、手書き文字「B」を構成する2つのストロークをそれぞれ示している。5番目のストロークデータSD5は、手書き文字「C」を構成する1つのストロークを示している。6番目と7番目のストロークデータSD6、SD7は、手書き「矢印」を構成する2つのストロークをそれぞれ示している。
各ストロークデータは、1つのストロークに対応する座標データ系列(時系列座標)、つまり、1つのストローク軌跡上の複数のサンプリング点それぞれに対応する複数の座標を含む。各ストロークデータにおいては、複数のサンプリング点の座標はストロークが書かれた順(サンプリングされた順)に時系列に並べられている。例えば、手書き文字「A」に関しては、ストロークデータSD1は、手書き文字「A」の「∧」形状のストロークの軌跡上の点それぞれに対応する座標データ系列(時系列座標)、つまり、n個の座標データSD11、SD12、…、SD1nを含む。ストロークデータSD2は、手書き文字「A」の「−」形状のストロークの軌跡上の点それぞれに対応する座標データ系列、つまり、n個の座標データSD21、SD22、…、SD2nを含む。なお、座標データの数はストロークデータ毎に異なっていてもよい。ストロークを等時間間隔でサンプリングすると、ストロークの長さが異なっているので、サンプリング点の数も異なる。
各座標データは、対応する軌跡内のある1点のX座標及びY座標を示す。例えば、座標データSD11は、「∧」形状のストロークの始点のX座標(X11)及びY座標(Y11)を示す。SDn1は、「∧」形状のストロークの終点のX座標(X1n)及びY座標(Y1n)を示す。
各座標データは、その座標に対応する点が手書きされた時点(サンプリングタイミング)に対応するタイムスタンプ情報Tを含んでいてもよい。手書きされた時点は、絶対時間(例えば、年月日時分秒)またはある時点を基準とした相対時間のいずれであってもよい。例えば、各ストロークデータに、ストロークが書き始められた絶対時間(例えば、年月日時分秒)をタイムスタンプ情報として付加し、更に、ストロークデータ内の各座標データに、絶対時間との差分を示す相対時間をタイムスタンプ情報Tとして付加してもよい。
このように、各座標データにタイムスタンプ情報Tが追加された時系列情報を使用することにより、ストローク間の時間的関係をより精度よく表すことができる。図4には示していないが、各座標データには、筆圧を示す情報(Z)を追加してもよい。
図4で説明したような構造を有する時系列情報200は、個々のストロークの筆跡だけでなく、ストローク間の時間的関係も表すことができる。したがって、この時系列情報200を使用することにより、図3に示すようにたとえ手書き「矢印」の先端部が手書き文字「A」上に重ねてまたは手書き文字「A」に近接して書かれたとしても、手書き文字「A」と手書き「矢印」の先端部とを異なる文字または図形として扱うことが可能となる。
更に、本実施形態では、上述したように、手書き文書データは、イメージまたは文字認識結果ではなく、時系列のストロークデータの集合から構成される時系列情報200として記憶されるので、手書き文字の言語に依存せずに手書き文字を扱うことができる。したがって、本実施形態における時系列情報200の構造は、使用言語の異なる世界中の様々な国で共通に使用できる。
図5は、タブレットコンピュータ10のシステム構成を示す図である。
タブレットコンピュータ10は、CPU101、システムコントローラ102、主メモリ103、グラフィクスコントローラ104、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は、表示信号に基づいて画面イメージを表示する。タッチパネル17B、LCD17A及びデジタイザ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は、表示画面をホーム画面からページ編集画面に切り替えるためのグラフィカルユーザインタフェース(GUI)である。カレンダーアイコン772は、現在の日付を示すアイコンである。スクラップノートアイコン773は、他のアプリケーションプログラムからまたは外部ファイルから取り込んだデータ(スクラップデータまたはギャラリーデータ)を閲覧するためのGUIである。タグアイコン774は、任意の手書きノート内の任意のページにラベル(タグ)を貼り付けるためのGUIである。
引き出し画面領域71は、作成済みの全ての手書きノートを格納するためのストレージ領域を閲覧するための表示領域である。引き出し画面領域71は、全ての手書きノート内の幾つかの手書きノートに対応するノートアイコン80A、80B及び80Cを表示する。ノートアイコン80A、80B及び80Cの各々は、対応する手書きノート内のあるページのサムネイルを表示する。手書きノートアプリケーションプログラム202は、ペン100または指を使用してユーザによって行われる引き出し画面領域71上のあるジェスチャ(例えば、スワイプジェスチャ等)を検出することができる。このジェスチャ(例えば、スワイプジェスチャ等)の検出に応答して、手書きノートアプリケーションプログラム202は、引き出し画面領域71上の画面イメージを左方向または右方向にスクロールする。これにより、引き出し画面領域71に任意の手書きノートそれぞれに対応するノートアイコンを表示することができる。
手書きノートアプリケーションプログラム202は、ペン100または指を使用してユーザによって行われる引き出し画面領域71のノートアイコン上の他のジェスチャ(例えば、タップジェスチャ等)を検出することができる。引き出し画面領域71上のあるノートアイコン上のジェスチャ(例えば、タップジェスチャ等)の検出に応答して、手書きノートアプリケーションプログラム202は、このノートアイコンをデスクトップ画面領域70の中央部に移動する。そして、手書きノートアプリケーションプログラム202は、このノートアイコンに対応する手書きノートを選択し、デスクトップ画面の代わりに図7に示すノートプレビュー画面を表示する。図7のノートプレビュー画面は、選択された手書きノート内の任意のページを閲覧可能な画面である。
更に、手書きノートアプリケーションプログラム202は、ペン100または指を使用してユーザによって行われるデスクトップ画面領域70上のジェスチャ(例えば、タップジェスチャ等)も検出することができる。デスクトップ画面領域70の中央部に位置するノートアイコン上のジェスチャ(例えば、タップジェスチャ等)の検出に応答して、手書きノートアプリケーションプログラム202は、中央部に位置するノートアイコンに対応する手書きノートを選択し、そして、デスクトップ画面の代わりに、図7に示すノートプレビュー画面を表示する。
更に、ホーム画面は、メニューを表示することができる。このメニューは、画面の下部、例えば引き出し画面領域71に表示されるノート一覧ボタン81A、ノート作成ボタン81B、ノート削除ボタン81C、検索ボタン81D及び設定ボタン81Eを備える。ノート一覧ボタン81Aは、手書きノートの一覧を表示するためのボタンである。ノート作成ボタン81Bは、新しい手書きノートを作成(追加)するためのボタンである。ノート削除ボタン81Cは、手書きノートを削除するためのボタンである。検索ボタン81Dは、検索画面(検索ダイアログ)を開くためのボタンである。設定ボタン81Eは、アプリケーションの設定画面を開くためのボタンである。
なお、図示しないが、引き出し画面領域71の下にも、戻るボタン、ホームボタン、リーセントアプリケーションボタンが表示される。
図8は、設定ボタン81Eがペン100または指でタップされた際に開かれる設定画面の一例を示す。
この設定画面は、様々な設定項目を表示する。これら設定項目には、「バックアップと復元」、「入力モード(ペン、またはタッチ入力モード)」、「ライセンス情報」及び「ヘルプ」等が含まれる。
ホーム画面においてノート作成ボタン81Bがペン100または指でタップされるとノート作成画面が表示される。ここで、タイトル欄にノートの名前を手書き入力する。なお、ノートの表紙と用紙とを選択することができる。作成ボタンを押すと、新規なノートが作成され、当該作成されたノートは引き出し画面領域71に置かれる。
図7は、上述のノートプレビュー画面の一例を示す。
ノートプレビュー画面は、選択された手書きノート内の任意のページを閲覧可能な画面である。ここでは、ホーム画面のデスクトップ画面領域70のノートアイコン801に対応する手書きノートが選択された場合を説明する。この場合、手書きノートアプリケーションプログラム202は、この手書きノートに含まれる複数のページ901、902、903、904及び905を、これらページ901、902、903、904及び905それぞれの少なくとも一部分が視認可能で、かつ、これらページ901、902、903、904及び905が重なった形態で表示する。
ノートプレビュー画面は、更に、上述のペンアイコン711、カレンダーアイコン772及びスクラップノートアイコン773を表示する。
ノートプレビュー画面は、更に、メニューを画面下部に表示することができる。このメニューは、ホームボタン82A、ページ一覧ボタン82B、ページ追加ボタン82C、ページ編集ボタン82D、ページ削除ボタン82E、ラベルボタン82F、検索ボタン82G及びプロパティ表示ボタン82Hを備える。ホームボタン82Aは、ノートのプレビューを閉じてホーム画面を表示するためのボタンである。ページ一覧ボタン82Bは、現在選択されている手書きノート内のページの一覧を表示するためのボタンである。ページ追加ボタン82Cは、新しいページを作成(追加)するためのボタンである。編集ボタン82Dは、ページ編集画面を表示するためのボタンである。ページ削除ボタン82Eは、ページを削除するためのボタンである。ラベルボタン82Fは、使用可能なラベルの種類の一覧を表示するためのボタンである。検索ボタン82Gは、検索画面を表示するためのボタンである。プロパティ表示ボタン82Hは、このノートのプロパティを表示するためのボタンである。
手書きノートアプリケーションプログラム202は、ユーザによって行われるノートプレビュー画面上の様々なジェスチャを検出することができる。例えば、あるジェスチャの検出に応答して、手書きノートアプリケーションプログラム202は、一番上に表示されるべきページを任意のページに変更する(ページ送り、ページ戻し)。また、一番上のページ上で行われるあるジェスチャ(例えば、タップジェスチャ)の検出に応答して、またはペンアイコン771上で行われるジェスチャ(例えば、タップジェスチャ)の検出に応答して、あるいは編集ボタン82D上で行われるあるジェスチャ(例えば、タップジェスチャ)の検出に応答して、手書きノートアプリケーションプログラム202は、一番上のページを選択し、そしてノートプレビュー画面の代わりに、図9に示すページ編集画面を表示する。
図9のページ編集画面は、手書きノート内のページ(手書きページ)の新規作成、及び既存のページの閲覧及び編集が可能な画面である。図7のノートプレビュー画面上のページ901が選択された場合には、図9に示すように、ページ編集画面は、ページ901の内容を表示する。
このページ編集画面において、破線で囲まれた矩形の領域500は、手書き可能な手書き入力領域である。手書き入力領域500においては、デジタイザ17Cからの入力イベントは手書きストロークの表示(描画)のために使用され、タップ等のジェスチャを示すイベントとしては使用されない。一方、ページ編集画面における手書き入力領域500以外の領域においては、デジタイザ17Cからの入力イベントはタップ等のジェスチャを示すイベントとしても使用され得る。
タッチパネル17Bからの入力イベントは、手書きストロークの表示(描画)には使用されず、タップ及びスワイプ等のジェスチャを示すイベントとして使用される。
ページ編集画面は、更に、ユーザによって予め登録された3種類のペン501〜503と、範囲選択ペン504、消しゴムペン505とを含むクイックセレクトメニューを手書き入力領域500外の画面上部に表示する。ここでは、黒ペン501、赤ペン502及びマーカー503がユーザによって予め登録されている場合が説明されている。ユーザは、ペン100または指でクイックセレクトメニュー内のあるペン(ボタン)をタップすることにより、使用するペンの種類を切り替えることができる。例えば、黒ペン501がユーザによるペン100または指を使用したタップジェスチャによって選択された状態で、ペン100を用いた手書き入力操作がページ編集画面上で行われると、手書きノートアプリケーションプログラム202は、ペン100の動きに合わせて黒色のストローク(軌跡)をページ編集画面上に表示する。
クイックセレクトメニュー内の上述の3種類のペンは、ペン100のサイドボタン(図示せず)の操作によっても切り替えることができる。クイックセレクトメニュー内の上述の3種類のペンの各々には、よく使うペンの色やペンの太さの組み合わせを設定することができる。
ページ編集画面は、更に、メニューボタン511、ページ戻し(ノートプレビュー画面に戻る)ボタン512及び新規ページ追加ボタン513を、手書き入力領域500外の画面下部に表示する。メニューボタン511は、メニューを表示するためのボタンである。
このメニューは、例えば、このページをゴミ箱に入れる、コピーやカットしたページの一部を貼り付ける、検索画面を開く、エクスポートサブメニューを表示する、インポートサブメニューを表示する、ページをテキストに変換してメールを送る、ペンケースを表示する等のボタンを表示してもよい。エクスポートサブメニューは、例えば、ページ編集画面上に表示されている手書きページを認識して電子文書ファイル、プレゼンテーションファイル、画像ファイル等に変換する機能、あるいはページを画像ファイルに変換して他のアプリケーションと共有する機能をユーザに選択させる。インポートサブメニューは、例えば、メモギャラリーからメモをインポートする機能、あるいはギャラリーから画像をインポートする機能をユーザに選択させる。ペンケースは、クイックセレクトメニュー内の3種類のペンの各々の色(描画される線の色)及び太さ(描画される線の太さ)を変更可能なペン設定画面を呼び出すためのボタンである。
図10は、検索画面(検索ダイアログ)の例を示す。図10では、図7に示すノートプレビュー画面上で検索ボタン82Gが選択され、当該ノートプレビュー画面上に検索画面(検索ダイアログ)が開かれた場合が説明されている。
検索画面は、検索キー入力領域530、筆跡検索ボタン531、テキスト検索ボタン532、デリートボタン533及び検索実行ボタン534を表示する。筆跡検索ボタン531は、筆跡検索を選択するためのボタンである。テキスト検索ボタン532は、テキスト検索を選択するためのボタンである。テキスト検索ボタン532は、テキスト検索を選択するためのボタンである。検索実行ボタン534は、検索処理の実行を要求するためのボタンである。
筆跡検索においては、検索キー入力領域530は、検索キーとすべき文字列、図形及び表等を手書きするための入力領域として使用される。図10においては、検索キー入力領域530に手書き文字列「Determine」が検索キーとして入力されている。ユーザは、手書き文字列に限らず、手書き図形及び手書き表等を検索キー入力領域530にペン100で手書きすることができる。検索キー入力領域530に手書き文字列「Determine」が検索キーとして入力された状態で検索実行ボタン434がユーザによって選択されると、手書き文字列「Determine」を構成するストローク集合(クエリーストローク集合)を用いて、このクエリーストローク集合に対応するストローク集合を含む手書き文書(ノート)を検索するための筆跡検索が実行される。筆跡検索では、ストローク間のマッチングによって、クエリーストローク集合に類似するストローク集合が検索される。クエリーストローク集合とある別のストローク集合との間の類似度の算出においては、DP(Dynamic Programming)マッチングを使用してもよい。
テキスト検索においては、例えばソフトウェアキーボードが画面上に表示される。ユーザは、ソフトウェアキーボードを操作することによって任意のテキスト(文字列)を検索キーとして検索キー入力領域530に入力することができる。検索キー入力領域530にテキストが検索キーとして入力された状態で検索実行ボタン534がユーザによって選択されると、このテキスト(クエリーテキスト)を表すストローク集合を含む手書きノートを検索するためのテキスト検索が実行される。
筆跡検索/テキスト検索は、全ての手書き文書を対象に実行することもできるし、選択された手書き文書のみを対象に実行することもできる。筆跡検索/テキスト検索が実行されると、検索結果画面が表示される。検索結果画面においては、クエリーストローク集合(またはクエリーテキスト)に対応するストローク集合を含む手書き文書(ページ)の一覧が表示される。なお、ヒットワード(クエリーストローク集合またはクエリーテキストに対応するストローク集合)は、強調表示される。
次に、図11を参照して、手書きノートアプリケーションプログラム202の機能構成について説明する。
手書きノートアプリケーションプログラム202は、手書き文書データを扱うことが可能なWYSIWYGアプリケーションである。この手書きノートアプリケーションプログラム202は、例えば、表示処理部301、時系列情報生成部302、編集処理部303、ページ保存処理部304、ページ取得処理部305、特徴量登録処理部306及び作業メモリ401等を備える。表示処理部301は、手書きデータ入力部301A、筆跡描画部301B及び候補表示処理部301Cを含む。
上述したタッチパネル17Bは、「タッチ(接触)」、「移動(スライド)」及び「リリース」等のイベントの発生を検出するように構成されている。「タッチ(接触)」は、画面上のオブジェクト(指)が接触したことを示すイベントである。「移動(スライド)」は、画面上にオブジェクト(指)が接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面からオブジェクト(指)が離されたことを示すイベントである。
上述したデジタイザ17Cも、「タッチ(接触)」、「移動(スライド)」及び「リリース」等のイベントの発生を検出するように構成されている。「タッチ(接触)」は、画面上にオブジェクト(ペン100)が接触したことを示すイベントである。「移動(スライド)」は、画面上にオブジェクト(ペン100)が接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面からオブジェクト(ペン100)が離されたことを示すイベントである。
手書きノートアプリケーションプログラム202は、手書きページデータの作成、閲覧及び編集を行うためのページ編集画面をタッチスクリーンディスプレイ17上に表示する。
表示処理部301及び時系列情報生成部302は、デジタイザ17Cによって発生される「タッチ(接触)」、「移動(スライド)」または「リリース」のイベントを受信し、これによって手書き入力操作を検出する。「タッチ(接触)」イベントには、接触位置の座標が含まれている。「移動(スライド)」イベントには、移動先の接触位置の座標が含まれている。したがって、表示処理部301及び時系列情報生成部302は、デジタイザ17Cから接触位置の動きの軌跡に対応する座標列を受信することができる。
表示処理部301は、デジタイザ17Cを用いて検出される画面上のオブジェクト(ペン100)の動きに応じて手書きストロークを画面上に表示する。この表示処理部301により、画面にペン100が接触している間のペン100の軌跡、つまり、各ストロークの軌跡がページ編集画面上に表示される。
時系列情報生成部302は、デジタイザ17Cから出力される上述の座標列を受信し、この座標列に基づいて、図4で詳述したような構造を有する時系列情報(座標データ系列)を含む手書きデータを生成する。時系列情報生成部302は、生成された手書きデータを作業メモリ401に一時保存する。
編集処理部303は、現在表示中の手書きページを編集するための処理を実行する。すなわち、編集処理部303は、タッチスクリーンディスプレイ17上でユーザによって行われる編集操作及び手書き入力操作に応じて、現在表示中の手書きページに新たなストローク(新たな手書き文字及び新たな手書きマーク等)を追加する処理、表示されている複数のストローク内の1以上のストロークを削除または移動する処理等を含む編集処理を実行する。更に、編集処理部303は、編集処理の結果を表示中の時系列情報に反映するために作業メモリ401内の時系列情報を更新する。
ページ保存処理部306は、作成中の手書きページ上の複数の手書きストロークに対応する複数のストロークデータを含む手書きページデータを記憶媒体402に保存する。記憶媒体402は、例えばタブレットコンピュータ10内のストレージデバイスであってもよいし、サーバコンピュータ2のストレージデバイスであってもよい。
ページ取得処理部307は、記憶媒体402から任意の手書きページデータを取得する。この取得された手書きページデータは、表示処理部301に送られる。表示処理部301は、手書きページデータに含まれる複数のストロークデータに対応する複数のストロークを画面上に表示する。
特徴量登録処理部306は、ページ保存処理部306によって手書き文書(データ)が記憶媒体402に保存される際に、当該手書き文書を構成するストローク集合に対して文字認識処理を実行することによって、当該手書き文書を構成する全てのストロークを文字列(単語)に変換する。特徴量登録処理部306は、変換された文字列をキーワードとし、当該キーワード、手書き文書において当該キーワードに変換された(つまり、文字認識処理によって当該キーワードとして文字認識された)ストローク集合における各ストロークを時系列順に1ストロークずつ積算してなる各ストローク集合に対する文字認識結果及び当該ストローク集合におけるストローク数を対応づけてサジェスト特徴テーブルに登録する。更に、特徴量登録処理部306は、変換された文字列(キーワード)及び当該文字列に変換されたストローク集合に対応するストロークデータを対応づけてサジェストキーワードテーブルに登録する。なお、サジェスト特徴テーブル及びサジェストキーワードテーブルは、例えば記憶媒体402に保存されているものとする。
次に、図11に示す表示処理部301の詳細について説明する。
前述したように、タッチスクリーンディスプレイ17は、画面に対するタッチ操作をタッチパネル17Bまたはデジタイザ17Cで検出する。手書きデータ入力部301Aは、タッチパネル17Bまたはデジタイザ17Cから出力される検出信号を入力するモジュールである。検出信号には、タッチ位置の座標情報(X,Y)が含まれている。このような検出信号を時系列順に入力することによって、手書きデータ入力部301Aは、手書きで記載されるストロークに対応するストロークデータを入力する。手書きデータ入力部301Aによって入力されたストロークデータ(検出信号)は、筆跡描画部301Bに供給される。
筆跡描画部301Bは、手書き入力の軌跡(筆跡)を描画してタッチスクリーンディスプレイ17のLCD17Aに表示するモジュールである。筆跡描画部301Bは、手書きデータ入力部301Aからのストロークデータ(検出信号)に基づき、手書き入力の軌跡(筆跡)に対応する線分を描画する。
手書きデータ入力部301Aによって入力されたストロークデータが上述したページ編集画面(上の手書き入力領域500)において手書きされたストロークに対応するものである場合、当該ストロークデータは、候補表示処理部301Cにも供給される。このようにストロークデータが手書きデータ入力部301Aによって入力される場合、候補表示処理部301Cは、当該手書きデータ入力部301Aから供給されたストロークデータが入力された時点で入力されているストロークデータ(つまり、当該入力されたストロークデータ及び既に入力されているストロークデータ)に基づいて、ユーザが手書き入力しようとする文字列(つまり、ユーザが意図する文字列)の候補をページ編集画面上の候補表示領域(第1の領域)に表示する。具体的には、候補表示処理部301Cは、1以上のストローク(第1ストローク)を用いて定まる1以上のストローク集合を、文字列(手書き入力)の候補として候補表示領域に表示する。この文字列の候補としてページ編集画面上の候補表示領域に表示されるストローク集合は、後述するように上記した記憶媒体402に保存されているサジェスト特徴テーブル及びサジェストキーワードテーブルを参照して特定される。
なお、以下の説明では、ページ編集画面上の候補表示領域に表示されるストローク集合を、便宜的に、単に文字列の候補と称する。
このようにページ編集画面の候補表示領域に文字列の候補が表示された場合、ユーザは、当該文字列の候補を手書き入力領域500に表示(記載)する文字列として選択(指定)することができる。候補表示領域に表示された文字列の候補がユーザによって選択される場合(つまり、当該文字列の候補の入力がユーザにより指定される場合)、筆跡描画部301Bは、当該文字列(の候補)をページ編集画面上の手書き入力領域500に表示する。このとき、筆跡描画部301Bは、上記したように候補表示処理部301Cによって文字列の候補として特定されたストローク集合(つまり、文字列の候補として候補表示領域に表示されたストローク集合)の座標(第1の座標)に基づいて、当該ストローク集合(文字列の候補)を手書き入力領域500に表示する。なお、このストローク集合の座標は、既に入力されているストロークデータ(に含まれる時系列座標)を基準として相対的に定められる。以下の説明においては、文字列の候補(として候補表示領域に表示されたストローク集合)の座標を、便宜的に、相対座標と称する。
ここで、上記したように文字列の候補を手書き入力領域500に表示する場合、手書きで記載されているストロークの画面上の位置(つまり、手書きデータ入力部301Aによって入力されたストロークデータに含まれる時系列座標)によっては、手書き入力領域500にスペース(余白)がないために、上記した相対座標に基づいて当該文字列(の候補)を手書き入力領域500内に表示できない場合がある。この場合、筆跡描画部301Bは、相対座標が変換された座標(以下、変換座標と表記)を用いて、文字列を手書き入力領域500表示する。なお、変換座標は、画面の表示領域(手書き入力領域500)に応じて相対座標の少なくとも一部が変換されて生成されたものである。
なお、図11においては図示されていないが、手書きノートアプリケーションプログラム202は、上記した以外に、上述した筆跡検索及びテキスト検索等を実行するための検索処理部等を備える。
図12は、上記した記憶媒体402に保存されているサジェスト特徴テーブルのデータ構造の一例を示す。図12に示すように、サジェスト特徴テーブルには、キーワード、文字認識結果及び画数が対応づけて保持(登録)されている。キーワードは、上述した文字列の候補に相当する文字列(テキスト)である。文字認識結果は、当該文字認識結果に対応づけられているキーワードとして文字認識されるストローク集合(手書き文字列)の一部のストローク集合に対する文字認識結果を示す。画数は、当該画数に対応づけられている文字認識結果が得られたストローク集合におけるストローク数を示す。
図12に示す例では、サジェスト特徴テーブルには、例えばキーワード「HDD(Hard Disk Drive)」、文字認識結果「HDD(」及び画数「8」が対応づけて保持されている。これによれば、キーワード「HDD(Hard Disk Drive)」として文字認識されるストローク集合がユーザによって手書きされる際に、8ストロークが手書きされた時点で文字認識処理を行った場合の文字認識結果が「HDD(」であることが示されている。
また、サジェスト特徴テーブルには、例えばキーワード「HDD(Hard Disk Drive)」、文字認識結果「HDD(|」及び画数「9」が対応づけて保持されている。これによれば、キーワード「HDD(Hard Disk Drive)」として文字認識されるストローク集合がユーザによって手書きされる際に、9ストロークが手書きされた時点で文字認識処理を行った場合の文字認識結果が「HDD(|」であることが示されている。
このように、サジェスト特徴テーブルには、キーワード「HDD(Hard Disk Drive)」を構成するストローク数(つまり、画数)が1加算される毎の文字認識結果が保持される。すなわち、サジェスト特徴テーブルには、上記したようにキーワードとして文字認識されたストローク集合における各ストロークを時系列順に1ストロークずつ積算してなる各ストローク集合に対する文字認識結果及び当該ストローク集合におけるストローク数が当該キーワードに対応づけて保持されている。
詳細については後述するが、上述したように文字列の候補を表示する際には、文字認識結果及び画数をキーとした検索が行われる。
図13は、上記した記憶媒体402に保存されているサジェストキーワードテーブルのデータ構造の一例を示す。図13に示すように、サジェストキーワードテーブルには、主キーとなるキーワード及びストロークデータが対応づけて保持(登録)されている。キーワードは、上述した文字列の候補に相当する文字列(テキスト)である。ストロークデータは、当該ストロークデータに対応づけられているキーワードとして文字認識されるストローク集合に対応するデータ(当該ストロークのバイナリデータ)である。
図13に示す例では、サジェストキーワードテーブルには、例えばキーワード「HDD(Hard Disk Drive)」及びストロークデータ「(10,10)−(13,8)−…」が対応づけて保持されている。これによれば、キーワード「HDD(Hard Disk Drive)」として文字認識されるストローク集合に対応するストロークデータが「(10,10)−(13,8)−…」であることが示されている。なお、上記したようにストロークデータには、ストロークの軌跡上の複数のサンプリング点それぞれに対応する複数の座標が含まれている。
ここでは、キーワード「HDD(Hard Disk Drive)」についてのみ説明したが、他のキーワードについても同様である。
以下、本実施形態に係るタブレットコンピュータ10の動作について説明する。ここでは、本実施形態に係るタブレットコンピュータ10によって実行される処理のうち、特徴量登録処理、候補表示処理及び選択文字列表示処理について説明する。
まず、図14のフローチャートを参照して、特徴量登録処理の処理手順について説明する。なお、特徴量登録処理は、上記した手書き文書(データ)が記憶媒体402に保存される際に特徴量登録処理部306によって実行される。
特徴量登録処理において、特徴量登録処理部306は、ページ保存処理部305によって手書き文書が記憶媒体402に保存される際に、当該手書き文書を例えば作業メモリ401から取得する(ブロックB1)。なお、手書き文書は、上述したページ編集画面上の手書き入力領域500においてユーザによって手書きで記載されたストローク集合から構成され、当該ストローク集合に対応するストロークデータを含む。
次に、特徴量登録処理部306は、取得された手書き文書(に含まれるストロークデータに対応するストローク集合)に対して文字認識処理を実行する(ブロックB2)。これにより、手書き文書を構成するストローク集合が文字列に変換される。このとき、手書き文書を構成する各ストローク(に対応するストロークデータ)は、文字認識処理が実行されることによって変換された文字列中の当該ストロークが属する文字(当該ストロークが構成する文字)と対応づけられているものとする。
特徴量登録処理部306は、変換された文字列に対して形態素分析(形態素解析)処理を実行する(ブロックB3)。これにより、変換された文字列は、単語単位に分割される。このとき、特徴量登録処理部306は、上記した文字列中の各文字に対応づけられたストロークに基づいて、形態素分析処理によって分割された各単語に属するストローク集合を特定する。
次に、特徴量登録処理部306は、形態素分析処理によって分割された各単語に属するストローク集合に対して積算文字認識処理を実行する(ブロックB4)。この積算文字認識処理は、各ストローク毎に特徴量となる文字認識結果(文字列)を取得する処理である。
ここで、図15を参照して、積算文字認識処理について具体的に説明する。ここでは、便宜的に、単語「apple」に属するストローク集合に対して積算文字認識処理が実行される場合について説明する。なお、図15に示す例では、文字「a」及び「p」はそれぞれ1ストローク(つまり、1画)で記載された場合を想定している。
この場合、ストローク数(画数)が1であるストローク(集合)1001に対して文字認識処理を実行した場合の文字認識結果は「a」となる。
次に、ストローク数(画数)が2であるストローク集合1002に対して文字認識処理を実行した場合の文字認識結果は「ap」となる。
同様に、ストローク数(画数)が3であるストローク集合1003に対して文字認識処理を実行した場合の文字認識結果は「app」となる。
更に、ストローク数(画数)が4であるストローク集合1004に対して文字認識処理を実行した場合の文字認識結果は「appl」となる。
最後に、ストローク数(画数)が5であるストローク集合1005に対して文字認識処理を実行した場合の文字認識結果は「apple」となる。
上記したように単語「apple」に属するストローク集合に対して積算文字認識処理が実行された場合、図15に示す積算文字認識結果1100を得ることができる。この積算文字認識結果1100には、単語、ストローク集合に対応する文字認識結果及び画数(当該ストローク集合におけるストローク数)が含まれる。
なお、上記したブロックB4においては単語に属するストローク集合に対して積算文字認識処理が実行されるものとして説明したが、当該積算文字認識処理は、1つのまとまりとして扱うことが可能な複数の単語を含む文字列に対して実行されても構わない。この1つのまとまりとして扱うことが可能な複数の単語を含む文字列としては、例えば「HDD(Hard Disk Drive)」のような略称の後の括弧内において当該略称の正式名称を記述した文字列等が含まれるものとする。更に、積算文字認識処理は、複数の単語(形態素)からなる複合語に対して実行されても構わない。
再び図14に戻ると、特徴量登録処理部306は、取得された積算文字認識結果1100に基づいて、上記したサジェスト特徴テーブル及びサジェストキーワードテーブル対して各種情報を登録する(ブロックB5)。
具体的には、特徴量登録処理部306は、積算文字認識結果1100に含まれる単語(キーワード)、文字認識結果及び画数を対応づけてサジェスト特徴テーブルに登録する。また、特徴量登録処理部306は、積算文字認識結果に含まれる単語(キーワード)及び当該単語に属するストローク集合に対応するストロークデータをサジェストキーワードテーブルに登録する。
なお、上記したブロックB5において、サジェスト特徴テーブル及びサジェストキーワードテーブルに既に同一の情報が保持されている場合には、当該情報の登録処理は省略される。
上記したように特徴量登録処理によれば、手書き文書が記憶媒体402に保存される際に、後述する候補表示処理において用いられる必要な情報を自動的にサジェスト特徴テーブル及びサジェストキーワードテーブルに登録することができる。
次に、図16のフローチャートを参照して、候補表示処理の処理手順について説明する。なお、候補表示処理は、上記したページ編集画面上の手書き入力領域500において手書きで記載されるストロークに対応するストロークデータが入力される際に候補表示処理部301Cによって実行される。
候補表示処理において、候補表示処理部301Cは、ページ編集画面上の手書き入力領域500においてユーザによって手書きで記載される1ストロークに対応するストロークデータを入力する(ブロックB11)。以下、ブロックB11において入力されたストロークデータを対象ストロークデータと称する。
次に、候補表示処理部301Cは、対象ストロークデータが入力された時点で入力されているストロークデータに対応するストローク集合(つまり、手書き入力領域500に手書きで記載されているストローク集合)に対して文字認識処理(積算文字認識処理)を実行する(ステップB12)。具体的には、対象ストロークデータが手書き文字列のn画目のストロークに対応するストロークデータであるものとすると、候補表示処理部301Cは、1画目〜n画目のストローク集合に対して文字認識処理を実行する。これにより、候補表示処理部301Cは、文字認識結果を取得する。なお、1画目のストロークは、例えば手書き入力領域500に手書きで記載されている他のストロークの位置等に基づいて特定されるものとする。
候補表示処理部301Cは、取得された文字認識結果及び当該文字認識結果が取得されたストローク集合におけるストローク数に基づいて、当該ストローク集合(つまり、1画目〜n画目のストローク集合)に応じたキーワード(つまり、ユーザが手書き入力しようとする文字列の候補)を検索する(ブロックB13)。具体的には、候補表示処理部301Cは、取得された文字認識結果及び当該文字認識結果が取得されたストローク集合におけるストローク数(つまり、画数)に対応づけてサジェスト特徴テーブルに保持されているキーワードを検索する。なお、ブロックB13においては、複数のキーワードが検索されても構わない。
次に、候補表示処理部301Cは、検索されたキーワードを構成するストローク集合に対応するストロークデータを取得する(ブロックB14)。具体的には、候補表示処理部301Cは、検索されたキーワードに対応づけてサジェストキーワードテーブルに保持されているストロークデータを取得する。
候補表示処理部301Cは、取得されたストロークデータ(に対応するストローク集合)をページ編集画面上の候補表示領域に描画することによって、文字列の候補を表示する。
ここで、図17を参照して、上述した候補表示処理によって文字列の候補が表示される候補表示領域について具体的に説明する。ここでは、前述した図9と同一の部分には同一参照符号を付してその詳しい説明を省略する。
図17に示すように、ユーザがページ編集画面上の手書き入力領域500において文字列「HDD(」を手書きで記載した場合を想定する。この場合、ページ編集画面上には、候補表示領域500aが表示される。また、この候補表示領域500aには、ユーザが最後に手書きで記載したストローク「(」に対応するストロークデータが入力された時点で入力されているストロークデータに対応するストローク集合(つまり、手書き文字列「HDD(」を構成するストローク集合)に応じたストローク集合(つまり、手書き文字列「HDD(Hard Disk Drive)」を構成するストローク集合)が文字列の候補として表示される。
なお、この文字列の候補として候補表示領域500aに表示されるストローク集合(手書き文字列「HDD(Hard Disk Drive)」)は、上述した図16に示すステップS14において取得されたストロークデータに対応するストローク集合である。
ユーザは、図17に示すページ編集画面上の候補表示領域500aにおいて表示された文字列の候補を選択(指定)することができる。この場合には、図18に示すように、ユーザによって選択された文字列(の候補)が手書き入力領域500に表示される。
なお、図17及び図18においては手書き入力領域500においてユーザによって手書きで記載される文字列の言語が英語である場合の例について説明したが、図19及び図20は当該言語が日本語である場合の例である。
また、図17においては候補表示領域500aには1つの文字列の候補(ストローク集合)のみが表示されているが、上述したブロックB13において複数のキーワードが検索された場合、候補表示領域500aには図19に示すように複数の文字列の候補が表示される。この場合における複数の文字列の候補は、例えば記憶媒体402に保存されている手書き文書において当該文字列の候補(ストローク集合)が出現する頻度(以下、出現頻度と表記)に基づく優先度の順に候補表示領域500aに表示されるような構成であっても構わない。また、出現頻度に基づく優先度に加えて、過去に文字列の候補が候補表示領域500aに表示された際に当該文字列の候補が手書き入力領域500に表示(記載)する文字列としてユーザによって選択された回数(以下、選択回数と表記)に基づく優先度が更に考慮されるようにしてもよい。また、出現頻度に基づく優先度に代えて、選択回数に基づく優先度のみが利用されても構わない。
なお、出現頻度及び選択回数の情報は、必要に応じて、文字列の候補(キーワード)毎に上述したサジェストキーワードテーブル等に保持されていればよい。
次に、図21のフローチャートを参照して、選択文字列表示処理の処理手順について説明する。なお、選択文字列表示処理は、上記した候補表示処理において表示された文字列の候補がユーザによって選択された(つまり、当該文字列の候補の入力がユーザにより指定された)際に筆跡描画部301Bによって実行される。以下の説明では、候補表示処理において表示され、ユーザによって選択された文字列の候補を、選択文字列と称する。
選択文字列表示処理において、筆跡描画部301Bは、選択文字列(手書き文字列)を構成するストローク集合に対応するストロークデータを取得する(ブロックB21)。ここで取得されるストロークデータには、各ストロークの軌跡上の複数のサンプリング点それぞれに対応する時系列座標(複数の座標)が含まれている。なお、このストロークデータは、例えば上述したサジェストキーワードテーブルから取得される。
次に、筆跡描画部301Bは、取得されたストロークデータに基づいて、選択文字列が文字列の候補として候補表示領域500aに表示された際に既に入力されているストロークデータ(つまり、手書き入力領域500に既に記載されているストローク集合)を基準として相対的に定められる当該選択文字列の座標(相対座標)を決定する(ブロックB22)。
具体的には、例えば既に入力されているストロークデータに対応するストローク集合(手書き文字列)の外接矩形(座標)を算出する。ここで、ユーザが横書きで手書き文字列(ストローク集合)を記載している場合には、当該算出された外接矩形の左端(例えば、外接矩形の左上の頂点)を基準として選択文字列の相対座標が決定される。また、既に入力されているストロークデータに対応するストローク集合のうちの1画目のストロークの始点を基準として選択文字列の相対座標が決定されても構わない。
このように決定された相対座標を用いることにより、ユーザによって手書き入力領域500に既に記載されているストローク集合に対して適切な位置に選択文字列を表示することができる。
次に、筆跡描画部301Bは、決定された相対座標に基づいて選択文字列(を構成するストローク集合)を手書き入力領域500に表示可能であるか否かを判定する(ブロックB23)。この場合、筆跡描画部301Bは、手書き入力領域500内に相対座標に基づいて選択文字列を表示可能なスペースが存在するか否かを判定する。なお、選択文字列を表示可能なスペースとは、手書き入力領域500内の領域であって、他のストロークが表示されていない領域である。
ここで、図22を参照して、相対座標に基づいて選択文字列を手書き入力領域500に表示可能でない場合の一例について説明する。
図22に示すように、ユーザがページ編集画面上の手書き入力領域500の中央より右側から手書き文字列「HDD(」を記載した場合を想定する。この場合、ページ編集画面上には、候補表示領域500aが表示される。また、この候補表示領域500aには、手書き文字列「HDD(Hard Disk Drive)」(を構成するストローク集合)が文字列の候補として表示される。
この場合において、候補表示領域500aに表示された文字列の候補(手書き文字列「HDD(Hard Disk Drive)」)がユーザによって選択された場合には、手書き入力領域500aに既に記載されている手書き文字列「HDD(」に代えて当該選択文字列(手書き文字列「HDD(Hard Disk Drive)」)が手書き入力領域500aに表示(挿入)される。
ここで、図22に示す例ではユーザは横書きで手書き文字列を記載しているため、選択文字列は、手書き入力領域500に既に記載されている手書き文字列「HDD(」の右側に表示されることとなる。しかしながら、ユーザによって手書き入力領域500に既に記載されている手書き文字列「HDD(」の右側には、選択文字列(手書き文字列「HDD(Hard Disk Drive)」を表示するスペースはない。換言すれば、相対座標に基づいて選択文字列を表示するものとすると、当該選択文字列の表示範囲の一部が手書き入力領域550内に収まらない。
したがって、図22に示すような場合、ブロックB23においては、相対座標に基づいて選択文字列を手書き入力領域500に表示可能でないと判定される。
換言すれば、ブロックB23においては、相対座標に基づいて手書き入力領域500に選択文字列を表示した場合に、当該選択文字列を同一の行(つまり、手書き入力領域500に既に記載されている手書き文字列「HDD(」を含む行)内に表示できない場合には、相対座標に基づいて選択文字列を手書き入力領域500に表示できないと判定される。
一方、前述した図17(及び図18)に示すような場合には選択文字列を表示するスペースがあるため、ブロックB23においては、相対座標に基づいて選択文字列を手書き入力領域500に表示可能であると判定される。
また、上述したように選択文字列を表示可能なスペースとは他のストロークが表示されていない領域である。このため、図23に示すように、他のストロークとして例えば図形1200等がユーザによって手書き入力領域500に既に記載されている手書き文字列「HDD(」の右側に表示(記載)されている場合、ブロックB23においては、相対座標に基づいて選択文字列を手書き入力領域500に表示可能でないと判定される。
再び図21に戻ると、ブロックB23において相対座標に基づいて選択文字列を手書き入力領域500に表示可能でないと判定された場合、筆跡描画部301Bは、当該選択文字列の相対座標(の少なくとも一部を)を変換する(ブロックB24)。このとき、筆跡描画部301Bは、選択文字列が手書き入力領域500内に収まるように当該選択文字列の相対座標を変換する。具体的には、選択文字列の相対座標(の少なくとも一部)は、相対座標に対応する領域に含まれるストロークや、画面上の手書き入力領域500と相対座標に対応する領域との位置関係に応じて変換される。
筆跡描画部301Bは、変換された座標に基づいて選択文字列を手書き入力領域500に表示する(ブロックB25)。
一方、ブロックB23において相対座標に基づいて選択文字列を手書き入力領域500に表示可能であると判定された場合には、ブロックB24の処理は実行されず、ブロックB25の処理が実行される。すなわち、選択文字列が相対座標に基づいて表示可能な場合には、当該相対座標を変換することなく、当該相対座標に基づいて選択文字列が手書き入力領域500に表示される。
ここで、図21に示すブロックB24及びB25の処理が実行されることによる選択文字列の第1〜第3の表示例について具体的に説明する。ここでは、上述した図22に示すように手書き入力領域500に手書き文字列「XXXXXXX」及び手書き文字列「HDD(」が同一の行で記載され、候補表示領域500aに手書き文字列「HDD(Hard Disk Drive)」が文字列の候補として表示されている状態で、当該文字列の候補がユーザに選択されたものとして説明する。
まず、第1の表示例では、選択文字列(を構成するストローク集合)が手書き入力領域500内に収まるように縮小表示されるものとする。この場合、手書き入力領域500に既に記載されている手書き文字列「XXXXXXX」を構成するストローク集合に対応するストロークデータに含まれる座標及び選択文字列の相対座標が、当該手書き文字列及び選択文字列における文字幅及び文字間隔が縮小されるように変換される。
これによれば、第1の表示例においては、図24に示すように、手書き文字列「XXXXXXX」及び選択文字列(手書き文字列「HDD(Hard Disk Drive)」)を構成するストローク集合が行方向に縮小されて(つまり、当該行方向に詰めて)表示される。
なお、縮小率は、手書き文字列「XXXXXX」及び選択文字列を1行で表示可能なように、当該手書き文字列「XXXXXXX」及び選択文字列が表示されるスペースの幅(他のストロークが記載されていないスペースの幅)に基づいて設定される。なお、同一の行に含まれる文字列については、当該文字列を構成する各ストロークに対応するストロークデータに含まれる座標から認識される。
なお、ここでは図22及び図24を用いて手書き入力領域500においてユーザによって手書きで記載される文字列の言語が英語である場合の例について説明したが、図25及び図26は、当該言語が日本語である場合における第1の表示例を示している。
次に、第2の表示例では、選択文字列が画面上の別個の領域に分割して表示されるものとする。具体的には、第2の表示例では、選択文字列の一部が改行されて表示される。この場合、選択文字列のうち相対座標に基づいて手書き入力領域500に表示可能な部分(以下、非改行部分と表記)については、手書き入力領域500に既に記載されている手書き文字列「XXXXXXX」と同一の行として当該相対座標に基づいて手書き入力領域500に表示される。一方、選択文字列のうち相対座標に基づいて手書き入力領域500に表示可能でない部分(以下、改行部分と表記)については、手書き入力領域500に既に記載されている手書き文字列「XXXXXXX」とは異なる行に改行して表示されるように、当該改行部分の相対座標が変換される。
これによれば、第2の表示例においては、図27に示すように、選択文字列(手書き文字列「HDD(Hard Disk Drive)」)のうち、「HDD(Hard D」の部分については手書き文字列「XXXXXXX」と同一の行に表示され、残りの「isk Drive)」の部分については改行されて表示される。
ここで、図28を参照して、第2の表示例において改行部分を表示する位置について具体的に説明する。
まず、筆跡描画部301Bは、手書き入力領域500に既に記載されている手書き文字列「XXXXXXX」及び「HDD(」の外接矩形(座標)1300を算出する。ここで算出される外接矩形1300は、手書き入力領域500に既に記載されている手書き文字列及び非改行部分を含む行を表す。
次に、筆跡描画部301Bは、図28に示すように、算出された外接矩形1300の高さyをa倍した分だけ当該外接矩形1300の上辺から下の位置であって、かつ、当該外接矩形1300の左辺の延長線上にある位置1400を特定する。なお、aは、1より大きい値であり、例えば1.2〜1.5程度であるものとする。
筆跡描画部301Bは、改行部分の相対座標(前述した図21に示すブロックB22において決定された相対座標)を、特定された位置1400を基準として相対的に定められる座標に変換する。
このように変換された座標に基づいて改行部分が手書き入力領域500に表示されることによって、当該改行部分は、既に記載されている手書き文字列及び非改行部分を含む行に対して適切な行間隔を保持し、かつ、当該行の先頭が一致する位置に表示されることができる。
なお、ここでは外接矩形1300の高さyをa倍した分だけ当該外接矩形1300の上辺から下の位置を基準とするものとして説明したが、例えば手書き入力領域500に既に複数行の文字列が記載されている場合には、当該行間隔に合わせるように改行部分の表示位置が決定されるようにしても構わない。
なお、ここでは図27を用いて手書き入力領域500においてユーザによって手書きで記載される文字列の言語が英語である場合の例について説明したが、図29は、当該言語が日本語である場合における第2の表示例を示している。
次に、第3の表示例では第2の表示例と同様に選択文字列の一部が改行されて表示されるが、当該第3の表示例は、改行が選択文字列に含まれる単語の区切れに基づいて行われる点が第2の表示例とは異なる。換言すれば、第3の表示例では、選択文字列に含まれる単語(第1単語)に対応する選択文字列の一部と当該選択文字列に含まれる別の単語(第2単語)に対応する選択文字列の一部とが、画面上の別個の領域に分割して表示される。この場合、選択文字列のうち相対座標に基づいて手書き入力領域500に表示可能な部分(非改行部分)については、手書き入力領域500に既に記載されている手書き文字列「XXXXXXX」と同一の行として当該相対座標に基づいて手書き入力領域500に表示される。一方、選択文字列のうち相対座標に基づいて手書き入力領域500に表示可能でない部分(改行部分)については、手書き入力領域500に既に記載されている手書き文字列「XXXXXXX」とは異なる行に改行して表示されるように、当該改行部分の相対座標が変換される。
なお、この第3の表示例では、選択文字列は、当該選択文字列に含まれる単語の区切れで非改行部分と改行部分とに分割される。選択文字列を構成する各ストロークが属する単語については、前述した特徴量登録処理部306の処理等によって把握することができる。また、選択文字列の言語が英語である場合には、当該選択文字列中の単語間にはスペースが存在するため、当該スペースによって単語の区切れを判別するようにしてもよい。
これによれば、第3の表示例においては、図30に示すように、選択文字列(手書き文字列「HDD(Hard Disk Drive)」)のうち、「HDD(Hard」の部分については手書き文字列「XXXXXXX」と同一の行に表示され、残りの「Disk Drive)」の部分については改行されて表示される。このように第3の表示例では、選択文字列は単語と単語の間で改行されて表示される。
なお、改行部分を表示する位置については、上記した第2の表示例において説明した通りであるため、その詳しい説明を省略する。
また、ここでは図30を用いて手書き入力領域500においてユーザによって手書きで記載される文字列の言語が英語である場合の例について説明したが、図31は、当該言語が日本語である場合における第3の表示例を示している。
なお、上記した第1〜第3の表示例は一例であるため、手書き入力領域500に収まるような態様であれば選択文字列は他の態様で表示されても構わない。また、第1〜第3の表示例ではユーザが横書きで手書き文字列を記載する場合について説明したが、ユーザが縦書きで手書き文字列を記載する場合であっても同様に、手書き文字列及び選択文字列を縮小して表示する、または当該選択文字列の一部を改行して別の位置から表示することが可能である。
また、本実施形態において、選択文字列は手書き入力領域500内であって他のストロークが表示されていない領域に表示される。このため、例えば図32に示すように手書き入力領域500の左側の領域に他のストロークとして図形1500等がユーザによって記載されている場合において候補表示領域500aに表示されている文字列の候補(手書き文字列「HDD(Hard Disk Drive)」)がユーザによって選択された場合には、図33に示すように当該選択文字列の一部(ここでは、「Hard Disk Drive」)が改行されて表示される。
なお、図33においては図形1500の下の領域(スペース)が空いているため、選択文字列の一部が手書き入力領域500の左端から表示されているが、例えば既に記載されている手書き文字列と先頭が一致する位置に改行されても構わない。
また、前述した図23に示す場合において候補表示領域500aに表示されている文字列の候補がユーザによって選択された場合には、図34に示すように選択文字列が改行されて表示されればよい。
更に、上記した第2及び第3の表示例においては、手書き入力領域500のスペースによって選択文字列が複数回改行されて表示されても構わない。
なお、図35及び図36は、手書き入力領域500においてユーザによって手書きで記載される文字列の言語が日本語である場合における上述した図32及び図33に対応する表示例を示している。
上記したように本実施形態においては、手書きで記載されるストロークに対応するストロークデータを入力し、当該ストロークデータが入力される場合、当該ストロークデータが入力された時点で入力されているストロークデータに対応する第1のストローク集合(例えば、手書き文字列「HDD(」)に応じた第2のストローク集合(例えば、手書き文字列「HDD(Hard Disk Drive)」)を文字列の候補として画面上の第1の領域(候補表示領域500a)に表示し、当該第2のストローク集合に対して既に入力されているストロークデータを基準として相対的に定められる第1の座標(相対座標)に基づいて第2のストローク集合を画面上の第2の領域(手書き入力領域500)に表示する。これにより、本実施形態においては、ユーザは手書き文書の作成の際に文字列の全てを手書きで記載する必要がなく、ユーザの手間を削減することができるため、ユーザによる手書き文書の作成を容易にすることが可能となる。
また、本実施形態においては、上記した第1の座標(相対座標)に基づいて第2のストローク集合を第2の領域に表示することができない場合、当該第1の座標の少なくとも一部を第2の座標に変換して第2のストローク集合を表示する。なお、第2のストローク集合が表示される領域は、他のストロークが表示されていない領域である。
具体的には、本実施形態によれば、第2の領域の残りの表示スペースと相対座標に基づく第2のストローク集合の表示範囲を鑑み、当該第2のストローク集合を同一の行内に全て表示することができない(つまり、第2のストローク集合を第2の領域に表示できない)を場合は、第2の領域内に収まるように第2のストローク集合が縮小表示される。これによれば、第2のストローク集合を詰めて表示することができるため、同一の行内に第2のストローク集合によって構成される文字列の全てを表示することが可能となる。
また、本実施形態によれば、第2のストローク集合によって構成される文字列の一部が改行して表示されてもよい。これにより、上記した第2のストローク集合を縮小表示した場合における文字列の視認性の低下等を回避することが可能となる。
更に、第2のストローク集合によって構成される文字列の一部が改行される場合には、当該第2のストローク集合によって構成される文字列に含まれる単語間の区切れで当該文字列を改行する。これによれば、第2のストローク集合によって構成される文字列に含まれる単語が分断されてしまうことを回避することができるため、よりユーザの視認性を向上させることが可能となる。
すなわち、本実施形態においては、相対座標に基づいて第2のストローク集合を表示する際に、当該表示可能なスペースが第2の領域内に存在しない場合であっても、第2のストローク集合(の座標)を適宜変換して適切に表示することが可能となる。
なお、本実施形態の処理はコンピュータプログラムによって実現することができるため、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同お湯の効果を容易に実現することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。