以下、実施の形態について図面を参照して説明する。
図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、…、SD7は、これらのストロークが手書きされた順に時系列に並べられている。
時系列情報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)を示す。SD1nは、「∧」形状のストロークの終点の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は、表示信号に基づいて画面イメージを表示する。LCD17A、タッチパネル17B及びデジタイザ17Cは互いに重ね合わされている。タッチパネル17Bは、LCD17Aの画面上で入力を行うための静電容量式のポインティングデバイスである。指が接触される画面上の接触位置及び当該接触位置の動き等は、タッチパネル17Bによって検出される。デジタイザ17Cは、LCD17Aの画面上で入力を行うための電磁誘導式のポインティングデバイスである。ペン(デジタイザペン)100が接触される画面上の接触位置及び当該接触位置の動き等は、デジタイザ17Cによって検出される。
無線通信デバイス107は、無線LANまたは3G移動通信等の無線通信を実行するように構成されたデバイスである。EC108は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。EC108は、ユーザによるパワーボタンの操作に応じて本タブレットコンピュータ10を電源オンまたは電源オフする機能を有している。
図6は、タッチスクリーンディスプレイ17に表示される画面の構成要素を示す。
画面は、表示領域(コンテンツ領域とも云う)51と、表示領域51の下のバー(ナビゲーションバーとも云う)52とを備える。表示領域51はコンテンツを表示するための領域である。アクティブ状態のアプリケーションプログラムのコンテンツは表示領域51上に表示される。図6では、ランチャープログラムがアクティブ状態である場合が想定されている。この場合、複数のアプリケーションプログラムに対応する複数のアイコン51Aがランチャープログラムによって表示領域51上に表示される。
なお、あるアプリケーションプログラムがアクティブであるとは、このアプリケーションプログラムがフォアグラウンドに移行していること、換言すればこのアプリケーションプログラムが起動されており且つフォーカスされていることを意味する。
バー52はOS201の1以上のソフトウェアボタン(ソフトウェアキーとも云う)を表示するための領域である。各ソフトウェアボタンには予め決められた機能が割り当てられている。あるソフトウェアボタンが指またはペン100によってタップされると、このソフトウェアボタンに割り当てられた機能がOS201によって実行される。例えば、Android(登録商標)環境においては、図6に示されているように、戻るボタン52A、ホームボタン52B、リーセントアプリケーションボタン52Cがバー52上に表示される。これらソフトウェアボタンはバー52上のデフォルトの表示場所に表示される。
次に、手書きノートアプリケーションプログラム202によってユーザに提示される幾つかの代表的な画面の例を説明する。
図7は、手書きノートアプリケーションプログラム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は、このノートアイコンに対応する手書きノートを選択し、そして、デスクトップ画面の代わりに、図8に示すノートプレビュー画面を表示する。図8のノートプレビュー画面は、選択された手書きノート内の任意のページを閲覧可能な画面である。
さらに、手書きノートアプリケーションプログラム202は、ペン100または指を使用してユーザによって行われるデスクトップ画面領域70上のジェスチャ(例えばタップジェスチャ等)も検出することができる。デスクトップ画面領域70の中央部に位置するノートアイコン上のジェスチャ(例えばタップジェスチャ等)の検出に応答して、手書きノートアプリケーションプログラム202は、中央部に位置するノートアイコンに対応する手書きノートを選択し、そして、デスクトップ画面の代わりに、図8に示すノートプレビュー画面を表示する。
さらに、デスクトップ画面はメニューを表示することができる。このメニューは、リストノートボタン81A、ノート追加ボタン81B、ノート削除ボタン81C、検索ボタン81D、設定ボタン81Eを備える。リストノートボタン81Aは手書きノートの一覧を表示するためのボタンである。ノート追加ボタン81Bは、新しい手書きノートを作成(追加)するためのボタンである。ノート削除ボタン81Cは手書きノートを削除するためのボタンである。検索ボタン81Dは検索画面(検索ダイアログ)を開くためのボタンである。設定ボタン81Eは設定画面を開くためのボタンである。
また、バー52には、戻るボタン52A、ホームボタン52B、リーセントアプリケーションボタン52Cが表示される。
図8は上述のノートプレビュー画面を示す。
ノートプレビュー画面は、選択された手書きノート内の任意のページを閲覧可能な画面である。ここでは、ノートアイコン801に対応する手書きノートが選択された場合を想定する。この場合、手書きノートアプリケーションプログラム202は、この手書きノートに含まれる複数のページ901,902,903,904,905を、これらページ901,902,903,904,905それぞれの少なくとも一部分が視認可能で且つこれらページ901,902,903,904,905が重なった形態で表示する。
ノートプレビュー画面は、さらに、上述のペンアイコン771、カレンダーアイコン772、スクラップノートアイコン773、タグアイコン774を表示する。
ノートプレビュー画面は、さらに、メニューを表示することができる。このメニューは、デスクトップボタン82A、リストページボタン82B、ページ追加ボタン82C、編集ボタン82D、ページ削除ボタン82E、ラベルボタン82F、および検索ボタン82Gを備える。デスクトップボタン82Aは、デスクトップ画面を表示するためのボタンである。リストページボタン82Bは、現在選択されている手書きノート内のページの一覧を表示するためのボタンである。ページ追加ボタン82Cは、新しいページを作成(追加)するためのボタンである。編集ボタン82Dはページ編集画面を表示するためのボタンである。ページ削除ボタン82Eは、ページを削除するためのボタンである。ラベルボタン82Fは、使用可能なラベルの種類の一覧を表示するためのボタンである。検索ボタン82Gは検索画面を表示するためのボタンである。
また、バー52には、戻るボタン52A、ホームボタン52B、リーセントアプリケーションボタン52Cが表示される。
手書きノートアプリケーションプログラム202はユーザによって行われるノートプレビュー画面上の様々なジェスチャを検出することができる。例えば、あるジェスチャの検出に応答して、手書きノートアプリケーションプログラム202は、一番上に表示されるべきページを任意のページに変更する(ページ送り、ページ戻し)。また、一番上のページ上で行われるあるジェスチャ(例えばタップジェスチャ)の検出に応答して、またはペンアイコン771上で行われるあるジェスチャ(例えばタップジェスチャ)の検出に応答して、あるいは編集ボタン82D上で行われるあるジェスチャ(例えばタップジェスチャ)の検出に応答して、手書きノートアプリケーションプログラム202は、一番上のページを選択し、そしてノートプレビュー画面の代わりに、図9に示すページ編集画面を表示する。
図9のページ編集画面は、ページ(手書きページ)の新規作成、および既存のページの閲覧および編集が可能な画面である。図8のノートプレビュー画面上のページ901が選択された場合には、図9に示すように、ページ編集画面は、ページ901の内容を表示する。
このページ編集画面において、破線で囲まれた矩形の領域500は手書き入力可能な手書き入力エリアである。手書き入力エリア500においては、デジタイザ17Cからの入力イベントは手書きストロークの表示(描画)のために使用され、タップ等のジェスチャを示すイベントとしては使用されない。一方、ページ編集画面において、手書き入力エリア500以外の領域においては、デジタイザ17Cからの入力イベントはタップ等のジェスチャを示すイベントとしても使用され得る。
タッチパネル17Bからの入力イベントは、手書きストロークの表示(描画)には使用されず、タップ、スワイプ等のジェスチャを示すイベントとして使用される。
ページ編集画面は、さらに、ユーザによって予め登録された3種類のペン501〜503と、範囲選択ペン504、消しゴムペン505とを含むクイックセレクトメニューを表示する。ここでは、黒ペン501、赤ペン502、マーカー503がユーザによって予め登録されている場合が想定されている。ユーザは、ペン100または指でクイックセレクトメニュー内のあるペン(ボタン)をタップすることにより、使用するペンの種類を切り替えることが出来る。例えば、黒ペン501がユーザによるペン100または指を使用したタップジェスチャによって選択された状態で、ペン100を用いた手書き入力操作がページ編集画面上で行われると、手書きノートアプリケーションプログラム202は、ペン100の動きに合わせて黒色のストローク(軌跡)をページ編集画面上に表示する。
クイックセレクトメニュー内の上述の3種類のペンは、ペン100のサイドボタンの操作によっても切り替えることが出来る。クイックセレクトメニュー内の上述の3種類のペンの各々には、よく使うペンの色やペンの太さ(幅)等の組み合わせを設定することができる。
ページ編集画面は、さらに、メニューボタン511、ページ戻しボタン512、ページ送りボタン513を表示する。メニューボタン511はメニューを表示するためのボタンである。
図10は、メニューボタン511の操作によってページ編集画面上にメニューとして表示されるソフトウェアボタン群を示す図である。
メニューボタン511が操作されると、図10に示すように、ページ編集画面上に、ノートプレビューボタン83A、ページ追加ボタン83B、検索ボタン83C、エクスポートボタン83D、インポートボタン83E、メールボタン83F、ペンケースボタン83Gがメニューとして表示される。
ノートプレビューボタン83Aは、ノートプレビュー画面に戻るためのボタンである。ページ追加ボタン83Bは、新規ページを追加するためのボタンである。検索ボタン83Cは、検索画面を開くためのボタンである。エクスポートボタン83Dは、エクスポートのためのサブメニューを表示するためのボタンである。インポートボタン83Eは、インポートのためのサブメニューを表示するためのボタンである。メールボタン83Fは、ページ編集画面上に表示されている手書きページをテキストに変換して電子メールによって送信する処理を起動するためのボタンである。ペンケースボタン83Gは、クイックセレクトメニュー内の3種類のペンの各々の色(描画される線の色)や太さ[幅](描画される線の太さ[幅])等を変更可能なペン設定画面を呼び出すためのボタンである。
次に、図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は、生成された手書きデータを作業メモリに一時保存する。
編集処理部303は、現在表示中の手書きページを編集するための処理を実行する。すなわち、編集処理部303は、タッチスクリーンディスプレイ17上でユーザによって行われる編集操作及び手書き入力操作に応じて、現在表示中の手書きページに新たなストローク(新たな手書き文字及び新たな手書きマーク等)を追加する処理、表示されている複数のストローク内の1以上のストロークを削除または移動する処理等を含む編集処理を実行する。さらに、編集処理部303は、編集処理の結果を表示中の時系列情報に反映するために作業メモリ401内の時系列情報を更新する。
ページ保存処理部304は、作成中の手書きページ上の複数の手書きストロークに対応する複数のストロークデータを含む手書きページデータを記憶媒体402に保存する。記憶媒体402は、例えばタブレットコンピュータ10内のストレージデバイスであってもよいし、サーバコンピュータ2のストレージデバイスであってもよい。
ページ取得処理部305は、記憶媒体402から任意の手書きページデータを取得する。この取得された手書きページデータは、表示処理部301に送られる。表示処理部301は、手書きページデータに含まれる複数のストロークデータに対応する複数のストロークを画面上に表示する。
特徴量登録処理部306は、ページ保存処理部304によって手書き文書(データ)が記憶媒体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は、手書きで記載された1以上のストローク(つまり、手書きデータ入力部301Aから供給されたストロークデータが入力された時点で入力されているストロークデータ)に基づいて特定される複数のストローク集合を、ユーザによる手書き入力の候補として、ページ編集画面上の候補提示領域に表示する。この手書き入力の候補として表示される複数のストローク集合は、例えば手書き文字列を表し、手書きで記載された1以上のストロークの形状に対応するストローク集合を含む。なお、手書き入力の候補として表示されるストローク集合は、後述するように記憶媒体402に保存されているサジェスト特徴テーブル及びサジェストキーワードテーブルを参照して特定される。
以下の説明では、ページ編集画面上の候補提示領域に手書き入力の候補として表示されるストローク集合を、単に手書き入力候補と称する。
上記したようにページ編集画面の候補提示領域に手書き入力候補が表示された場合、ユーザは、当該手書き入力候補を手書き入力エリア500に表示(記載)する文字列等として選択(指定)することができる。候補提示領域に表示された手書き入力候補がユーザによって選択される場合、筆跡描画部301Bは、当該手書き入力候補をページ編集画面上の手書き入力エリア500に表示する。このとき、筆跡描画部301Bは、上記したように候補提示領域に表示された手書き入力候補(ストローク集合)の座標に基づいて、当該手書き入力候補を手書き入力エリア500に表示する。なお、このストローク集合の座標は、既に入力されているストロークデータに含まれる時系列座標(つまり、手書き入力エリア500に既に手書きで記載されているストローク)を基準として相対的に定められる。
なお、図11においては図示されていないが、手書きノートアプリケーションプログラム202は、上記した以外に、上記した筆跡検索及びテキスト検索等を実行するための検索処理部等を備える。
図12は、上記した記憶媒体402に保存されているサジェスト特徴テーブルのデータの構造の一例を示す。図12に示すように、サジェスト特徴テーブルには、キーワード、文字認識結果及びストローク数が対応付けて保持(登録)されている。キーワードは、上記した手書き入力候補に相当する文字列(単語)である。文字認識結果は、当該文字認識結果に対応付けられているキーワードとして文字認識されるストローク集合の一部のストローク集合に対する文字認識結果を示す。ストローク数は、当該ストローク数に対応付けられている文字認識結果が得られたストローク集合におけるストロークの数(つまり、画数)を示す。
図12に示す例では、サジェスト特徴テーブルには、例えばキーワード「application」、文字認識結果「a」及びストローク数「1」が対応付けて保持されている。これによれば、キーワード「application」として文字認識されるストローク集合がユーザによって手書きされる際に、1ストロークが手書きされた時点で文字認識処理を行った場合の文字認識結果が「a」であることが示されている。
また、サジェスト特徴テーブルには、例えばキーワード「application」、文字認識結果「p」及びストローク数「2」が対応付けて保持されている。これによれば、キーワード「application」として文字認識されるストローク集合がユーザによって手書きされる際に、2ストロークが手書きされた時点で文字認識処理を行った場合の文字認識結果が「p」であることが示されている。
なお、図12に示す例では、文字「a」及び「p」は1ストロークで手書きされた場合を想定している。
このように、サジェスト特徴テーブルには、例えばキーワード「application」を構成するストローク数(つまり、画数)が1加算される毎の文字認識結果が保持される。すなわち、サジェスト特徴テーブルには、上記したようにキーワードとして文字認識されたストローク集合における各ストロークを時系列順に1ストロークずつ積算してなる各ストローク集合に対する文字認識結果及び当該ストローク集合におけるストローク数が当該キーワードに対応付けて保持されている。
詳細については後述するが、前述したように手書き入力候補を表示する際には、文字認識結果及びストローク数(つまり、画数)をキーとした検索が行われる。
ここではキーワード「application」について説明したが、サジェスト特徴テーブルには、他のキーワードについても同様に文字認識結果及びストローク数が対応付けて保持されている。
図13は、上記した記憶媒体402に保存されているサジェストキーワードテーブルのデータ構造の一例を示す。図13に示すように、サジェストキーワードテーブルには、主キーとなるキーワード及びストロークデータが対応付けて保持(登録)されている。キーワードは、上記した手書き入力候補に相当する文字列(単語)である。ストロークデータは、当該ストロークデータに対応付けられているキーワードとして文字認識されるストローク集合に対応するデータ(当該ストロークのバイナリデータ)である。
図13に示す例では、サジェストキーワードテーブルには、例えばキーワード「app」及びストロークデータ「(10,10)−(13,8)−…」が対応付けて保持されている。これによれば、キーワード「app」として文字認識されるストローク集合に対応するストロークデータが「(10,10)−(13,8)−…」であることが示されている。なお、上記したようにストロークデータには、ストロークの軌跡上のサンプリング点それぞれに対応する複数の座標が含まれている。
ここではキーワード「app」について説明したが、サジェストキーワードテーブルには、他のキーワードについても同様にストロークデータが対応付けて保持されている。
以下、本実施形態に係るタブレットコンピュータ10の動作について説明する。ここでは、本実施形態に係るタブレットコンピュータ10によって実行される処理のうち、特徴量登録処理及び候補提示処理について説明する。
まず、図14のフローチャートを参照して、特徴量登録処理の処理手順について説明する。なお、特徴量登録処理は、上記した手書き文書(データ)が記憶媒体402に保存される際に特徴量登録処理部306によって実行される。
特徴量登録処理において、特徴量登録処理部306は、ページ保存処理部304によって手書き文書が記憶媒体402に保存される際に、当該手書き文書を例えば作業メモリ401から取得する(ブロックB1)。なお、手書き文書は、上記したページ編集画面上の手書き入力エリア500においてユーザによって手書きで記載されたストローク集合から構成され、当該ストローク集合に対応するストロークデータを含む。
次に、特徴量登録処理部306は、取得された手書き文書(に含まれるストロークデータに対応するストローク集合)に対して文字認識処理を実行する(ブロックB2)。これにより、手書き文書を構成するストローク集合が文字列に変換される。このとき、手書き文書を構成する各ストローク(に対応するストロークデータ)は、文字認識処理が実行されることによって変換された文字列中の当該ストロークが属する文字(当該ストロークが構成する文字)と対応付けられているものとする。
特徴量登録処理部306は、変換された文字列に対して形態素分析(形態素解析)処理を実行する(ブロックB3)。これにより、変換された文字列は、単語単位に分割される。このとき、特徴量登録処理部306は、上記した文字列中の各文字に対応付けられたストロークに基づいて、形態素分析処理によって分割された各単語に属するストローク集合を特定する。
次に、特徴量登録処理部306は、形態素分析処理によって分割された各単語に属するストローク集合に対して積算文字認識処理を実行する(ブロックB4)。この積算文字認識処理は、各ストローク毎に特徴量となる文字認識結果(文字列)を取得する処理である。
ここで、図15を参照して、積算文字認識処理について具体的に説明する。ここでは、便宜的に、キーワード「apple」に属するストローク集合に対して積算文字認識処理が実行される場合について説明する。
この場合、ストローク数(画数)が1であるストローク(集合)1001に対して文字認識処理を実行した場合の文字認識結果は、「a」となる。
次に、ストローク数(画数)が2であるストローク集合1002に対して文字認識処理を実行した場合の文字認識結果は「ap」となる。
同様に、ストローク数(画数)が3であるストローク集合1003に対して文字認識処理を実行した場合の文字認識結果は「app」となる。
また、ストローク数(画数)が4であるストローク集合1004に対して文字認識処理を実行した場合の文字認識処理結果は「appl」となる。
さらに、ストローク数(画数)が5であるストローク集合1005に対して文字認識処理を実行した場合の文字認識処理結果は「apple」となる。
上記したようにキーワード「apple」に属するストローク集合に対して積算文字認識処理が実行された場合、図15に示す積算文字認識結果1100を得ることができる。この積算文字認識結果1100には、キーワード、ストローク集合に対する文字認識結果及び当該ストローク集合におけるストローク数が含まれる。
なお、前述したブロックB4においては1つのキーワードに属するストローク集合に対して積算文字認識処理が実行されるものとして説明したが、当該積算文字認識処理は、1つのまとまりとして扱うことが可能な複数のキーワードを含む文字列に対して実行されても構わない。
再び図14に戻ると、特徴量登録処理部306は、取得された積算文字認識結果1100に基づいて、上記したサジェスト特徴テーブル及びサジェストキーワードテーブルに対して各種情報を登録する(ブロックB5)。
具体的には、特徴量登録処理部306は、積算文字認識結果1100に含まれるキーワード(単語)、文字認識結果及びストローク数を対応付けてサジェスト特徴テーブルに登録する。
また、特徴量登録処理部306は、積算文字認識結果1100に含まれるキーワード(単語)及び当該キーワードに属するストローク集合に対応するストロークデータをサジェストキーワードテーブルに登録する。
なお、上記したブロックB5において、サジェスト特徴テーブル及びサジェストキーワードテーブルに既に同一の情報(例えば、キーワード)が保持されている場合には、当該情報の登録処理は省略される。
上記したように特徴量登録処理によれば、手書き文書が記憶媒体402に保存される際に、後述する候補提示処理において用いられる必要な情報を自動的にサジェスト特徴テーブル及びサジェストキーワードテーブルに登録することができる。
次に、図16のフローチャートを参照して、候補提示処理の処理手順について説明する。なお、候補提示処理は、上記したページ編集画面上の手書き入力エリア500において手書きで記載されるストロークに対応するストロークデータが入力される際に候補提示処理部301Cによって実行される。また、候補提示処理は、手書き入力エリア500に対して1のストロークが手書きで記載される度に実行される。
候補提示処理において、候補提示処理部301Cは、ページ編集画面上の手書き入力エリア500においてユーザによって手書きで記載される1ストロークに対応するストロークデータを入力する(ブロックB11)。以下、ブロックB11において入力されたストロークデータを対象ストロークデータと称する。
次に、候補提示処理部301Cは、対象ストロークデータが入力された時点で入力されているストロークデータに対応するストローク集合(つまり、手書き入力エリア500に手書きで記載されている1以上のストローク)に対して文字認識処理を実行する(ブロックB12)。具体的には、対象ストロークデータが例えば手書き文字列のn画目(nは1以上の整数)のストロークに対応するストロークデータであるものとすると、候補提示処理部301Cは、1画目〜n画目のストローク集合に対して文字認識処理を実行する。これにより、候補提示処理部301Cは、文字認識結果を取得する。本実施形態において、この文字認識結果は、1画目〜n画目のストローク集合(の形状)の特徴を表す特徴量として用いられる。但し、本実施形態においては、候補提示処理部301Cは、1画目〜n画目のストローク集合を、m画毎(m≦n)に区切った上で文字認識処理を実行する。つまり、候補提示処理部301Cは、1画目〜n画目のストローク集合を、m画毎に区切った複数の文字認識結果を取得する。例えば、nが10であり、mが5である場合、上記した文字認識処理により、候補提示処理部301Cは、1画目〜5画目のストローク集合に対する文字認識結果と、6画目〜10画目のストローク集合に対する文字認識結果とを取得することができる。また、ここでは、1画目〜n画目のストローク集合を、m画毎に区切るとしたが、候補提示処理部301Cは、例えば、1画目〜n画目のストローク集合を、パンクチュエーションマーク(例えば、句読点やかぎ括弧、カンマ、ドット等)毎に区切った上で文字認識処理を実行しても構わない。なお、入力されたストロークが、パンクチュエーションマークに対応するストロークであるか否かを判定するためには、例えば、当該入力されたストロークの大きさ(長さ)と、既に入力されたストロークの大きさ(長さ)とを比較して、判定する手法等が用いられればよい。また、上記したパンクチュエーションマークに対応するストロークに関し、候補提示処理部301Cは、手書き入力エリア500に入力(記載)されたストロークがパンクチュエーションマークに対応するストロークであると判定した場合に、当該パンクチュエーションマークに対応するストロークより前に入力(記載)されたストロークに対して擬似的に確定処理を実行する機能をさらに有していてもよい。
また、ここでは、1画目〜n画目のストローク集合をm画毎に区切った上で文字認識処理を実行するとしたが、候補提示処理部301Cは、例えば、文字認識の基点となるストロークをずらして文字認識処理を実行するとしてもよい。具体的には、候補提示処理部301Cは、1画目のストロークが入力された場合は、1画目のストロークに対して文字認識処理を実行し、2画目のストロークが入力された場合は、1画目及び2画目のストローク集合と2画目のストロークとに対して文字認識処理を実行し、n画目のストロークが入力された場合は、1画目〜n画目のストローク集合、2画目〜n画目のストローク集合、…、n−1画目〜n画目のストローク集合、n画目のストロークに対して文字認識処理を実行するとしてもよい。
なお、1画目のストロークは、例えば手書き入力エリア500に手書きで記載されている他のストロークの位置等に基づいて特定されるものとする。
続いて、候補提示処理部301Cは、取得された文字認識結果及び当該文字認識結果が取得されたストローク集合におけるストローク数に基づいて、サジェスト特徴テーブルからキーワードを検索する(ブロックB13)。この場合、候補提示処理部301Cは、取得された文字認識結果及び当該文字認識結果が取得されたストローク集合におけるストローク数(つまり、画数)に対応付けてサジェスト特徴テーブルに保持されているキーワードを検索する。
次に、候補提示処理部301Cは、検索された各キーワードに対してランク付けを行う(ブロックB14)。なお、ランク付けの詳細については後述するため、ここではその詳しい説明を省略する。
続いて、候補提示処理部301Cは、検索されたキーワードを構成するストローク集合に対応するストロークデータを取得する(ブロックB15)。具体的には、候補提示処理部301Cは、検索されたキーワードに対応付けてサジェストキーワードテーブルに保持されているストロークデータを取得する。
しかる後、候補提示処理部301Cは、検索されたキーワード及び取得されたストロークデータをディスプレイ(画面)上に描画することによって、手書き入力候補を表示する(ブロックB16)。この場合、検索されたキーワードはテキストとして表示され、取得されたストロークデータは手書き文字列として表示される。
ここで、図17を参照して、キーワードのランク付けについて詳しく説明する。
なお、本実施形態では、例えばn画目のストロークが入力された時点で検索されたキーワード(n画目のマッチングで一致したキーワード)に対してnスコア(ポイント)を付与していくようにストロークが手書きされる都度スコアを積算することによって、当該スコアの合計値が高いキーワード(手書き入力候補)を上位に表示する(すなわち、図17中のランク1〜ランク4の順で表示する)ようなランク付けが行われる。
また、本実施形態では、上記したように1画目〜n画目のストローク集合をm画毎に区切った上で文字認識処理が実行されている。このため、キーワードのランク付けにおいても、m画毎に、新たにスコアを付与し直すようなランク付けが行われる。
図17では、ユーザが文字列として「apple cider」を手書き入力する場合を想定している。さらにここでは、上記した文字列「apple cider」のうち、文字列「apple ci」までがユーザによって入力された場合を想定する。また、ここでは、上記したmの値は予め5に設定されている場合を想定する。
図17に示すように、1画目(1ストローク目)のストロークに対する文字認識結果は「a」、1画目及び2画目のストローク集合に対する文字認識結果は「as」、1画目〜3画目のストローク集合に対する文字認識結果は「app」、1画目〜4画目のストローク集合に対する文字認識結果は「appl」、1画目〜5画目のストローク集合に対する文字認識結果は「apple」である。なお、1画目及び2画目のストローク集合に対する文字認識結果が「ap」ではなく「as」であるのは、例えばユーザが本来「p」と手書き入力すべきであったところ「p」ではなく「s」と文字認識されるような文字を2画目で手書き入力したことに起因する。また、6画目(新たな文字認識結果の1ストローク目)のストロークに対する文字認識結果は「c」である。同様に、6画目及び7画目(新たな文字認識結果の2ストローク目)のストローク集合に対する文字認識結果は「cl」である。なお、6画目及び7画目の文字認識結果が「cl」であるのは、候補提示処理部301Cが文字認識処理の際に、文字「i」の1画目である「l(縦棒)」をアルファベットの「l(エル)」と誤認識したことに起因する。6画目〜8画目(新たな文字認識結果の3ストローク目)のストローク集合に対する文字認識結果は「ci」である。
まず、1画目のストローク(データ)が入力された場合、文字認識結果は「a」であるため、上記したブロックB13の処理においては、キーワードとして例えば「apple」、「approve」及び「application」が検索される。この場合、検索されたキーワード「apple」、「approve」及び「application」の各々に対して、画数(ストローク数)(ここでは、1)がランク付けのためのスコアとして付与される。なお、図17においては、[]内の数値が各キーワードに付与されたスコアを表している。
次に、2画目のストローク(データ)が入力された場合、文字認識結果は「as」であるため、上記したブロックB13の処理においては、キーワードとして例えば「asterisk」がサジェスト特徴テーブルから検索される。この場合、検索されたキーワード「asterisk」に対して、画数(ここでは、2)がランク付けのためのスコアとして付与される。なお、2画目のストロークが入力された際に検索されていないキーワード「apple」、「approve」及び「application」に対するスコアは1画目の時点と同様に1である(つまり、維持される)。
次に、3画目のストローク(データ)が入力された場合、文字認識結果は「app」であるため、上記したブロックB13においては、キーワードとして例えば「apple」、「approve」及び「application」がサジェスト特徴テーブルから検索される。この場合、検索されたキーワード「apple」、「approve」及び「application」に対して、画数(ここでは、3)がランク付けのためのスコアとして付与される。このようにキーワード「apple」、「approve」及び「application」に対してスコアが付与されると、キーワード「apple」、「approve」及び「application」のスコアは、1画目の時点でのスコアと合計してそれぞれ4となる。なお、3画目のストロークが入力された際に検索されていないキーワード「asterisk」に対するスコアは2画目の時点と同様に1である(つまり、維持される)。
次に、4画目のストローク(データ)が入力された場合、文字認識結果は「appl」であるため、上記したブロックB13においては、キーワードとして例えば「apple」及び「application」がサジェスト特徴テーブルから検索される。この場合、検索されたキーワード「apple」及び「application」に対して、画数(ここでは、4)がランク付けのためのスコアとして付与される。このようにキーワード「apple」及び「application」に対してスコアが付与されると、キーワード「apple」及び「application」のスコアは3画目の時点でのスコアと合計してそれぞれ8となる。なお、4画目のストロークが入力された際に検索されていないキーワード「approve」及び「asterisk」に対するスコアは3画目の時点と同様にそれぞれ4及び2である(つまり、維持される)。
次に、5画目のストローク(データ)が入力された場合、文字認識結果は「apple」であるため、上記したブロックB13においては、キーワードとして例えば「apple」がサジェスト特徴テーブルから検索される。この場合、検索されたキーワード「apple」に対して、画数(ここでは、5)がランク付けのためのスコアとして付与される。このようにキーワード「apple」に対してスコアが付与されると、キーワード「apple」のスコアは4画目の時点でのスコアと合計して13となる。なお、5画目のストロークが入力された際に検索されていないキーワード「application」、「approve」及び「asterisk」に対するスコアは4画目の時点と同様にそれぞれ8、4及び2である。
次に、6画目のストローク(データ)が入力された場合、上記したmの値が5であるので、6画目以降のストローク(集合)に対しては既に付与されたスコアとは別のスコアが新たに付与される。この場合、文字認識結果は「c」であるため、上記したブロックB13においては、キーワードとして例えば「cook」、「cider」及び「cat」がサジェスト特徴テーブルから検索される。この場合、検索されたキーワード「cook」、「cider」及び「cat」の各々に対して、新たな画数(新たなストローク数)(つまり、6ではなく1)がランク付けのためのスコアとして付与される。なお、図17においては、()内の数値が、既に説明した文字認識結果「apple」とは別の文字認識結果を構成する新たなストロークの画数(ストローク数)を表している。
次に、7画目のストローク(データ)が入力された場合、文字認識結果は「cl」であるため、上記したブロックB13においては、キーワードとして例えば「close」がサジェスト特徴テーブルから検索される。この場合、検索されたキーワード「close」に対して、新たな画数(新たなストローク数)(つまり、7ではなく2)がランク付けのためのスコアとして付与される。なお、7画目のストロークが入力された際に検索されていないキーワード「cook」、「cider」及び「cat」に対するスコアは6画目の時点と同様に1である(つまり、維持される)。
最後に、8画目のストローク(データ)が入力された場合、文字認識結果は「ci」であるため、上記したブロックB13においては、キーワードとして例えば「cider」がサジェスト特徴テーブルから検索される。この場合、検索されたキーワード「cider」に対して、新たな画数(新たなストローク数)(つまり、8ではなく3)がランク付けのためのスコアとして付与される。このようにキーワード「cider」に対してスコアが付与されると、キーワード「cider」のスコアは、6画目の時点でのスコアと合計して4となる。なお、8画目のストロークが入力された際に検索されていないキーワード「cook」、「cat」及び「close」に対するスコアは7画目の時点と同様に1、1、2である(つまり、維持される)。
次に、図18を参照して、本実施形態に係る候補提示処理の具体例について説明する。
図18では、ユーザがページ編集画面上の手書き入力エリア500に文字列「apple cider」と入力する場合を想定している。さらにここでは、上記した文字列「apple cider」のうち、文字列「apple ci」までがユーザによって入力された場合を想定している。また、ここでは、上記したmの値が5である場合を想定する。つまり、既に説明したように、候補提示処理部301Cにより、図17に示すようなランク付けがなされている場合を想定する。
この場合、まず候補提示処理部301Cは、1画目のストロークデータに含まれる時系列情報により示される複数の座標データから当該ストロークの始点のX座標及びY座標(以下、第1の座標と表記)を取得する。続いて、候補提示処理部301Cは、上記したmの値が5であるので、6画目のストロークデータに含まれる時系列情報により示される複数の座標データから当該ストロークの始点のX座標及びY座標(以下、第2の座標と表記)を取得する。
その後、候補提示処理部301Cは、第1の座標のY座標を所定の値(距離)だけ上方向にずらした位置(を含む領域)を、1画目〜5画目のストローク集合に対応する手書き入力候補(第1のストローク集合)を表示するための候補提示領域(以下、第1の候補提示領域と表記)R1と定める。同様に、候補提示処理部301Cは、第2の座標のY座標を所定の値(距離)だけ上方向にずらした位置(を含む領域)を、6画目〜8画目(最終的には、6画目〜10画目)のストローク集合に対応する手書き入力候補(第2のストローク集合)を表示するための候補提示領域(以下、第2の候補提示領域と表記)R2と定める。
そして、候補提示処理部301Cは、前述した図17に示すランク付けにしたがって、図18に示すように、第1の候補提示領域R1に手書き入力候補「apple」及び「application」をこの順序で、第2の候補提示領域R2に手書き入力候補「cider」及び「close」をこの順序で表示する。なお、第1の候補提示領域R1と第2の候補提示領域R2とは、図18に示したように横一列に並べた形態ではなく、例えば図19に示すように、各領域のY方向の位置をずらした形態であってもよい。図19では、第1の候補提示領域R1が上方向に配置され、第2の候補提示領域R2が第1の候補提示領域R1より下方向に配置された場合を例示したが、例えば、第2の候補提示領域R2が上方向に配置され、第1の候補提示領域R1が第2の候補提示領域R2より下方向に配置されるとしてもよい。
このように、手書き入力候補が表示された位置と手書き入力候補に置き換わる文字の位置とが関連付けられているため、ユーザは、どのストローク(集合)がどの手書き入力候補に置き換わるかを視認した上で(すなわち、第1のストローク集合又は第2のストローク集合をそれぞれ選択(入力)することによって置換(削除)されるストロークがどの1以上のストローク集合であるかを視認した上で)、手書き入力候補の選択を行うことができる。
なお、図18及び図19では、候補提示領域を第1の候補提示領域R1と第2の候補提示領域R2との2つの領域に分けた上で各領域に手書き入力候補をそれぞれ表示するとしたが、例えば図20に示すように、1つの候補提示領域に手書き入力候補を並べて表示するとしてもよい。つまり、置き換わる文字の位置にあわせて、1画目〜5画目のストローク集合(換言すると、1つ目の文字認識結果)に対応する手書き入力候補「apple」及び「application」と、6画目〜8画目のストローク集合(換言すると、2つ目の文字認識結果)に対応する手書き入力候補「cider」及び「close」とを1つの候補提示領域R3内に並べて表示するとしてもよい。
また、図18〜図20に示した例とは異なり、図21に示すように、現時点で最後に入力(記載)されたストロークを含むストローク集合に対する文字認識結果(図21では、「ci」)に対応する手書き入力候補「cider」及び「close」だけを、当該ストローク集合の位置にあわせた候補提示領域R4内に表示するとしてもよい。
図18〜図21においては、手書き入力候補が表示される位置と手書き入力候補に置き換わる文字の位置とを対応付けることにより、どのストローク(集合)がどの手書き入力候補に置き換わるかをユーザに対して示唆するとしたが、例えば、表示される手書き入力候補の色と手書き入力候補に置き換わる文字の色とを対応付けることにより(すなわち、表示される手書き入力候補と手書き入力候補に置き換わる文字との表示形態を対応付けることにより)、どのストローク(集合)がどの手書き入力候補に置き換わるかをユーザに対して示唆する構成であってもよい。
図22は、表示される手書き入力候補の色と手書き入力候補に置き換わる文字の色とが対応付けて示されるページ編集画面の一例を示す図である。候補提示処理部301Cは、上記したブロックB16において手書き入力候補を表示した後に、候補提示領域R5上にペン100が近づけられると(換言すると、ペン100のホバー状態を検知すると)、図22に示すように、ペン100のペン先に位置する手書き入力候補の表示色と当該手書き入力候補に置き換わる文字の表示色とを同じ色に変化させる。このとき、ペン100のペン先とは別の場所に位置する手書き入力候補は、ペン100のペン先に位置する手書き入力候補とは異なる色で表示される。ペン100のペン先とは別の場所に位置する手書き入力候補が複数存在する場合、これら手書き入力候補は、全て同じ色で表示されてもよいし、各手書き入力候補に置き換わる文字の表示色とそれぞれ同じ色で表示されてもよい。なお、ここでは、ペン100のホバー状態を検知した場合に表示色を変化させるとしたが、例えば、手書き入力候補を指またはペン100でロングタップ(長押し)している間中、表示色を変化させるとしてもよい。ロングタップとは、画面を一瞬たたくタップと異なり、画面を長押しする動作を示し、主に、画面上の所定の箇所にフォーカスしたい場合等に行われる動作である。以上のように、表示される手書き入力候補の色と手書き入力候補に置き換わる文字の色とを対応付けることにより、ユーザは、どのストローク(集合)がどの手書き入力候補に置き換わるかを視認した上で、手書き入力候補を選択することができる。
なお、本実施形態では、手書き入力候補がテキスト及び手書き文字列の双方により表示されるものとして説明したが、当該手書き入力候補は、例えばテキスト又は手書き文字列の少なくとも一方により表示されればよい。
また、本実施形態では、複数の手書き入力候補に付与されたスコアが同一の場合、当該手書き入力候補は任意の順番で画面上に表示されるものとして説明したが、例えば過去の出現頻度に応じてさらにランク付けを行う構成としても構わない。この場合、同一のスコアが付与された複数の手書き入力候補(キーワード)のうち、出現頻度の高い手書き入力候補が優先的に画面上に表示される。
また、過去の選択回数に応じてさらにランク付けを行う構成としても構わない。この場合、同一のスコアが付与された複数の手書き入力候補のうち、選択回数の多い手書き入力候補が優先的に表示される。
なお、上記した出現頻度及び選択回数(の情報)は必ずしも用いなければならないものではない。また、出現頻度及び選択回数の一方を用いてランク付けを行うとしてもよい。さらに、出現頻度及び選択回数の両方を用いてランク付けを行う場合、当該出現頻度及び当該選択回数のいずれを優先するかについても設定可能な構成とすることもできる。
また、手書き入力候補に付与されているスコア(優先度)に応じて、当該手書き入力候補一部のみを画面上に表示する構成としても構わない。具体的には、例えば複数の手書き入力候補の各々に付与されているスコアの最大値の3分の1以上のスコアが付与されている手書き入力候補のみを画面上に表示するような構成とすることができる。
なお、本実施形態では、手書き入力エリア500に入力(記載)される文字がアルファベットである場合について説明したが、手書き入力エリア500に入力(記載)される文字は平仮名やカタカナ、漢字等であってもよい。
手書き入力エリア500に平仮名やカタカナ、漢字等が入力(記載)されることを想定して、記憶媒体402には、サジェスト特徴テーブル及びサジェストキーワードテーブルに加えて、読み仮名テーブルが保持されていてもよい。
ここで、図23を参照して、読み仮名テーブルのデータ構造の一例について説明する。
読み仮名テーブルには、図23に示すように、キーワード及び読み仮名が対応付けて保持(登録)されている。キーワードは、上記した手書き入力候補に相当する文字列(単語)である。読み仮名は、当該読み仮名に対応付けられているキーワードの読み仮名を示す。
図23に示す例では、読み仮名テーブルには、例えばキーワード「エアコン」及び読み仮名「エアコン」が対応付けて保持されている。これによれば、キーワード「エアコン」の読み仮名が「エアコン」であることが示されている。
同様に、読み仮名テーブルには、例えばキーワード「工場」及び読み仮名「コウジョウ」が対応付けて保持されている。これによれば、キーワード「工場」の読み仮名が「コウジョウ」であることが示されている。
ここではキーワード「エアコン」及び「工場」について説明したが、読み仮名テーブルには、他のキーワードについても同様に読み仮名が対応付けて保持されている。
また、図23に示す例では読み仮名がカタカナ表記であるものとして説明したが、当該読み仮名は平仮名表記であっても構わない。
この読み仮名テーブルは、上記したブロックB13の処理と同様に、候補提示処理部301Cが、取得された文字認識結果に基づいてキーワードを検索するときに用いられる。なお、読み仮名テーブルを用いて検索されたキーワードに対しても、上記したブロックB14におけるランク付けは行われる。これにより、ストローク数だけでなく、読み仮名に基づいたキーワードの検索及び手書き入力候補の提示を行うことができるようになる。
以上説明した一実施形態によれば、どのストローク(集合)がどの手書き入力候補に置き換わるかをユーザが識別可能な形態で手書き入力候補を表示する構成を備えているので、入力が予測される文字の候補を効果的に提示することができる。
なお、本実施形態の処理は、コンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。