(57)【要約】【課題】入力が予測される文字列の候補を効果的に提示できる電子機器を実現する。【解決手段】実施形態によれば、電子機器は表示処理手段を具備する。表示処理手段は、タッチスクリーンディスプレイの画面上で手書きにより入力される１以上の第１ストロークを表示する。前記表示処理手段は、手書き文書に含まれる複数の手書き文字列の内、前記１以上の第１ストロークに対応する１以上の手書き文字を含む複数の候補を、前記画面に表示するものであって、前記複数の候補は、それぞれの候補を構成するストロークの数に応じた順番で並べて表示される。【選択図】図９
2015094977.tif 000002
【特許請求の範囲】
【請求項１】
タッチスクリーンディスプレイの画面上で手書きにより入力される１以上の第１ストロークを表示する表示処理手段を具備し、
前記表示処理手段は、手書き文書に含まれる複数の手書き文字列の内、前記１以上の第１ストロークに対応する１以上の手書き文字を含む複数の候補を、前記画面に表示するものであって、
前記複数の候補は、それぞれの候補を構成するストロークの数に応じた順番で並べて表示される電子機器。
【請求項２】
前記複数の候補は、それぞれ、前記１以上の第１ストロークに対応する１以上の手書き文字と、前記１以上の第１ストロークに対応しない１以上の手書き文字とを含む手書き文字列であって、
前記複数の候補は、前記１以上の第１ストロークに対応しない１以上の手書き文字を構成するストロークの数に応じた順番で並べて表示される請求項１記載の電子機器。
【請求項３】
前記表示処理手段は、前記表示された複数の候補から第１候補が選択されたことに応じて、前記１以上の第１ストロークを前記第１候補を構成する１以上の第２ストロークに置き換えることによって、前記１以上の第２ストロークを前記画面に表示する請求項１記載の電子機器。
【請求項４】
前記表示処理手段は、前記複数の候補それぞれを構成するストロークに対応する特徴量を用いて、前記複数の候補の内、前記１以上の第１ストロークに対応する特徴量との類似度がしきい値以上である特徴量をそれぞれ有する１以上の候補を、前記画面に表示し、
前記１以上の候補は、それぞれの候補を構成するストロークの数に応じた順番で並べて表示される請求項１記載の電子機器。
【請求項５】
前記複数の候補は、さらに、それぞれの候補を構成するストロークの数と、それぞれの候補を構成するストロークの長さの総和と、それぞれの候補を構成するストロークを表す座標の数と、それぞれの候補を構成するストロークを手書きするために要した時間との内の少なくとも１つに応じた順番で並べて表示される請求項１記載の電子機器。
【請求項６】
タッチスクリーンディスプレイの画面上で手書きにより入力される１以上の第１ストロークを表示することと、
手書き文書に含まれる前記複数の手書き文字列の内、前記１以上の第１ストロークに対応する１以上の手書き文字を含む複数の候補を、前記画面に表示することとを具備し、
前記複数の候補は、それぞれの候補を構成するストロークの数に応じた順番で並べて表示される方法。
【請求項７】
前記複数の候補は、それぞれ、前記１以上の第１ストロークに対応する１以上の手書き文字と、前記１以上の第１ストロークに対応しない１以上の手書き文字とを含む手書き文字列であって、
前記複数の候補は、前記１以上の第１ストロークに対応しない１以上の手書き文字を構成するストロークの数に応じた順番で並べて表示される請求項６記載の方法。
【請求項８】
前記表示された複数の候補から第１候補が選択されたことに応じて、前記１以上の第１ストロークを前記第１候補を構成する１以上の第２ストロークに置き換えることによって、前記１以上の第２ストロークを前記画面に表示することをさらに具備する請求項６記載の方法。
【請求項９】
前記候補を表示することは、前記複数の候補それぞれを構成するストロークに対応する特徴量を用いて、前記複数の候補の内、前記１以上の第１ストロークに対応する特徴量との類似度がしきい値以上である特徴量をそれぞれ有する１以上の候補を、前記画面に表示することを含み、
前記１以上の候補は、それぞれの候補を構成するストロークの数に応じた順番で並べて表示される請求項６記載の方法。
【請求項１０】
前記複数の候補は、さらに、それぞれの候補を構成するストロークの数と、それぞれの候補を構成するストロークの長さの総和と、それぞれの候補を構成するストロークを表す座標の数と、それぞれの候補を構成するストロークを手書きするために要した時間との内の少なくとも１つに応じた順番で並べて表示される請求項６記載の方法。
【請求項１１】
コンピュータにより実行されるプログラムであって、前記プログラムは、
タッチスクリーンディスプレイの画面上で手書きにより入力される１以上の第１ストロークを表示する手順と、
手書き文書に含まれる複数の手書き文字列の内、前記１以上の第１ストロークに対応する１以上の手書き文字列を含む複数の候補を、前記画面に表示する手順とを前記コンピュータに実行させ、
前記複数の候補は、それぞれの候補を構成するストロークの数に応じた順番で並べて表示されるプログラム。
【請求項１２】
前記複数の候補は、それぞれ、前記１以上の第１ストロークに対応する１以上の手書き文字と、前記１以上の第１ストロークに対応しない１以上の手書き文字とを含む手書き文字列であって、
前記複数の候補は、前記１以上の第１ストロークに対応しない１以上の手書き文字を構成するストロークの数に応じた順番で並べて表示される請求項１１記載のプログラム。
【請求項１３】
前記表示された複数の候補から第１候補が選択されたことに応じて、前記１以上の第１ストロークを前記第１候補を構成する１以上の第２ストロークに置き換えることによって、前記１以上の第２ストロークを前記画面に表示する手順を前記コンピュータにさらに実行させる請求項１１記載のプログラム。
【請求項１４】
前記候補を表示する手順は、前記複数の候補それぞれを構成するストロークに対応する特徴量を用いて、前記複数の候補の内、前記１以上の第１ストロークに対応する特徴量との類似度がしきい値以上である特徴量をそれぞれ有する１以上の候補を、前記画面に表示する手順を含み、
前記１以上の候補は、それぞれの候補を構成するストロークの数に応じた順番で並べて表示される請求項１１記載のプログラム。
【請求項１５】
前記複数の候補は、さらに、それぞれの候補を構成するストロークの数と、それぞれの候補を構成するストロークの長さの総和と、それぞれの候補を構成するストロークを表す座標の数と、それぞれの候補を構成するストロークを手書きするために要した時間との内の少なくとも１つに応じた順番で並べて表示される請求項１１記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、文字を手書き入力する技術に関する。
【背景技術】
【０００２】
近年、タブレット、ＰＤＡ、スマートフォンといった種々の電子機器が開発されている。この種の電子機器の多くは、ユーザによる入力操作を容易にするために、タッチスクリーンディスプレイを備え、手書きするための機能を有するものもある。そのためユーザは、この電子機器を用いて、テキストや画像だけでなく、手書きの文字や図形も含む文書を作成することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２５５６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ユーザが単語のような文字列を入力するときに、これまでに入力された文字列の履歴を用いてユーザによる入力を補助する方法がある。本発明の一形態は、入力が予測される文字列の候補を効果的に提示できる電子機器及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、電子機器は表示処理手段を具備する。表示処理手段は、タッチスクリーンディスプレイの画面上で手書きにより入力される１以上の第１ストロークを表示する。前記表示処理手段は、手書き文書に含まれる複数の手書き文字列の内、前記１以上の第１ストロークに対応する１以上の手書き文字を含む複数の候補を、前記画面に表示するものであって、前記複数の候補は、それぞれの候補を構成するストロークの数に応じた順番で並べて表示される。
【図面の簡単な説明】
【０００６】
【図１】実施形態に係る電子機器の外観を示す例示的な斜視図。
【図２】同実施形態の電子機器のタッチスクリーンディスプレイ上に手書きされるストロークの例を示す図。
【図３】同実施形態の電子機器によって記憶媒体に保存される、図２の手書きストロークに対応する時系列情報（ストロークデータ）を説明するための例示的な図。
【図４】同実施形態の電子機器のシステム構成を示す例示的なブロック図。
【図５】キーワードが手書き入力される検索画面に、予測入力による候補文字列が表示される例を示す図。
【図６】図５の検索画面に、キーワードを構成するストロークがさらに手書きされる例を示す図。
【図７】同実施形態の電子機器による予測入力のための候補文字列の取得について説明するための概念図。
【図８】同実施形態の電子機器によって、キーワードが手書き入力される検索画面に予測入力による候補文字列が表示される例を示す図。
【図９】同実施形態の電子機器によって実行される予測入力ユーティリティプログラムの機能構成を示す例示的なブロック図。
【図１０】同実施形態の電子機器によって用いられる手書き文字列データの一構成例を示す図。
【図１１】同実施形態の電子機器によって、入力中の文字列を構成する手書きストロークに基づいて、図１０の手書き文字列データから類似度順の手書き文字列が取得される例を示す図。
【図１２】同実施形態の電子機器によって、図１１の類似度順の手書き文字列が、文字列を構成するストロークの数に基づいて並べ替えられる例を示す図。
【図１３】図８の検索画面に表示される予測入力による候補文字列の一部を選択する操作を説明するための図。
【図１４】同実施形態の電子機器によって、手書き文書上に予測入力による候補文字列が表示される第１の例を示す図。
【図１５】同実施形態の電子機器によって、手書き文書上に予測入力による候補文字列が表示される第２の例を示す図。
【図１６】同実施形態の電子機器によって、手書き文書上に予測入力による候補文字列が表示される第３の例を示す図。
【図１７】同実施形態の電子機器によって、候補文字列から選択された文字列が手書き文書上に描画される例を示す図。
【図１８】同実施形態の電子機器によって実行される手書き入力処理の手順の例を示すフローチャート。
【図１９】同実施形態の電子機器によって実行される予測入力処理の手順の例を示すフローチャート。
【発明を実施するための形態】
【０００７】
以下、実施の形態について図面を参照して説明する。
【０００８】
図１は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、ペン又は指によって手書き入力可能なペン・ベースの携帯型電子機器である。この電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、ＰＤＡ等として実現され得る。以下では、この電子機器がタブレットコンピュータ１０として実現されている場合を想定する。タブレットコンピュータ１０は、タブレット又はスレートコンピュータとも称される携帯型電子機器であり、図１に示すように、本体１１とタッチスクリーンディスプレイ１７とを備える。タッチスクリーンディスプレイ１７は、本体１１の上面に重ね合わせるように取り付けられている。
【０００９】
本体１１は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ１７には、フラットパネルディスプレイと、フラットパネルディスプレイの画面上のペン又は指の接触位置を検出するように構成されたセンサとが組み込まれている。フラットパネルディスプレイは、例えば、液晶表示装置（ＬＣＤ）であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザなどを使用することができる。以下では、デジタイザとタッチパネルである２種類のセンサの双方がタッチスクリーンディスプレイ１７に組み込まれている場合を想定する。
【００１０】
デジタイザ及びタッチパネルの各々は、フラットパネルディスプレイの画面を覆うように設けられる。このタッチスクリーンディスプレイ１７は、指を使用した画面に対するタッチ操作のみならず、ペン１００を使用した画面に対するタッチ操作も検出することができる。ペン１００は例えば電磁誘導ペンである。
【００１１】
ユーザは、外部オブジェクト（ペン１００又は指）を使用してタッチスクリーンディスプレイ１７上で、手書きにより複数のストロークを入力する手書き入力操作を行うことができる。手書き入力操作中においては、画面上の外部オブジェクト（ペン１００又は指）の動きの軌跡、つまり手書き入力操作によって手書きされるストロークの軌跡（筆跡）がリアルタイムに描画され、これによって各ストロークの軌跡が画面上に表示される。外部オブジェクトが画面に接触されている間の外部オブジェクトの動きの軌跡が１ストロークに相当する。多数のストロークの集合、つまり多数の軌跡（筆跡）の集合が、手書きの文字又は図形などを構成する。
【００１２】
本実施形態では、このような手書きストローク（手書きの文字及び図形）は、イメージデータではなく、各ストロークの軌跡の座標列とストローク間の順序関係を示す時系列情報として記憶媒体に保存される。この時系列情報の詳細は図３を参照して後述するが、この時系列情報は、概して、複数のストロークにそれぞれ対応する時系列のストロークデータの集合を意味する。各ストロークデータは、手書きにより入力可能なある一つのストロークを表現可能なデータであればどのようなものであってもよく、例えば、このストロークの軌跡上の点それぞれに対応する座標データ系列（時系列座標）を含む。これらストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序つまり筆順に相当する。
【００１３】
タブレットコンピュータ１０は、記憶媒体から既存の任意の文書データを読み出し、この文書データに対応する文書、つまり、時系列情報によって示される複数のストロークそれぞれに対応する軌跡が描画された手書き文書を、画面上に表示することができる。
【００１４】
次いで、図２及び図３を参照して、ユーザによって手書きされたストローク（手書きの文字、マーク、図形、表など）と時系列情報との関係について説明する。図２は、ペン１００などを使用してタッチスクリーンディスプレイ１７上に手書きされる文書の例を示している。
【００１５】
この文書では、一旦手書きされた文字や図形などの上に、さらに別の文字や図形などが手書きされるというケースが多い。図２においては、「ＡＢＣ」の手書き文字列が「Ａ」、「Ｂ」、「Ｃ」の順番で手書きされ、この後に、手書きの矢印が、手書き文字「Ａ」のすぐ近くに手書きされた場合が想定されている。
【００１６】
手書き文字「Ａ」は、ペン１００などを使用して手書きされる２つのストローク（「∧」形状の軌跡、「−」形状の軌跡）によって、つまり２つの軌跡によって表現される。最初に手書きされる「∧」形状のペン１００の軌跡は例えば等時間間隔でリアルタイムにサンプリングされ、これによって「∧」形状のストロークの時系列座標ＳＤ１１、ＳＤ１２、…ＳＤ１ｎが得られる。同様に、次に手書きされる「−」形状のペン１００の軌跡もサンプリングされ、これによって「−」形状のストロークの時系列座標ＳＤ２１、ＳＤ２２、…ＳＤ２ｎが得られる。
【００１７】
手書き文字「Ｂ」は、ペン１００などを使用して手書きされた２つのストローク、つまり２つの軌跡によって表現される。手書き文字「Ｃ」は、ペン１００などを使用して手書きされた１つのストローク、つまり１つの軌跡によって表現される。手書きの矢印は、ペン１００などを使用して手書きされた２つのストローク、つまり２つの軌跡によって表現される。
【００１８】
図３は、図２の文書に対応する時系列情報２００を示している。時系列情報２００は、複数のストロークデータＳＤ１、ＳＤ２、…、ＳＤ７を含む。時系列情報２００内においては、これらストロークデータＳＤ１、ＳＤ２、…、ＳＤ７は、筆跡順に、つまり複数のストロークが手書きされた順に時系列に並べられている。
【００１９】
時系列情報２００において、先頭の２つのストロークデータＳＤ１、ＳＤ２は、手書き文字「Ａ」の２つのストロークをそれぞれ示している。３番目と４番目のストロークデータＳＤ３、ＳＤ４は、手書き文字「Ｂ」を構成する２つのストロークをそれぞれ示している。５番目のストロークデータＳＤ５は、手書き文字「Ｃ」を構成する１つのストロークを示している。６番目と７番目のストロークデータＳＤ６、ＳＤ７は、手書き矢印を構成する２つのストロークをそれぞれ示している。
【００２０】
各ストロークデータは、一つのストロークに対応する座標データ系列（時系列座標）、つまり一つのストロークの軌跡上の複数の点それぞれに対応する複数の座標を含む。各ストロークデータにおいて、複数の座標は、ストロークが書かれた順に時系列に並べられている。例えば、手書き文字「Ａ」に関しては、ストロークデータＳＤ１は、手書き文字「Ａ」の「∧」形状のストロークの軌跡上の点それぞれに対応する座標データ系列（時系列座標）、つまりｎ個の座標データＳＤ１１、ＳＤ１２、…ＳＤ１ｎを含む。ストロークデータＳＤ２は、手書き文字「Ａ」の「−」形状のストロークの軌跡上の点それぞれに対応する座標データ系列、つまりｎ個の座標データＳＤ２１、ＳＤ２２、…ＳＤ２ｎを含む。なお、座標データの数はストロークデータ毎に異なっていてもよい。
【００２１】
各座標データは、対応する軌跡内のある１点に対応するＸ座標及びＹ座標を示す。例えば、座標データＳＤ１１は、「∧」形状のストロークの始点のＸ座標（Ｘ１１）及びＹ座標（Ｙ１１）を示す。ＳＤ１ｎは、「∧」形状のストロークの終点のＸ座標（Ｘ１ｎ）及びＹ座標（Ｙ１ｎ）を示す。
【００２２】
また、各座標データは、その座標に対応する点が手書きされた時点に対応するタイムスタンプ情報Ｔを含んでいてもよい。手書きされた時点は、絶対時間（例えば、年月日時分秒）と、ある時点を基準とした相対時間のいずれであってもよい。例えば、各ストロークデータに、ストロークが書き始められた絶対時間（例えば、年月日時分秒）をタイムスタンプ情報として付加し、さらに、ストロークデータ内の各座標データに、絶対時間との差分を示す相対時間をタイムスタンプ情報Ｔとして付加してもよい。各座標データにタイムスタンプ情報Ｔが追加された時系列情報を使用することにより、ストローク間の時間的関係をより精度よく表すことができる。
【００２３】
さらに、各座標データは、その座標に対応する点が手書きされた時点の、外部オブジェクト（例えば、ペン１００）が画面に接触されたことによる圧力Ｐを含んでいてもよい。
【００２４】
本実施形態では、上述したように、手書きされるストロークは、イメージや文字認識結果ではなく、時系列のストロークデータの集合から構成される時系列情報２００として記憶されるので、言語に依存せずに手書きの文字や図形を扱うことができる。よって、本実施形態の時系列情報２００の構造は、使用言語が異なる世界中の様々な国で共通に使用できる。
【００２５】
図４は、タブレットコンピュータ１０のシステム構成を示す図である。  
タブレットコンピュータ１０は、図４に示されるように、ＣＰＵ１０１、システムコントローラ１０２、主メモリ１０３、グラフィクスコントローラ１０４、ＢＩＯＳ−ＲＯＭ１０５、不揮発性メモリ１０６、無線通信デバイス１０７、エンベデッドコントローラ（ＥＣ）１０８、等を備える。
【００２６】
ＣＰＵ１０１は、タブレットコンピュータ１０内の各種コンポーネントの動作を制御するプロセッサである。ＣＰＵ１０１は、ストレージデバイスである不揮発性メモリ１０６から主メモリ１０３にロードされる各種ソフトウェアを実行する。これらソフトウェアには、オペレーティングシステム（ＯＳ）２０１、及び各種アプリケーションプログラムが含まれている。アプリケーションプログラムには、予測入力ユーティリティプログラム２０２が含まれている。この予測入力ユーティリティプログラム２０２は、手書き入力された１以上のストロークに基づいて、入力が予測される文字列の候補を提示する予測入力機能（サジェスト機能）を有する。予測入力ユーティリティプログラム２０２は、この予測入力機能によって、例えば、検索キーワードのサジェスト機能、文書に入力される文字列の補完機能、等を実現する。
【００２７】
また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０５に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００２８】
システムコントローラ１０２は、ＣＰＵ１０１のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ１０２には、主メモリ１０３をアクセス制御するメモリコントローラも内蔵されている。また、システムコントローラ１０２は、ＰＣＩＥＸＰＲＥＳＳ規格のシリアルバスなどを介してグラフィクスコントローラ１０４との通信を実行する機能も有している。
【００２９】
グラフィクスコントローラ１０４は、本タブレットコンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７Ａを制御する表示コントローラである。このグラフィクスコントローラ１０４によって生成される表示信号はＬＣＤ１７Ａに送られる。ＬＣＤ１７Ａは、表示信号に基づいて画面イメージを表示する。このＬＣＤ１７Ａ上にはタッチパネル１７Ｂ及びデジタイザ１７Ｃが配置されている。タッチパネル１７Ｂは、ＬＣＤ１７Ａの画面上で入力を行うための静電容量式のポインティングデバイスである。指が接触される画面上の接触位置及び接触位置の動き等はタッチパネル１７Ｂによって検出される。デジタイザ１７ＣはＬＣＤ１７Ａの画面上で入力を行うための電磁誘導式のポインティングデバイスである。ペン１００が接触される画面上の接触位置、接触位置の動き、接触圧力、等はデジタイザ１７Ｃによって検出される。
【００３０】
無線通信デバイス１０７は、無線ＬＡＮ又は３Ｇ移動通信などの無線通信を実行するように構成されたデバイスである。ＥＣ１０８は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。ＥＣ１０８は、ユーザによるパワーボタンの操作に応じて本タブレットコンピュータ１０を電源オン又は電源オフする機能を有している。
【００３１】
上述したように、予測入力ユーティリティプログラム２０２は、予測入力機能を利用して、検索キーワードのサジェスト機能、文書に入力される文字列の補完機能、等を実現する。
【００３２】
図５は、キーワードが手書き入力される検索画面５０に、サジェスト機能によって候補文字列が表示される例を示す。この検索画面５０を用いた検索は、キーワードに基づく各種の検索のいずれであってもよく、例えば、文書内の該当部分の検索、ファイル検索、ウェブ検索、等である。ここでは、ユーザが、単語“ａｐｐｌｅ”に基づく検索が行おうとしている場合を想定する。
【００３３】
この検索画面５０には、例えば、キーワード入力エリア５１、検索ボタン５３、及び候補文字列５４１，５４２，５４３が含まれる。キーワード入力エリア５１は、タッチスクリーンディスプレイ１７を用いて、文字列（キーワード）を構成するストロークが手書き入力されるエリアである。検索ボタン５３は、キーワード入力エリア５１に入力されたキーワードに基づく検索の実行を指示するためのボタンである。候補文字列５４１，５４２，５４３は、キーワード入力エリア５１に手書き入力された文字列に基づいて入力が予測された文字列の候補を示すボタンである。
【００３４】
より具体的には、キーワード入力エリア５１に手書き文字列“ａｐ”が入力されている場合、すなわち、ストローク５２１，５２２，５２３が手書き入力されている場合、検索画面５０には、手書き文字列“ａｐ”に基づいて、入力が予測される候補文字列５４１，５４２，５４３が表示される。この候補文字列５４１，５４２，５４３は、例えば、文字列“ａｐ”で始まる文字列（手書き文字列）“ａｐｐｌｅ”、“ａｐｐｒｏｖｅ”、“ａｐｓ”である。ユーザは、これら候補文字列５４１，５４２，５４３に、入力しようとしている文字列が含まれている場合には、その候補文字列を選択する（候補文字列のボタンを押し下げる）ことによって、その候補文字列をキーワード入力エリア５１に描画することを指示できる。
【００３５】
候補文字列５４１，５４２，５４３からいずれかの候補文字列が選択された場合、その候補文字列がキーワード入力エリア５１に表示される。つまり、入力されていたストローク５２１，５２２，５２３が、選択された候補文字列に対応する１以上のストロークに置き換えられる。そして、ユーザは、検索ボタン５３を押し下げることによって、キーワード入力エリア５１内の手書き文字列（すなわち、選択された候補文字列）をキーワードとする検索の実行を指示することができる。
【００３６】
一方、候補文字列５４１，５４２，５４３に入力しようとしている文字列が含まれていない場合、ユーザは、キーワード入力エリア５１にキーワードを構成する文字（ストローク）をさらに手書き入力する。
【００３７】
図６に示すように、キーワード入力エリア５１に手書き文字列“ｐｌ”がさらに入力されている場合、すなわち、ストローク５２４，５２５，５２６がさらに手書き入力されている場合、検索画面５０には、手書き文字列“ａｐｐｌ”に基づいて、入力が予測される候補文字列５４１が表示される。つまり、文字列“ａｐ”が手書きされた後に、さらに文字列“ｐｌ”が手書きされたことに応じて、表示される候補文字列が更新されることによって、文字列“ｐｌ”を含まない候補文字列５４２，５４３が画面から消去され、文字列“ａｐｐｌ”で始まる候補文字列“ａｐｐｌｅ”５４１だけが画面に表示されている。候補文字列は、例えば、１つのストロークが手書きされる毎に更新される。ユーザは、この候補文字列５４１が入力しようとしている文字列である場合には、この候補文字列５４１を選択することによって、候補文字列５４１をキーワード入力エリア５１に描画することを指示できる。
【００３８】
ところで、図５に示した例では、キーワード入力エリア５１に入力されている手書き文字列“ａｐ”に対して、複数の候補文字列５４１，５４２，５４３が表示されている。これら候補文字列５４１，５４２，５４３は、いずれも文字列“ａｐ”に前方一致する文字列である。つまり、候補文字列５４１，５４２，５４３は、文字列“ａｐ”に対して同程度の適合率を有する文字列である。そのため、このような候補文字列５４１，５４２，５４３のいずれを優先的に（すなわち、上位に）表示すべきかを決定することが期待される場合がある。
【００３９】
本実施形態では、手書き文字列の入力を補助するための複数の候補文字列を、ユーザによる手書き入力の作業量（すなわち、入力にかかる手間）を考慮して表示する。本実施形態では、入力途中の文字列に対して同程度の適合率を有する複数の候補文字列が表示される場合に、例えば、ユーザによる手書き入力の作業量が多い文字列（すなわち、入力に手間がかかる文字列）が優先的に表示される。これにより、ユーザによる手書き入力をより省力化し、候補文字列を提示するサジェスト機能の利便性を向上させることができる。
【００４０】
図７を参照して、本実施形態における予測入力のための候補文字列の取得について説明する。  
まず、検索クエリ（キーワード）に用いられる手書きストローク“ａ”６１が入力された場合、このストローク６１に対応するストロークデータ（時系列情報）を用いて特徴量６２が算出される。算出された特徴量６２は、サジェスト用インデックス（手書き文字列データ）６３に含まれる複数の候補文字列のそれぞれに対応する特徴量と比較される。そして、それら複数の候補文字列が、特徴量の比較結果に応じた類似度に基づいて絞り込まれ且つソートされた射影テーブル６４が生成される。この類似度は、例えば、手書きストローク６１の特徴量６２と、候補文字列を構成するストロークの特徴量との類似性に基づく離散値で表される。
【００４１】
さらに、この射影テーブル６４に含まれる複数の候補文字列の内、同じ類似度（同程度の類似度）を有する候補文字列は、文字列を手書きするために要する作業量に応じた順番で並べ替えられる。例えば、同じ類似度を有する候補文字列は、候補文字列を構成するストロークの数に応じた順番で並べ変えられる。換言すると、複数の候補文字列は、手書きストローク６１に対する類似度と、その候補文字列を手書きするために要する作業量（例えば、ストロークの数）とに基づく優先度が高い順に並べ替えられる。そして、並べ替えられた複数の候補文字列が画面に表示される。
【００４２】
図８に示す例では、キーワード入力エリア５１に手書きストローク５２１，５２２，５２３（手書き文字列“ａｐ”）が入力されている場合に、この手書きストローク５２１，５２２，５２３に対応する特徴量を用いて、サジェスト用インデックス６３に含まれる文字列の内の候補文字列５４１，５４２，５４３が表示されている。これら候補文字列５４１，５４２，５４３は、例えば、手書き文字列“ａｐ”に前方一致する文字列である。そして、これら候補文字列５４１，５４２，５４３は、手書きに要する作業量（例えば、ストロークの数）の降順に、つまり、“ａｐｐｒｏｖｅ”５４２、“ａｐｐｌｅ”５４１、“ａｐｓ”５４３の順に並べて表示されている。なお、各候補文字列５４１，５４２，５４３が表示されている領域には、手書きの文字列だけでなく、その手書きの文字列に対応するテキストが表示されてもよい。また、この領域には、手書きに要する作業量を示す値（例えば、ストロークの数、ストロークの長さの総和、ストロークを手書きするために要した時間、等）が表示されてもよい。
【００４３】
予測入力ユーティリティプログラム２０２は、上述したように、手書き文字列の入力を補助するための複数の候補文字列が表示される場合に、ユーザによる手書き入力の作業量が多い文字列を優先的に表示する予測入力機能を有する。この予測入力機能は、図８のように検索のためのキーワードを手書き入力する場合だけでなく、手書き文書を作成する場合等、文字が手書き入力されるあらゆるケースに利用できる。
【００４４】
図９は、予測入力ユーティリティプログラム２０２の機能構成の例を示す。予測入力ユーティリティプログラム２０２は、タッチスクリーンディスプレイ１７を用いた操作によって入力される時系列情報（ストロークデータ）を使用することによって、手書きされた文字列に応じた候補文字列の表示、選択された候補文字列による手書きされた文字列の上書き、等を行う。
【００４５】
予測入力ユーティリティプログラム２０２は、例えば、軌跡表示処理部３０１、時系列情報生成部３０２、特徴量算出部３０３、優先度算出部３０４、ソート部３０５、候補表示処理部３０６、補完表示処理部３０７、文字列データ生成部３０８、ページ保存処理部３０９、ページ取得処理部３１０、及び文書表示処理部３１１を備える。
【００４６】
タッチスクリーンディスプレイ１７は、「タッチ」、「移動（スライド）」、「リリース」等のイベントの発生を検出するように構成されている。「タッチ」は、画面上に外部オブジェクトが接触したことを示すイベントである。「移動（スライド）」は、画面上に外部オブジェクトが接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面から外部オブジェクトが離されたことを示すイベントである。
【００４７】
軌跡表示処理部３０１及び時系列情報生成部３０２は、タッチスクリーンディスプレイ１７によって発生される「タッチ」、「移動（スライド）」又は「リリース」のイベントを受信し、これによって手書き入力操作を検出する。「タッチ」イベントには、接触位置の座標が含まれている。「移動（スライド）」イベントには、移動先の接触位置の座標が含まれている。「リリース」イベントには、接触位置が画面から離された位置の座標が含まれている。したがって、軌跡表示処理部３０１及び時系列情報生成部３０２は、タッチスクリーンディスプレイ１７から、接触位置の動きの軌跡に対応する座標列を受信することができる。
【００４８】
軌跡表示処理部３０１は、タッチスクリーンディスプレイ１７の画面上で手書きにより入力される１以上のストローク（以下、第１ストロークとも称する）を表示する。軌跡表示処理部３０１は、タッチスクリーンディスプレイ１７から座標列を受信し、この座標列に基づいて、ペン１００等を使用した手書き入力操作によって手書きされる各ストロークの軌跡をタッチスクリーンディスプレイ１７内のＬＣＤ１７Ａの画面上に表示する。この軌跡表示処理部３０１により、画面にペン１００が接触している間のペン１００の軌跡、つまりストロークがＬＣＤ１７Ａの画面上に描画される。
【００４９】
時系列情報生成部３０２は、タッチスクリーンディスプレイ１７から出力される上述の座標列を受信し、この座標列に基づいて、図３で詳述したような構造を有する時系列情報（ストロークデータ）を生成する。この場合、時系列情報、つまりストロークの各点に対応する座標及びタイムスタンプ情報は作業メモリ４０１に一時保存されてもよい。
【００５０】
また、時系列情報生成部３０２は、生成された時系列情報（ストロークデータ）を特徴量算出部３０３に出力する。時系列情報生成部３０２は、例えば、１つのストロークが手書き入力される毎に、そのストロークに対応するストロークデータを特徴量算出部３０３に出力する。
【００５１】
特徴量算出部３０３、優先度算出部３０４、ソート部３０５、及び候補表示処理部３０６は、記憶媒体４０２に格納された、手書き文書データ４０２Ｂに対応する手書き文書に含まれる手書き文字列の内、軌跡表示処理部３０１によって画面に表示された１以上の第１ストロークに対応する１以上の手書き文字を含む複数の候補を画面に表示する。これら複数の候補は、それぞれの候補を構成するストロークの数に応じた順番で並べて表示される。
【００５２】
記憶媒体４０２には、手書き文書に含まれる複数の手書き文字列に対応する複数の手書き文字列データ４０２Ａが格納されていてもよい。特徴量算出部３０３、優先度算出部３０４、ソート部３０５、及び候補表示処理部３０６は、記憶媒体４０２に格納された、複数の手書き文字列に対応する複数の手書き文字列データ４０２Ａを用いて、それら複数の手書き文字列の内、軌跡表示処理部３０１によって画面に表示された１以上の第１ストロークに対応する１以上の手書き文字をそれぞれ含む候補を、候補（手書き文字）を構成する１以上のストロークを手書きするための作業量に応じた順番で（例えば、作業量の降順に）画面に表示する。手書き文字列データ４０２Ａは、手書き文字列を構成する１以上のストロークに対応する特徴量を含み、この手書き文字列データを用いて、複数の手書き文字列の内、１以上の第１ストロークに対応する特徴量との類似度がしきい値以上である特徴量をそれぞれ有する１以上の手書き文字列が、作業量に応じた順番で画面に表示される。
【００５３】
より具体的には、まず、特徴量算出部３０３は、時系列情報生成部３０２によって生成された１以上の第１ストロークに対応する１以上のストロークデータを用いて特徴量（第１特徴量）を算出する。特徴量算出部３０３は、例えば、１以上の第１ストロークの形状や手書きされた方向等に基づいて特徴量を算出する。
【００５４】
次いで、優先度算出部３０４は、算出された第１特徴量と、手書き文字列データ４０２Ａ内の候補文字列に対応する第２特徴量とを用いて、候補文字列毎の優先度（類似度）を算出する。
【００５５】
図１０は、手書き文字列データ４０２Ａの一構成例を示す。この手書き文字列データ４０２Ａは、例えば、ストロークデータや手書き文書データ４０２Ｂを解析することによって生成される。また、手書き文字列データ４０２Ａは、例えばユーザ毎に生成される。
【００５６】
手書き文字列データ４０２Ａは、複数の手書き文字列に対応する複数のエントリを含む。各エントリは、例えば、文字列、特徴量及びストロークデータを含む。ある手書き文字列に対応するエントリにおいて、「文字列」は、その手書き文字列に対応するテキスト（文字コード列）を示す。「特徴量」は、その手書き文字列を構成する１以上のストロークに対応する特徴量を示す。「ストロークデータ」は、その手書き文字列を構成する１以上のストロークに対応するストロークデータ（時系列情報）を示す。
【００５７】
「文字列」には、例えば、「ストロークデータ」に示されるストロークデータに文字認識処理を施すことによって得られたテキスト（文字コード列）が設定される。また、「特徴量」には、例えば、「ストロークデータ」に示されるストロークデータを用いて算出された、ストロークの形状やストロークが手書きされた方向に基づく特徴量が設定される。
【００５８】
優先度算出部３０４は、例えば、手書き入力された１以上の第１ストロークが任意の文字列（例えば、単語、句、等の文字のまとまり）を構成するストロークであって、その文字列が入力途中である場合（すなわち、文字列を構成するすべてのストロークの手書き入力が完了していない場合）、その１以上の第１ストロークに対応する特徴量（第１特徴量）と、手書き文字列データ４０２Ａ内の候補文字列に対応する特徴量（第２特徴量）とを用いて、候補文字列の類似度を算出する。優先度算出部３０４は、手書き文字列データ４０２Ａ内の複数の候補文字列の各々に対応する類似度を算出する。
【００５９】
そして、ソート部３０５は、手書き文字列データ４０２Ａ内の複数の候補文字列を、算出された類似度の降順にソートする。
【００６０】
図１１は、手書き文字列データ４０２Ａから、類似度に基づいてソートされた候補文字列が取得される例を示す。ここでは、手書き文字列“ａｐｐ”を構成する１以上の第１ストロークが入力されている場合を想定する。
【００６１】
手書き文字列“ａｐｐ”を構成する１以上の第１ストロークが入力されている場合、優先度算出部３０４は、上述したように、手書き文字列データ４０２Ａに含まれる複数の候補文字列の各々について、１以上の第１ストローク“ａｐｐ”に対する類似度を算出する。優先度算出部３０４は、例えば、１以上の第１ストローク“ａｐｐ”に対応する第１特徴量と、手書き文字列データ４０２Ａの各エントリに含まれる第２特徴量とを用いて、手書き文字列データ４０２Ａに示される候補文字列毎の類似度を算出する。この類似度は、例えば、１以上の第１ストロークの第１特徴量と、候補文字列を構成するストロークの第２特徴量との類似性に基づく離散値で表される。そして、ソート部３０５は、手書き文字列データ４０２Ａ内の複数の候補文字列を、算出された類似度の降順にソートする。
【００６２】
図１１に示すように、最も類似度が高い候補文字列（例えば、類似度＝６）は、手書き文字列データ４０２Ａに含まれる複数の候補文字列の内、例えば、文字列“ａｐｐ”に前方一致する候補文字列“ａｐｐｌｅ”、“ａｐｐｒｏｖｅ”、“ａｐｐｌｉｃａｔｉｏｎ”、及び“ａｐｐｌｙ”である。また、次に類似度が高い候補文字列（例えば、類似度＝３）は、手書き文字列データ４０２Ａに含まれる複数の候補文字列の内、例えば、文字列“ａｐ”（すなわち、文字列“ａｐｐ”の先頭の２文字）に前方一致する候補文字列“ａｐｓ”及び“ａｐｌｉｃｏｔ”である。
【００６３】
なお、手書き文字列データ４０２Ａ内の複数の候補文字列に同一の類似度が設定されている場合には、それら複数の候補文字列は、手書き文字列データ４０２Ａから検出された順序や、手書き文字列データ４０２Ａに格納された順序、等に基づいて並べられている。
【００６４】
ソート部３０５は、さらに、類似度の降順に並べられた複数の候補文字列を、候補文字列を構成するストロークを手書きするための作業量（例えば、候補文字列を構成するストロークの数）が多い順に並べ替える。この作業量は、例えば、文字列を構成する１以上のストロークの数、当該１以上のストロークの長さの総和、当該１以上のストロークを表す座標（ポイント）の数（すなわち、対応するストロークデータに含まれる座標データの数）、及び当該１以上のストロークを手書きするために要した時間の内の少なくとも１つに基づく値で示される。
【００６５】
複数の候補文字列は、それぞれ、手書きにより入力された１以上の第１ストローク（“ａｐｐ”）に対応する１以上の手書き文字と、この１以上の第１ストロークに対応しない手書き文字とを含んでいる。例えば、文字列“ａｐｐｌｅ”は、１以上の第１ストローク “ａｐｐ”に対応する１以上の手書き文字“ａｐｐ”と、１以上の第１ストローク“ａｐｐ”に対応しない１以上の手書き文字“ｌｅ”とを含んでいる。したがって、ソート部３０５は、類似度の降順に並べられた複数の候補文字列を、１以上の第１ストロークに対応しない１以上の手書き文字を構成するストロークを手書きするための作業量（例えば、候補文字列を構成するストロークの数）が多い順に並べ替えてもよい。すなわち、ソート部３０５は、複数の候補文字列を、まだ手書きされていない部分の作業量が多い順に並べ替えることができる。
【００６６】
図１２に示すように、類似度が“６”である候補文字列は、文字列を構成するストロークの数の降順に、すなわち、“ａｐｐｌｉｃａｔｉｏｎ”、“ａｐｐｒｏｖｅ”、“ａｐｐｌｙ”、“ａｐｐｌｅ”の順に並べ替えられる。これにより、ユーザによる手書き入力の作業量が多い文字列ほど上位に順位付けされるので、ユーザによる手書きの作業量が効果的に軽減される順序で、入力が予測される候補文字列を表示することができる。
【００６７】
なお、優先度算出部３０４は、手書き入力された１以上の第１ストロークに対する候補文字列の類似度と、文字列を構成するストロークを手書きするための作業量を示す値とが統合された優先度を算出してもよい。優先度算出部３０４は、例えば、類似度と作業量を示す値とを重み付け加算することによって優先度を算出する。ソート部３０５は、手書き文字列データ４０２Ａ内の複数の候補文字列を、候補文字列に対応する優先度の降順にソートする。これにより、上述した構成と同様に、ユーザによる手書きの作業量が効果的に軽減される順序で候補文字列を表示することができる。
【００６８】
候補表示処理部３０６は、並べ替えられた候補文字列を画面に表示する。候補表示処理部３０６は、例えば、上位から所定数の候補文字列を画面に表示してもよいし、類似度（又は優先度）がしきい値以上である候補文字列を画面に表示してもよい。また、候補表示処理部３０６は、例えば、上位の候補文字列ほど、直近の手書き入力位置（例えば、第１ストロークの最後の座標）に近い位置に配置されるようにしてもよい。
【００６９】
次いで、補完表示処理部３０７は、タッチスクリーンディスプレイ１７上での選択操作によって、表示されている１以上の候補文字列から１つの候補文字列（以下、第１候補文字列とも称する）が選択されたことに応じて、１以上の第１ストローク（すなわち、入力途中の文字列を構成するストローク）を第１候補文字列を構成する１以上の第２ストロークに置き換えることによって、その１以上の第２ストロークを画面に表示する。
【００７０】
より具体的には、補完表示処理部３０７は、まず、手書き文字列データ４０２Ａから、選択された第１候補文字列に対応するストロークデータを読み出す。そして、補完表示処理部３０７は、１以上の第１ストロークを画面から消去し、その１以上の第１ストロークが描画されていた位置に、読み出されたストロークデータに基づく１以上の第２ストロークを描画する。また、補完表示処理部３０７は、１以上の第１ストロークに対応するストロークデータを作業メモリ４０１から削除し、１以上の第２ストロークに対応するストロークデータを作業メモリ４０１に一時保存してもよい。
【００７１】
ページ保存処理部３０９は、生成されたストロークデータ（作業メモリ４０１に一時保存されたストロークデータ）を、手書き文書データ４０２Ｂとして記憶媒体４０２に保存する。記憶媒体４０２は、例えば、タブレットコンピュータ１０内のストレージデバイスである。
【００７２】
ページ取得処理部３１０は、記憶媒体４０２から既に格納されている任意の手書き文書データ４０２Ｂを読み出す。読み出された手書き文書データ４０２Ｂは文書表示処理部３１１に送られる。文書表示処理部３１１は、手書き文書データ４０２Ｂを解析し、この解析結果に基づいて、ストロークデータ（時系列情報）によって示される各ストロークの軌跡を含む文書（ページ）を画面上に表示する。
【００７３】
なお、表示されている候補文字列からいずれの文字列も選択されずに、文字列の手書き入力が完了した場合（例えば、ユーザが文字列を構成するすべてのストロークを手書き入力した場合）、文字列データ生成部３０８は、入力が完了した文字列に対応する手書き文字列データ４０２Ａ（手書き文字列データのエントリ）を生成する。文字列データ生成部３０８は、手書き入力が完了した文字列を構成する１以上のストロークに対応する特徴量を用いて文字認識処理を行うことよって、その１以上のストロークに対応する文字（テキスト）を認識してもよい。文字列データ生成部３０８は、認識された文字（テキスト）と特徴量とストロークデータとを含む手書き文字列データのエントリを生成し、当該エントリを手書き文字列データ４０２Ａに追加する。
【００７４】
また、文字列データ生成部３０８は、既に作成された手書き文書のデータ４０２Ｂを解析することによって、手書き文字列データ４０２Ａを生成してもよい。文字列データ生成部３０８は、例えば、英語の手書き文書データ４０２Ｂを解析する場合、手書き文書に含まれる文字列（手書き文字列に対応するストロークデータ）に対して文字認識処理を施すことによって、手書きの文字列に対応するテキスト（テキストデータ）を生成する。そして、文字列データ生成部３０８は、生成されたテキストから単語を検出し、単語毎の手書き文字列データ４０２Ａのエントリを生成する。
【００７５】
また、文字列データ生成部３０８は、例えば、日本語の手書き文書データ４０２Ｂを解析する場合、手書き文書に含まれる文字列（手書き文字列に対応するストロークデータ）に対して文字認識処理を施すことによって、手書きの文字列に対応するテキスト（テキストデータ）を生成する。そして、文字列データ生成部３０８は、生成されたテキストに形態素解析処理を施すことによって、そのテキストを単語（形態素）に区切り、単語毎の手書き文字列データ４０２Ａのエントリを生成する。
【００７６】
これにより、既に作成された手書き文書のデータ４０２Ｂから手書き文字列データ４０２Ａを生成することができる。
【００７７】
ところで、表示される手書き候補文字列は、その文字列の一部を選択することもできる。  
図１３は、候補文字列が表示される検索画面上で、候補文字列の一部を選択するための操作が行われる例を示す。ここでは、ユーザが文字列“ａｐｐｒｏａｃｈ”を手書き入力しようとしている場合を想定する。キーワード入力エリア５１には、“ａｐｐｒｏａｃｈ”を構成する手書きストローク５２１，５２２，５２３（手書き文字列“ａｐ”）が途中まで入力され、当該手書きストローク５２１，５２２，５２３に応じた候補文字列５４１，５４２，５４３が表示されている。
【００７８】
ユーザは、候補文字列５４１，５４２，５４３に“ａｐｐｒｏａｃｈ”が含まれていないので、この“ａｐｐｒｏａｃｈ”と前方の５文字が一致する候補文字列“ａｐｐｒｏｖｅ”５４２を利用して、“ａｐｐｒｏｖｅ”５４２の内の文字列“ａｐｐｒｏ”だけを入力するための選択操作を行う。この選択操作は、候補文字列の内の一部を指定する操作であり、例えば、候補文字列内の文字間にストローク５５を手書き入力する操作である。
【００７９】
補完表示処理部３０７は、この選択操作に応じて、ストローク５５が手書きされた候補文字列“ａｐｐｒｏｖｅ”５４２の領域の内、当該ストローク５５よりも前方にある文字列“ａｐｐｒｏ”を検出する。そして、補完表示処理部３０７は、手書きストローク５２１，５２２，５２３を、検出された文字列“ａｐｐｒｏ”を構成するストロークに置き換えることによって、文字列“ａｐｐｒｏ”５６をキーワード入力エリア５１に表示する。
【００８０】
ユーザは、さらに、手書きストローク５７１，５７２，５７３（手書き文字列“ａｃｈ”）を入力することによって、手書き文字列“ａｐｐｒｏａｃｈ”の入力を完了させることができる。
【００８１】
以上のように、表示される候補文字列５４１，５４２，５４３に、入力したい文字列に完全に一致する文字列が含まれていない場合であっても、入力したい文字列に部分的に一致する候補文字列を利用することによって、手書き入力にかかる作業量を軽減することができる。なお、上述した選択操作は、候補文字列の一部を囲むストロークを手書き入力する操作、候補文字列内の文字間をタップする操作等、候補文字列の内の一部を指定できる操作であればどのような操作であってもよい。
【００８２】
次いで、図１４から図１６を参照して、手書き文書の作成中に表示される候補文字列の例を説明する。
【００８３】
図１４に示す例では、ユーザによる手書き入力操作に応じて、手書き文書６０上に手書きの文字列（ストローク）が描画されている。例えば、ユーザがストローク６１１，６１２，６１３に対応する手書き入力操作を行ったことに応じて、手書き文書６０上に手書き文字列“ｂｕ”が描画されている。
【００８４】
候補表示処理部３０６は、ストローク６１１，６１２，６１３に対応する手書き入力操作に応じて、これらストローク６１１，６１２，６１３に対する優先度（類似度）が高い候補文字列“ｂｕｓｉｎｅｓｓ”６２１，“ｂｕｉｌｄ”６２２，“ｂｕｏｎｏ”６２３を画面に表示する。その際、候補表示処理部３０６は、入力のための作業量が大きい候補文字列が、ストローク６１１，６１２，６１３に近い位置に配置されるようにする。つまり、候補表示処理部３０６は、特徴量に基づく類似度と入力のための作業量とに基づいて並べ替えられた候補文字列が取得されている場合に、上位の候補文字列ほど（すなわち、類似度と作業量とに基づく優先度が高い候補文字列ほど）、直近に入力されたストローク６１１，６１２，６１３に近い位置に表示されるようにする。
【００８５】
図１４に示す例では、候補文字列６２１，６２２，６２３が、ストローク６１１，６１２，６１３に対して近い位置から、“ｂｕｓｉｎｅｓｓ”６２１，“ｂｕｉｌｄ”６２２，“ｂｕｏｎｏ”６２３の順に水平方向に並べられている。
【００８６】
また、図１５に示すように、候補文字列６２１，６２２，６２３は、手書き文書６３のサイズや形状を考慮して配置が決定されてもよい。図１５に示す例では、候補文字列６２１，６２２，６２３が、ストローク６１１，６１２，６１３に対して近い位置から、“ｂｕｓｉｎｅｓｓ”６２１，“ｂｕｉｌｄ”６２２，“ｂｕｏｎｏ”６２３の順に垂直方向に並べられている。また、候補文字列６２１，６２２，６２３は、ストローク６１１，６１２，６１３に対して近い位置からグリッド状に配置されてもよい。
【００８７】
候補文字列６２１，６２２，６２３は、さらに、上位の候補文字列ほど（すなわち、類似度と作業量とに基づく優先度が高い候補文字列ほど）目立つように表示されてもよい。例えば、上位の候補文字列は下位の候補文字列よりも目立つ色で表示される。また、例えば、上位の候補文字列は下位の候補文字列よりも大きなサイズで表示される。
【００８８】
補完表示処理部３０７は、ユーザが、表示されている候補文字列６２１，６２２，６２３の内の一つを選択する選択操作（例えば、タップ操作）を行ったことに応じて、選択された候補文字列を用いて手書きストローク６１１，６１２，６１３を補完する。
【００８９】
また、図１６に示すように、１つの候補文字列が表示される領域６６上でのスクロール操作に応じて、候補文字列が順次切り替えられるようにしてもよい。候補表示処理部３０６は、例えば、初期状態では、最上位の候補文字列（すなわち、類似度と作業量とに基づく優先度が最も高い候補文字列）を領域６６に表示し、また上位の候補文字列ほど少ないスクロール操作で表示されるようにする。
【００９０】
候補表示処理部３０６は、ユーザがこの領域６６上でスクロール操作を行ったことに応じて、表示される候補文字列を切り換える。例えば、領域６６に文字列“ｂｕｓｉｎｅｓｓ”が表示されている場合に、左から右へのスクロール操作が行われたことに応じて、文字列“ｂｕｓｉｎｅｓｓ”が文字列“ｂｕｉｌｄ”に切り換えられる。なお、候補表示処理部３０６は、ボタン６６Ａ又はボタン６６Ｂをタップする操作に応じて、表示される候補文字列が切り換えられるようにしてもよい。
【００９１】
そして、補完表示処理部３０７は、ユーザが領域６６に表示されている候補文字列を選択する選択操作（例えば、タップ操作）を行ったことに応じて、選択された候補文字列を用いて手書きストローク６１１，６１２，６１３を補完する。
【００９２】
このように、手書きによる作業量が多い候補文字列（例えば、“ｂｕｓｉｎｅｓｓ”）は、直近の入力位置に近い位置に表示される。したがって、ユーザにとって入力が煩雑な文字列が、入力が容易な文字列よりも優先的に表示（配置）されるので、候補文字列を利用した予測入力の効果を高めることができる。
【００９３】
次いで、図１７は、選択された候補文字列を用いて手書きストローク６１１，６１２，６１３が補完される例を示す。ここでは、手書き文書６０上に表示されている候補文字列６２１，６２２，６２３から、候補文字列“ｂｕｓｉｎｅｓｓ”６２１が選択された場合を想定する。
【００９４】
補完表示処理部３０７は、候補文字列６２１が選択されたことに応じて、手書きストローク６１１，６１２，６１３と、文字列６２１を構成する１以上のストロークとの間で対応するストロークを検出する。つまり、補完表示処理部３０７は、手書きストローク６１１，６１２，６１３と、文字列“ｂｕｓｉｎｅｓｓ”６２１の内の“ｂｕ”を構成する３つのストロークとを検出する。
【００９５】
次いで、補完表示処理部３０７は、手書きストローク６１１，６１２，６１３を包含する矩形６８を決定し、検出された“ｂｕ”を構成する３つのストロークを包含する矩形６９を決定する。補完表示処理部３０７は、これら矩形６８，６９のサイズ比に基づいて、手書き文書６０に挿入される文字列６２１（すなわち、文字列６２１を構成するストローク）を拡大又は縮小する。そして、補完表示処理部３０７は、手書き文書６０上の手書きストローク６１１，６１２，６１３を、拡大又は縮小された手書き文字列６２１に置き換えることによって、当該手書き文書６０上に手書き文字列６２１を表示する。
【００９６】
これにより、ユーザが、手書きストローク“ｂｕ”６１１，６１２，６１３を入力する手書き入力操作を行った後、候補文字列“ｂｕｓｉｎｅｓｓ”６２１を選択する選択操作を行うだけで、手書き文書６０上に文字列“ｂｕｓｉｎｅｓｓ”が描画され、ユーザによる作業量を軽減することができる。
【００９７】
次いで、図１８のフローチャートを参照して、予測入力ユーティリティプログラム２０２によって実行される手書き入力処理の手順の例について説明する。
【００９８】
軌跡表示処理部３０１は、手書き入力操作によるペン１００等の動きの軌跡（ストローク）を文書上に表示する（ブロックＢ１１）。また、時系列情報生成部３０２は、手書き入力操作による軌跡に対応する座標列に基づいて上述の時系列情報（時系列順に並べられたストロークデータ）を生成し、その時系列情報を作業メモリ４０１に一時保存する（ブロックＢ１２）。
【００９９】
また、図１９のフローチャートは、予測入力ユーティリティプログラム２０２によって実行される予測入力処理の手順の例を示す。  
特徴量算出部３０３は、１つの手書きストローク（第１ストローク）の入力が完了したか否かを判定する（ブロックＢ２０１）。特徴量算出部３０３は、例えば、時系列情報生成部３０２から、第１ストロークに対応するストロークデータを受け取った場合に、第１ストロークの入力が完了したことを検出する。第１ストロークの入力が完了していない場合（ブロックＢ２０１のＮＯ）、ブロックＢ２０１に戻り、第１ストロークの入力が完了したか否かが再度判定される。
【０１００】
第１ストロークの入力が完了した場合（ブロックＢ２０１のＹＥＳ）、特徴量算出部３０３は、時系列情報生成部３０２によって生成された、当該第１ストロークに対応する時系列情報（ストロークデータ）を用いて、特徴量を算出する（ブロックＢ２０２）。優先度算出部３０４は、算出された特徴量（第１特徴量）と、手書き文字列データ４０２Ａ内の候補文字列に対応する特徴量（第２特徴量）とを用いて、候補文字列の優先度（類似度）を算出する（ブロックＢ２０３）。より具体的には、第１ストロークが、入力途中の文字列（文字）を構成するストロークである場合、優先度算出部３０４は、算出された特徴量を含む、入力途中の文字列の文字を構成する１以上の手書きストロークに対応する特徴量（第１特徴量）と、手書き文字列データ４０２Ａ内の候補文字列に対応する特徴量（第２特徴量）とを用いて、候補文字列の優先度を算出する。また、入力された第１ストロークが文字列を構成する先頭のストロークである場合、優先度算出部３０４は、算出された特徴量（第１特徴量）と、手書き文字列データ４０２Ａ内の候補文字列に対応する特徴量（第２特徴量）とを用いて、候補文字列の優先度を算出する。優先度算出部３０４は、例えば、第１特徴量と第２特徴量との類似度が高いほど、高い優先度を算出する。
【０１０１】
次いで、優先度算出部３０４は、手書き文字列データ４０２Ａ内に、他の候補文字列のエントリ（すなわち、優先度がまだ算出されていない候補文字列のエントリ）が含まれているか否かを判定する（ブロックＢ２０４）。手書き文字列データ４０２Ａに他の候補文字列のエントリが含まれている場合（ブロックＢ２０４のＹＥＳ）、ブロックＢ２０３に戻り、その候補文字列の優先度が算出される。
【０１０２】
手書き文字列データ４０２Ａ内に他の候補文字列のエントリが含まれていない場合、すなわち、すべての候補文字列の優先度が算出された場合（ブロックＢ２０４のＹＥＳ）、ソート部３０５は候補文字列を優先度が高い順に並べ替える（ブロックＢ２０５）。ソート部３０５はさらに、並べ替えられた候補文字列の内、同じ優先度である複数の候補文字列を、候補文字列を構成するストロークの数が多い順に（ストロークの数の降順に）並べ替える（ブロックＢ２０６）。そして、候補表示処理部３０６は、候補文字列を、それぞれの候補文字列を構成するストロークの数に応じた順番で並べて表示する（ブロックＢ２０７）。候補表示処理部３０６は、例えば、上位の候補文字列ほど、直近の手書き入力位置（例えば、第１ストロークの最後の座標）に近い位置に配置する。
【０１０３】
次いで、補完表示処理部３０７は、タッチスクリーンディスプレイ１７上での選択操作によって、表示されている候補文字列から１つの文字列が選択されたか否かを判定する（ブロックＢ２０８）。表示されている候補文字列から１つの文字列が選択された場合（ブロックＢ２０８のＹＥＳ）、補完表示処理部３０７は、選択された文字列に対応するストロークデータを用いて、画面に表示されている入力途中の文字列に対応する１以上の手書きストロークを、選択された候補文字列に対応する１以上の手書きストロークに置き換えて表示する（ブロックＢ２０９）。
【０１０４】
一方、表示されている候補文字列からいずれの文字列も選択されない場合（ブロックＢ２０８のＮＯ）、文字列データ生成部３０８は、第１ストロークの入力によって、入力途中であった文字列の入力が完了したか否かを判定する（ブロックＢ２１０）。文字列の入力が完了していない場合（ブロックＢ２１０のＮＯ）、ブロックＢ２０１に戻り、新たに入力される手書きストロークがさらに考慮された候補文字列を表示するための処理が実行される。また、文字列の入力が完了している場合（ブロックＢ２１０のＹＥＳ）、候補文字列を用いた予測入力を利用することなく、文字列に対応するストロークの手書き入力が完了したので、文字列データ生成部３０８は、入力が完了した文字列に対応する手書き文字列データ４０２Ａ（手書き文字列データのエントリ）を生成する（ブロックＢ２１１）。
【０１０５】
なお、予測入力ユーティリティプログラム２０２は、文字が手書き入力されるあらゆるソフトウェア（例えば、ウェブブラウザ、メーラ、文書作成ソフトウェア、表計算ソフトウェア、等）と連携して利用することができる。
【０１０６】
以上説明したように、本実施形態によれば、入力が予測される文字列の候補を効果的に提示することができる。軌跡表示処理部３０１は、タッチスクリーンディスプレイ１７の画面上で手書きにより入力される１以上の第１ストロークを表示する。候補表示処理部３０６は、手書き文書に含まれる複数の手書き文字列の内、１以上の第１ストロークに対応する１以上の手書き文字を含む複数の候補を、前記画面に表示するものであって、これら複数の候補は、それぞれの候補を構成するストロークの数に応じた順番で並べて表示される。  
これにより、ユーザによる手書き入力をより省力化し、候補文字列を提示するサジェスト機能の利便性を向上させることができる。
【０１０７】
なお、図１８及び図１９のフローチャートで説明した本実施形態の処理手順はすべてソフトウェアによって実行することができる。このため、この処理手順を実行するプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのプログラムを通常のコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【０１０８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０９】
１７Ａ…ＬＣＤ、２０２…予測入力ユーティリティプログラム、３０１…軌跡表示処理部、３０２…時系列情報生成部、３０３…特徴量算出部、３０４…優先度算出部、３０５…ソート部、３０６…候補表示処理部、３０７…補完表示処理部、３０８…文字列データ生成部、３０９…ページ保存処理部、３１０…ページ取得処理部、３１１…文書表示処理部、４０１…作業メモリ、４０２…記憶媒体、４０２Ａ…手書き文字列データ、４０２Ｂ…手書き文書データ。
【図１】
2015094977.tif 000003
【図２】
2015094977.tif 000004
【図３】
2015094977.tif 000005
【図４】
2015094977.tif 000006
【図５】
2015094977.tif 000007
【図６】
2015094977.tif 000008
【図７】
2015094977.tif 000009
【図８】
2015094977.tif 000010
【図９】
2015094977.tif 000011
【図１０】
2015094977.tif 000012
【図１１】
2015094977.tif 000013
【図１２】
2015094977.tif 000014
【図１３】
2015094977.tif 000015
【図１４】
2015094977.tif 000016
【図１５】
2015094977.tif 000017
【図１６】
2015094977.tif 000018
【図１７】
2015094977.tif 000019
【図１８】
2015094977.tif 000020
【図１９】
2015094977.tif 000021