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