以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、ペン(スタイラス)または指によって手書き入力可能なペン・ベースの携帯型電子機器である。この電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、PDA等として実現され得る。以下では、この電子機器がタブレットコンピュータ10として実現されている場合を想定する。タブレットコンピュータ10は、タブレットまたはスレートコンピュータとも称される携帯型電子機器である。タブレットコンピュータ10は、図1に示すように、本体11とタッチスクリーンディスプレイ17とを備える。本体11は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ17は、本体11の上面に重ね合わさるように取り付けられている。
タッチスクリーンディスプレイ17には、フラットパネルディスプレイと、センサとが組み込まれている。センサは、フラットパネルディスプレイの画面とペンまたは指との接触位置を検出するように構成されている。フラットパネルディスプレイは、例えば、液晶表示装置(LCD)であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザなどを使用することができる。以下では、限定されないが、タッチパネルがタッチスクリーンディスプレイ17に組み込まれている場合を想定する。
タッチパネルは、例えば、フラットパネルディスプレイの画面上に配置される。このタッチスクリーンディスプレイ17は、指を使用した画面に対するタッチ操作のみならず、ペン100を使用した画面に対するタッチ操作も検出することができる。
ユーザは、外部オブジェクト(ペン100又は指)を使用してタッチスクリーンディスプレイ17上で手書き入力操作を行うことができる。手書き入力操作中においては、画面上の外部オブジェクト(ペン100又は指)の動きの軌跡、つまり筆跡がリアルタイムに描画される。外部オブジェクトが画面に接触されている間の外部オブジェクトの動きの軌跡が1ストロークに相当する。手書きされた文字または手書きされた図形などに対応する多数のストロークの集合が手書き文書を構成する。
本実施形態では、この手書き文書は、イメージデータではなく、各ストロークの軌跡の座標列とストローク間の順序関係とを示す時系列情報として記憶媒体に保存される。この時系列情報の詳細は図4を参照して後述するが、この時系列情報は、複数のストロークにそれぞれ対応する複数のストロークデータを含む。各ストロークデータは、ある一つのストロークに対応し、このストローク上の点それぞれに対応する座標データ系列(時系列座標)を含む。これらストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序つまり筆順に相当する。
タブレットコンピュータ10は、記憶媒体から既存の任意の時系列情報(手書き文書情報)を読み出し、この手書き文書情報によって示される筆跡(複数のストローク)を画面上に表示することができる。さらに、タブレットコンピュータ10は編集機能を有している。この編集機能は、「消しゴム」ツール、「範囲選択」ツール、および他の各種ツール等によって、表示中の手書き文書内の任意のストロークまたは任意の手書き文字等を削除または移動することができる。さらに、この編集機能は、幾つかの手書き操作の履歴を取り消す機能も含んでいる。
さらに、タブレットコンピュータ10は、自動補完(ストローク推薦)機能も有している。この自動補完機能は、多くの文字列を手書きによって容易に入力できるようにするために、ユーザの手書き入力操作をアシストするための機能である。
図2は、タブレットコンピュータ10と外部装置との連携動作の例を示している。タブレットコンピュータ10は、パーソナルコンピュータ1やクラウドと連携することができる。すなわち、タブレットコンピュータ10は、無線LANなどの無線通信デバイスを備えており、パーソナルコンピュータ1との無線通信を実行することができる。さらに、タブレットコンピュータ10は、インターネット上のサーバ2との通信を実行することもできる。サーバ2はオンラインストレージサービス、他の各種クラウドコンピューティングサービスを実行するサーバであってもよい。
パーソナルコンピュータ1はハードディスクドライブ(HDD)のようなストレージデバイスを備えている。タブレットコンピュータ10は、時系列情報(手書き文書)をネットワーク越しにパーソナルコンピュータ1に送信して、パーソナルコンピュータ1のHDDに記録することができる(アップロード)。
これにより、タブレットコンピュータ10内のストレージの容量が少ない場合でも、タブレットコンピュータ10が多数の時系列情報(手書き文書)あるいは大容量の時系列情報(手書き文書)を扱うことが可能となる。
さらに、タブレットコンピュータ10は、パーソナルコンピュータ1のHDDに記録されている任意の1以上の手書き文書を読み出すことすができる(ダウンロード)。タブレットコンピュータ10は、この読み出した手書き文書によって示されるストロークそれぞれをタブレットコンピュータ10のタッチスクリーンディスプレイ17の画面に表示することができる。
さらに、タブレットコンピュータ10が通信する先はパーソナルコンピュータ1ではなく、上述したように、ストレージサービスなどを提供するクラウド上のサーバ2であってよい。タブレットコンピュータ10は、手書き文書をネットワーク越しにサーバ2に送信して、サーバ2のストレージデバイス2Aに記録することができる(アップロード)。さらに、タブレットコンピュータ10は、サーバ2のストレージデバイス2Aに記録されている任意の手書き文書を読み出すことができる(ダウンロード)。タブレットコンピュータ10は、この読み出した手書き文書によって示されるストロークそれぞれをタブレットコンピュータ10のタッチスクリーンディスプレイ17の画面に表示することができる。
このように、本実施形態では、手書き文書が格納される記憶媒体は、タブレットコンピュータ10内のストレージデバイス、パーソナルコンピュータ1内のストレージデバイス、サーバ2のストレージデバイスのいずれであってもよい。
次に、図3および図4を参照して、ユーザによって手書きされたストローク(文字、マーク、図形(線図)、表など)と手書き文書との関係について説明する。図3は、ペン100などを使用してタッチスクリーンディスプレイ17上に手書きされる手書き文字列の例を示している。
手書き文書では、一旦手書きされた文字や図形などの上に、さらに別の文字や図形などが手書きされるというケースが多い。図3においては、「ABC」の手書き文字列が「A」、「B」、「C」の順番で手書きされ、この後に、手書きの矢印が、手書き文字「A」のすぐ近くに手書きされた場合が想定されている。
手書き文字「A」は、ペン100などを使用して手書きされる2つのストローク(「∧」形状の軌跡、「−」形状の軌跡)によって表現される。最初に手書きされる「∧」形状のペン100の軌跡は例えば等時間間隔でリアルタイムにサンプリングされ、これによって「∧」形状のストロークの時系列座標SD11、SD12、…SD1nが得られる。同様に、次に手書きされる「−」形状のペン100の軌跡も等時間間隔でリアルタイムにサンプリングされ、これによって「−」形状のストロークの時系列座標SD21、SD22、…SD2nが得られる。
手書き文字「B」は、ペン100などを使用して手書きされた2つのストローク、つまり2つの軌跡によって表現される。手書き文字「C」は、ペン100などを使用して手書きされた1つのストローク、つまり1つの軌跡によって表現される。手書きの「矢印」は、ペン100などを使用して手書きされた手書きされた2つのストローク、つまり2つの軌跡によって表現される。
図4は、図3の手書き文字列に対応する時系列情報200を示している。時系列情報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として付加してもよい。
さらに、各座標データには、筆圧を示す情報(Z)を追加してもよい。
図5は、タブレットコンピュータ10のシステム構成を示す。
タブレットコンピュータ10は、図5に示されるように、CPU101、システムコントローラ102、主メモリ103、グラフィクスコントローラ104、BIOS−ROM105、不揮発性メモリ106、無線通信デバイス107、エンベデッドコントローラ(EC)108等を備える。
CPU101は、タブレットコンピュータ10内の各種コンポーネントの動作を制御するプロセッサである。プロセッサは処理回路を含む。CPU101は、ストレージデバイスである不揮発性メモリ106から主メモリ103にロードされる各種コンピュータプログラムを実行する。これらプログラムには、オペレーティングシステム(OS)201、および各種アプリケーションプログラムが含まれている。アプリケーションプログラムには、手書きノートアプリケーションプログラム202が含まれている。この手書きノートアプリケーションプログラム202は、メモをとることが可能なデジタルノートブックアプリケーションである。この手書きノートアプリケーションプログラム202は、上述の手書き文書を作成および表示する機能、手書き文書を編集する機能、および自動補完機能等を有している。
また、CPU101は、BIOS−ROM105に格納された基本入出力システム(BIOS)も実行する。BIOSは、ハードウェア制御のためのプログラムである。
システムコントローラ102は、CPU101のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ102には、主メモリ103をアクセス制御するメモリコントローラも内蔵されている。また、システムコントローラ102は、PCI EXPRESS規格のシリアルバスなどを介してグラフィクスコントローラ104との通信を実行する機能も有している。
グラフィクスコントローラ104は、タブレットコンピュータ10のディスプレイモニタとして使用されるLCD17Aを制御する表示コントローラである。表示コントローラは表示制御回路を含む。LCD17Aを含むタッチスクリーンディスプレイ17(タッチスクリーンディスプレイ17/LCD17Aの画面)は、2つの長辺と2つの短辺とを含む長方形の形状を有している。
このグラフィクスコントローラ104によって生成される表示信号はLCD17Aに送られる。LCD17Aは、表示信号に基づいて画面イメージを表示する。このLCD17A上にはタッチパネル17Bが配置されている。
無線通信デバイス107は、無線LANまたは3G移動通信などの無線通信を実行するように構成されたデバイスである。EC108は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。EC108は、ユーザによるパワーボタンの操作に応じてタブレットコンピュータ10を電源オンまたは電源オフする機能を有している。
タブレットコンピュータ10は、入力デバイス109(マウス、キーボード等)と通信するため周辺インタフェースを備えていてもよい。
<手書きノートアプリケーションプログラム202の特徴>
以下、手書きノートアプリケーションプログラム202の幾つかの特徴について説明する。
<アプリケーションの基本的特徴>
手書きノートアプリケーションプログラム202は、編集中のページを周期的に自動的に保存する。手書きノートアプリケーションプログラム202が停止/終了される時、手書きノートアプリケーションプログラム202は、編集中のページを自動的に保存する。
手書きノートアプリケーションプログラム202は、複数の言語をサポートする。手書きノートアプリケーションプログラム202は、OSセッティング上でセットされた言語を使用する。
手書きノートアプリケーションプログラム202は、文字認識エンジンを含む。この文字認識エンジンは、日本語、英語、韓国語、ロシア語、中国語、他の様々な言語をサポートする。
<自動補完機能>
手書きノートアプリケーションプログラム202は、自動補完機能を有する。自動補完機能は、手書きによって入力されたストローク(仮ストローク)から定められる入力の候補である筆跡候補のリストを画面上に表示する。仮ストロークは、自動補完されるべきストローク、つまり自動補完モードにおいて入力されるストロークを意味する。自動補完機能は、筆跡候補のいずれかがユーザによって選択される場合、仮ストロークの代わりに、この選択された筆跡候補を入力する。
1. ユーザは自動補完モードをオンにする(ユーザインタフェース(UI)は自動補完モードをオンとオフとの間で切り替えることができる)
2. ユーザはが画面上にストローク(仮ストローク)を入力する。このストロークは画面上に表示される。
3. 手書きノートアプリケーションプログラム202は、幾つかの筆跡候補を決定し、筆跡候補のリスト(筆跡候補メニュー)を作成する。各筆跡候補は、1以上のストロークを含むストローク列である。筆跡候補は、その先頭部分に、仮ストロークに類似する筆跡部分を含む筆跡であってもよい。
4. 手書きノートアプリケーションプログラム202は、筆跡候補のリスト(筆跡候補メニュー)を画面上に表示する。たとえば、ユーザによって文字「a」に対応する仮ストロークが入力された時、文字列「apple」に対応する筆跡、文字列「application」に対応する筆跡等を含む筆跡候補メニューがディスプレイに表示されてもよい。
5. ユーザが筆跡候補メニュー上のある1つの筆跡候補を選択した時、手書きノートアプリケーションプログラム202は、この筆跡候補を、仮ストロークに代えて、入力することとする。つまり、ユーザによって入力された仮ストロークは、この選択された筆跡候補を使用して補完される。この筆跡候補は確定(エンター)された筆跡となる。この筆跡候補のサイズ(高さ、文字間隔)は、例えば、仮ストロークよりも前に入力されたストロークのサイズに対応するサイズに自動的に調整されてもよい。
自動補完機能では、筆跡候補は、ユーザによって過去に入力された手書き情報から抽出される。このことは、ユーザが、ユーザが過去に入力した手書き情報を再利用できることを意味する。ユーザによって過去に入力された手書き情報から収集される筆跡の集合は、自動補完辞書データデータベースに格納されてもよい。手書きノートアプリケーションプログラム202は、ユーザの手書きノートブックから筆跡の集合を自動的に収集し、この筆跡の集合を自動補完辞書データデータベースに格納することができる。手書きノートアプリケーションプログラム202は、仮ストロークから定まる1以上の筆跡候補を自動補完データデータベースから取得することができる。ユーザは、自動補完データデータベース内の任意の筆跡候補を無効にすることもできる。無効にされた筆跡候補は、自動補完処理に使用されない。
手書きノートアプリケーションプログラム202は、より多くの筆跡候補をユーザに提示するために、筆跡候補リストボックスを筆跡候補メニューとして表示する。筆跡候補リストボックスは複数の列、たとえば3つの列を含んでもよい。各例においては、たとえば、3つの筆跡候補が表示されてもよい。各列は3つのボタンエリアを含み。3つの筆跡候補が各列の3つのボタンエリアにそれぞれ表示される。各ボタンエリアは、対応する筆跡候補を選択するための操作領域である。
ユーザがある筆跡候補に対応する操作領域(例えば、ある筆跡候補に対応するボタンエリア)をタップした時、この操作領域に対応する筆跡候補がページにエンター(入力)される。筆跡候補リストボックスは、さらに、確認(confirm)ボタンを表示してもよい。
ユーザが確認(confirm)ボタンをタップした時、手書きノートアプリケーションプログラム202は、仮ストロークをページにエンター(入力)する。
筆跡候補リストボックスの表示位置について以下に説明する。
筆跡候補リストボックスの表示位置は、ユーザが仮ストロークを手書き入力しながらユーザが操作し易い位置に置かれることが好ましい。これは、ユーザがペンまたは指を僅かに動かすだけで所望の筆跡候補を容易に選択できるようにするためである。手書きノートアプリケーションプログラム202は、仮ストロークの入力位置に対応する位置、たとえば、仮ストロークの入力位置の上側に、筆跡候補リストボックスを表示する。
手書きノートアプリケーションプログラム202は、左利きまたは右利きの設定を受け付けることができる。ユーザは、手書きノートアプリケーションプログラム202によって提供される設定ツールによって、左利きモードまたは右利きモードを選択することができる。
あるいは、OS201の設定ツールが、ユーザの操作に応じて、左利きモードまたは右利きモードを設定してもよい。
手書きノートアプリケーションプログラム202は、左利きモード/右利きモードに応じて、筆跡候補リストボックスのレイアウトを変更することができる。
次に、図6を参照して、手書きノートアプリケーションプログラム202の構成について説明する。
手書きノートアプリケーションプログラム202は、ペン軌跡表示処理部301、時系列情報生成部302、編集処理部303、ページ保存処理部304、ページ取得処理部305、手書き文書表示処理部306、および処理部308等を備える。
手書きノートアプリケーションプログラム202は、タッチスクリーンディスプレイ17を用いて入力されるストロークデータを使用することによって、手書き文書(手書きデータ)の作成、表示、編集等を行う。タッチスクリーンディスプレイ17は、「タッチ」、「移動(スライド)」、「リリース」等のイベントの発生を検出するように構成されている。「タッチ」は、画面上に外部オブジェクトが接触したことを示すイベントである。「移動(スライド)」は、画面上に外部オブジェクトが接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面から外部オブジェクトが離されたことを示すイベントである。
ペン軌跡表示処理部301および時系列情報生成部302は、タッチスクリーンディスプレイ17によって発生される「タッチ」または「移動(スライド)」のイベントを受信し、これによって手書き入力操作を検出する。「タッチ」イベントには、接触位置の座標が含まれている。「移動(スライド)」イベントにも、移動先の接触位置の座標が含まれている。したがって、ペン軌跡表示処理部301および時系列情報生成部302は、タッチスクリーンディスプレイ17から、接触位置の動きの軌跡に対応する座標列を受信することができる。
ペン軌跡表示処理部301は、手書きによって入力される筆跡(1以上のストローク)をタッチスクリーンディスプレイ17の画面上に表示するように構成された表示制御部として機能する。ペン軌跡表示処理部301は、タッチスクリーンディスプレイ17から座標列を受信する。そして、この座標列に基づいて、ペン軌跡表示処理部301は、ペン100等を使用した手書き入力操作によって入力される複数のストロークをタッチスクリーンディスプレイ17内のLCD17Aの画面上に表示する。ペン軌跡表示処理部301は、処理部308の制御の下、UIの表示に関する様々な表示制御を実行することができる。
時系列情報生成部302は、タッチスクリーンディスプレイ17から出力される上述の座標列を受信する。この座標列に基づいて、時系列情報生成部302は、上述の複数のストロークに対応する複数のストロークデータ(時系列情報)を生成する。これらストロークデータ、つまり各ストロークの各点に対応する座標および各ストロークのタイムスタンプ情報は作業メモリ401に一時保存してもよい。
ページ保存処理部304は、複数のストロークに対応する複数のストロークデータを含む手書き文書情報を記憶媒体402内の手書きノートデータベース402Aに保存する。記憶媒体402は、上述したように、タブレットコンピュータ10内のストレージデバイス、パーソナルコンピュータ1内のストレージデバイス、サーバ2のストレージデバイスのいずれであってもよい。
ページ取得処理部305は、記憶媒体402から任意の手書き文書情報を読み出す。読み出された手書き文書情報は手書き文書表示処理部306に送られる。手書き文書表示処理部306は、手書き文書情報を解析し、この解析結果に基づいて、手書き文書情報内の複数のストロークデータによって示される複数のストロークを画面上にページ(手書きページ)として表示する。
編集処理部303は現在表示中のページを編集するための処理を実行する。すなわち、編集処理部303は、ユーザによって行われる編集操作に応じて、表示されている複数のストローク内の1以上のストロークを削除または移動等するための編集処理を実行する。さらに、編集処理部303は、編集処理の結果を表示中の手書き文書に反映するためにこの手書き文書を更新する。
ユーザは、「消しゴム」ツール等を使用して、表示されている複数のストローク内の任意のストロークを削除することができる。また、ユーザは、画面上の任意の部分を矩形または自由枠によって囲むための「範囲選択」ツールを使用して、表示されている手書きページ内の任意の部分を選択することができる。
処理部308は、上述の自動補完を含む様々な処理を実行することができる。処理部308は、例えば、自動補完処理部308A、ボックス表示制御部308B等を含む。
自動補完処理部308Aは、上述の自動補完機能を実行するように構成された処理部である。自動補完モードにおいては、自動補完処理部308Aは、手書きによって入力される仮ストロークと手書き文書情報とに基づいて、ユーザが手書きしようとしている筆跡、つまりストローク列(手書き文字列)を、予測する。そして、自動補完処理部308Aは、仮ストロークから定められる複数の筆跡候補をLCD17Aの画面上に表示する。これら複数の筆跡候補の表示領域(上述の筆跡候補リストボックス)においては、筆跡候補はそれらの優先度に応じて並べられる。
例えば、仮ストローク「a」が手書きによって入力された場合には、手書きの語「add」または「access」のような筆跡候補がユーザに提示されてもよい。もしユーザによって手書きの語「access」が選択されたならば、仮ストローク「a」は、この手書きの語「access」によって補完される。そして、この手書きの語「access」が、仮ストローク「a」の代わりにページにエンターされる。よって、ユーザは、手書きの語「access」の筆跡を容易に入力することが出来る。
どの筆跡候補も選択されずに、次の仮ストローク、たとえば「b」が入力された場合、自動補完処理部308Aは、今度は、2つの仮ストローク「ab」から定まる筆跡候補のリストを筆跡候補リストボックスに表示してユーザに提示する。
手書き文書情報に格納される手書き文字列の言語はどのような言語であってもよい。利用可能な言語の例は、英語、日本語、および他の様々な言語を含む。英語の文字列に関しては、筆跡(手書き文字列)は、ブロック体の文字列に対応するストローク列であってもよいし、筆記体の文字列に対応するストローク列であってもよい。筆記体で手書きされた単語は1つのストロークから構成される場合がある。したがって、自動補完処理において手書き文書情報から取得される各筆跡(ストローク列)は、必ずしも複数のストロークを含んでいる必要は無く、一つのストロークであってもよい。
仮ストロークから定められる筆跡候補を容易に特定できるようにするために、自動補完処理部308Aは、手書きノートデータベース402Aに格納されているストロークの集合(手書き文書情報)から手書き文字列のような筆跡を自動収集し、これら自動収集された手書き文字列を自動補完辞書データベース402Bに格納しても良い。
この自動補完辞書データベース402Bにおいては、例えば、意味のある文字列単位(例えば単語単位で)で、筆跡(ストローク列)と、この筆跡に対応する単語(文字認識結果)とが格納されていても良い。さらに、自動補完辞書データベース402Bにおいては、単語と、筆跡(ストローク列)に加えて、その単語に対応する読みが格納されていても良い。単語が英語である場合には、その単語の読みの代わりに、その単語のエイリアスが自動補完辞書データベース402Bに格納されても良い。
自動補完処理部308Aは、まず、ユーザによって入力された仮ストロークを文字認識してもよい。そして、自動補完処理部308Aは、自動補完辞書データベース402Bを参照し、この仮ストロークの文字認識結果(文字列)に前方一致する単語を見つけ出す。自動補完処理部308Aは、見つけ出した単語に対応する筆跡(ストローク列)を、仮ストロークから定められる筆跡候補として自動補完辞書データベース402Bから取得する。
あるいは、自動補完辞書データベース402Bにおいては、例えば、単語単位で、筆跡(ストローク列)と、この筆跡に対応する特徴量とが格納されていても良い。ある筆跡の特徴量としては、この筆跡の手書き特徴を表すことができる任意の特徴を使用することができる。例えば、特徴量としては、ストロークの形状、ストロークの筆画方向、ストロークの傾斜、等を表す特徴量データを使用しても良い。この場合、自動補完処理部308Aは、仮ストロークの特徴量に類似する特徴量を有する筆跡候補を自動補完辞書データベース402Bから取得してもよい。
自動補完辞書データベース402Bにおいては、さらに、例えば、単語単位で、各筆跡に対応する追加の情報が登録されていてもよい。追加の情報は、手書き文書情報における各筆跡の出現頻度(共起確率)を示す情報を含んでいてもよい。さらに、追加の情報は、各筆跡の使用頻度を示す情報を含んでいてもよい。各筆跡の使用頻度は、例えば、各筆跡が筆跡候補リストボックスから選択された回数であってもよい。
自動補完処理部308Aは、仮ストロークの特徴量または仮ストロークの文字認識結果の少なくとも一方を使用して、自動補完辞書データベース402Bから仮ストロークに対応する幾つかの筆跡候補を取得する。これら筆跡候補の各々は、仮ストロークの特徴量と類似する特徴量を有する筆跡であってもよく、あるいは仮ストロークの文字認識結果に前方一致する文字列に対応する筆跡であってもよい。あるいは、これら筆跡候補の各々は、仮ストロークの特徴量と類似する特徴量を有し、かつ仮ストロークの文字認識結果に前方一致する文字列に対応する筆跡であってもよい。
自動補完処理部308Aは、これら筆跡候補の順位付けを行うために、これら筆跡候補それぞれの優先度(優先順位)を決定する。筆跡候補を順位付けるための処理においては、筆跡候補にそれぞれスコアを与えても良い。各筆跡候補のスコアは、仮ストロークの特徴量とその筆跡候補の特徴量との間の類似度に応じて決定されてもよい。高い類似度を有する筆跡候補には、高いスコアが与えられる。最も高いスコアを有する筆跡候補には、最も高い優先度が与えられる。
あるいは、各筆跡候補のスコアは、筆跡候補の出現頻度、または筆跡候補の使用頻度に応じて決定されてもよい。出現頻度が高い筆跡候補は、ユーザによって入力される可能性が高い筆跡であると推定される。このため、出現頻度が高い筆跡候補には、高いスコアが与えられる。使用頻度が多い筆跡候補もまた、ユーザによって入力される可能性が高い筆跡であると推定される。このため、使用頻度(選択回数)が多い筆跡候補に、高いスコアが与えられてもよい。
あるいは、各筆跡候補のスコアは、(1)仮ストロークの特徴量と筆跡候補の特徴量との間の類似度、(2)筆跡候補の出現頻度、(3)筆跡候補の選択回数、の全てに基づいて決定されてもよい。
自動補完処理部308Aは、ユーザ辞書データベース402Cを使用することもできる。ユーザ辞書データベース402Cは、予め用意された多数の筆跡候補を格納する。これら筆跡候補は、多数の単語にそれぞれ対応する筆跡である。ユーザは、ユーザ辞書データベース402Cに新たな筆跡を登録することができる。さらに、ユーザは、ユーザ辞書データベース402Cから任意の筆跡を削除することもできる。
ボックス表示制御部308Bは、筆跡候補リストボックスの表示位置、筆跡候補リストボックスのレイアウト、筆跡候補リストボックスにおける筆跡候補の並び順を制御する。優先度(優先順位)の高い筆跡候補ほどユーザが選択する可能性の高い候補であるので、ボックス表示制御部308Bは、これら筆跡候補の優先度に従って、これら筆跡候補を筆跡候補リストボックスに表示する。つまり、ボックス表示制御部308Bは、ユーザがスムーズに候補を選択できるようにするために、筆跡候補の優先度と筆跡候補の表示位置とを考慮して、筆跡候補リストボックスの表示を制御する。
図7は、手書きノートアプリケーションプログラム202のユーザインタフェース(編集画面)を示す。手書きノートアプリケーションプログラム202は、図7に示されるUI(編集画面)を表示する。このUIは、4つのエリア、つまりノートブックリスト501、ページリスト502、編集ツールバー503、および編集ビューエリア504を含む。
ノートブックリスト501は手書きノートアプリケーションプログラム202によって管理されているノートブックのリストを示す。ノートブックリスト501の上端近傍の2つのアイコン「Add Note」、「All Pages」はコマンドアイコンである。「Add Note」アイコンがユーザよってタップされると、処理部308は、新たなノードブックを追加するための処理を実行する。「All Pages」アイコンがユーザよってタップされると、処理部308は、全てのノートブック内の全てのページに対応するサムネイルのリストを表示するための処理を実行する。
「Unclassified pages」アイコンは、ユーザのどのノートブックにも属さないページ群を含むノートブックを示すノートブックアイコンである。「Research」アイコンは、ユーザのノートブック(タイトル名「Research」)を示すノートブックアイコンである。「idess」アイコンは、ユーザのノートブック(タイトル名「idess」)を示すノートブックアイコンである。「presentation」アイコンは、ユーザのノートブック(タイトル名「presentation」)を示すノートブックアイコンである。「Minutes」アイコンは、ユーザのノートブック(タイトル名「Minutes」)を示すノートブックアイコンである。「ToDo」アイコンは、ユーザのノートブック(タイトル名「ToDo」)を示すノートブックアイコンである。
これらノートブックアイコンはドラッグ&ドロップ操作によって再配置することができる。
ページリスト502は、現在選択されているノートブックアイコンに対応するノートブック内に含まれるページに対応するサムネイルのリストを示す。
ページリスト502内の最も上の「Add Page」アイコンは、コマンドアイコンである。「Add Page」アイコンがユーザよってタップされると、処理部308は、編集中のノートブックに新たなページを追加するための処理を実行する。
「Add Page」アイコンの下側には、複数のページに対応するサムネイルをそれぞれ示す複数のページアイコンが配置されている。選択されたページアイコンに対応するページに含まれるストロークは、編集ビューエリア504に表示される。ユーザは、ページリスト502内の任意のページアイコンを選択することによって、任意のページを編集ビューエリア504に表示することができる。
これらページアイコンはドラッグ&ドロップ操作によって再配置することができる。ユーザは、ページアイコンをドラッグ&ドロップ操作することによってページ順序を変更(カスタマイズ)することができる。
編集ツールバー503は、ページを編集するための幾つかのボタンを含む。「選択ペン」ボタン511は、「範囲選択」ツールとして使用される。ユーザは、この「選択ペン」によって編集ビューエリア504上の1以上のオブジェクトを選択することができる。「選択ペン」ボタン511がユーザによってタップされた時、処理部308は、選択タイプ(矩形/自由枠/全選択)を変更するためのメニューを表示する。
「消しゴムペン」ボタン512は、「消しゴム」ツールとして使用される。ユーザは、この「消しゴムペン」によって編集ビューエリア504上の1以上のストロークを消すことができる。「消しゴムペン」ボタン512がユーザによってタップされた時、処理部308は、消しゴムサイズ(大/小/ページ全体)を変更するためのメニューを表示する。
「ストローク入力ペン」ボタン513は、ストロークを描画するために使用される。ユーザは、「ストローク入力ペン」によって筆跡(ストローク)を編集ビューエリア504に描画することができる。「ストローク入力ペン」ボタン513がユーザによってタップされた時、処理部308は、幾つかのプリセットペンを示すメニューを表示する。これらプリセットペンの各々は、例えば、ペンタイプ(万年筆/鉛筆/ボールペン/鉛筆/マーカー/フェルトペン)、幅、色、透明度の組み合わせを定義している。ユーザは、このメニューからペンを選択することができる。
「アンドゥ」ボタン514は、編集操作を取り消すために使用される。「リドゥ」ボタン515は、編集操作をやり直すために使用される。
「自動補完(推薦入力)」ボタン516は、自動補完モードをオンまたはオフするためのボタンである。
「カメラ」ボタン517は、写真を取り、この写真を編集ビューエリア504にインポートするために使用される。ユーザは、「カメラ」ボタンによって写真を撮ることができる。処理部308は、キャプチャアプリケーションプログラムを起動する。キャプチャアプリケーションプログラムは、タブレットコンピュータ10に設けられたカメラ(Webカム)によってイメージ(写真)をキャプチャする。処理部308は、キャプチャされたイメージをインポートする。
「タッチ入力モード」ボタン519は、指またはマウスによって描画可能なタッチ入力モードをオンまたはオフするためのボタンである。
「ヘルプ」ボタン519は、ヘルプを表示するためのボタンである。タブボタン521は、ノーマルモード/フルスクリーンモードを切り替えるためのボタンである。図7のUIはノーマルモードに対応している。
編集ビューエリア504は、手書き入力可能な手書き入力エリアである。ユーザは編集ビューエリア504内の所望の箇所にストロークを手書き入力することができる。ユーザが「自動補完(推薦入力)」ボタン516をタップすると、自動補完モードがオンする。自動補完モードがオンの場合においては、手書きによって入力されるストローク(仮ストローク)に対応する筆跡候補のリストが入力候補として編集ビューエリア504上に表示される。
図8は編集ビューエリア504に表示される筆跡候補リストボックス701の例を示す。
ユーザによって文字「a」に対応する仮ストローク611と、文字「p」に対応する仮ストローク612、613が入力されたとすると、編集ビューエリア504に手書き文字列「ap」に対応する仮ストローク列が表示される。さらに、仮ストローク列の上部に筆跡候補リストボックス701が表示される。
筆跡候補リストボックス701は複数の領域(複数の列)から構成される。ここでは、筆跡候補リストボックス701が、横方向に並ぶ3つの領域、つまり3つの列(図9のC1、C2、C3)を含む場合を想定する。最も左の列は、手書き文字列「ap」に対応する仮ストローク列の入力位置から定まる位置、たとえば仮ストローク列の上部に表示される。なお、手書き文字「a」に対応する仮ストローク611が入力された時に、筆跡候補リストボックス701が表示されてもよい。この場合には、筆跡候補リストボックス701は、その最も左の列が仮ストローク611の上部に位置する位置に表示される。
筆跡候補リストボックス701の各列においては、複数の筆跡候補が縦方向に並べられる。ここでは、各列において、3つの候補が縦方向に並べられる場合を想定する。
筆跡候補リストボックス701においては、例えば、文字列「ap」を各々が含む9つの単語「apple」、「apply」、「applicaion」、「appreciate」、…「approximate」にそれぞれ対応する9つの筆跡候補が表示される。これら筆跡候補は自動補完辞書データベース402Bから仮ストローク列611〜613に類似する筆跡を検索ことにより求められる。各筆跡候補は、1以上のストロークを含むストローク列である。各筆跡候補は、その先頭部分に、仮ストローク列に類似する筆跡を含む筆跡であってもよい。筆跡候補リストボックス701は9つのボタンエリアを含む。9つの筆跡候補がこれら9つのボタンエリアにそれぞれ表示される。
ユーザが筆跡候補リストボックス701内のあるボタンエリアをペンによってタップした時、このタップされたボタンエリアに対応する筆跡候補が編集中のページにエンター(入力)される。つまり、ユーザによって入力された仮ストローク列(1以上のストローク)は、この選択された筆跡候補を使用して補完される。この筆跡候補は確定(エンター)された筆跡となる。これにより、ユーザは全ての筆跡を手書き入力せずに、簡単に所望の筆跡を手書き入力することができる。
最も左の列は、仮ストローク列の入力位置の上側に隣接して表示されているので、ユーザはペン先を僅かに上方向にシフトするだけで、左の列に表示されている3つの筆跡候補のいずれかを容易に選択することができる。ペン先を縦方向に移動する操作は、手首を動かすことなく、指先を僅かに動かすだけで行うことができる。本実施形態では、優先度の高い上位3つの筆跡候補は最も左の列に縦方向に並べられている。これら、上位3つの筆跡候補は、ユーザによって選択される可能性が高い候補である。したがって、ユーザは、指先を僅かに動かすという操作を行うだけで、目的の筆跡候補をスムーズに選択することができる。
筆跡候補リストボックス701は、さらに、確認(confirm)ボタン702を表示してもよい。この確認(confirm)ボタン702がタップされた時、仮ストロークは入力(エンター)されたストロークに決定される。
図9は図8の筆跡候補リストボックス701を拡大表示した図である。
図9において、点線の矢印は筆跡候補の優先度の順序を示している。矢印の始点の筆跡候補、つまり手書き文字列「apple」に対応する筆跡候補は、最も高優先度の筆跡候補である。2番目に高優先度の筆跡候補は手書き文字列「apply」である。3番目に高優先度の筆跡候補は手書き文字列「applicaion」である。4番目に高優先度の筆跡候補は手書き文字列「appreciate」である。5番目に高優先度の筆跡候補は手書き文字列「append」である。6番目に高優先度の筆跡候補は手書き文字列「appendix」である。7番目に高優先度の筆跡候補は手書き文字列「approved」である。8番目に高優先度の筆跡候補は手書き文字列「appointed」である。9番目に高優先度の筆跡候補は手書き文字列「approximate」である。
このように、最も高い優先度の筆跡候補「apple」は、仮ストロークの入力位置(現在のペンの位置)に一番近い位置(C1,R1)に表示される。上述したように、ペンを横方向(左右)に動かすよりも縦方向(上下)に動かす方が必要な手の動きは少ない。ペンを縦方向に移動する操作は、手首を回すことなく、指先を僅かに上下させるだけで行うことができるからである。このため、2番目に高優先度の筆跡候補は、筆跡候補「apple」の右隣の位置(C2、R1)ではなく、筆跡候補「apple」の上の位置(C1、R2)に表示されている。3番目に高優先度の筆跡候補「application」は筆跡候補「apple」の上の位置(C1、R3)に表示されている。
もし4番目に高優先度の筆跡候補「appreciate」が筆跡候補「application」の上に表示されたならば、現在のペン位置から筆跡候補「appreciate」の表示位置までの距離が長くなり過ぎる可能性がある。つまり、筆跡候補「appreciate」を選択するためにはペン先を大きく上下方向に移動させる操作が必要となる可能性がある。
このため、4番目に高優先度の筆跡候補「appreciate」は、筆跡候補「apple」の右隣りの位置(C2,R1)に表示される。位置(C2,R1)は、列C1の右隣の列C2内の一番下の位置である。位置(C2,R1)をペンによって選択するためには、ユーザは手首を僅かに右上方向に向けて回転させる必要がある。しかし、この位置(C2,R1)は現在のペンの位置から比較的近い。よって、位置(C2,R1)は、位置(C1、R3)の次に操作しやすい位置である。
このように、本実施形態では、ユーザが選択する可能性の高い筆跡候補ほど、選択しやすい位置に表示することができる。よって、筆跡候補のスムーズな選択操作が可能となる。しかも、筆跡候補リストボックス701は、複数の列を含むので、ユーザに多くの筆跡候補を提示することができる。
図8、図9では、筆跡候補リストボックス701が3行×3列の表構造を有している場合を例示したが、筆跡候補リストボックス701の列数は2であってもよい。また筆跡候補リストボックス701の行数は2であってもよい。
図10は、筆跡候補リストボックス701の別の例を示す。
ここでは、筆跡候補リストボックス701は、列C1と、列C1と横方向に並ぶ列C2とから構成されている。つまり、筆跡候補リストボックス701は、3行×2列の表構造を有している。
最も高優先度の筆跡候補は、仮ストロークの入力位置の近傍の、列C1内の位置(C1、R1)に表示される。2番目に高優先度の筆跡候補は、位置(C1、R1)と縦方向に並ぶ、列C1内の位置(C1、R2)に表示される。
位置(C1、R1)と横方向に並ぶ、列2内の位置(C2、R1)においては、少なくとも2番目に高優先度の筆跡候補よりも優先度の低い筆跡候補が表示される。たとえば、図10に示されるように筆跡候補リストボックス701が3つ行を含む場合には、4番目に高優先度の筆跡候補が位置(C2、R1)に表示される。なお、筆跡候補リストボックス701が2つ行を含む場合には、3番目に高優先度の筆跡候補が位置(C2、R1)に表示される。
仮ストロークに類似する筆跡候補の数が4つしか存在しない場合には、位置(C2、R2)、位置(C2、R3)はブランクであってもよい。
図11は仮ストロークを選択された筆跡候補で補完する処理を説明するための図である。
例えば筆跡候補「apple」がペンによってタップされたならば、仮ストローク列611〜613の代わりに、筆跡候補「apple」が入力(エンター)される。つまり、仮ストローク列611〜613は手書き文字列「apple」801に置換される。筆跡候補リストボックス701は編集ビューエリア504から消える。
エンターされた手書き文字列「apple」801に後続して新たな仮ストロークが手書きによって入力されたならば、この新たな仮ストロークから定められる筆跡候補を含む新たな筆跡候補リストボックス701が表示される。この新たな筆跡候補リストボックス701は、その左列C1がこの新たな仮ストローク上に位置する位置に、表示される。
なお、筆跡候補リストボックス701の中に所望の筆跡が含まれていない場合、ユーザは仮ストローク列611〜613に後続する位置にさらに新たな仮ストロークを手書きする。この場合、筆跡候補リストボックス701の表示位置は変更されず、筆跡候補リストボックス701内の筆跡候補のみが更新される。つまり、筆跡候補リストボックス701内の筆跡候補は、仮ストローク列611〜613と新たな仮ストロークとから定められる筆跡候補に更新される。
図12は、仮ストロークの入力位置の下側に筆跡候補リストボックス701を表示する例を示す。
上の説明では、筆跡候補リストボックス701は仮ストロークの入力位置の上側に表示したが、仮ストロークがページの上部に入力された場合は、その仮ストロークの上側に表示スペースを確保できない。このため、ボックス表示制御部308Bは、仮ストロークの入力位置に応じて、筆跡候補リストボックス701を仮ストロークの入力位置の上側または下側のいずれかに表示する。
ボックス表示制御部308Bは、例えば編集ビューエリア504の上部エリアに仮ストロークが入力された場合は、図12に示されているように、筆跡候補リストボックス701を仮ストロークの入力位置の下側に表示する。
ボックス表示制御部308Bは、優先度(優先順位)の高い候補を左端の列の上から順に下方向に表示し、予め定めた数(ここでは3)の筆跡候補を表示したら右隣の列の上から順に筆跡候補の続きを表示する。
図13は、図12の筆跡候補リストボックス701を拡大表示した図である。
図13において、点線の矢印は筆跡候補の優先度の順序を示している。矢印の始点の筆跡候補、つまり手書き文字列「apple」に対応する筆跡候補は、最も高優先度の筆跡候補である。2番目に高優先度の筆跡候補は手書き文字列「apply」である。3番目に高優先度の筆跡候補は手書き文字列「applicaion」である。4番目に高優先度の筆跡候補は手書き文字列「appreciate」である。5番目に高優先度の筆跡候補は手書き文字列「append」である。6番目に高優先度の筆跡候補は手書き文字列「appendix」である。7番目に高優先度の筆跡候補は手書き文字列「approved」である。8番目に高優先度の筆跡候補は手書き文字列「appointed」である。9番目に高優先度の筆跡候補は手書き文字列「approximate」である。
このように、最も高い優先度の筆跡候補「apple」は、仮ストロークの入力位置(現在のペンの位置)に一番近い位置(C1,R3)に表示される。上述したように、ペンを横方向(左右)に動かすよりも縦方向(上下)に動かす方が必要な手の動きは少ない。このため、2番目に高優先度の筆跡候補は、筆跡候補「apple」の右隣の位置(C2、R3)ではなく、筆跡候補「apple」の下の位置(C1、R2)に表示されている。3番目に高優先度の筆跡候補「application」は筆跡候補「apple」の下の位置(C1、R1)に表示されている。
もし4番目に高優先度の筆跡候補「appreciate」が筆跡候補「application」の下に表示されたならば、現在のペン位置から筆跡候補「appreciate」の表示位置までの距離が長くなり過ぎる可能性がある。つまり、筆跡候補「appreciate」を選択するためにはペン先を大きく上下方向に移動させる操作が必要となる可能性がある。
このため、4番目に高優先度の筆跡候補「appreciate」は、筆跡候補「apple」の右隣りの位置(C2,R3)に表示される。位置(C2,R3)は、列C1の右隣の列C2内の一番上の位置である。位置(C2,R3)をペンによって選択するためには、ユーザは手首を僅かに左下方向に向けて回転させる必要がある。しかし、この位置(C2,R3)は現在のペンの位置から比較的近い。よって、位置(C2,R3)は、位置(C1、R1)の次に操作しやすい位置である。
このように、本実施形態では、ボックス表示制御部308Bは、筆跡候補リストボックス701が仮ストロークの上側または下側のどちらに表示されるかに応じて、筆跡候補リストボックス701内の筆跡候補の並びを自動的に変更する。
筆跡候補リストボックス701が仮ストロークの上側に表示される場合には、最も高い優先度の筆跡候補は2番目に高優先度の筆跡候補の下側に表示される。一方、筆跡候補リストボックス701が仮ストロークの下側に表示される場合には、最も高い優先度の筆跡候補は2番目に高優先度の筆跡候補の上側に表示される。
これにより、筆跡候補リストボックス701が仮ストロークの上側または下側のどちらに表示される場合でも、ユーザが選択する可能性の高い筆跡候補ほど、選択しやすい位置に表示することができる。
図14は右利きモードにおいて表示される筆跡候補リストボックス701の構造と左利きモードにおいて表示される筆跡候補リストボックス701’の構造との関係を示す。
図9、図13等を参照して説明した筆跡候補リストボックス701は右利きモードに適したレイアウトを有している。ボックス表示制御部308Bは、右利きモードが有効である場合には、図14の上部に示される筆跡候補リストボックス701を表示する。この筆跡候補リストボックス701においては、列C2が列C1の右隣に位置し、かつ列C3が列C2の右隣に位置している。
一方、左利きモードが有効である場合には、ボックス表示制御部308Bは、図14の下部に示される筆跡候補リストボックス701’を表示する。この筆跡候補リストボックス701’においては、列C2が列C1の左隣に位置し、かつ列C3が列C2の左隣に位置している。
図15は左利きモードにおける仮ストロークの入力位置と筆跡候補リストボックス701’の表示位置との関係を示す。
筆跡候補リストボックス701’の列C1は仮ストロークの入力位置の上側に位置する。そして列C2が列C1の左隣に位置し、かつ列C3が列C2の左隣に位置する。
したがって、左で手書き入力操作を行う場合であっても、手の位置を大きく動かすことなく、目的の筆跡候補をスムーズに選択することができる。
次に、図16を参照して、筆跡候補リストボックス701の更新時の表示形態を説明する。ユーザによって文字「w」に対応する仮ストロークが入力された場合、例えば、9つの筆跡候補「world」、「web」、「war」…「when」を含む筆跡候補リストボックス701が表示される。優先度は、筆跡候補「World」が1位であり、「Web」が2位、「War」が3位であり、そして「when」が9位である。このため、筆跡候補「World」は列C1の一番下に表示される。
文字「w」に対応する仮ストロークの入力の後に、ユーザによって文字「o」に対応する仮ストロークが入力された場合、これら2つの仮ストロークから筆跡候補が新たに定められる。今、9つの筆跡候補「word」、「world」、「worth」、…「woe」が2つの仮ストロークから定まる新たな入力の候補として決定された場合を想定する。優先度は、筆跡候補「word」が1位であり、「world」が2位、「worth」が3位であり、そして「woe」が9位である。
この場合、通常では、筆跡候補「world」は筆跡候補リストボックス701内の列C1の下から2番目のエントリに表示される。しかし、筆跡候補「World」は前回から表示されている筆跡候補であるので、ユーザは、筆跡候補「World」が筆跡候補リストボックス701内の列C1の一番下にあることを覚えている可能性がある。
このため、本実施形態では、前回表示された筆跡候補と同じ筆跡候補は、新たな入力の候補内におけるこの筆跡候補の優先度の順位と関係なく、筆跡候補リストボックス701内の同じ場所に表示される。すなわち、前回と今回の共通の筆跡候補「world」に関しては、筆跡候補リストボックス701内の表示位置は変更されない。この結果、筆跡候補「world」は、前回と同じ筆跡候補リストボックス701内の表示位置、つまり列C1の1番下に表示される。他の筆跡候補「Word」、「Worth」、…はこれらの優先度の関係に従って並べられる。
なお、ここでは、前回と今回の共通の筆跡候補「world」の前回の優先度が1位であったので、筆跡候補「world」を前回と同じ列C1の1番下に表示したが、もし筆跡候補「world」の前回の優先度が3位であったならば、筆跡候補「world」は前回と同じ列C1の1番上に表示される。
次に、図17〜図21を参照して、仮ストローク列の入力が継続されている間に、筆跡候補の予測に使用される仮ストローク列の起点を自動的に変更する処理について説明する。
例えば、ユーザが手書き文字列「a pendant」の入力を意図している場合を想定する。
図17に示されるように、ユーザによって文字「a」に対応する仮ストローク611と、文字「p」に対応する仮ストローク612、613が手書きによってペンによって入力されたとすると、これら仮ストローク列の上部に筆跡候補リストボックス701が表示される。なお、文字「a」に対応する仮ストローク611が入力された時点で、仮ストローク611の上部に筆跡候補リストボックス701が表示されもよい。
筆跡候補リストボックス701においては、例えば、各々が「ap」から始まる9つの筆跡候補(手書き文字列)が表示される。
ユーザが意図した筆跡候補は筆跡候補リストボックス701内に存在しない。このため、図18に示すように、ユーザは、どの筆跡候補も選択せずに、仮ストローク611〜613に後続して文字「e」に対応する仮ストローク614をペンによって入力する。自動補完処理部308Aは、図18に示すように、筆跡候補リストボックス701の筆跡候補を更新し、仮ストローク611〜613と仮ストローク614から定まる新たな入力の候補である9つの筆跡候補を筆跡候補リストボックス701に表示する。新たな入力の候補である9つの筆跡候補の各々は、「ape」から始まる手書き文字列である。この場合、筆跡候補リストボックス701の表示位置は変更されない。つまり、筆跡候補リストボックス701の表示位置は、筆跡候補リストボックス701の左端の列が仮ストローク611(または仮ストローク611、612)の上部に位置する位置に固定される。これにより、筆跡候補リストボックス701の筆跡候補を即座に更新することが可能となる。
ユーザが意図した筆跡候補は筆跡候補リストボックス701内に存在しない。このため、ユーザは、図19に示すように、どの筆跡候補も選択せずに、仮ストローク611〜614に後続して文字「n」に対応する仮ストローク615をペンによって入力する。
自動補完処理部308Aは、どの筆跡候補も選択されずに仮ストロークの入力が継続されていることを認識する。この場合、自動補完処理部308Aは、最初に入力された文字「a」に対応する仮ストローク611を入力(エンター)されたストロークに決定し、仮ストローク611〜615から、この仮ストローク611を取り除く。そして、自動補完処理部308Aは、図19に示すように、仮ストローク612〜615から定まる新たな入力の候補である9つの筆跡候補を筆跡候補リストボックス701に表示する。新たな入力の候補である9つの筆跡候補の各々は、「pen」から始まる手書き文字列である。これら9つの筆跡候補には、手書き文字列「pendant」に対応する筆跡候補が含まれている。
図20に示されるように、ユーザは、手書き文字列「pendant」に対応する筆跡候補をペンによって選択する。
そして、図21に示すように、自動補完処理部308Aは、手書き文字列「pen」に対応する仮ストローク612〜615に代えて、手書き文字列「pendant」に対応する筆跡802を編集ビューエリア504に入力する。筆跡候補リストボックス701は編集ビューエリア504から消える。
上述したように、どの筆跡候補も選択されずに仮ストローク列の入力が継続されている間は、筆跡候補リストボックス701の表示位置は変更されない。このため、仮ストローク列の入力が継続されるにつれて、現在のペンの位置が、筆跡候補リストボックス701の左端の列から離れていく。
本実施形態では、このような状況においては仮ストローク列の起点を自動的に変更する処理が実行される。したがって、ユーザが意図する筆跡候補を提示できる可能性が高くなる。
例えば、自動補完処理部308Aは、仮ストローク列(仮筆跡)の外接矩形の高さ(h)に対する幅(w)の比率、つまりw/hが、ある閾値を超えたことを条件に、仮ストローク列の起点を自動的に変更する処理を実行してもよい。あるいは、自動補完処理部308Aは、仮ストロークの数がある閾値を超えたことを条件に、仮ストローク列の起点を自動的に変更する処理を実行してもよい。
図22のフローチャートは、手書きノートアプリケーションプログラム202の制御の下にCPU101よって実行される自動補完処理の手順を示す。
自動補完モードがオンの場合(ステップS11のYES)、CPU101は、仮ストロークが手書きによって入力された時に、その仮ストロークの編集ビューエリア504上の入力位置を検出する(ステップS12)。CPU101は、仮ストロークを編集ビューエリア504上に表示するための処理を実行する(ステップS13)。そして、CPU101は、仮ストロークの入力位置から定まる位置、例えば、仮ストロークの入力位置の上部または下部に、筆跡候補の表示領域である筆跡候補リストボックス701を表示する(ステップS14)。筆跡候補リストボックス701においては、仮ストロークから定まる筆跡候補のリストが表示される。
なお、仮ストロークに対応する手書き文字の入力方向に応じて、つまり横書き/縦書きに応じて、筆跡候補リストボックス701の表示位置が変更されても良い。この場合、仮ストロークに対応する手書き文字の入力方向が横方向、つまり横書きの場合には、筆跡候補リストボックス701は、仮ストロークの入力位置の上部または下部に表示されても良い。一方、仮ストロークに対応する手書き文字の入力方向が縦方向、つまり縦書きの場合には、筆跡候補リストボックス701は、例えば、仮ストロークの入力位置の右部または左部に表示されても良い。
CPU101は、仮ストロークがさらに手書き入力されたか否かを判定する(ステップS15)。仮ストロークがさらに手書き入力された場合(ステップS15のYES)、CPU101は、ステップS14〜ステップS15を再度実行する。なお、仮ストロークがさらに手書き入力された時の筆跡候補リストボックス表示処理(ステップS15)では、CPU101は、筆跡候補リストボックス701の表示位置を変更せずに、筆跡候補リストボックス701内の筆跡候補を変更する。筆跡候補リストボックス701内の筆跡候補は、最初に入力された仮ストロークから定められる筆跡候補の集合から、最初に入力された仮ストロークと次に入力された仮ストロークとから定められる筆跡候補の集合に変更される。
さらなる仮ストロークが手書き入力されない場合(ステップS15のNO)、CPU101は、筆跡候補が選択されたか否かを判定する(ステップS16)。筆跡候補がユーザによって選択された場合(ステップS16のYES)、CPU101は、選択された筆跡候補のサイズを調整する(ステップS17)。そして、CPU101は、仮ストロークを選択された筆跡候補を使用して補完して、選択された筆跡候補を確定(エンター)された筆跡にする(ステップS18)。ステップS18では、仮ストロークの代わりに、選択された筆跡候補が入力される。
どの筆跡候補も選択されない場合(ステップS16のNO)、CPU101は、確定(confirm)ボタンがタップされたか否かを判定する(ステップS19)。確定(confirm)ボタンがタップされた場合(ステップS19のYES)、CPU101は、仮ストロークを確定(エンター)された筆跡にする(ステップS20)。
確定ボタンがタップされない場合(ステップS19のNO)、処理は、仮ストロークがさらに手書き入力されたかを判定するためのステップS16に戻る。
図23のフローチャートは、手書きノートアプリケーションプログラム202の制御の下にCPU101よって実行される筆跡候補リストボックス表示処理の手順を示す。
CPU101は、入力された1以上の仮ストロークから幾つかの筆跡候補(例えば9個の筆跡候補)を決定する(ステップS31)。そして、CPU101は、これら筆跡候補を画面上に表示する(ステップS32)。ステップS32では、これら筆跡候補は、これら筆跡候補の優先度に従って、画面上の筆跡候補リストボックス701に表示される。
最も優先度が高い候補筆跡(第1筆跡候補)は、仮ストロークの入力位置から定まる、筆跡候補リストボックス701内の第1位置に表示される。例えば、筆跡候補リストボックス701が仮ストロークの入力位置の上部に表示される場合には、第1筆跡候補は、列C1内の一番下の位置に表示される。一方、筆跡候補リストボックス701が仮ストロークの入力位置の下部に表示される場合には、第1筆跡候補は、列C1内の一番上の位置に表示される。
2番目に優先度が高い候補筆跡(第2筆跡候補)は、第1位置と縦方向に並ぶ第2位置に表示される。例えば、筆跡候補リストボックス701が仮ストロークの入力位置の上部に表示される場合には、第2筆跡候補は、列C1内の下から2番目の位置に表示される。一方、筆跡候補リストボックス701が仮ストロークの入力位置の下部に表示される場合には、第2筆跡候補は、列C1内の上から2番目の位置に表示される。
そして、少なくとも第2筆跡候補よりも低い優先度を有する候補筆跡(第3筆跡候補)は、第1位置と横方向に並ぶ第3位置に表示される。列C1に優先度の高い上位3つの筆跡候補が表示されるケースにおいては、第3筆跡候補は4番目に優先度の高い筆跡候補である。一方、列C1に優先度の高い上位2つの筆跡候補が表示されるケースにおいては、第3筆跡候補は4番目に優先度の高い筆跡候補である。筆跡候補リストボックス701が仮ストロークの入力位置の上部に表示される場合には、第3筆跡候補は、列C2内の一番下の位置に表示される。一方、筆跡候補リストボックス701が仮ストロークの入力位置の下部に表示される場合には、第3筆跡候補は、列C2内の一番上の位置に表示される。
CPU101は、仮ストロークがさらに手書き入力されたか否かを判定する(ステップS33)。仮ストロークがさらに手書き入力された場合(ステップS33のYES)、CPU101は、既に入力されている1以上のストロークおよびさらに入力されたストロークから新たな入力の候補である複数の筆跡を決定する(ステップS34)。
CPU101は、筆跡候補リストボックス701に前回表示された筆跡の何れかと同一の筆跡が上述の新たな入力の候補である複数の筆跡に含まれるか否かを判定する(ステップS35)。
前回表示された筆跡の何れかと同一の筆跡が上述の新たな入力の候補である複数の筆跡に含まれている場合(ステップS35のYES)、CPU101は、同一の筆跡を、上述の新たな入力の候補内における同一の筆跡の優先度の順位と関係なく、同一の筆跡を、前回表示された筆跡候補リストボックス701の位置と同一位置に表示する(ステップS36)。新たな入力の候補内の他の筆跡それぞれは、それらの優先度にしたがって、筆跡候補リストボックス701内の残りの位置にそれぞれ表示される。
前回表示された筆跡の何れかと同一の筆跡が上述の新たな入力の候補である複数の筆跡に含まれていない場合(ステップS35のNO)、CPU101は、新たな入力の候補である複数の筆跡を、それらの優先度にしたがって、筆跡候補リストボックス701にそれぞれ表示する(ステップS37)。
図24のフローチャートは、筆跡候補リストボックス表示処理の手順の他の例を示す。
図24のフローチャートにおいては、図23のフローチャートで説明した処理に、ステップS41、S42の処理が追加されている。
仮ストロークがさらに手書き入力された場合(ステップS33のYES)、CPU101は、仮ストローク列の起点を自動的に変更するための条件(仮ストローク列起点変更条件)が満たされているか否かを判定する(ステップS41)。この仮ストローク列起点変更条件が満たされているか否かは、(1)仮ストローク列(仮筆跡)の外接矩形の高さ(h)に対する幅(w)の比率がある閾値を超えたか否か、(2)入力された仮ストロークの数がある閾値を超えたか否か、少なくとも1つに基づいて判定されてもよい。
仮ストローク列起点変更条件が満たされた場合(ステップS41のYES)、CPU101は、筆跡候補の予測に使用されるべき仮ストローク列の起点を変更する(ステップS34)。すなわち、CPU101は、現在の仮ストローク列の先頭の仮ストロークを入力(エンター)されたストロークに決定する。そして、CPU101は、現在の仮ストローク列から先頭の仮ストロークを除く残りのストローク列から、新たな入力の候補である複数の筆跡を決定する。
以上説明したように、本実施形態においては、自動補完モードにおいて入力されるストローク(仮ストローク)から定められる複数の筆跡が入力の候補として表示領域(筆跡候補リストボックス)に表示される。筆跡候補リストボックスは、少なくとも、仮ストロークの入力位置に対応する位置に表示される第1領域(列C1)と、第1領域と横方向に並ぶ第2領域(列C2)とを含む。これら複数の筆跡内の最も高優先度の筆跡(第1筆跡)は、仮ストロークの入力位置の近傍の、第1領域(列C1)内の第1位置に表示される。そして、2番目に高優先度の第2筆跡は、第1位置と縦方向に並ぶ、第1領域内の第2位置に表示される。そして、これら複数の筆跡の内の第3筆跡であって少なくとも第2筆跡よりも低い優先度を有する第3筆跡は、第1位置と横方向に並ぶ、第2領域(列C2)内の第3位置に表示される。
したがって、ユーザによって最も選択される可能性が高い第1筆跡については最も選択しやすい位置、つまり仮ストロークの入力位置に最も近い、第1領域(列C1)内の第1位置に表示される。また、ユーザによって2番目に選択される可能性が高い第2筆跡については、第1位置と横方向に並ぶ上述の第3位置ではなく、第1位置と縦方向に並ぶ上述の第2位置に表示される。ペン先を縦方向に移動する操作は、手首を動かすことなく、指先を僅かに動かすだけで容易に行うことができる。よって、第1筆跡および第2筆跡が第1領域において縦方向に並べられた状態で表示されることにより、選択される可能性が高い筆跡それぞれを選択しやすい位置に表示することができる。したがって、選択される可能性が高い筆跡候補ほど、選択しやすい位置に表示することができ、これによりスムーズな手書き入力を実現できる。
さらに、本実施形態では、仮ストロークの上部に筆跡候補リストボックスが表示される場合においては、優先度の高い筆跡候補が第1領域の下から順に上方向に表示され、予め定めた数を表示したら隣の第2領域の下から順に候補の続きが表示される。また、仮ストロークの上部に筆跡候補リストボックスが表示される場合においては、優先度の高い筆跡候補が第1領域の上から順に下方向に表示され、予め定めた数を表示したら隣の第2領域の上から順に候補の続きが表示される。
したがって、筆跡候補リストボックスが仮ストロークの上部または下部のどちらに表示される場合でも、選択される可能性が高い筆跡候補ほど、選択しやすい位置に表示することができる。
なお、本実施形態に記載された様々な機能の各々は、処理回路によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
また、本実施形態の各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
このコンピュータプログラムがインストールされたコンピュータ内のCPUは上述の筆跡補完処理を実行するように構成されたプロセッサとして機能し得る。このコンピュータ内の表示コントローラはストロークそれぞれを画面上に表示するように構成された表示プロセッサとして機能し得る。
また、本実施形態では、タブレットコンピュータを使用する場合を例示して説明したが、本実施形態の手書き文書処理機能は、通常のデスクトップパーソナルコンピュータに適用することもできる。この場合、手書き入力のための入力デバイスであるタブレット等をデスクトップパーソナルコンピュータに接続すれば良い。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。