多くの電子デバイスは、文字入力用のソフトキーボードを備える、グラフィカルユーザインタフェースを有する。一部の電子デバイス上では、ユーザはまた、手書き入力インタフェースをインストールするか、又は有効化することが可能な場合もあり、この手書き入力インタフェースにより、ユーザは、そのデバイスに結合されたタッチ感知ディスプレイスクリーン又はタッチ感知面上での手書きを介して、文字を入力することが可能となる。従来の手書き認識入力の方法及びユーザインタフェースは、幾つかの問題及び欠点を有する。例えば、
●一般に、従来の手書き入力の機能性は、言語ごとに、又はスクリプトごとに有効化される。追加される各入力言語は、別個の記憶スペース及びメモリを費やす、別個の手書き認識モデルのインストールを必要とする。異なる言語に関する手書き認識モデルを組み合わせることによってもたらされる相乗効果は、僅かなものであり、混合言語又は混合スクリプトの手書き認識は、複雑な曖昧性除去プロセスのために、従来は、極めて長い時間を要するものであった。
●更には、従来の手書き認識システムは、文字認識に関して、言語固有又はスクリプト固有の特性に依存するところが大きい。混合言語の手書き入力の認識は、低い精度を有するものであった。更には、認識される言語の利用可能な組み合わせは、極めて限定される。殆どのシステムは、非デフォルトの各言語又は各スクリプトで手書き入力を提供する前に、所望の言語固有の手書き認識部を、ユーザが手動で指定することを必要とするものであった。
●多くの既存のリアルタイム手書き認識モデルは、ストローク単位レベルでの、時間的情報又は配列情報を必要とし、このことは、どのように文字が書かれ得るかの高い変動性(例えば、書体又は個人的な癖による、ストロークの形状、長さ、緩急、分割、順序、及び方向の高い変動性)に対処する場合に、不正確な認識結果を生じさせる。一部のシステムはまた、手書き入力を提供する場合に、ユーザが、厳格な(例えば、各文字入力のサイズ、配列、及び時間枠に対する、組み込みの仮定条件を有する)空間的及び時間的基準を順守することも必要とする。これらの基準からのいずれの逸脱も、修正することが困難な、不正確な認識結果を引き起こすものであった。
●現時点では、殆どのリアルタイム手書き入力インタフェースは、ユーザが一度に少数の文字を入力することのみを可能とする。長い語句又は文の入力は、短い分節へと分解されて、別個に入力される。この形式的な入力は、構成の流れを維持するための、ユーザに対する認知負担を強いるだけではなく、以前に入力された文字又は語句を、ユーザが修正若しくは訂正することも困難にさせる。
以下で説明される実施形態は、これらの問題及び関連する問題に対処する。
以下の図1〜図4は、例示的デバイスの説明を提供する。図5、図6、及び図26、図27は、例示的な手書き認識及び入力システムを示す。図8A、図8B、図11A〜図11K、図13A〜図13E、図15A〜図15K、図17A〜図17F、図19A〜図19F、図21A〜図21H、図23A〜図12Lは、手書き認識及び入力に関する、例示的ユーザインタフェースを示す。図7、図9A,図9B、図10A〜図10C、図12A、図12B、図14、図16A、図16B、図18A、図18B、図20A〜図20C、図22A、図22B、図24A、図24B、及び図25は、手書き認識モデルを訓練すること、リアルタイムの手書き認識結果を提供すること、手書き入力を入力して訂正する手段を提供すること、及び認識結果をテキスト入力として入力する手段を提供することを含む、手書き認識及び入力を可能にする方法を示す、流れ図である。図8A、図8B、図11A〜図11K、図13A〜図13E、図15A〜図15K、図17A〜図17F、図19A〜図19F、図21A〜図21H、図23A〜図12Lでのユーザインタフェースは、図7、図9A,図9B、図10A〜図10C、図12A、図12B、図14、図16A、図16B、図18A、図18B、図20A〜図20C、図22A、図22B、図24A、図24B、及び図25でのプロセスを示すために使用される。
例示的デバイス
ここで、添付図面に実施例が示される実施形態を、詳細に参照する。以下の発明を実施するための形態では、本発明の完全な理解を提供するために、数多くの具体的な詳細が記載される。しかしながら、本発明は、これらの具体的な詳細を伴わずとも実践することができる点が、当業者には明らかとなるであろう。他の例では、周知の方法、手順、構成要素、回路、及びネットワークは、実施形態の態様を不必要に不明瞭なものとしないよう、詳細には説明されていない。
本明細書では、様々な要素を説明するために第1、第2などの用語が使用される場合があるが、それらの要素は、これらの用語によって限定されるべきではないこともまた、理解されるであろう。これらの用語は、ある要素を別の要素から識別するためにのみ使用される。例えば、本発明の範囲から逸脱することなく、第1の接触を第2の接触と呼ぶことが可能であり、同様に、第2の接触を第1の接触と呼ぶことが可能である。第1の接触及び第2の接触は、双方とも接触であるが、それらは同じ接触ではない。
本明細書での本発明の説明で使用される用語法は、特定の実施形態を説明することのみを目的とするものであって、本発明を限定することを意図するものではない。本発明の説明及び添付の特許請求の範囲で使用されるとき、単数形「a」、「an」、及び「the」は、文脈がそうではないことを明確に示さない限り、複数形もまた含むことが意図される。本明細書で使用するとき、用語「及び/又は」は、関連する列挙された項目のうちの1つ以上の、任意の全ての可能な組み合わせを指し、それらの組み合わせを包含することもまた、理解されるであろう。用語「includes(含む)」、「including(含む)」、「comprises(備える)」、及び/又は「comprising(備える)」は、本明細書で使用される場合、記述される特徴、整数、ステップ、動作、要素、及び/又は構成要素の存在を指定するが、1つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、及び/又はそれらの群の存在若しくは追加を排除するものではないことが、更に理解されるであろう。
本明細書で使用するとき、用語「〜の場合には」は、文脈に応じて、「〜のとき」若しくは「〜する際」、又は「〜という判定に応じて」若しくは「〜の検出に応じて」を意味するものと解釈することができる。同様に、語句「〜と判定される場合には」又は「(記述される条件又はイベント)が検出される場合には」は、文脈に応じて、「〜と判定される際」若しくは「〜との判定に応じて」、又は「(記述される条件又はイベント)が検出される際」若しくは「(記述される条件又はイベント)の検出に応じて」を意味するものと解釈することができる。
電子デバイス、そのようなデバイス用のユーザインタフェース、及びそのようなデバイスを使用するための関連プロセスの、実施形態を説明する。一部の実施形態では、このデバイスは、PDA機能及び/又は音楽プレーヤ機能などの他の機能もまた含む、モバイル電話などのポータブル通信デバイスである。ポータブル多機能デバイスの例示的実施形態としては、Apple Inc.(Cupertino,California)によるiPhone(登録商標)、iPod Touch(登録商標)、及びiPad(登録商標)デバイスが挙げられるが、これらに限定されない。タッチ感知面(例えば、タッチスクリーンディスプレイ及び/又はタッチパッド)を備えるラップトップコンピュータ又はタブレットコンピュータなどの、他のポータブル電子デバイスもまた、使用することができる。また、一部の実施形態では、このデバイスは、ポータブル通信デバイスではなく、タッチ感知面(例えば、タッチスクリーンディスプレイ及び/又はタッチパッド)を備えるデスクトップコンピュータであることも理解されたい。
以下の論考では、ディスプレイ及びタッチ感知面を含む、電子デバイスを説明する。しかしながら、この電子デバイスは、物理キーボード、マウス、及び/又はジョイスティックなどの、1つ以上の他の物理ユーザインタフェースデバイスを含み得ることを理解されたい。
このデバイスは、典型的には、描画アプリケーション、プレゼンテーションアプリケーション、ワードプロセッシングアプリケーション、ウェブサイト作成アプリケーション、ディスクオーサリングアプリケーション、スプレッドシートアプリケーション、ゲームアプリケーション、電話アプリケーション、テレビ会議アプリケーション、電子メールアプリケーション、インスタントメッセージングアプリケーション、トレーニングサポートアプリケーション、写真管理アプリケーション、デジタルカメラアプリケーション、デジタルビデオカメラアプリケーション、ウェブブラウジングアプリケーション、デジタル音楽プレーヤアプリケーション、及び/又はデジタルビデオプレーヤアプリケーションのうちの1つ以上などの、様々なアプリケーションをサポートする。
このデバイス上で実行することが可能な様々なアプリケーションは、タッチ感知面などの、少なくとも1つの共通の物理ユーザインタフェースデバイスを使用することができる。タッチ感知面の1つ以上の機能、並びにデバイス上に表示される対応する情報は、アプリケーションごとに、及び/又はそれぞれのアプリケーション内で、調節並びに/あるいは変更することができる。この方式で、そのデバイスの共通の(タッチ感知面などの)物理アーキテクチャは、ユーザにとって直観的かつ透明なユーザインタフェースを使用して、様々なアプリケーションをサポートすることができる。
ここで、タッチ感知ディスプレイを備えるポータブルデバイスの実施形態に注意を向ける。図1は、一部の実施形態に係る、タッチ感知ディスプレイ112を備えるポータブル多機能デバイス100を示すブロック図である。タッチ感知ディスプレイ112は、便宜上「タッチスクリーン」と呼ばれる場合があり、タッチ感知ディスプレイシステムとしても既知であるか、又はそのように呼ばれる場合もある。デバイス100は、メモリ102(1つ以上のコンピュータ可読記憶媒体を含み得る)、メモリコントローラ122、1つ以上の処理ユニット(CPU)120、周辺機器インタフェース118、RF回路機構108、オーディオ回路機構110、スピーカ111、マイクロホン113、入出力(I/O)サブシステム106、他の入力又は制御デバイス116、並びに外部ポート124を含み得る。デバイス100は、1つ以上の光センサ164を含み得る。これらの構成要素は、1つ以上の通信バス又は信号線103を介して通信することができる。
デバイス100は、ポータブル多機能デバイスの一実施例に過ぎず、デバイス100は、示されているものよりも多くの構成要素又は少ない構成要素を有し得るものであり、2つ以上の構成要素を組み合わせることができ、又は、それらの構成要素の異なる構成若しくは配置を有し得ることを理解されたい。図1に示される様々な構成要素は、1つ以上の信号処理回路及び/又は特定用途向け集積回路を含めた、ハードウェア、ソフトウェア、あるいはハードウェア及びソフトウェアの双方の組み合わせとして実装することができる。
メモリ102は、高速ランダムアクセスメモリを含み得るものであり、また、1つ以上の磁気ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性半導体メモリデバイスなどの、不揮発性メモリも含み得る。CPU 120及び周辺機器インタフェース118などの、デバイス100の他の構成要素によるメモリ102へのアクセスは、メモリコントローラ122によって制御することができる。
周辺機器インタフェース118を使用して、このデバイスの入力及び出力周辺機器を、CPU 120及びメモリ102に結合することができる。1つ以上のプロセッサ120は、メモリ102内に記憶された様々なソフトウェアプログラム及び/又は命令セットを稼働若しくは実行して、デバイス100に関する様々な機能を実行し、かつデータを処理する。
一部の実施形態では、周辺機器インタフェース118、CPU 120、及びメモリコントローラ122は、チップ104などの単一チップ上に実装することができる。一部の他の実施形態では、それらは、別個のチップ上に実装することができる。
RF(無線周波数)回路機構108は、電磁信号とも呼ばれるRF信号を送受信する。RF回路機構108は、電気信号を電磁信号に/電磁信号を電気信号に変換し、その電磁信号を介して、通信ネットワーク及び他の通信デバイスと通信する。
オーディオ回路機構110、スピーカ111、及びマイクロホン113は、ユーザとデバイス100との間のオーディオインタフェースを提供する。オーディオ回路機構110は、周辺機器インタフェース118からオーディオデータを受信し、そのオーディオデータを電気信号に変換し、その電気信号をスピーカ111に送信する。スピーカ111は、その電気信号を人間の可聴音波に変換する。オーディオ回路機構110はまた、マイクロホン113によって音波から変換された電気信号も受信する。オーディオ回路機構110は、その電気信号をオーディオデータに変換し、そのオーディオデータを、処理のために周辺機器インタフェース118に送信する。オーディオデータは、周辺機器インタフェース118によって、メモリ102及び/又はRF回路機構108から検索することができ、かつ/あるいは、メモリ102及び/又はRF回路機構108に送信することができる。一部の実施形態では、オーディオ回路機構110はまた、ヘッドセットジャック(例えば、図2の212)も含む。
I/Oサブシステム106は、タッチスクリーン112及び他の入力制御デバイス116などの、デバイス100上の入出力周辺機器を、周辺機器インタフェース118に結合する。I/Oサブシステム106は、ディスプレイコントローラ156、並びに他の入力又は制御デバイスのための1つ以上の入力コントローラ160を含み得る。1つ以上の入力コントローラ160は、他の入力又は制御デバイス116との間で電気信号を受信/送信する。他の入力制御デバイス116は、物理ボタン(例えば、プッシュボタン、ロッカボタンなど)、ダイヤル、スライダスイッチ、ジョイスティック、クリックホイールなどを含み得る。一部の代替的実施形態では、入力コントローラ160は、キーボード、赤外線ポート、USBポート、及びマウスなどのポインタデバイスのうちのいずれかに結合することができる(又は、いずれにも結合されない場合もある)。1つ以上のボタン(例えば、図2の208)は、スピーカ111及び/又はマイクロホン113の音量調節のための、アップ/ダウンボタンを含み得る。1つ以上のボタンはプッシュボタン(例えば、図2の206)を含み得る。
タッチ感知ディスプレイ112は、デバイスとユーザとの間の入力インタフェース及び出力インタフェースを提供する。ディスプレイコントローラ156は、タッチスクリーン112との間で、電気信号を受信及び/又は送信する。タッチスクリーン112は、ユーザに視覚出力を表示する。この視覚出力は、グラフィック、テキスト、アイコン、ビデオ、及びそれらの任意の組み合わせ(「グラフィック」と総称される)を含み得る。一部の実施形態では、これらの視覚出力の一部又は全ては、ユーザインタフェースオブジェクトに対応し得る。
タッチスクリーン112は、触覚及び/又は蝕知の接触に基づいて、ユーザからの入力を受け入れる、タッチ感知面、センサ、若しくはセンサのセットを有する。タッチスクリーン112及びディスプレイコントローラ156は(メモリ102内のあらゆる関連モジュール及び/又は命令セットと共に)、タッチスクリーン112上での接触(及び、その接触のあらゆる移動又は中断)を検出し、その検出された接触を、タッチスクリーン112上に表示されるユーザインタフェースオブジェクト(例えば、1つ以上のソフトキー、アイコン、ウェブページ、又は画像)との対話に変換する。例示的実施形態では、タッチスクリーン112とユーザとの間の接触点は、ユーザの指に対応する。
タッチスクリーン112は、LCD(液晶ディスプレイ)技術、LPD(発光ポリマーディスプレイ)技術、又はLED(発光ダイオード)技術を使用することができるが、他の実施形態では、他のディスプレイ技術を使用することができる。タッチスクリーン112及びディスプレイコントローラ156は、現在既知の、又は今後開発される複数のタッチ感知技術のうちのいずれかを使用して、接触、及びその接触のあらゆる移動若しくは中断を検出することができ、それらの技術としては、静電容量技術、抵抗性技術、赤外線技術、及び表面超音波技術、並びにタッチスクリーン112との1つ以上の接触点を判定するための、他の近接センサアレイ又は他の要素が挙げられるが、これらに限定されない。例示的実施形態では、Apple Inc.(Cupertino,California)によるiPhone(登録商標)、iPod Touch(登録商標)、及びiPad(登録商標)で見出されるものなどの、投影型相互静電容量式検知技術が使用される。
タッチスクリーン112は、100dpiを超えるビデオ解像度を有し得る。一部の実施形態では、タッチスクリーンは、約160dpiのビデオ解像度を有する。ユーザは、スタイラス、指などの、任意の好適な物体又は付属物を使用して、タッチスクリーン112と接触することができる。一部の実施形態では、ユーザインタフェースは、主として指に基づく接触及びジェスチャで機能するように設計されるが、これらは、タッチスクリーン上での指の接触面積がより広いことにより、スタイラスに基づく入力よりも精度が低い恐れがある。一部の実施形態では、デバイスは、指に基づく粗い入力を、ユーザによって所望されるアクションを実行するための、正確なポインタ/カーソルの位置又はコマンドに変換する。手書き入力は、指に基づく接触若しくはスタイラスに基づく接触の場所及び移動を介して、タッチスクリーン112上に提供することができる。一部の実施形態では、タッチスクリーン112は、指に基づく入力又はスタイラスに基づく入力を、その現在の手書き入力に対する即座の視覚フィードバックとしてレンダリングし、筆記用具(例えば、ペン)を使用する、書き込み面(例えば、1枚の紙)上での実際の書き込みの、視覚効果を提供する。
一部の実施形態では、タッチスクリーンに加えて、デバイス100は、特定の機能をアクティブ化又は非アクティブ化するための、タッチパッド(図示せず)を含み得る。一部の実施形態では、このタッチパッドは、タッチスクリーンとは異なり、視覚出力を表示しない、そのデバイスのタッチ感知区域である。タッチパッドは、タッチスクリーン112とは別個のタッチ感知面、又はタッチスクリーンによって形成されるタッチ感知面の拡張部とすることができる。
デバイス100はまた、様々な構成要素に電力を供給するための、電力システム162も含む。電力システム162は、電力管理システム、1つ以上の電源(例えば、バッテリ、交流(AC))、再充電システム、停電検出回路、電力コンバータ又はインバータ、電力状態インジケータ(例えば、発光ダイオード(LED))、並びにポータブルデバイス内での電力の生成、管理、及び分配に関連付けられる任意の他の構成要素を含み得る。
デバイス100はまた、1つ以上の光センサ164も含み得る。図1は、I/Oサブシステム106内の光センサコントローラ158に結合された、光センサを示す。光センサ164は、電荷結合素子(CCD)又は相補的金属酸化物半導体(CMOS)フォトトランジスタを含み得る。光センサ164は、1つ以上のレンズを通して投影された、環境からの光を受光し、その光を、画像を表すデータに変換する。撮像モジュール143(カメラモジュールとも呼ばれる)と関連して、光センサ164は、静止画像又はビデオを取り込むことができる。
デバイス100はまた、1つ以上の近接センサ166も含み得る。図1は、周辺機器インタフェース118に結合された、近接センサ166を示す。あるいは、近接センサ166は、I/Oサブシステム106内の入力コントローラ160に結合することもできる。一部の実施形態では、この多機能デバイスが、ユーザの耳の近くに配置される場合(例えば、ユーザが電話通話を行っている場合)、近接センサは、タッチスクリーン112をオフにして無効化する。
デバイス100はまた、1つ以上の加速度計168も含み得る。図1は、周辺機器インタフェース118に結合された、加速度計168を示す。あるいは、加速度計168は、I/Oサブシステム106内の入力コントローラ160に結合することもできる。一部の実施形態では、情報は、1つ以上の加速度計から受信されたデータの分析に基づいて、縦表示又は横表示で、タッチスクリーンディスプレイ上に表示される。デバイス100は、任意選択的に、加速度計168に加えて、デバイス100の位置及び向き(例えば、縦表示又は横表示)に関する情報を取得するための、磁力計(図示せず)及びGPS(又は、GLONASS若しくは他のグローバルナビゲーションシステム)受信機(図示せず)を含む。
一部の実施形態では、メモリ102に記憶されたソフトウェア構成要素は、オペレーティングシステム126、通信モジュール(又は、命令セット)128、接触/動きモジュール(又は命令セット)130、グラフィックモジュール(又は、命令セット)132、テキスト入力モジュール(又は、命令セット)134、全地球測位システム(GPS)モジュール(又は、命令セット)135、及びアプリケーション(又は、命令セット)136を含む。更には、一部の実施形態では、図1及び図3に示すように、メモリ102は、手書き入力モジュール157を記憶する。手書き入力モジュール157は、手書き認識モデルを含み、デバイス100(又は、デバイス300)のユーザに、手書き認識及び入力機能を提供する。手書き入力モジュール157の更なる詳細は、図5〜図27、及びそれらの付随説明に関連して提供される。
オペレーティングシステム126(例えば、Darwin(登録商標)、RTXC(登録商標)、LINUX(登録商標)、UNIX(登録商標)、OS X(登録商標)、WINDOWS(登録商標)、又はVxWorks(登録商標)などの組み込みオペレーティングシステム)は、一般的なシステムタスク(例えば、メモリ管理、記憶デバイス制御、電力管理など)を制御及び管理するための、様々なソフトウェア構成要素及び/又はドライバを含み、様々なハードウェア構成要素及びソフトウェア構成要素との間の通信を容易にする。
通信モジュール128は、1つ以上の外部ポート124を介した他のデバイスとの通信を容易にし、また、RF回路機構108及び/又は外部ポート124によって受信されたデータを処理するための様々なソフトウェア構成要素も含む。外部ポート124(例えば、ユニバーサルシリアルバス(USB)、FIREWIRE(登録商標)など)は、他のデバイスに直接結合するように、又はネットワーク(例えば、インターネット、無線LANなど)を介して間接的に結合するように適合される。
接触/動きモジュール130は、(ディスプレイコントローラ156と関連して)タッチスクリーン112との接触、及び他のタッチ感知デバイス(例えば、タッチパッド又は物理クリックホイール)との接触を検出することができる。接触/動きモジュール130は、接触が生じたか否かを判定すること(例えば、指を下ろすイベントを検出すること)、接触の移動が存在するか否かを判定し、タッチ感知面を横断する移動を追跡すること(例えば、指をドラッグする1つ以上のイベントを検出すること)、及び接触が停止したか否かを判定すること(例えば、指を上げるイベント又は接触の中断を検出すること)などの、接触の検出に関連する様々な動作を実行するための、様々なソフトウェア構成要素を含む。接触/動きモジュール130は、タッチ感知面から接触データを受信する。一連の接触データによって表される、接触点の移動を判定することは、接触点の速さ(大きさ)、速度(大きさ及び方向)、及び/又は加速度(大きさ及び/又は方向の変化)を判定することを含み得る。これらの操作は、単一の接触(例えば、1本の指の接触)又は複数の同時接触(例えば、「マルチタッチ」/複数の指の接触)に適用することができる。一部の実施形態では、接触/動きモジュール130及びディスプレイコントローラ156は、タッチパッド上での接触を検出する。
接触/動きモジュール130は、ユーザによるジェスチャ入力を検出することができる。タッチ感知面上での異なるジェスチャは、異なる接触パターンを有する。それゆえ、特定の接触パターンを検出することによって、ジェスチャを検出することができる。例えば、指のタップジェスチャを検出することは、指を下ろすイベントを検出し、続いて(例えば、アイコンの位置での)その指を下ろすイベントと同じ位置(又は、実質的に同じ位置)で指を上げる(リフトオフする)イベントを検出することを含む。別の実施例として、タッチ感知面上での指のスワイプジェスチャを検出することは、指を下ろすイベントを検出し、続いて1つ以上の指をドラッグするイベントを検出し、その後、続いて指を上げる(リフトオフする)イベントを検出することを含む。
接触/動きモジュール130は、タッチ感知ディスプレイスクリーン112上に表示される、手書き入力インタフェースの手書き入力区域内の(又は、図3での、ディスプレイ340上に表示される手書き入力区域に対応する、タッチパッド355の区域内の)、手書きストロークの入力を登録するために、手書き入力モジュール157によって、任意選択的に利用される。一部の実施形態では、最初の指を下ろすイベント、最後の指を上げるイベント、それらの間の任意の時間中の接触に関連付けられる、場所、動きの経路、及び強度が、手書きストロークとして記録される。そのような情報に基づいて、そのユーザ入力に関するフィードバックとして、ディスプレイ上に手書きストロークをレンダリングすることができる。更には、接触/動きモジュール130によって登録された手書きストロークに基づいて、1つ以上の入力画像を生成することができる。
グラフィックモジュール132は、表示されるグラフィックの明度を変更するための構成要素を含めた、タッチスクリーン112又は他のディスプレイ上にグラフィックをレンダリングして表示するための、様々な既知のソフトウェア構成要素を含む。本明細書で使用するとき、用語「グラフィック」は、ユーザに対して表示することが可能な任意のオブジェクトを含み、それらのオブジェクトとしては、テキスト、ウェブページ、アイコン(ソフトキーを含むユーザインタフェースオブジェクトなど)、デジタル画像、ビデオ、アニメーションなどが挙げられるが、これらに限定されない。
一部の実施形態では、グラフィックモジュール132は、使用されるグラフィックを表すデータを記憶する。各グラフィックには、対応するコードを割り当てることができる。グラフィックモジュール132は、アプリケーションなどから、必要に応じて、座標データ及び他のグラフィック特性データと共に、表示されるグラフィックを指定する1つ以上のコードを受信し、次いで、ディスプレイコントローラ156に出力するためのスクリーン画像データを生成する。
テキスト入力モジュール134は、グラフィックモジュール132の構成要素とすることができ、様々なアプリケーション(例えば、連絡先137、電子メール140、IM 141、ブラウザ147、及びテキスト入力を必要とする任意の他のアプリケーション)内でテキストを入力するための、ソフトキーボードを提供する。一部の実施形態では、テキスト入力モジュール134のユーザインタフェースを通じて、例えば、キーボード選択アフォーダンスを通じて、手書き入力モジュール157が、任意選択的に呼び出される。一部の実施形態では、同じ又は同様のキーボード選択アフォーダンスはまた、テキスト入力モジュール134を呼び出すために、手書き入力インタフェース内にも提供される。
GPSモジュール135は、デバイスの場所を判定し、この情報を、様々なアプリケーションで使用するために(例えば、場所に基づくダイヤル発呼で使用するために電話138へ、写真/ビデオのメタデータとしてカメラ143へ、並びに、天気ウィジェット、地域のイエローページウィジェット、及び地図/ナビゲーションウィジェットなどの、場所に基づくサービスを提供するアプリケーションへ)提供する。
アプリケーション136は、以下のモジュール(又は、命令セット)、又はそれらのサブセット若しくはスーパーセットを含み得る:連絡先モジュール137(アドレス帳又は連絡先リストと呼ばれる場合もある)、電話モジュール138;テレビ会議モジュール139;電子メールクライアントモジュール140;インスタントメッセージング(IM)モジュール141;トレーニングサポートモジュール142;静止画像及び/又はビデオ画像用のカメラモジュール143;画像管理モジュール144;ブラウザモジュール147;カレンダーモジュール148;天気ウィジェット149−1、株価ウィジェット149−2、計算機ウィジェット149−3、アラーム時計ウィジェット149−4、辞書ウィジェット149−5、及びユーザによって取得された他のウィジェット、並びにユーザ作成ウィジェット149−6のうちの1つ以上を含み得る、ウィジェットモジュール149;ユーザ作成ウィジェット149−6を作成するためのウィジェット作成モジュール150;検索モジュール151;ビデオプレーヤモジュール及び音楽プレーヤモジュールで構成することができる、ビデオ及び音楽プレーヤモジュール152;メモモジュール153;地図モジュール154;並びに/あるいはオンラインビデオモジュール155。
メモリ102内に記憶することが可能な他のアプリケーション136の例としては、他のワードプロセッシングアプリケーション、他の画像編集アプリケーション、描画アプリケーション、プレゼンテーションアプリケーション、JAVA(登録商標)対応アプリケーション、暗号化、デジタル著作権管理、音声認識、及び音声複製が挙げられる。
タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、及びテキスト入力モジュール134と関連して、連絡先モジュール137は、(例えば、メモリ102又はメモリ370内の連絡先モジュール137のアプリケーション内部状態192内に記憶される)アドレス帳又は連絡先リストを管理するために使用することができ、この管理には、アドレス帳に名前を追加すること、アドレス帳から名前を削除すること、電話番号、電子メールアドレス、実際の住所、又は他の情報を名前と関連付けること、画像を名前と関連付けること、名前を分類して並び替えること、電話138、テレビ会議139、電子メール140、又はIM 141などによる通信を開始及び/又は促進するために、電話番号又は電子メールアドレスを提供することなどが含まれる。
RF回路機構108、オーディオ回路機構110、スピーカ111、マイクロホン113、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、及びテキスト入力モジュール134と関連して、電話モジュール138は、電話番号に対応する一連の文字を入力し、アドレス帳137内の1つ以上の電話番号にアクセスし、入力されている電話番号を修正し、それぞれの電話番号をダイヤルし、会話を実行し、会話が完了した際に接続を切るか又は電話を切るために、使用することができる。上述のように、この無線通信は、複数の通信規格、通信プロトコル、及び通信技術のうちのいずれかを使用することができる。
RF回路機構108、オーディオ回路機構110、スピーカ111、マイクロホン113、タッチスクリーン112、ディスプレイコントローラ156、光センサ164、光センサコントローラ158、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、テキスト入力モジュール134、連絡先リスト137、及び電話モジュール138と関連して、テレビ会議モジュール139は、ユーザの指示に従って、ユーザと1人以上の他の参加者との間のビデオ会議を開始し、実行し、終了するための、実行可能命令を含む。
RF回路機構108、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、及びテキスト入力モジュール134と関連して、電子メールクライアントモジュール140は、ユーザの指示に応じて、電子メールを作成し、送信し、受信し、管理するための、実行可能命令を含む。画像管理モジュール144と関連して、電子メールクライアントモジュール140は、カメラモジュール143で撮影された静止画像又はビデオ画像を有する電子メールを作成及び送信することを、非常に容易にする。
RF回路機構108、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、及びテキスト入力モジュール134と関連して、インスタントメッセージングモジュール141は、インスタントメッセージに対応する一連の文字を入力し、従前に入力された文字を修正し、(例えば、電話ベースのインスタントメッセージ用のショートメッセージサービス(SMS)若しくはマルチメディアメッセージサービス(MMS)プロトコルを使用して、又はインターネットベースのインスタントメッセージ用のXMPP、SIMPLE、若しくはIMPSを使用して)それぞれのインスタントメッセージを送信し、インスタントメッセージを受信し、受信されたインスタントメッセージを見るための、実行可能命令を含む。一部の実施形態では、送信及び/又は受信されるインスタントメッセージは、MMS及び/又は拡張メッセージングサービス(EMS)でサポートされるような、グラフィック、写真、オーディオファイル、ビデオファイル、及び/又は他の添付ファイルを含み得る。本明細書で使用するとき、「インスタントメッセージング」とは、電話ベースのメッセージ(例えば、SMS又はMMSを使用して送信されるメッセージ)及びインターネットベースのメッセージ(例えば、XMPP、SIMPLE、又はIMPSを使用して送信されるメッセージ)の双方を指す。
RF回路機構108、タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、テキスト入力モジュール134、GPSモジュール135、地図モジュール154、及び音楽プレーヤモジュール146と関連して、トレーニングサポートモジュール142は、(例えば、時間、距離、及び/又はカロリー消費目標を有する)トレーニングを作成し、トレーニングセンサ(スポーツデバイス)と通信し、トレーニングセンサデータを受信し、トレーニングを監視するために使用されるセンサを較正し、トレーニング用の音楽を選択及び再生し、トレーニングデータを表示、記憶、及び送信するための、実行可能命令を含む。
タッチスクリーン112、ディスプレイコントローラ156、光センサ164、光センサコントローラ158、接触モジュール130、グラフィックモジュール132、及び画像管理モジュール144と関連して、カメラモジュール143は、静止画像又は(ビデオストリームを含む)ビデオを取り込み、それらをメモリ102内に記憶し、静止画像又はビデオの特性を修正するか、あるいはメモリ102から静止画像又はビデオを削除するための、実行可能命令を含む。
タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、テキスト入力モジュール134、及びカメラモジュール143と関連して、画像管理モジュール144は、静止画像及び/又はビデオ画像を配列し、修正(例えば、編集)するか若しくは他の方式で操作し、ラベルを付け、削除し、(例えば、デジタルスライドショー又はアルバム内で)提示し、記憶するための、実行可能命令を含む。
RF回路機構108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、及びテキスト入力モジュール134と関連して、ブラウザモジュール147は、ウェブページ又はその諸部分、並びにウェブページにリンクされた添付ファイル及び他のファイルを検索すること、リンクすること、受信すること、及び表示することを含めた、ユーザの指示に従ってインターネットを閲覧するための、実行可能命令を含む。
RF回路機構108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、テキスト入力モジュール134、電子メールクライアントモジュール140、及びブラウザモジュール147と関連して、カレンダーモジュール148は、ユーザの指示に従って、カレンダー、及びカレンダーに関連付けられたデータ(例えば、カレンダー項目、to doリストなど)を作成し、表示し、修正し、記憶するための、実行可能命令を含む。
RF回路機構108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、テキスト入力モジュール134、及びブラウザモジュール147と関連して、ウィジェットモジュール149は、ユーザによってダウンロードされ、使用することが可能なミニアプリケーション(例えば、天気ウィジェット149−1、株価ウィジェット149−2、計算機ウィジェット149−3、アラーム時計ウィジェット149−4、及び辞書ウィジェット149−5)、又はユーザによって作成することが可能なミニアプリケーション(例えば、ユーザ作成ウィジェット149−6)である。一部の実施形態では、ウィジェットは、HTML(ハイパーテキストマークアップ言語)ファイル、CSS(カスケーディングスタイルシート)ファイル、及びJavaScript(登録商標)ファイルを含む。一部の実施形態では、ウィジェットは、XML(拡張可能マークアップ言語)ファイル及びJavaScriptファイル(例えば、Yahoo!(登録商標)ウィジェット)を含む。
RF回路機構108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、テキスト入力モジュール134、及びブラウザモジュール147と関連して、ウィジェット作成モジュール150は、ウィジェットを作成する(例えば、ウェブページのユーザ指定箇所をウィジェットに変える)ために、ユーザによって使用することができる。
タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、及びテキスト入力モジュール134と関連して、検索モジュール151は、ユーザの指示に従って、1つ以上の検索基準(例えば、1つ以上のユーザ指定の検索条件)に一致する、メモリ102内のテキスト、音楽、音声、画像、ビデオ、及び/又は他のファイルを検索するための、実行可能命令を含む。
タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、オーディオ回路機構110、スピーカ111、RF回路機構108、及びブラウザモジュール147と関連して、ビデオ及び音楽プレーヤモジュール152は、MP3又はAACファイルなどの1つ以上のファイル形式で記憶された、録音済みの音楽及び他の音声ファイルを、ユーザがダウンロード及び再生することを可能にする、実行可能命令と、ビデオを(例えば、タッチスクリーン112上に、又は外部ポート124を介して外部に接続されたディスプレイ上に)表示するか、提示するか、又は他の方式で再生するための、実行可能命令とを含む。一部の実施形態では、デバイス100は、iPod(Apple Inc.の商標)などのMP3プレーヤの機能性を含み得る。
タッチスクリーン112、ディスプレイコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、及びテキスト入力モジュール134と関連して、メモモジュール153は、ユーザの指示に従って、メモ、to doリストなどを作成及び管理するための、実行可能命令を含む。
RF回路機構108、タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、手書き入力モジュール157、テキスト入力モジュール134、GPSモジュール135、及びブラウザモジュール147と関連して、地図モジュール154は、ユーザの指示に従って、地図、及び地図に関連付けられたデータ(例えば、運転方向、特定の場所若しくはその付近の店舗及び関心対象の他の地点についてのデータ、並びに場所に基づく他のデータ)を受信し、表示し、修正し、記憶するために使用することができる。
タッチスクリーン112、ディスプレイシステムコントローラ156、接触モジュール130、グラフィックモジュール132、オーディオ回路機構110、スピーカ111、RF回路機構108、手書き入力モジュール157、テキスト入力モジュール134、電子メールクライアントモジュール140、及びブラウザモジュール147と関連して、オンラインビデオモジュール155は、ユーザが、特定のオンラインビデオにアクセスし、閲覧し、(例えば、ストリーミング及び/又はダウンロードによって)受信し、(例えば、タッチスクリーン上で、又は外部ポート124を介して接続された外部のディスプレイ上で)再生し、そのオンラインビデオへのリンクを有する電子メールを送信し、また他の方式で、H.264などの1つ以上のファイル形式でオンラインビデオを管理することが可能となる、命令を含む。一部の実施形態では、電子メールクライアントモジュール140ではなく、インスタントメッセージングモジュール141を使用して、特定のオンラインビデオへのリンクを送信する。
上記で特定されたモジュール及びアプリケーションのそれぞれは、上述の1つ以上の機能、及び本出願で説明される方法(例えば、コンピュータにより実施される方法及び本明細書で説明される他の情報処理方法)を実行する、実行可能命令のセットに対応する。これらのモジュール(すなわち、命令セット)は、別個のソフトウェアプログラム、手順、又はモジュールとして実装される必要はなく、それゆえ、様々な実施形態では、これらのモジュールの様々なサブセットを組み合わせるか、又は他の方式で再構成することができる。一部の実施形態では、メモリ102は、上記で特定されたモジュール及びデータ構造のサブセットを記憶することができる。更には、メモリ102は、上述されていない追加的モジュール及びデータ構造を記憶することができる。
一部の実施形態では、デバイス100は、デバイス上での既定の機能のセットの動作が、排他的にタッチスクリーン及び/又はタッチパッドを介して実行されるデバイスである。デバイス100の動作に関する主要な入力制御デバイスとして、タッチスクリーン及び/又はタッチパッドを使用することによって、デバイス100上の物理入力制御デバイス(プッシュボタン、ダイヤルなど)の数を低減することができる。
図2は、一部の実施形態に係る、タッチスクリーン112を有するポータブル多機能デバイス100を示す。このタッチスクリーンは、ユーザインタフェース(UI)200内に、1つ以上のグラフィックを表示することができる。本実施形態、並びに以下で説明される他の実施形態では、ユーザは、例えば、1本以上の指202(図には正確な縮尺率では描かれていない)又は1つ以上のスタイラス203(図には正確な縮尺率では描かれていない)を使用して、グラフィック上でジェスチャを実施することによって、グラフィックのうちの1つ以上を選択することができる。一部の実施形態では、ユーザが1つ以上のグラフィックとの接触を中断する場合に、1つ以上のグラフィックの選択が発生する。一部の実施形態では、このジェスチャは、1回以上のタップ、1回以上の(左から右、右から左、上向き、及び/又は下向きの)スワイプ、及び/又は、デバイス100と接触した(右から左、左から右、上向き、及び/又は下向きの)指のローリングを含み得る。一部の実施形態では、グラフィックとの不測の接触は、そのグラフィックを選択し得ない。例えば、選択に対応するジェスチャがタップである場合、アプリケーションアイコンの上を掃過するスワイプジェスチャは、対応するアプリケーションを選択し得ない。
デバイス100はまた、「ホーム」又はメニューボタン204などの、1つ以上の物理ボタンも含み得る。前述のように、メニューボタン204を使用して、デバイス100上で実行することが可能なアプリケーションのセット内の任意のアプリケーション136に、ナビゲートすることができる。あるいは、一部の実施形態では、メニューボタンは、タッチスクリーン112上に表示されるGUI内の、ソフトキーとして実装される。
一実施形態では、デバイス100は、タッチスクリーン112、メニューボタン204、デバイスの電源をオン/オフし、デバイスをロックするためのプッシュボタン206、音量調節ボタン208、加入者識別モジュール(SIM)カードスロット210、ヘッドセットジャック212、及びドッキング/充電用外部ポート124を含む。プッシュボタン206は、ボタンを押し下げて、既定の時間間隔にわたってボタンを押し下げられた状態で保持することによって、デバイス上の電源をオン/オフし、ボタンを押し下げて、既定の時間間隔が経過する前にボタンを解放することによって、デバイスをロックし、及び/又は、デバイスをロック解除するか、若しくはロック解除プロセスを開始するために、使用することができる。代替的実施形態では、デバイス100はまた、マイクロホン113を介して、一部の機能のアクティブ化又は非アクティブ化に関する口頭入力も受け入れることができる。
図3は、一部の実施形態に係る、ディスプレイ及びタッチ感知面を備える、例示的な多機能デバイスのブロック図である。デバイス300は、ポータブル型である必要はない。一部の実施形態では、デバイス300は、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、マルチメディアプレーヤデバイス、ナビゲーションデバイス、教育用デバイス(子供の学習玩具など)、ゲームシステム、電話デバイス、又は制御デバイス(例えば、家庭用又は業務用コントローラ)である。デバイス300は、典型的には、1つ以上の処理ユニット(CPU)310、1つ以上のネットワーク又は他の通信インタフェース360、メモリ370、及びこれらの構成要素を相互接続するための1つ以上の通信バス320を含む。通信バス320は、システム構成要素間の通信を相互接続及び制御する、(チップセットと呼ばれる場合もある)回路機構を含み得る。デバイス300は、典型的にはタッチスクリーンディスプレイである、ディスプレイ340を備える、入出力(I/O)インタフェース330を含む。I/Oインタフェース330はまた、キーボード及び/又はマウス(又は、他のポインティングデバイス)350、並びにタッチパッド355も含み得る。メモリ370は、DRAM、SRAM、DDR RAM、又は他のランダムアクセス半導体メモリデバイスなどの、高速ランダムアクセスメモリを含み、また、1つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性半導体記憶デバイスなどの、不揮発性メモリを含み得る。メモリ370は、CPU 310から遠隔に配置される1つ以上の記憶デバイスを、任意選択的に含み得る。一部の実施形態では、メモリ370は、ポータブル多機能デバイス100(図1)のメモリ102内に記憶されたプログラム、モジュール、及びデータ構造に類似する、プログラム、モジュール、及びデータ構造、若しくはそれらのサブセットを記憶する。更には、メモリ370は、ポータブル多機能デバイス100のメモリ102内には存在しない、追加的なプログラム、モジュール、及びデータ構造を記憶することができる。例えば、デバイス300のメモリ370は、描画モジュール380、プレゼンテーションモジュール382、ワードプロセッシングモジュール384、ウェブサイト作成モジュール386、ディスクオーサリングモジュール388、及び/又はスプレッドシートモジュール390を記憶することができるが、その一方で、ポータブル多機能デバイス100(図1)のメモリ102は、これらのモジュールを記憶しない場合がある。
上記で特定された図3の要素のそれぞれは、前述のメモリデバイスのうちの1つ以上に記憶することができる。上記で特定されたモジュールのそれぞれは、上述の機能を実行する命令セットに対応する。上記で特定されたモジュール又はプログラム(すなわち、命令セット)は、別個のソフトウェアプログラム、手順、又はモジュールとして実装される必要はなく、それゆえ、様々な実施形態では、これらのモジュールの様々なサブセットを組み合わせるか、又は他の方式で再構成することができる。一部の実施形態では、メモリ370は、上記で特定されたモジュール及びデータ構造のサブセットを記憶することができる。更には、メモリ370は、上述されていない追加的なモジュール及びデータ構造を記憶することができる。
図4は、ディスプレイ450(例えば、タッチスクリーンディスプレイ112)とは別個のタッチ感知面451(例えば、図3のタブレット又はタッチパッド355)を備えるデバイス(例えば、図3のデバイス300)上の、例示的ユーザインタフェースを示す。以下の実施例の多くは、タッチスクリーンディスプレイ112上での入力(タッチ感知面とディスプレイとが組み合わされている場合)を参照して説明されるが、一部の実施形態では、デバイスは、図4に示されるように、ディスプレイとは別個のタッチ感知面上での入力を検出する。一部の実施形態では、このタッチ感知面(例えば、図4での451)は、ディスプレイ(例えば、450)上の主軸(例えば、図4での453)に対応する主軸(例えば、図4での452)を有する。これらの実施形態によれば、デバイスは、ディスプレイ上のそれぞれの場所に対応する場所(例えば、図4では、460は468に対応し、462は470に対応する)での、タッチ感知面451との接触(例えば、図4での460及び462)を検出する。この方式で、タッチ感知面がディスプレイとは別個のものである場合、タッチ感知面(例えば、図4での451)上でデバイスによって検出されたユーザ入力(例えば、接触460及び462、並びにそれらの移動)が、多機能デバイスのディスプレイ(例えば、図4での450)上のユーザインタフェースを操作するために、デバイスによって使用される。同様の方法を、本明細書で説明される他のユーザインタフェースに関して使用することができる点を理解されたい。
ここで、多機能デバイス(例えば、デバイス100)上に実装することが可能な、手書き入力法及びユーザインタフェース(「UI」)の実施形態に注意を向ける。
図5は、一部の実施態様による、I/Oインタフェースモジュール500(例えば、図3でのI/Oインタフェース330、又は図1でのI/Oサブシステム106)と相互作用して、デバイス上に手書き入力能力を提供する、例示的な手書き入力モジュール157を示す、ブロック図である。図5に示されるように、手書き入力モジュール157は、入力処理モジュール502、手書き認識モジュール504、及び結果生成モジュール506を含む。一部の実施形態では、入力処理モジュール502は、分割モジュール508、及び正規化モジュール510を含む。一部の実施形態では、結果生成モジュール506は、部首クラスタ化モジュール512、及び1つ以上の言語モデル514を含む。
一部の実施形態では、入力処理モジュール502は、I/Oインタフェースモジュール500(例えば、図3でのI/Oインタフェース330、又は図1でのI/Oサブシステム106)と通信して、ユーザから手書き入力を受信する。手書きは、図1でのタッチ感知ディスプレイシステム112、及び/又は図3でのタッチパッド355などの、任意の好適な手段を介して入力される。それらの手書き入力は、手書き入力UI内の既定の手書き入力区域内にユーザによって提供された各ストロークを表す、データを含む。一部の実施形態では、手書き入力の各ストロークを表すデータは、手書き入力区域内での持続的接触(例えば、ユーザの指又はスタイラスとデバイスのタッチ感知面との接触)の、開始及び終了の場所、強度プロファイル、並びに動きの経路などの、データを含む。一部の実施形態では、I/Oインタフェースモジュール500は、関連する時間的情報及び空間的情報を有する、手書きストロークの配列516を、リアルタイムで入力処理モジュール502に渡す。同時に、I/Oインタフェースモジュールはまた、このユーザの入力に対する視覚フィードバックとして、手書き入力ユーザインタフェースの手書き入力区域内に、それらの手書きストロークのリアルタイムレンダリング518も提供する。
一部の実施形態では、各手書きストロークを表すデータが、入力処理モジュール502によって受信される際に、複数の連続的ストロークに関連付けられた、時間的情報及び空間的情報もまた記録される。例えば、それらのデータは、任意選択的に、それぞれのストローク配列番号を有する個別のストロークの、形状、サイズ、空間的飽和度、及び、手書き入力全体の書き込み方向に沿った、それらのストロークの相対的な空間的位置などを示す、スタックを含む。一部の実施形態では、入力処理モジュール502は、受信したストロークを、デバイスのディスプレイ518(例えば、図3でのディスプレイ340、又は図1でのタッチ感知ディスプレイ112)上にレンダリングするように、I/Oインタフェースモジュール500に命令を返す。一部の実施形態では、受信したストロークのレンダリングは、アニメーション化されて、筆記用具(例えば、ペン)を使用する書き込み面(例えば、1枚の紙)上での書き込みの実際の進行を模倣する、視覚効果が提供される。一部の実施形態では、ユーザは、レンダリングされるストロークの、ペン先スタイル、色、質感などを指定することが、任意選択的に可能となる。
一部の実施形態では、入力処理モジュール502は、手書き入力区域内に現時点で蓄積されているストロークを処理して、それらのストロークを、1つ以上の認識単位へと割り当てる。一部の実施形態では、各認識単位は、手書き認識モデル504によって認識される、特定の文字に対応する。一部の実施形態では、各認識単位は、手書き認識モデル504によって認識される、特定の出力文字又は部首に対応する。部首は、複数の複合表語文字内に見出される、再現性の構成要素である。複合表語文字は、一般的なレイアウト(例えば、左右のレイアウト、上下のレイアウトなど)に従って配置構成された、2つ以上の部首を含み得る。一実施例では、単一の中国文字「
」は、2つの部首、すなわち、左の部首「
」及び右の部首「
」を使用して構築されている。
一部の実施形態では、入力処理モジュール502は、現時点で蓄積されている手書きストロークを、1つ以上の認識単位に割り当てるか又は分離するために、分割モジュールに依存する。例えば、手書き文字「
」に関するストロークを分割する場合、分割モジュール508は、任意選択的に、手書き入力の左側にクラスタ化されるストロークを、1つの(すなわち、左の部首「
」に関する)認識単位に割り当て、手書き入力の右側にクラスタ化されるストロークを、別の(すなわち、右の部首「
」に関する)認識単位に割り当てる。あるいは、分割モジュール508はまた、これらのストロークの全てを、単一の(すなわち、文字「
」に関する)認識単位に割り当てることもできる。
一部の実施形態では、分割モジュール508は、現時点で蓄積されている手書き入力(例えば、1つ以上の手書きストローク)を、幾つかの異なる方式で認識単位のグループに分割して、分割束520を作り出す。例えば、これまでに、合計で9つのストロークが、手書き入力区域内に蓄積されていると想定する。分割束520の第1の分割鎖に従って、ストローク1、2、3が、第1の認識単位522へとグループ化され、ストローク4、5、6が、第2の認識単位526へとグループ化される。分割束520の第2の分割鎖に従って、ストローク1〜9の全てが、1つの認識単位526へとグループ化される。
一部の実施形態では、各分割鎖には、特定の分割鎖が現在の手書き入力の正しい分割であることの尤度を評価するための、分割スコアが与えられる。一部の実施形態では、各分割鎖の分割スコアを算出するために、任意選択的に使用される因子としては、ストロークの絶対的及び/又は相対的サイズ、様々な方向(例えば、x方向、y方向、z方向)でのストロークの相対的及び/又は絶対的スパン、ストロークの飽和レベルの平均及び/又は変動、隣接するストロークへの絶対的及び/又は相対的距離、ストロークの絶対的及び/又は相対的場所、ストロークが入力される順序又は配列、各ストロークの持続時間、各ストロークが入力された速度(又は、緩急)の平均及び/又は変動、ストロークの長さに沿った各ストロークの強度プロファイルなどが挙げられる。一部の実施形態では、これらの因子のうちの1つ以上に、1つ以上の関数又は変換を、任意選択的に適用して、分割束520内の種々の分割鎖の分割スコアが生成される。
一部の実施形態では、分割モジュール508が、ユーザから受信された現在の手書き入力516を分割した後、分割モジュール508は、その分割束520を、正規化モジュール510に渡す。一部の実施形態では、正規化モジュール510は、分割束520内で指定された各認識単位(例えば、認識単位522、524、及び526)に関する入力画像(例えば、入力画像528)を生成する。一部の実施形態では、この正規化モジュールは、手書き認識モデル504に、その入力画像を入力として提供することができるように、その入力画像に、必須又は所望の正規化(例えば、延伸、トリミング、ダウンサンプル、又はアップサンプリング)を実行する。一部の実施形態では、各入力画像528は、それぞれの1つの認識単位に割り当てられるストロークを含むものであり、手書き認識モジュール504によって認識される、1つの文字又は部首に対応する。
一部の実施形態では、入力処理モジュール502によって生成された入力画像は、個別のストロークに関連付けられる、いずれの時間的情報も含まず、空間的情報(例えば、入力画像内のピクセルの場所及び密度によって表される情報)のみが、その入力画像内に保存される。純粋に訓練書き込みサンプルの空間的情報について訓練された、手書き認識モデルは、空間的情報のみに基づく、手書き認識が可能である。結果として、その手書き認識モデルは、ストローク順序及びストローク方向非依存式であり、訓練の間に、その手書き認識モデルの語彙内の全ての文字(すなわち、全ての出力クラス)に関する、ストローク順序及びストローク方向の全ての可能な順列を、網羅的に列挙することはない。実際に、一部の実施形態では、手書き認識モジュール502は、入力画像内で、1つのストロークに属するピクセルと、別のストロークに属するピクセルとを、区別しない。
後に(例えば、図25A〜図27に関連して)より詳細に説明されるように、一部の実施形態では、一部の時間的に導出されるストローク分布情報が、純粋に空間的な手書き認識モデル内に再導入されて、その認識モデルのストローク順序及びストローク方向非依存性を損なうことなく、認識精度が向上する。
一部の実施形態では、1つの認識単位に関して、入力処理モジュール502によって生成された入力画像は、同じ分割鎖内の、いずれの他の認識単位の入力画像とも重複しない。一部の実施形態では、異なる認識単位に関して生成された入力画像は、ある程度の重複を有し得る。一部の実施形態では、ある程度の入力画像間の重複は、筆写体の書体で書かれた手書き入力、及び/又は続き文字を含む(例えば、1つのストロークが2つの隣接する文字を接続する)手書き入力の認識に関して、許容される。
一部の実施形態では、分割の前に、ある程度の正規化が実行される。一部の実施形態では、分割モジュール508及び正規化モジュール510の機能は、同じモジュール又は2つ以上の他のモジュールによって、実行することができる。
一部の実施形態では、各認識単位の入力画像528が、手書き認識モデル504に入力として提供されると、手書き認識モデル504は、その認識単位が、手書き認識モデル504のレパートリー又は語彙(すなわち、手書き認識モジュール504によって認識可能な、全ての文字及び部首のリスト)内の、それぞれの出力文字であることの、種々の尤度からなる出力を生成する。後により詳細に説明されるように、手書き認識モデル504は、複数のスクリプト(例えば、Unicode規格によって符号化されている、少なくとも3つの非重複スクリプト)内の多数の文字を認識するように、訓練されている。非重複スクリプトの例としては、ラテンスクリプト、中国文字、アラビア文字、ペルシャスクリプト、キリルスクリプト、及び絵文字などの人工的スクリプトが挙げられる。一部の実施形態では、手書き認識モデル504は、各入力画像に関する(すなわち、各認識単位に関する)1つ以上の出力文字を生成し、その文字認識に関連付けられる信頼レベルに基づいて、各出力文字に関するそれぞれの認識スコアを割り当てる。
一部の実施形態では、手書き認識モデル504は、分割束520に従って、候補束530を生成し、分割束520内の分割鎖内の各弧(例えば、それぞれの認識単位522、524、526に対応するもの)は、候補束530内で、1つ以上の候補弧(例えば、それぞれが、それぞれの出力文字に対応する、弧532、534、536、538、540)へと拡大される。候補束530内の各候補鎖は、その候補鎖の基底となる分割鎖の、それぞれの分割スコアと、その候補鎖内の出力文字に関連付けられた認識スコアとに従って、スコア化される。
一部の実施形態では、手書き認識モデル504が、認識単位の入力画像528から出力文字を生成した後、候補束530は、結果生成モジュール506に渡され、現時点で蓄積されている手書き入力516に関する1つ以上の認識結果が生成される。
一部の実施形態では、結果生成モジュール506は、部首クラスタ化モジュール512を利用して、候補鎖内の1つ以上の部首を、複合文字へと組み合わせる。一部の実施形態では、結果生成モジュール506は、1つ以上の言語モデル514を使用して、候補束530内の文字鎖が、その言語モデルによって表される特定の言語での適切な配列であるか否かを判定する。一部の実施形態では、結果生成モジュール506は、候補束530内の、特定の弧を削除するか、又は2つ以上の弧を組み合わせることによって、訂正候補束542を生成する。
一部の実施形態では、結果生成モジュール506は、訂正候補束542内に依然として維持されている各文字配列(例えば、文字配列544及び546)に関する統合認識スコアを、部首クラスタ化モジュール512及び言語モデル514によって修正された(例えば、増大又は減少された)、それらの文字配列内の出力文字の認識スコアに基づいて生成する。一部の実施形態では、結果生成モジュール506は、訂正候補束542内に維持されている種々の文字配列を、それらの統合認識スコアに基づいてランク付けする。
一部の実施形態では、結果生成モジュール506は、最上ランクの文字配列を、ランク付け認識結果548としてI/Oインタフェースモジュール500に送信して、ユーザに表示する。一部の実施形態では、I/Oインタフェースモジュール500は、受信した認識結果548(例えば、「
」及び「
」)を、手書き入力インタフェースの候補表示区域内に表示する。一部の実施形態では、I/Oインタフェースモジュールは、複数の認識結果(例えば、「
」及び「
」)をユーザに対して表示し、ユーザが、認識結果を選択し、関連するアプリケーションに関するテキスト入力として入力することを可能にする。一部の実施形態では、I/Oインタフェースモジュールは、最上ランクの認識結果(例えば、「
」)を、その認識結果のユーザ確認の、他の入力又は指示に応じて、自動的に入力する。最上ランクの結果の有効な自動入力により、入力インタフェースの効率を改善し、より良好なユーザエクスペリエンスを提供することができる。
一部の実施形態では、結果生成モジュール506は、他の因子を使用して、候補鎖の統合認識スコアを変更する。例えば、一部の実施形態では、結果生成モジュール506は、特定のユーザ又は多数のユーザに関する、最も頻繁に使用された文字のログを、任意選択的に維持する。結果生成モジュール506は、特定の候補文字又は文字配列が、最も頻繁に使用された文字又は文字配列のリストの中に見出される場合には、その特定の候補文字又は文字配列の統合認識スコアを、任意選択的に引き上げる。
一部の実施形態では、手書き入力モジュール157は、ユーザに表示された認識結果に関する、リアルタイムの更新を提供する。例えば、一部の実施形態では、ユーザによる各追加ストロークに関して、入力処理モジュール502は、任意選択的に、現時点で蓄積されている手書き入力を再分割し、手書き認識モデル504に提供された分割束及び入力画像を訂正する。同様に、手書き認識モデル504は、任意選択的に、結果生成モジュール506に提供された候補束を訂正する。結果として、結果生成モジュール506は、任意選択的に、ユーザに提示された認識結果を更新する。本明細書で使用されるとき、リアルタイム手書き認識とは、手書き認識結果が、即座に、又は短い期間内で(例えば、数十ミリ秒〜数秒内で)ユーザに提示される手書き認識を指す。リアルタイム手書き認識は、後に検索するために保存されている記録画像から、現在のユーザセッションの後に一度に実行されるのではなく、認識が直ちに開始されて、手書き入力の受信と実質的に同時に実行されるという点で、(例えば、オフライン光学式文字認識(OCR)アプリケーションにおけるような)オフライン認識とは異なる。更には、オフライン文字認識は、個別のストローク及びストロークの配列に関する、いずれの時間的情報も使用することなく実行されるため、分割は、そのような情報の恩恵を受けることなく実行される。類似した見た目の候補文字間の更なる曖昧性除去もまた、そのような時間的情報の恩恵を受けることがない。
一部の実施形態では、手書き認識モデル504は、畳み込みニューラルネットワーク(CNN)として実装される。図6は、複数の非重複スクリプト内の文字に関する書き込みサンプルを含む、マルチスクリプト訓練コーパス604について訓練される、例示的な畳み込みニューラルネットワーク602を示す。
図6に示されるように、畳み込みニューラルネットワーク602は、入力面606及び出力面608を含む。入力面606と出力面608との間に、複数の畳み込み層610(例えば、最初の畳み込み層610a、0以上の中間畳み込み層(図示せず)、及び最終畳み込み層610nを含む)が存在する。各畳み込み層610の後に、それぞれのサブサンプリング層612(例えば、最初のサブサンプリング層612a、0以上の中間サブサンプリング層(図示せず)、及び最終サブサンプリング層612n)が続く。これらの畳み込み層及びサブサンプリング層の後、出力面608の直前に、隠れ層614が存在する。隠れ層614は、出力面608の前の最終層である。一部の実施形態では、カーネル層616(例えば、最初のカーネル層616a、0以上の中間カーネル層(図示せず)、及び最終カーネル層612nを含む)が、各畳み込み層610の前に挿入されて、計算効率が向上する。
図6に示されるように、入力面606は、手書きの認識単位(例えば、手書きの文字又は部首)の入力画像614を受信し、出力面608は、その認識単位が、対応の出力クラス(例えば、ニューラルネットワークが認識するように構成されている出力文字のセット中の特定の文字)に属していることの尤度を示す、確率のセットを出力する。このニューラルネットワークの出力クラスの全体(又は、ニューラルネットワークの出力文字のセット)はまた、その手書き認識モデルのレパートリー又は語彙とも称される。本明細書で説明される畳み込みニューラルネットワークは、数万個の文字のレパートリーを有するように、訓練することができる。
入力画像614が、ニューラルネットワークの種々の層を通過して処理されると、入力画像614内に組み込まれている種々の空間的特徴が、畳み込み層610によって抽出される。各畳み込み層610はまた、特徴マップのセットとも称され、異なる文字に対応する画像を区別するための、入力画像614内の特定の特徴を見つけ出す、フィルタとしての役割を果たす。サブサンプリング層612は、入力画像614から、徐々に増大するスケールで、特徴を捕捉することを確実にする。一部の実施形態では、サブサンプリング層612は、最大値プーリング技術を使用して実装される。この最大値プーリング層は、より大きい局所領域にわたる、位置不変性を生じさせるものであり、先行の畳み込み層の出力画像を、各方向に沿って、Kx及びKy倍でダウンサンプリングする(Kx及びKyは、最大値プーリング矩形のサイズである)。最大値プーリングは、上位の不変特徴を選択することによって、より速い収束速度をもたらし、一般化能力を向上させる。一部の実施形態では、サブサンプリングは、他の方法を使用して達成される。
一部の実施形態では、畳み込み層610n及びサブサンプリング612nの最終セットの後、出力面608の前に、完全接続層、すなわち、隠れ層614が存在する。完全接続隠れ層614は、最終サブサンプリング層612n内のノードと出力面608内のノードとを完全に接続する、多層パーセプトロンである。隠れ層614は、前の層から受信される出力画像を取得し、ロジスティック回帰を通じて、出力層608内の出力文字のうちの1つに到達する。
畳み込みニューラルネットワーク602の訓練の間に、畳み込み層610内の特徴、及びそれらの特徴に関連付けられるそれぞれの重み、並びに隠れ層614内のパラメータに関連付けられる重みは、訓練コーパス604内の既知の出力クラスを有する書き込みサンプルに関して、分類エラーが最小限に抑えられるように、調整される。畳み込みニューラルネットワーク602が訓練され、パラメータ及び関連する重みの最適なセットが、そのネットワーク内の種々の層に関して確立されると、その畳み込みニューラルネットワーク602を使用して、ユーザから受信されたリアルタイム手書き入力に基づいて生成される入力画像などの、訓練コーパス604の一部ではない新たな書き込みサンプル618を、認識することができる。
本明細書で説明されるように、手書き入力インタフェースの畳み込みニューラルネットワークは、マルチスクリプト訓練コーパスを使用して訓練されて、マルチスクリプト又は混合スクリプト手書き認識を可能にする。一部の実施形態では、畳み込みニューラルネットワークは、3万〜6万超の文字の(例えば、全ての文字がUnicode規格によって符号化されている)幅広いレパートリーを認識するように訓練される。殆どの最新式の手書き認識システムは、ストローク順序依存式の隠れマルコフ法(HMM)に基づく。更には、殆どの既存の手書き認識モデルは、言語固有のものであり、数十個の文字(例えば、英語のアルファベット、ギリシャ語のアルファベット、全10個の数字などの文字)の小さいレパートリーから、最大数千個の文字(例えば、最も一般的に使用される中国文字のセット)を含む。それゆえ、本明細書で説明される汎用認識部は、殆どの既存のシステムよりも数桁多い文字を取り扱うことができる。
一部の従来の手書きシステムは、それぞれが特定の言語又は文字の小セットに関して適合された、幾つかの個別に訓練された手書き認識モデルを含み得る。書き込みサンプルは、分類することが可能となるまでは、種々の認識モデルを通って伝播される。例えば、手書きサンプルは、一連の連結された言語固有又はスクリプト固有の文字認識モデルに提供することができ、その手書きサンプルは、最初の認識モデルによって確証的に分類することができない場合には、次の認識モデルに提供され、この次の認識モデルが、それ自体のレパートリー内に、その手書きサンプルを分類することを試みる。この分類のための手法は、時間がかかり、採用する必要がある認識モデルが追加されるごとに、メモリ要件が急速に増大する。
他の最新式モデルは、ユーザが、好ましい言語を指定することを必要とするものであり、その選択された手書き認識モデルを使用して、現在の入力を分類する。そのような実装は、使用することが煩雑であり、著しくメモリを消費するばかりではなく、混合言語入力を認識するために使用することもできない。混合言語又は混合スクリプトの入力の途中で、言語設定を切り替えることが、ユーザに必要となることは、実際的ではない。
本明細書で説明されるマルチスクリプト又は汎用認識部は、従来の認識システムに関する、上記の問題のうちの少なくとも一部に対処する。図7は、大規模なマルチスクリプト訓練コーパスを使用して、手書き認識モジュール(例えば、畳み込みニューラルネットワーク)を訓練して、その手書き認識モジュールを、ユーザの手書き入力に関するリアルタイムのマルチ言語及びマルチスクリプト手書き認識を提供するために、その後に使用することができるようにするための、例示的プロセス700の流れ図である。
一部の実施形態では、手書き認識モデルの訓練は、サーバデバイス上で実行され、次いで、その訓練された手書き認識モデルが、ユーザデバイスに提供される。この手書き認識モデルは、任意選択的に、サーバからの更なる支援を必要とすることなく、ユーザデバイス上で、リアルタイム手書き認識をローカルで実行する。一部の実施形態では、同じデバイス上に、訓練及び認識の双方が提供される。例えば、サーバデバイスは、ユーザデバイスからユーザの手書き入力を受信し、手書き認識を実行し、その認識結果をリアルタイムでユーザデバイスに送信することができる。
例示的プロセス700では、1つ以上のプロセッサ及びメモリを有するデバイスで、デバイスは、マルチスクリプト訓練コーパスの空間的に導出される特徴(例えば、ストローク順序非依存式特徴)に基づいて、マルチスクリプト手書き認識モデルを訓練する(702)。一部の実施形態では、マルチスクリプト訓練コーパスの空間的に導出される特徴は、ストローク順序非依存式及びストローク方向非依存式である(704)。一部の実施形態では、マルチスクリプト手書き認識モデルの訓練は、手書きサンプル内のそれぞれのストロークに関連付けられる時間的情報とは無関係である(706)。具体的には、手書きサンプルの画像は、既定のサイズに正規化され、それらの画像は、その画像を形成するために個別のストロークが入力される順序についての、いかなる情報も含まない。更には、それらの画像はまた、その画像を形成するために個別のストロークが入力される方向についての、いかなる情報も含まない。実際に、訓練の間は、個別のストロークによって、どのように画像が時間的に形成されるかには関係なく、それらの手書き画像から特徴が抽出される。それゆえ、認識の間は、個別のストロークに関連する時間的情報は必要とされない。結果として、その認識は、手書き入力内での、遅延した順序外のストローク、及び恣意的なストローク方向にもかかわらず、一貫した認識結果を頑健に提供する。
一部の実施形態では、マルチスクリプト訓練コーパスは、少なくとも3つの非重複スクリプトの文字に対応する、手書きサンプルを含む。図6に示されるように、マルチスクリプト訓練コーパスは、多くのユーザから収集された手書きサンプルを含む。各手書きサンプルは、手書き認識モデルに表される、それぞれのスクリプトの1つの文字に対応する。手書き認識モデルを適切に訓練するために、訓練コーパスは、手書き認識モデル内に表されるスクリプトの各文字に関して、多数の書き込みサンプルを含む。
一部の実施形態では、少なくとも3つの非重複スクリプトは、中国文字、絵文字、及びラテンスクリプトを含む(708)。一部の実施形態では、マルチスクリプト手書き認識モデルは、少なくとも3つの非重複スクリプトにわたる3万個の文字を表す、少なくとも3万個の出力クラスを有する(710)。
一部の実施形態では、マルチスクリプト訓練コーパスは、Unicode規格で符号化されている全ての中国文字(例えば、全てのCJK(中国語−日本語−韓国語)統合漢字の、全て又は実質的な部分)の各文字に関する、それぞれの書き込みサンプルを含む。Unicode規格は、合計で約7万4千個のCJK統合漢字を定義する。CJK統合漢字の基本ブロック(4E00−9FFF)は、中国語、並びに日本語、韓国語、及びベトナム語で使用される、20,941個の基本中国文字を含む。一部の実施形態では、マルチスクリプト訓練コーパスは、CJK統合漢字の基本ブロック中の全ての文字に関する、書き込みサンプルを含む。一部の実施形態では、マルチスクリプト訓練コーパスは、1つ以上の複合中国文字を構造的に構成するために使用することが可能なCJK部首に関する、書き込みサンプルを更に含む。一部の実施形態では、マルチスクリプト訓練コーパスは、CJK統合漢字拡張のうちの1つ以上で符号化されている中国文字などの、より使用頻度が低い中国文字に関する、書き込みサンプルを更に含む。
一部の実施形態では、マルチスクリプト訓練コーパスは、Unicode規格によって符号化されているラテンスクリプト中の全ての文字の各文字に関する、それぞれの書き込みサンプルを更に含む。基本ラテンスクリプト中の文字は、ラテン大文字及びラテン小文字、並びに、標準的なラテンキーボード上で一般的に使用される、基本記号及び数字を含む。一部の実施形態では、マルチスクリプト訓練コーパスは、拡張ラテンスクリプト中の文字(例えば、基本ラテン文字の様々な強調形態)を更に含む。
一部の実施形態では、マルチスクリプト訓練コーパスは、いずれの自然人間言語にも関連付けられない、人工的スクリプトの各文字に対応する、書き込みサンプルを含む。例えば、一部の実施形態では、絵文字のセットが、任意選択的に、絵文字スクリプト中に定義され、それらの絵文字のそれぞれに対応する書き込みサンプルが、マルチスクリプト訓練コーパス内に含まれる。例えば、手描きのハート形記号は、訓練コーパス内の絵文字「
」に関する手書きサンプルである。同様に、手描きの笑顔(例えば、上を向いた弧の上方の2つの点)は、訓練コーパス内の絵文字「
」に関する手書きサンプルである。他の絵文字としては、種々の感情(例えば、歓喜、悲哀、怒り、当惑、驚愕、笑い、泣き、苛立ちなど)、種々の物体及びキャラクタ(例えば、猫、犬、ウサギ、心臓、果物、目、唇、贈り物、花、ろうそく、月、星など)、及び種々の行為(例えば、握手、キス、走る、踊る、跳び上がる、眠る、食べる、会う、愛する、好む、投票するなど)などを示すアイコンのカテゴリが挙げられる。一部の実施形態では、絵文字に対応する手書きサンプル内のストロークは、対応する絵文字を形成する実際の線の、単純化及び/又は様式化された線である。一部の実施形態では、各デバイス又はアプリケーションは、同じ絵文字に関して、異なるデザインを使用することができる。例えば、女性のユーザに提示される笑顔の絵文字は、男性のユーザに提示される笑顔の絵文字とは、それらの2人のユーザから受信される手書き入力が実質的に同じ場合であっても、異なるものとすることができる。
一部の実施形態では、マルチスクリプト訓練コーパスはまた、ギリシャ語スクリプト(例えば、ギリシャ文字及び記号を含む)、キリル文字スクリプト、ヘブライ語スクリプト、及びUnicode規格に従って符号化されている1つ以上の他のスクリプトなどの、他のスクリプト中の文字に関する書き込みサンプルも含む。一部の実施形態では、マルチスクリプト訓練コーパス内に含まれる、少なくとも3つの非重複スクリプトは、中国文字、絵文字、及びラテンスクリプト中の文字を含む。中国文字、絵文字、及びラテンスクリプト中の文字は、本来、非重複スクリプトである。多くの他のスクリプトは、少なくとも一部の文字に関して、互いに重複する場合がある。例えば、ラテンスクリプト中の一部の文字(例えば、A、Z)は、多くの他のスクリプト(例えば、ギリシャ語、及びキリル文字)中に見出すことができる。一部の実施形態では、マルチスクリプト訓練コーパスは、中国文字、アラビア語スクリプト、及びラテンスクリプトを含む。一部の実施形態では、マルチスクリプト訓練コーパスは、重複スクリプト及び/又は非重複スクリプトの、他の組み合わせを含む。一部の実施形態では、マルチスクリプト訓練コーパスは、Unicode規格によって符号化されている全ての文字に関する、書き込みサンプルを含む。
図7に示されるように、一部の実施形態では、マルチスクリプト手書き認識モデルを訓練するために、デバイスは、単一の入力面及び単一の出力面を有する、単一の畳み込みニューラルネットワークに、マルチスクリプト訓練コーパスの手書きサンプルを提供する(712)。デバイスは、マルチスクリプト訓練コーパス内に表される、少なくとも3つの非重複スクリプトの文字を区別するための、それらの手書きサンプルの空間的に導出される特徴(例えば、ストローク順序非依存式特徴)、及びそれらの空間的に導出される特徴に関するそれぞれの重みを、畳み込みニューラルネットワークを使用して判定する(714)。このマルチスクリプト手書き認識モデルは、単一の入力面及び単一の出力面を有する、単一の手書き認識モデルが、マルチスクリプト訓練コーパス内の全てのサンプルを使用して訓練されるという点で、従来のマルチスクリプト手書き認識モデルとは異なる。単一の畳み込みニューラルネットワークは、訓練コーパスの小さいサブセットをそれぞれが取り扱う、個別のサブネットワーク(例えば、それぞれが、特定の言語内で使用される特定のスクリプト又は文字に関して訓練される、サブネットワーク)に依存することなく、マルチスクリプト訓練コーパス内に表される全ての文字を識別するように訓練される。更には、この単一の畳み込みニューラルネットワークは、ラテンスクリプト及びギリシャ語スクリプトなどの(例えば、重複文字A、B、E、Zなどを有する)少数の重複スクリプトの文字ではなく、複数の非重複スクリプトにわたる多数の文字を識別するように訓練される。
一部の実施形態では、デバイスは、マルチスクリプト訓練コーパスの空間的に導出される特徴について訓練されている、マルチスクリプト手書き認識モデルを使用して、ユーザの手書き入力に関するリアルタイム手書き認識を提供する(716)。一部の実施形態では、ユーザの手書き入力に関するリアルタイム手書き認識を提供することは、ユーザが、手書き入力の追加及び訂正を継続して提供する際に、そのユーザの手書き入力に関する認識出力を、継続的に訂正することを含む。一部の実施形態では、ユーザの手書き入力に関するリアルタイム手書き認識を提供することは、マルチスクリプト手書き認識モデルを、ユーザデバイスに提供することを更に含み(718)、ユーザデバイスは、ユーザから手書き入力を受信し、そのマルチスクリプト手書き認識モデルに基づいて、手書き入力に対して手書き認識をローカルで実行する。
一部の実施形態では、デバイスは、それぞれの入力言語に重複が存在しない複数のデバイスに、マルチスクリプト手書き認識モデルを提供し、そのマルチスクリプト手書き認識モデルは、それらの各ユーザデバイスに関連付けられる、異なる言語の手書き認識に関して、それらの複数のデバイスのそれぞれで使用される。例えば、マルチスクリプト手書き認識モデルが、多くの異なるスクリプト及び言語での文字を認識するように訓練されている場合、その同じ手書き認識モデルを世界中で使用して、それらの入力言語のうちのいずれかに関する、手書き入力を提供することができる。英語及びヘブライ語で入力することのみを望むユーザ用の第1のデバイスは、中国語及び絵文字で入力することのみを望むユーザ用の第2のデバイスと同じ手書き認識モデルを使用して、手書き入力の機能性を提供することができる。第1のデバイスのユーザが、英語の手書き入力キーボード(例えば、英語固有の手書き認識モデルで実装されるもの)、及び別個のヘブライ語の手書き入力キーボード(例えば、ヘブライ語固有の手書き認識モデルで実装されるもの)を、別個にインストールすることを必要とする代わりに、同じ汎用マルチスクリプト手書き認識モデルを、第1のデバイス上に一旦インストールすると、英語、ヘブライ語の双方に関する手書き入力機能、並びに双方の言語での混合入力を提供するために使用することができる。更には、第2のユーザが、中国語の手書き入力キーボード(例えば、中国語固有の手書き認識モデルで実装されるもの)、及び別個の絵文字の手書き入力キーボード(例えば、絵文字の手書き認識モデルで実装されるもの)をインストールすることを必要とする代わりに、同じ汎用マルチスクリプト手書き認識モデルを、第2のデバイス上に一旦インストールすると、中国語、絵文字の双方に関する手書き入力機能、並びに双方のスクリプトでの混合入力を提供するために使用することができる。同じマルチスクリプト手書きモデルを使用して、複数のスクリプトにわたる幅広いレパートリー(例えば、100に近い異なるスクリプトで符号化されている文字の実質的な部分又は全て)を取り扱うことにより、デバイスの供給元及びユーザに対して実質的な負担を課すことなく、その認識部の有用性が向上する。
大規模なマルチスクリプト訓練コーパスを使用する、マルチスクリプト手書き認識モデルの訓練は、従来のHMMに基づく手書き認識システムとは異なるものであり、文字の個別のストロークに関連付けられる時間的情報には依存しない。更には、このマルチスクリプト認識システムに関するリソース及びメモリ要件は、そのマルチスクリプト認識システムの適用範囲となる記号及び言語の増加に比例して増大するものではない。例えば、従来の手書きシステムでは、言語の数の増加は、独立して訓練された別のモデルを追加することを意味し、メモリ要件は、その手書き認識システムの増大する能力に適応するために、少なくとも倍増されることになる。対照的に、マルチスクリプトモデルが、マルチスクリプト訓練コーパスによって訓練される場合、言語の適用範囲を増大させることは、更なる手書きサンプルを使用して、その手書き認識モデルを再訓練することを必要とし、出力面のサイズを増大させるが、その増大の量は極めて穏やかである。マルチスクリプト訓練コーパスが、n個の異なる言語に対応する手書きサンプルを含み、マルチスクリプト手書き認識モデルが、サイズmのメモリを占有し、言語の適用範囲をN個(N>n)の言語に増加させる場合、デバイスが、第2のマルチスクリプト訓練コーパスの空間的に導出される特徴に基づいて、マルチスクリプト手書き認識モデルを再訓練し、この第2のマルチスクリプト訓練コーパスが、N個の異なる言語に対応する第2の手書きサンプルを含むと想定する。N/nの変化が1〜100である場合に、M/mの変化は、1〜2の範囲内で、実質的に一定のまま維持される。マルチスクリプト手書き認識モデルが再訓練された後、デバイスは、その再訓練されたマルチスクリプト手書き認識モデルを使用して、ユーザの手書き入力に関するリアルタイム手書き認識を提供することができる。
図8A、図8Bは、ポータブルユーザデバイス(例えば、デバイス100)上に、リアルタイムのマルチスクリプト手書き認識及び入力を提供するための、例示的ユーザインタフェースを示す。図8A及び図8Bでは、手書き入力インタフェース802が、ユーザデバイスのタッチ感知ディスプレイスクリーン(例えば、タッチスクリーン112)上に表示されている。手書き入力インタフェース802は、手書き入力区域804、候補表示区域806、及びテキスト入力区域808を含む。一部の実施形態では、手書き入力インタフェース802は、複数の制御要素を更に含み、それぞれを呼び出して、手書き入力インタフェースに、既定の機能を実行させることができる。図8Aに示されるように、手書き入力インタフェース内には、削除ボタン、スペースボタン、復帰改行即ちEnterボタン、キーボード切り替えボタンが含まれる。他の制御要素も可能であり、手書き入力インタフェース802を利用する、それぞれの異なるアプリケーションに適合するように、任意選択的に、手書き入力インタフェース内に提供することができる。手書き入力インタフェース802の種々の構成要素のレイアウトは、単なる例示に過ぎず、異なるデバイス及び異なるアプリケーションによって変化し得る。
一部の実施形態では、手書き入力区域804は、ユーザから手書き入力を受信するための、タッチ感知区域である。手書き入力区域804内のタッチスクリーン上での持続的接触、及びその関連する動きの経路が、手書きストロークとして登録される。一部の実施形態では、デバイスによって登録された手書きストロークは、手書き入力区域804内に、その持続的接触によってトレースされた同じ場所で視覚的にレンダリングされる。図8Aに示されるように、ユーザは、手書き入力区域804内に、幾つかの手書き中国文字(例えば、「
」)、幾つかの手書き英語文字(例えば、「Happy」)、及び手描きの絵文字(例えば、笑顔)を含む、幾つもの手書きストロークを提供している。これらの手書き文字は、手書き入力区域804内の複数の行(例えば、2つの行)内に分布されている。
一部の実施形態では、候補表示区域806は、手書き入力区域804内に現時点で蓄積されている手書き入力に関する、1つ以上の認識結果(例えば、810及び812)を表示する。一般的に、最上ランクの認識結果(例えば、810)が、候補表示区域内の第1の位置に表示される。図8Aに示されるように、本明細書で説明される手書き認識モデルは、中国文字、ラテンスクリプト、及び絵文字を含めた、複数の非重複スクリプトの文字を認識することが可能であるため、この認識モデルによって提供される認識結果(例えば、810)は、手書き入力によって表された中国文字、英語文字、及び絵文字を、正確に含む。ユーザは、認識言語を選択又は切り替えるために、入力の書き込みの途中で中断することが必要とされない。
一部の実施形態では、テキスト入力区域808は、この手書き入力インタフェースを採用しているそれぞれのアプリケーションに提供される、テキスト入力を表示する区域である。図8Aに示されるように、テキスト入力区域808は、メモアプリケーションによって使用され、テキスト入力区域808内に現在示されているテキスト(例えば、「America
」)は、メモアプリケーションに既に提供されたテキスト入力である。一部の実施形態では、カーソル813が、テキスト入力区域808内での、現在のテキスト入力位置を示す。
一部の実施形態では、ユーザは、例えば、明示的な選択入力(例えば、表示された認識結果のうちの1つの上でのタップジェスチャ)、又は暗黙的な確認入力(例えば、「Enter」ボタン上でのタップジェスチャ、又は手書き入力区域内でのダブルタップジェスチャ)によって、候補表示区域806内に表示された特定の認識結果を選択することができる。図8Bに示されるように、ユーザは、(図8Aでの、認識結果810の上での接触814によって示されるような)タップジェスチャを使用して、最上ランクの認識結果810を、明示的に選択している。この選択入力に応じて、テキスト入力区域808内の、カーソル813によって示される挿入ポイントに、認識結果810のテキストが挿入される。図8Bに示されるように、選択された認識結果810のテキストが、テキスト入力区域808内に入力されると、手書き入力区域804及び候補表示区域806は、双方ともクリアされる。この時点で、手書き入力区域804は、新たな手書き入力を受け入れる準備が整い、候補表示区域806は、この時点で、その新たな手書き入力に関する認識結果を表示するために使用することが可能となる。一部の実施形態では、暗黙的確認入力は、ユーザが中断して最上ランクの認識結果を選択することを必要とせずに、テキスト入力区域808内に、最上ランクの認識結果を入力させる。優れた設計の暗黙的確認入力により、テキスト入力速度が向上し、テキスト構成の間の、ユーザに強いられる認知負担が軽減される。
一部の実施形態(図8A、8Bには示さず)では、現在の手書き入力の最上ランクの認識結果が、任意選択的に、テキスト入力区域808内に暫定的に表示される。このテキスト入力区域808内に示される暫定的テキスト入力は、例えば、その暫定的テキスト入力を取り囲む、暫定入力ボックスによって、テキスト入力区域内の他のテキスト入力から視覚的に識別される。この暫定入力ボックス内に示されるテキストは、未だ確定されておらず、また、関連するアプリケーション(例えば、メモアプリケーション)にも未だ提供されておらず、例えば、現在の手書き入力のユーザ訂正に応じて、最上ランクの認識結果が手書き入力モジュールによって変更されると、自動的に更新される。
図9A、図9Bは、ユーザデバイス上にマルチスクリプト手書き認識を提供するための、例示的プロセス900の流れ図である。一部の実施形態では、図900に示されるように、ユーザデバイスは、マルチスクリプト手書き認識モデルを受信し(902)、このマルチスクリプト認識モデルは、マルチスクリプト訓練コーパスの空間的に導出される特徴(例えば、ストローク順序及びストローク方向非依存式特徴)について訓練されており、このマルチスクリプト訓練コーパスは、少なくとも3つの非重複スクリプトの文字に対応する、手書きサンプルを含む。一部の実施形態では、マルチスクリプト手書き認識モデルは、単一の入力面及び単一の出力面を有する、単一の畳み込みニューラルネットワークであり(906)、マルチスクリプト訓練コーパス内に表される、少なくとも3つの非重複スクリプトの文字を区別するための、空間的に導出される特徴、及びそれらの空間的に導出される特徴に関するそれぞれの重みを含む。一部の実施形態では、マルチスクリプト手書き認識モデルは、手書き入力内で特定された1つ以上の認識単位の、それぞれの入力画像に基づいて、文字を認識するように構成され(908)、認識のために使用される、それぞれの空間的に導出される特徴は、その手書き入力内での、それぞれのストローク順序、ストローク方向、及びストロークの連続性とは無関係である。
一部の実施形態では、ユーザデバイスは、ユーザから手書き入力を受信し(908)、この手書き入力は、ユーザデバイスに結合されたタッチ感知面上に提供される、1つ以上の手書きストロークを含む。例えば、手書き入力は、指又はスタイラスと、ユーザデバイスに結合されたタッチ感知面との接触の、場所及び移動についての、それぞれのデータを含む。この手書き入力の受信に応じて、ユーザデバイスは、マルチスクリプト訓練コーパスの空間的に導出される特徴について訓練されている、マルチスクリプト手書き認識モデルに基づいて、1つ以上の手書き認識結果を、リアルタイムでユーザに提供する(910)(912)。
一部の実施形態では、リアルタイムの手書き認識結果をユーザに提供する場合、ユーザデバイスは、ユーザの手書き入力を、1つ以上の認識単位へと分割し(914)、各認識単位は、ユーザによって提供された手書きストロークのうちの1つ以上を含む。一部の実施形態では、ユーザデバイスは、ユーザの指又はスタイラスと、ユーザデバイスのタッチ感知面との接触によって作り出される、個別のストロークの、形状、場所、及びサイズに従って、ユーザの手書き入力を分割する。一部の実施形態では、この手書き入力の分割は、ユーザの指又はスタイラスと、ユーザデバイスのタッチ感知面との接触によって作り出される、個別のストロークの、相対順序及び相対位置を更に考慮に入れる。一部の実施形態では、ユーザの手書き入力は、筆写体の書体であり、その手書き入力内の各継続的ストロークは、印刷形態での認識文字内の、複数のストロークに対応し得る。一部の実施形態では、ユーザの手書き入力は、印刷形態での複数の認識文字にわたる、継続的ストロークを含み得る。一部の実施形態では、手書き入力の分割は、それぞれが各認識単位に対応する、1つ以上の入力画像を生成する。一部の実施形態では、それらの入力画像のうちの一部は、任意選択的に、幾つかの重複ピクセルを含む。一部の実施形態では、それらの入力画像は、いずれの重複ピクセルも含まない。一部の実施形態では、ユーザデバイスは、分割束を生成し、この分割束の各分割鎖が、現在の手書き入力を分割する、それぞれの方式を表す。一部の実施形態では、分割鎖内の各弧が、現在の手書き入力内のストロークの、それぞれのグループに対応する。
図900に示されるように、ユーザデバイスは、1つ以上の認識単位のそれぞれの対応の画像を、マルチスクリプト認識モデルに、入力として提供する(914)。1つ以上の認識単位のうちの少なくとも1つに関して、ユーザデバイスは、マルチスクリプト手書き認識モデルから、第1のスクリプトからの少なくとも第1の出力文字、及び、第1のスクリプトとは異なる第2のスクリプトからの、少なくとも第2の出力文字を取得する(916)。例えば、同じ入力画像は、マルチスクリプト認識モデルに、異なるスクリプトからの2つ以上の類似した見た目の出力文字を、その同じ入力画像に関する認識結果として出力させることができる。例えば、ラテンスクリプトでの文字「a」、及びギリシャス語クリプトでの文字「α」に関する手書き入力は、類似する場合が多い。更には、ラテンスクリプトでの文字「J」、及び中国文字「
」に関する手書き入力は、類似する場合が多い。同様に、絵文字「
」に関する手書き入力は、CJK部首「
」に関する手書き入力と類似する場合がある。一部の実施形態では、マルチスクリプト手書き認識モデルは、多くの場合、ユーザの手書き入力に対応する可能性が高い、複数の候補認識結果を生成するが、これは、手書き入力の視覚的外観が、人間の読み手でさえも、解読することが困難となるためである。一部の実施形態では、第1のスクリプトは、CJK基本文字ブロックであり、第2のスクリプトは、Unicode規格によって符号化されているようなラテンスクリプトである。一部の実施形態では、第1のスクリプトは、CJK基本文字ブロックであり、第2のスクリプトは、絵文字のセットである。一部の実施形態では、第1のスクリプトは、ラテンスクリプトであり、第2のスクリプトは、絵文字である。
一部の実施形態では、ユーザデバイスは、そのユーザデバイスの手書き入力インタフェースの候補表示区域内に、第1の出力文字及び第2の出力文字の双方を表示する(918)。一部の実施形態では、ユーザデバイスは、第1のスクリプト及び第2のスクリプトのうちのいずれの一方が、そのユーザデバイス上に現在インストールされているソフトキーボードで使用される対応のスクリプトであるかに基づいて、第1の出力文字及び第2の出力文字のうちの一方を選択的に表示する(920)。例えば、手書き認識モデルが、現在の手書き入力に関する出力文字として、中国文字「
」及びギリシャ文字「λ」を特定していると想定すると、ユーザデバイスは、そのユーザデバイス上に、中国語ソフトキーボード(例えば、ピンイン入力法を使用するキーボード)又はギリシャ語入力キーボードのいずれをユーザがインストールしているかを判定する。ユーザデバイスが、中国語ソフトキーボードのみがインストールされていると判定する場合には、そのユーザデバイスは、任意選択的に、ユーザへの認識結果として中国文字「
」のみを表示し、ギリシャ文字「λ」は表示しない。
一部の実施形態では、ユーザデバイスは、リアルタイム手書き認識及び入力を提供する。一部の実施形態では、ユーザデバイスは、ユーザが、ユーザに表示された認識結果の明示的又は暗黙的な選択を実施する前に、ユーザによる手書き入力に対する継続的な追加又は訂正に応じて、そのユーザの手書き入力に関する1つ以上の認識結果を、継続的に訂正する(922)。一部の実施形態では、1つ以上の認識結果の各訂正に応じて、ユーザは、それぞれの訂正された1つ以上の認識結果を、手書き入力ユーザインタフェースの候補表示区域内で、ユーザに対して表示する(924)。
一部の実施形態では、マルチスクリプト手書き認識モデルは、Unicode規格に従って符号化されている、中国文字、絵文字、及びラテンスクリプトを含めた、少なくとも3つの非重複スクリプトの全ての文字を認識するように訓練される(926)。一部の実施形態では、少なくとも3つの非重複スクリプトは、中国文字、アラビア語スクリプト、及びラテンスクリプトを含む。一部の実施形態では、マルチスクリプト手書き認識モデルは、少なくとも3つの非重複スクリプトにわたる少なくとも30個の文字を表す、少なくとも3万個の出力クラスを有する(928)。
一部の実施形態では、ユーザデバイスは、2つ以上のスクリプトの文字を含む語句などの、マルチスクリプト手書き入力を、ユーザが入力することを可能にする。例えば、ユーザは、認識言語を手動で切り替えるために、書き込みの途中で中断することなく、継続的に書き込みを行い、2つ以上のスクリプトの文字を含む、手書き認識結果を受信することができる。例えば、ユーザは、ユーザデバイスの手書き入力区域内に、マルチスクリプトの文「Hello means
in Chinese.」を書き込むことができ、その場合、中国文字「
」を書き込む前に、英語から中国語に入力言語を切り替えることも、又は英語の語「in Chinese」を書き込む際に、中国語から英語に入力言語を切り替えて戻すことも必要とはしない。
本明細書で説明されるように、ユーザの入力に関するリアルタイム手書き認識を提供するために、マルチスクリプト手書き認識モデルが使用される。一部の実施形態では、リアルタイム手書き認識は、ユーザのデバイス上にリアルタイムマルチスクリプト手書き入力の機能性を提供するために使用される。図10A〜図10Cは、ユーザデバイス上にリアルタイム手書き認識及び入力を提供するための、例示的プロセス1000の流れ図である。具体的には、このリアルタイム手書き認識は、文字レベル、語句レベル、及び文レベルで、ストローク順序非依存式である。
一部の実施形態では、文字レベルでのストローク順序非依存式の手書き認識は、ユーザによって提供された特定の文字の個別のストロークの配列にかかわらず、手書き認識モデルが、その特定の手書き文字に関して同じ認識結果を提供することが必要とされる。例えば、中国文字の個別のストロークは、典型的には、特定の順序で書き込まれる。中国語を母国語とする人は、学校で、各文字を特定の順序で書き込むように訓練される場合が多いが、多くのユーザは、その従来のストローク順序から逸脱する、個人的なスタイル及びストロークの配列を、後に採用している。更には、筆写体の書体は、高度に個別化され、中国文字の印刷形態での複数のストロークは、単一の様式化されたストロークへと融合される場合が多く、そのストロークは、歪曲し、向きを変え、更には次の文字へと続け書きされる場合もある。ストローク順序非依存式の認識モデルは、個別のストロークに関連付けられる時間的情報を含まない、書き込みサンプルの画像に基づいて訓練される。それゆえ、この認識は、ストローク順序情報とは無関係である。例えば、中国文字「
」に関しては、ユーザが、水平のストロークを最初に書き込むか、又は垂直のストロークを最初に書き込むかにかかわらず、同じ認識結果「
」が、手書き認識モデルによって与えられる。
図10Aに示されるように、プロセス1000では、ユーザデバイスは、ユーザから複数の手書きストロークを受信し(1002)、これらの複数の手書きストロークは、1つの手書き文字に対応する。例えば、文字「
」に関する手書き入力は、典型的には、実質的に垂直の手書きストロークと交差する、実質的に水平の手書きストロークを含む。
一部の実施形態では、ユーザデバイスは、これらの複数の手書きストロークに基づいて、入力画像を生成する(1004)。一部の実施形態では、ユーザデバイスは、その手書き文字のリアルタイム手書き認識を実行するために、手書き認識モデルに入力画像を提供し(1006)、この手書き認識モデルは、ストローク順序非依存式の手書き認識を提供する。次いで、ユーザデバイスは、ユーザから受信された複数の手書きストローク(例えば、水平のストローク及び垂直のストローク)の、それぞれの順序に関わりなく、それらの複数の手書きストロークを受信するリアルタイムで、同一の第1の出力文字(例えば、印刷形態での文字「
」)を表示する(1008)。
一部の従来の手書き認識システムでは、少数の文字での軽微なストローク順序の変動は、その手書き認識システムの訓練に、そのような変動を具体的に含めることによって許容される。そのような従来の手書き認識システムは、中国文字などの、多数の複雑な文字での、恣意的なストローク順序の変動に適応するように拡張可能ではないが、これは、適度な複雑性の文字であっても、既に、ストローク順序の多数の変動を生じさせるためである。更には、特定の文字に関する容認可能なストローク順序の、より多くの順列を単に含めることによっては、従来の認識システムでは、複数のストロークが単一のストロークへと組み合わされる(例えば、超筆写体の書き込みでのような)手書き入力、又は1つのストロークが複数のサブストロークへと分解される(例えば、入力ストロークの極めて荒いサンプリングで取り込まれた文字でのような)手書き入力は、依然として取り扱うことが不可能である。それゆえ、本明細書で説明されるような、空間的に導出される特徴について訓練される、マルチスクリプト手書きシステムは、従来の認識システムに勝る利点を提供する。
一部の実施形態では、ストローク順序非依存式の手書き認識は、各手書き文字内の個別のストロークに関連付けられる時間的情報とは、無関係に実行される。一部の実施形態では、ストローク順序非依存式の手書き認識は、フラットな入力画像へと融合される前の、個別のストロークの空間的分布を考慮に入れる、ストローク分布情報と関連して実行される。この時間的に導出されるストローク分布情報を使用して、どのように上述のストローク順序非依存式の手書き認識を増強するかについての更なる詳細は、この後(例えば、図25A〜図27に関連して)本明細書で提供される。図25A〜図27に関連して説明される技術は、手書き認識システムのストローク順序非依存性を損なうものではない。
一部の実施形態では、手書き認識モデルは、ストローク方向非依存式の手書き認識を提供する(1010)。一部の実施形態では、ストローク方向非依存式の認識は、ユーザデバイスが、複数の手書き入力の受信に応じて、ユーザによって提供された複数の手書きストロークのそれぞれの、それぞれのストローク方向に関わりなく、同一の第1の出力文字を表示することが必要とされる。例えば、ユーザが、ユーザデバイスの手書き入力区域内に、中国文字「
」を書き込んでいる場合には、手書き認識モデルは、ユーザが、水平のストロークを左から右に描いたか、又は右から左に描いたかにかかわらず、同じ認識結果を出力する。同様に、手書き認識モデルは、ユーザが、垂直のストロークを下向きの方向で描いたか、又は上向きの方向で描いたかにかかわらず、同じ認識結果を出力する。別の実施例では、多くの中国文字は、2つ以上の部首で構造的に作成される。一部の中国文字は、左の部首及び右の部首をそれぞれが含み、人々は、慣例的に、左の部首を最初に書き込み、右の部首を2番目に書き込む。一部の実施形態では、手書き認識モデルは、ユーザが手書き文字を完成させた際に、結果的に得られる手書き入力が、右の部首の左側に左の部首を示す限りは、ユーザが左の部首を最初に書き込んだか、又は右の部首を最初に書き込んだかにかかわらず、同じ認識結果を提供する。同様に、一部の中国文字は、上の部首及び下の部首をそれぞれが含み、人々は、慣例的に、上の部首を最初に書き込み、下の部首を最後に書き込む。一部の実施形態では、手書き認識モデルは、結果的に得られる手書き入力が、下の部首の上方に上の部首を示す限りは、ユーザが上の部首を最初に書き込んだか、又は下の部首を最初に書き込んだかにかかわらず、同じ認識結果を提供する。換言すれば、手書き認識モデルは、ユーザが提供する、手書き文字の個別のストロークの方向に依存することなく、手書き文字の同一性を判定する。
一部の実施形態では、手書き認識モデルは、ユーザによって提供された認識単位のサブストロークの数にかかわらず、その認識単位の画像に基づいて、手書き認識を提供する。換言すれば、一部の実施形態では、手書き認識モデルは、ストローク数非依存式の手書き認識を提供する(1014)。一部の実施形態では、ユーザデバイスは、複数の手書きストロークの受信に応じて、幾つの手書きストロークが、その入力画像内の継続的ストロークを形成するために使用されるかに関わりなく、同一の第1の出力文字を表示する。例えば、ユーザが、手書き入力区域内に、中国文字「+」を書き込んでいる場合には、手書き認識モデルは、ユーザが、文字「
」の形状を構成するために、4つのストローク(例えば、十字形状の文字を構成するための、2つの短い水平のストローク及び2つの短い垂直のストローク)を提供したか、又は2つのストローク(例えば、L形状のストローク及び7形状のストローク、あるいは水平のストローク及び垂直のストローク)を提供したか、又は任意の他の数のストローク(例えば、数百個の極度に短いストローク又は点)を提供したかにかかわらず、同じ認識結果を出力する。
一部の実施形態では、手書き認識モデルは、それぞれの単一の文字が書き込まれた順番、方向、及びストローク数にかかわらず、同じ文字を認識することが可能であるばかりではなく、手書き認識モデルはまた、ユーザによって提供された、複数の文字のストロークの時間的順序に関わりなく、複数の文字を認識することも可能である。
一部の実施形態では、ユーザデバイスは、ユーザから、第1の複数の手書きストロークを受信しているだけではなく、第2の複数の手書きストロークも受信しており(1016)、それらの第2の複数の手書きストロークは、第2の手書き文字に対応する。一部の実施形態では、ユーザデバイスは、それらの第2の複数の手書きストロークに基づいて、第2の入力画像を生成する(1018)。一部の実施形態では、ユーザデバイスは、第2の手書き文字のリアルタイム認識を実行するために、この第2の入力画像を、手書き認識モデルに提供する(1020)。一部の実施形態では、ユーザデバイスは、第2の複数の手書きストロークを受信するリアルタイムで、それらの第2の複数の手書きストロークに対応する、第2の出力文字を表示する(1022)。一部の実施形態では、第2の出力文字及び第1の出力文字は、ユーザによって提供された、第1の複数の手書きストローク及び第2の複数の手書きストロークのそれぞれの順序とは無関係な、空間的配列で同時に表示される。例えば、ユーザが、ユーザデバイスの手書き入力区域内に、2つの中国文字(例えば、「
」及び「
」)を書き込んでいる場合には、ユーザデバイスは、手書き入力区域内に現時点で蓄積されている手書き入力が、文字「
」に関するストロークの左に、文字「
」に関するストロークを示す限りは、ユーザが文字「
」のストロークを最初に書き込んだか、又は文字「
」のストロークを最初に書き込んだかにかかわらず、認識結果「
」を表示する。実際に、ユーザが、文字「
」に関するストロークのうちの一部(例えば、垂直のストローク)の前に、文字「
」に関するストロークのうちの一部(例えば、左に傾斜したストローク)を書き込んでいる場合であっても、手書き入力区域内の手書き入力の結果的に得られる画像が、文字「
」に関する全てのストロークの左に、文字「
」に関する全てのストロークを示す限りは、ユーザデバイスは、それらの2つの手書き文字の空間的配列で、認識結果「
」を示す。
換言すれば、図10Bに示されるように、一部の実施形態では、第1の出力文字及び第2の出力文字の空間的配列は、ユーザデバイスの手書き入力インタフェースの、デフォルトの(例えば、左から右への)書き込み方向に沿った、第1の複数の手書きストローク及び第2の複数のストロークの空間的分布に対応する(1024)。一部の実施形態では、第2の複数の手書きストロークは、第1の複数の手書きストロークよりも時間的に後に受信され(1026)、第2の出力文字は、ユーザデバイスの手書き入力インタフェースの、デフォルトの(例えば、左から右への)書き込み方向に沿った空間的配列で、第1の出力文字に先行する。
一部の実施形態では、手書き認識モデルは、文と文とのレベルで、ストローク順序非依存式の認識を提供する。例えば、手書き入力区域内で、手書き文字「
」が第1の手書き文内に存在し、手書き文字「
」が第2の手書き文内に存在し、それらの2つの手書き文字が、1つ以上の他の手書き文字及び/又は語によって隔てられている場合であっても、手書き認識モデルは、それらの2つの文字を空間的配列「
」で示す認識結果を、依然として提供する。この認識結果、及び2つの認識文字の空間的配列は、ユーザが手書き入力を完了した際に、それらの2つの文字に関する認識単位が、配列「
」で空間的に配置構成されているならば、ユーザによって提供された、それらの2つの文字のストロークの時間的順序にかかわらず、同じままで維持される。一部の実施形態では、第1の手書き文字(例えば、「
」)は、第1の手書き文(例えば、「
is a number.」)の一部として、ユーザによって提供され、第2の手書き文字(例えば、「
」)は、第2の手書き文(例えば、「
is another number.」)の一部として、ユーザによって提供され、これらの第1の手書き文及び第2の手書き文は、ユーザデバイスの手書き入力区域内に、同時に表示される。一部の実施形態では、この認識結果(例えば、「
is a number.
is another number.」)が正しい認識結果であることを、ユーザが確認すると、それらの2つの文は、ユーザデバイスのテキスト入力区域内に入力され、手書き入力区域は、ユーザが別の手書き入力を入力するために、クリアされる。
一部の実施形態では、手書き認識モデルは、文字レベルのみならず、語句レベル及び文レベルでもストローク順序非依存式であるため、ユーザは、従前の未完了の文字に対する修正を、後続の文字を書き込んだ後に実施することができる。例えば、ユーザが、手書き入力区域内での、1つ以上の後続の文字の書き込みに移行する前に、ある文字に関する特定のストロークの書き込みを忘れていた場合には、ユーザは依然として、その特定の文字内の正しい場所に、欠落したストロークを後から記入して、正しい認識結果を受け取ることができる。
従来のストローク順序依存式のシステム(例えば、HMMに基づく認識システム)では、文字が一旦書き込まれると、その文字は確定されて、ユーザは、もはや、その文字に対するいずれの変更も実施することができない。ユーザが、いずれかの変更を実施することを望む場合には、ユーザは、その文字及び後続の全ての文字を削除して、最初からやり直さなければならない。一部の従来の認識システムでは、ユーザは、短い既定の時間窓の範囲内で、手書き文字を完成することが必要とされ、その既定の時間窓外で入力されたいずれのストロークも、その時間窓の間に提供された他のストロークと同じ認識単位内には含められない。そのような従来のシステムは、使用することが困難であり、多大な苛立ちをユーザにもたらす。ストローク順序非依存式システムは、これらの欠点とは無縁であり、ユーザは、ユーザが適切と思われるような、任意の順序及び任意の時間枠で、文字を完成させることができる。ユーザはまた、以前に書き込んだ文字に対する修正(例えば、1つ以上のストロークの追加)を、その後に1つ以上の文字を手書き入力インタフェース内に書き込んだ後に、実施することもできる。一部の実施形態では、ユーザはまた、以前に書き込んだ文字を、(例えば、図21A、図22Bに関連して後に説明される方法を使用して)個別に削除して、手書き入力インタフェース内の同じ場所に、その文字を書き直すこともできる。
図10B及び図10Cに示されるように、第2の複数の手書きストロークは、ユーザデバイスの手書き入力インタフェースの、デフォルトの書き込み方向に沿って、第1の複数の手書きストロークを空間的に追従し(1028)、第2の出力文字は、手書き入力インタフェースの候補表示区域内で、そのデフォルトの書き込み方向に沿った空間的配列で、第1の出力文字を追従する。ユーザデバイスは、第1の手書き文字(すなわち、第1の複数の手書きストロークによって形成された手書き文字)を訂正するために、ユーザから第3の手書きストロークを受信し(1030)、この第3の手書きストロークは、第1の複数の手書きストローク及び第2の複数の手書きストロークよりも、時間的に後に受信される。例えば、ユーザは、手書き入力区域内に、左から右への空間的配列で2つの文字(例えば、「
」)を書き込んでいる。第1の複数のストロークは、手書き文字「
」を形成する。ユーザは、実際には文字「
」を書き込むことを意図していたが、1つのストロークを書き落としたことに留意されたい。第2の複数のストロークは、手書き文字「
」を形成する。ユーザが、「
」ではなく「
」を書き込むことを望んでいたことを、その後に理解すると、ユーザは、単純に、文字「
」に関するストロークの下方に、もう1つの垂直のストロークを記入することができ、ユーザデバイスは、その垂直のストロークを、第1の認識単位(例えば、「
」に関する認識単位)に割り当てる。ユーザデバイスは、第1の認識単位に関する新たな出力文字(例えば、「
」)を出力し、この新たな出力文字が、認識結果内の従前の出力文字(例えば、「
」)に置き換わる。図10Cに示されるように、第3の手書きストロークの受信に応じて、ユーザデバイスは、その第3の手書きストロークの、第1の複数の手書きストロークへの相対的な近接性に基づいて、第1の複数の手書きストロークと同じ認識単位に、その第3の手書きストロークを割り当てる(1032)。一部の実施形態では、ユーザデバイスは、第1の複数の手書きストローク及び第3の手書きストロークに基づいて、訂正された入力画像を生成する(1034)。ユーザデバイスは、訂正された手書き文字のリアルタイム認識を実行するために、この訂正された入力画像を、手書き認識モデルに提供する(1036)。一部の実施形態では、ユーザデバイスは、第3の手書き入力の受信に応じて、訂正された入力画像に対応する第3の出力文字を表示し(1040)、この第3の出力文字は、第1の出力文字に置き換わり、デフォルトの書き込み方向に沿った空間的配列で、第2の出力文字と同時に表示される。
一部の実施形態では、手書き認識モジュールは、左から右へのデフォルトの書き込み方向で書き込まれた、手書き入力を認識する。例えば、ユーザは、左から右に、かつ1つ以上の行で、文字を書き込むことができる。この手書き入力に応じて、手書き入力モジュールは、必要に応じて、左から右への空間的配列で、かつ1つ以上の行で文字を含む、認識結果を提示する。ユーザが認識結果を選択する場合には、選択された認識結果は、ユーザデバイスのテキスト入力区域内に入力される。一部の実施形態では、デフォルトの書き込み方向は、上から下である。一部の実施形態では、デフォルトの書き込み方向は、右から左である。一部の実施形態では、ユーザは、認識結果が選択され、手書き入力区域がクリアされた後、任意選択的に、デフォルトの書き込み方向を、代替的な書き込み方向に変更する。
一部の実施形態では、手書き入力モジュールは、複数文字の手書き入力を、ユーザが手書き入力区域内に入力することを可能にし、その手書き入力からの、一度に全ての認識単位ではなく、一度に1つの認識単位の、ストロークの削除を可能にする。一部の実施形態では、手書き入力モジュールは、手書き入力からの、一度に1つのストロークの削除を可能にする。一部の実施形態では、認識単位の削除は、現在の手書き入力を作り出すために入力された、認識単位又はストロークの順序にかかわらず、デフォルトの書き込み方向とは反対の方向で、1つずつ進行する。一部の実施形態では、ストロークの削除は、そのストロークが各認識単位内で入力された逆の順序で、1つずつ進行し、1つの認識単位内のストロークが全て削除されると、ストロークの削除は、デフォルトの書き込み方向とは反対の方向で、次の認識単位へと進行する。
一部の実施形態では、第3の出力文字及び第2の出力文字が、手書き入力インタフェースの候補表示区域内に、候補認識結果として同時に表示されている間に、ユーザデバイスは、ユーザから削除入力を受信する。この削除入力に応じて、ユーザデバイスは、認識結果から第2の出力文字を削除する一方で、第3の出力文字を、候補表示区域内表示された認識結果内に維持する。
一部の実施形態では、図10Cに示されるように、ユーザデバイスは、第1の複数の手書きストローク、第2の複数の手書きストローク、及び第3の手書きストロークを、それらの手書きストロークのそれぞれがユーザによって提供される際に、リアルタイムでレンダリングする(1042)。一部の実施形態では、ユーザからの削除入力の受信に応じて、ユーザデバイスは、手書き入力区域から、第2の複数の手書き入力の(例えば、第2の手書き文字に対応する)それぞれのレンダリングを削除する一方で、第1の複数の手書きストローク及び第3の手書きストロークの(例えば、訂正された第1の手書き文字に、一体となって対応する)それぞれのレンダリングを、手書き入力区域内に維持する(1044)。例えば、ユーザが、文字配列「
」内の欠落した垂直のストロークを提供した後、ユーザが、削除入力を入力した場合には、文字「
」に関する認識単位内のストロークが、手書き入力区域から除去され、文字「
」が、ユーザデバイスの候補表示区域内の認識結果「
」から除去される。この削除の後、文字「
」に関するストロークは、手書き入力区域内に維持され、認識結果は、文字「
」のみを示す。
一部の実施形態では、手書き文字は、複数ストロークの中国文字である。一部の実施形態では、第1の複数の手書き入力は、筆写体の書体で提供される。一部の実施形態では、第1の複数の手書き入力は、筆写体の書体で提供され、その手書き文字は、複数ストロークの中国文字である。一部の実施形態では、それらの手書き文字は、筆写体のアラビア語で書き込まれる。一部の実施形態では、それらの手書き文字は、筆写体の他のスクリプトで書き込まれる。
一部の実施形態では、ユーザデバイスは、手書き文字入力に関する容認可能な寸法のセットについて、それぞれの既定の制約を確立し、現時点で蓄積されている複数の手書きストロークを、それぞれの既定の制約に基づいて、複数の認識単位へと分割し、それらの認識単位のそれぞれから、それぞれの入力画像が生成されて、手書き認識モデルに提供され、対応する出力文字として認識される。
一部の実施形態では、ユーザデバイスは、現時点で蓄積されている複数の手書きストロークを分割した後、ユーザから更なる手書きストロークを受信する。ユーザデバイスは、複数の認識単位に対する、更なる手書きストロークの空間的位置に基づいて、それらの複数の認識単位のうちのそれぞれ1つに、その更なる手書きストロークを割り当てる。
ここで、ユーザデバイス上に手書き認識及び入力を提供するための、例示的ユーザインタフェースに注意を向ける。一部の実施形態では、この例示的ユーザインタフェースは、ユーザの手書き入力の、リアルタイムのストローク順序非依存式の手書き認識を提供する、マルチスクリプト手書き認識モデルに基づいて、ユーザデバイス上に提供される。一部の実施形態では、この例示的ユーザインタフェースは、手書き入力区域804、候補表示区域804、及びテキスト入力区域808を含む、(例えば、図8A及び図8Bに示されるような)例示的な手書き入力インタフェース802のユーザインタフェースである。一部の実施形態では、例示的な手書き入力インタフェース802はまた、削除ボタン、スペースバー、Enterボタン、キーボード切り替えボタンなどの、複数の制御要素1102も含む。1つ以上の他の区域及び/又は要素を、手書き入力インタフェース902内に提供して、以下で説明される更なる機能性を可能にすることができる。
本明細書で説明されるように、マルチスクリプト手書き認識モデルは、多くの異なるスクリプト及び言語での、数万個の文字の極めて幅広いレパートリーを有することが可能である。結果として、手書き入力に関しては、この認識モデルは、多数の出力文字を特定する可能性が極めて高く、それらの出力文字は全て、ユーザによって意図された文字であることの、適度に良好な尤度を有する。限られた表示区域を有するユーザデバイス上では、最初に認識結果のサブセットのみを提供する一方で、他の結果は、ユーザリクエストに応じて利用可能となるように保つことが有利である。
図11A〜図11Gは、候補表示区域の通常ビュー内に認識結果のサブセットを表示し、それと共に、認識結果の残余を表示するための候補表示区域の拡張ビューを呼び出すためのアフォーダンスを表示するための、例示的ユーザインタフェースを示す。更には、候補表示区域の拡張ビュー内では、認識結果は、異なるカテゴリへと分類され、拡張ビュー内の異なるタブ付きページ上に表示される。
図11Aは、例示的な手書き入力インタフェース802を示す。この手書き入力インタフェースは、手書き入力区域804、候補表示区域806、及びテキスト入力区域808を含む。1つ以上の制御要素1102もまた、手書き入力インタフェース1002内に含まれる。
図11Aに示されるように、候補表示区域806は、任意選択的に、1つ以上の認識結果を表示するための区域と、候補表示区域806の拡張バージョンを呼び出すためのアフォーダンス1104(例えば、拡張アイコン)とを含む。
図11A〜図11Cは、ユーザが、手書き入力区域804内に1つ以上の手書きストローク(例えば、ストローク1106、1108、及び1110)を提供すると、ユーザデバイスが、手書き入力区域804内に現時点で蓄積されているストロークに対応する、それぞれの認識結果のセットを特定して表示することを示す。図11Bに示されるように、ユーザが、第1のストローク1106を入力した後に、ユーザデバイスは、3つの認識結果1112、1114、及び1116(例えば、文字「/」、「1」、及び「,」)を特定して表示する。一部の実施形態では、候補表示区域内806内には、少数の候補文字が、各文字に関連付けられた認識信頼度に従った順序で表示される。
一部の実施形態では、最上ランクの候補結果(例えば、「/」)が、テキスト入力区域808内の、例えばボックス1118内に、暫定的に表示される。ユーザは、その最上ランクの候補が意図された入力であることを、単純な確認入力で(例えば、「Enter」キーを押圧するか、又は手書き入力区域内にダブルタップジェスチャを提供することによって)、任意選択的に確認することができる。
図11Cは、いずれかの候補認識結果をユーザが選択する前に、ユーザが、更に2つのストローク1108及び1110を、手書き入力区域804内に入力すると、それらの追加ストロークが、初期のストローク1106と共に手書き入力区域804内にレンダリングされ、候補結果が、現時点で蓄積されている手書き入力から特定される認識単位に、それらの変化を反映させるように、更新されることを示す。図11Cに示されるように、3つのストロークに基づいて、ユーザデバイスは、単一の認識単位を特定している。この単一の認識単位に基づいて、ユーザデバイスは、幾つかの認識結果1118〜1124を特定して表示している。一部の実施形態では、候補表示区域806内に現時点で表示されている、これらの認識結果のうちの1つ以上(例えば、1118及び1122)は、それぞれ、現在の手書き入力に関する、複数の類似した見た目の候補文字の中から選択された、それぞれの代表的候補文字である。
図11C及び図11Dに示されるように、ユーザが、アフォーダンス1104を(例えば、アフォーダンス1104の上での接触1126を伴う、タップジェスチャを使用して)選択すると、候補表示区域は、(例えば、図11Cに示される)通常ビューから、(例えば、図11Dに示される)拡張ビューに変化する。一部の実施形態では、この拡張ビューは、現在の手書き入力に関して特定されている認識結果(例えば、候補文字)の全てを示す。
一部の実施形態では、初期に表示された、候補表示区域806の通常ビューは、それぞれのスクリプト又は言語で使用される、最も一般的に使用される文字のみを示すが、その一方で、拡張ビューは、スクリプト又は言語で使用頻度が低い文字を含めた、全ての候補文字を示す。この候補表示区域の拡張ビューは、種々の方式で設計することができる。図11D〜図11Gは、一部の実施形態に係る、拡張候補表示区域の例示的設計を示す。
図11Dに示されるように、一部の実施形態では、拡張候補表示区域1128は、それぞれが、それぞれの候補文字のカテゴリを提示する、1つ以上のタブ付きページ(例えば、ページ1130、1132、1134、及び1136)を含む。図11Dに示されるタブ付き設計により、ユーザは、所望の文字のカテゴリを素早く見出し、次いで、その対応するタブ付きページ内で、ユーザが入力することを意図していた文字を見出すことが可能となる。
図11Dでは、第1のタブ付きページ1130は、一般的に使用される文字並びに低頻度の文字の双方を含めた、現時点で蓄積されている手書き入力に関して特定されている、全ての候補文字を表示する。図11Dに示されるように、タブ付きページ1130は、図11Cでの初期の候補表示区域806内に示されていた文字の全て、及び初期の候補表示区域806内には含まれなかった幾つかの更なる文字(例えば、「
」、「β」、「
」など)を含む。
一部の実施形態では、初期の候補表示区域806内に表示される文字は、特定のスクリプトに関連付けられる、一般的に使用される文字のセットからの文字(例えば、Unicode規格に従って符号化されているような、CJKスクリプトの基本ブロック中の全ての文字)のみを含む。一部の実施形態では、拡張候補表示区域1128内に表示される文字は、そのスクリプトに関連付けられる、低頻度の文字のセット(例えば、Unicode規格に従って符号化されているような、CJKスクリプトの拡張ブロック中の全ての文字)を更に含む。一部の実施形態では、拡張候補表示区域1128は、ユーザによって一般的に使用されない他のスクリプト、例えば、ギリシャ語スクリプト、アラビア語スクリプト、及び/又は絵文字スクリプトからの候補文字を更に含む。
一部の実施形態では、図11Dに示されるように、拡張候補表示区域1128は、それぞれが、それぞれの候補文字のカテゴリ(例えば、それぞれ、全ての文字、低頻度の文字、ラテンスクリプトからの文字、及び絵文字スクリプトからの文字)に対応する、それぞれのタブ付きページ1130、1132、1134、及び1138を含む。図11E〜図11Gは、ユーザが、種々のタブ付きページのそれぞれを選択して、対応するカテゴリ内の候補文字を表出させることができることを示す。図11Eは、現在の手書き入力に対応する、低頻度の文字(例えば、CJKスクリプトの拡張ブロックからの文字)のみを示す。図11Fは、現在の手書き入力に対応する、ラテン文字及びギリシャ文字のみを示す。図11Gは、現在の手書き入力に対応する、絵文字のみを示す。
一部の実施形態では、拡張候補表示区域1128は、それぞれのタブ付きページ内の候補文字を、それぞれの基準に基づいて(例えば、表音式綴りに基づいて、ストロークの数に基づいて、及び部首などに基づいて)並べ替えるための、1つ以上のアフォーダンスを更に含む。認識信頼度スコア以外の基準に従って、各カテゴリ内の候補文字を並べ替える能力は、テキスト入力に関して所望の候補文字を素早く見出すための、更なる能力をユーザに提供する。
図11H〜図11Kは、一部の実施形態では、類似した見た目の候補文字をグループ化することが可能であり、類似した見た目の候補文字の各グループからの、代表的文字のみが、初期の候補表示区域806内に提示されることを示す。本明細書で説明されるマルチスクリプト認識モデルは、所定の手書き入力に関して、ほぼ等しく有効な多くの候補文字を作り出すことができるため、この認識モデルは、1つの候補を、別の類似した見た目の候補を犠牲にして削除することが、必ずしも可能であるとは限らない。限られた表示区域を有するデバイス上では、多くの類似した見た目の候補を、一度に全て表示することは、ユーザが正しい文字を選び出すために役立つものではないが、これは、微細な区別を容易には視認することができず、また、所望の文字をユーザが視認することができる場合であっても、その文字を、極めて混雑した表示から、指又はスタイラスを使用して選択することは、困難である恐れがあるためである。
一部の実施形態では、上記の問題に対処するために、ユーザデバイスは、互いに高い類似性を有する候補文字を(例えば、類似した見た目の文字のコンコーダンス若しくは辞書、又は画像に基づく何らかの基準に従って)特定し、それらの候補文字を、それぞれのグループへとグループ化する。一部の実施形態では、所定の手書き入力に関する候補文字のセットから、類似した見た目の文字の1つ以上グループを特定することができる。一部の実施形態では、ユーザデバイスは、同じグループ内の複数の類似した見た目の候補文字の中から、代表的候補文字を特定しており、その代表的候補のみを、初期の候補表示区域806内に表示する。一般的に使用される文字が、いずれの他の候補文字にも十分に類似して見えない場合には、その文字自体が表示される。一部の実施形態では、図11Hに示されるように、各グループの代表的候補文字(例えば、候補文字1118「
」及び1122「T」)は、いずれのグループにも属さない候補文字(例えば、候補文字1120「
」及び1124「J」)とは異なる方式で(例えば、太枠ボックス内に)表示される。一部の実施形態では、グループの代表的文字を選択するための基準は、そのグループ内での候補文字の相対的な使用頻度に基づく。一部の実施形態では、他の基準を使用することができる。
一部の実施形態では、代表的文字がユーザに対して表示されると、ユーザは、任意選択的に、候補表示区域806を拡大し、類似した見た目の候補文字を、拡大ビュー内に示すことができる。一部の実施形態では、特定の代表的文字の選択により、その選択された代表的文字と同じグループ内の候補文字のみの拡大ビューを、生じさせることができる。
類似した見た目の候補の拡大ビューを提供するための、様々な設計が可能である。図11H〜図11Kは、代表的候補文字(例えば、代表的文字1118)の上で検出された既定のジェスチャ(例えば、拡大ジェスチャ)によって、代表的候補文字の拡大ビューが呼び出される、一実施形態を示す。拡大ビューを呼び出すための既定のジェスチャ(例えば、拡大ジェスチャ)は、テキスト入力に関する代表的文字を選択するための既定のジェスチャ(例えば、タップジェスチャ)とは異なる。
図11H及び図11Iに示されるように、ユーザが、第1の代表的文字1118の上に、(例えば、互いに離れる方向で移動する、2つの接触1138及び1140によって示されるような)拡大ジェスチャを提供すると、代表的文字1118を表示する区域が拡大され、3つの類似した見た目の候補文字(例えば、「
」、「
」、及び「
」)が、同じ拡大グループ内には存在しない他の候補文字(例えば、「
」)と比較して、拡大されたビュー内に(例えば、それぞれ、拡大されたボックス1142、1144、及び1146内に)提示される。
図11Iに示されるように、拡大されたビュー内に提示される場合、3つの類似した見た目の候補文字(例えば、「
」、「
」、及び「
」)の微細な区別は、ユーザによって、より容易に視認することができる。これらの3つの候補文字のうちの1つが、意図された文字入力である場合には、ユーザは、例えば、その文字が表示されている区域をタッチすることによって、その候補文字を選択することができる。図11J及び図11Kに示されるように、ユーザは、拡大ビュー内のボックス1144内に示される第2の文字(例えば、「
」)を、(接触1148で)選択している。これに応じて、選択された文字(例えば、「
」)が、テキスト入力区域808内に、カーソルによって示される挿入ポイントで入力される。図11Kに示されるように、文字が選択されると、手書き入力区域804内の手書き入力、及び候補表示区域806(又は、候補表示区域の拡大ビュー)内の候補文字は、後続の手書き入力のために消去される。
一部の実施形態では、ユーザが、第1の代表的候補文字1142の拡大ビュー内に、所望の候補文字を視認しない場合には、ユーザは、任意選択的に、同じジェスチャを使用して、候補表示区域806内に表示された他の文字を拡大することができる。一部の実施形態では、候補表示区域806内の別の代表的文字を拡大して、現在提示されている拡大ビューは、自動的に通常ビューに復元される。一部の実施形態では、ユーザは、任意選択的に、縮小ジェスチャを使用して、現在拡大されているビューを通常ビューに復元する。一部の実施形態では、ユーザは、候補表示区域806を、(例えば、左に、又は右に)スクロールさせて、候補表示区域806内で不可視の他の候補文字を表出させることができる。
図12A及び図12Bは、認識結果の第1のサブセットが、初期の候補表示区域内に提示される一方で、認識結果の第2のサブセットが、ユーザによって具体的に呼び出されるまでは隠されて見えない、拡張候補表示区域内に提示される、例示的プロセス1200の流れ図である。例示的プロセス1200では、デバイスは、手書き入力に関する複数の手書き認識結果から、既定の閾値を超える視覚的類似性レベルを有する、認識結果のサブセットを特定する。次いで、ユーザデバイスは、その認識結果のサブセットから、代表的認識結果を選択し、ディスプレイの候補表示区域内に、選択された代表的認識結果を表示する。プロセス1200は、図11A〜図11Kに示される。
図12Aに示されるように、例示的プロセス1200では、ユーザデバイスは、ユーザから手書き入力を受信する(1202)。この手書き入力は、手書き入力インタフェース(例えば、図11Cでの802)の手書き入力区域(例えば、図11Cでの806)内に提供される、1つ以上の手書きストローク(例えば、図11Cでの1106、1108、1110)を含む。ユーザデバイスは、手書き認識モデルに基づいて、その手書き入力に関する複数の出力文字(例えば、図11Cの、タブ付きページ1130内に示される文字)を特定する(1204)。ユーザデバイスは、既定のカテゴリ化基準に基づいて、それらの複数の出力文字を、2つ以上のカテゴリへと分類する(1206)。一部の実施形態では、この既定のカテゴリ化基準は、それぞれの文字が、一般的に使用される文字であるか、又は低頻度の文字であるかを判定する(1208)。
一部の実施形態では、ユーザデバイスは、手書き入力インタフェースの候補表示区域(例えば、図11Cに示されるような806)の初期ビュー内に、2つ以上のカテゴリのうちの第1のカテゴリ(例えば、一般的に使用される文字)内の、それぞれの出力文字を表示し(1210)、この候補表示区域の初期ビューは、候補表示区域の拡張ビュー(例えば、図11Dでの1128)を呼び出すためのアフォーダンス(例えば、図11Cでの1104)と同時に提供される。
一部の実施形態では、ユーザデバイスは、例えば、図11Cに示されるように、拡張ビューを呼び出すためのアフォーダンスを選択する、ユーザ入力を受信する(1212)。このユーザ入力に応じて、ユーザデバイスは、例えば、図11Dに示されるように、候補表示区域の拡張ビュー内に、第1のカテゴリ内のそれぞれの出力文字、及び、候補表示区域の初期ビュー内には従前に表示されていなかった、2つ以上のカテゴリのうちの少なくとも第2のカテゴリ内の、それぞれの出力文字を表示する(1214)。
一部の実施形態では、第1のカテゴリ内のそれぞれの文字は、一般的に使用される文字の辞書内に見出される文字であり、第2のカテゴリ内のそれぞれの文字は、低頻度の文字の辞書内に見出される文字である。一部の実施形態では、一般的に使用される文字の辞書、及び低頻度の文字の辞書は、ユーザデバイスに関連付けられる使用履歴に基づいて、動的に調節又は更新される。
一部の実施形態では、ユーザデバイスは、それらの複数の出力文字から、既定の類似性基準に従って(例えば、類似文字の辞書に基づいて、又は何らかの空間的に導出される特徴に基づいて)、互いに視覚的に類似する文字のグループを特定する(1216)。一部の実施形態では、ユーザデバイスは、視覚的に類似する文字のグループから、既定の選択基準に基づいて(例えば、履歴的な使用頻度に基づいて)、代表的文字を選択する。一部の実施形態では、この既定の選択基準は、そのグループ内での、文字の相対的な使用頻度に基づく。一部の実施形態では、この既定の選択基準は、デバイスに関連付けられる、好ましい入力言語に基づく。一部の実施形態では、代表的候補は、各候補がユーザによる意図された入力であることの尤度を示す、他の因子に基づく。これらの因子としては、例えば、その候補文字が、ユーザのデバイス上に現在インストールされているソフトキーボードに関するスクリプトに、属しているか否か、又は、その候補文字が、ユーザ若しくはユーザデバイスに関連付けられる特定の言語での、最も一般的に使用される文字のセットの中に存在するか否かなどが挙げられる。
一部の実施形態では、ユーザデバイスは、候補表示区域(例えば、図11Hでの806)の初期ビュー内に、代表的文字(例えば、「
」)を、その視覚的に類似する文字のグループ内の他の文字(例えば、「
」、「
」)の代わりに表示する(1220)。一部の実施形態では、各候補文字が、グループの代表的文字であるか、又はいずれのグループ内にも存在しない通常の候補文字であるかを示すために、候補表示区域の初期ビュー内に、視覚的指示(例えば、選択的な視覚的強調表示、特殊な背景)が提供される。一部の実施形態では、ユーザデバイスは、例えば、図11Hに示されるように、候補表示区域の初期ビュー内に表示された代表的文字を対象とする、既定の拡大入力(例えば、拡大ジェスチャ)を、ユーザから受信する(1222)。一部の実施形態では、この既定の拡大入力の受信に応じて、ユーザデバイスは、例えば、図11Iに示されるように、代表的文字の拡大されたビューと、視覚的に類似する文字のグループ内の1つ以上の他の文字の、それぞれの拡大されたビューとを、同時に表示する(1224)。
一部の実施形態では、この既定の拡大入力は、候補表示区域内に表示された代表的文字の上で検出される、拡大ジェスチャである。一部の実施形態では、この既定の拡大入力は、候補表示区域内に表示された代表的文字の上で検出され、既定の閾値時間よりも長く持続される、接触である。一部の実施形態では、グループを拡大するための、この持続的接触は、テキスト入力に関する代表的文字を選択するタップジェスチャよりも、長い閾値持続時間を有する。
一部の実施形態では、各代表的文字は、その類似した見た目の候補文字のグループの拡大ビューを呼び出すための、対応のアフォーダンス(例えば、対応の拡大ボタン)と同時に表示される。一部の実施形態では、既定の拡大入力は、代表的文字に関連付けられる、対応のアフォーダンスの選択である。
本明細書で説明されるように、一部の実施形態では、マルチスクリプト手書き認識モデルのレパートリーは、絵文字スクリプトを含む。手書き入力認識モジュールは、ユーザの手書き入力に基づいて、絵文字を認識することができる。一部の実施形態では、手書き認識モジュールは、手書きから直接特定される絵文字と、その特定される絵文字を表す、自然人間言語での文字又は語との双方を提示する。一部の実施形態では、手書き入力モジュールは、ユーザの手書き入力に基づいて、自然人間言語での文字又は語を認識し、その認識された文字又は語と、その認識された文字又は語に対応する絵文字との双方を提示する。換言すれば、手書き入力モジュールは、手書き入力インタフェースから絵文字キーボードに切り替えることなく、絵文字を入力するための方法を提供する。更には、手書き入力モジュールはまた、正規の自然言語の文字を、手で絵文字を描くことによって入力するための方法も提供する。図13A〜図13Eは、絵文字及び正規の自然言語の文字を入力する、これらの種々の方法を示す、例示的ユーザインタフェースを提供する。
図13Aは、チャットアプリケーションの下で呼び出された、例示的な手書き入力インタフェース802を示す。手書き入力インタフェース802は、手書き入力区域804、候補表示区域806、及びテキスト入力区域808を含む。一部の実施形態では、ユーザが、テキスト入力区域808内のテキスト構成に満足すると、ユーザは、現在のチャットセッションの別の参加者に、そのテキスト構成を送信するように選択することができる。チャットセッションの対話履歴は、対話パネル1302内に示される。この実施例では、ユーザは、対話パネル1302内に表示されたチャットメッセージ1304(例えば、「Happy Birthday
」)を受信している。
図13Bに示されるように、ユーザは、手書き入力区域804内に、英語の語「Thanks」に関する手書き入力1306を提供している。手書き入力1306に応じて、ユーザデバイスは、幾つかの候補認識結果(例えば、認識結果1308、1310、及び1312)を特定している。最上ランクの認識結果1303が、テキスト入力区域808内のボックス1314内に、暫定的に入力されている。
図13Cに示されるように、ユーザが、手書き入力区域806内に、手書きの語「Thanks」を入力した後、次いで、ユーザは、手書き入力区域806内に、ストローク1316(例えば、丸い円を下に有する、細長い円)で、様式化された感嘆符を描いている。ユーザデバイスは、この追加ストローク1316が、手書き入力区域806内の蓄積された手書きストローク1306から従前に認識された他の認識単位とは、別個の認識単位を形成することを認識する。この新たに入力された認識単位(すなわち、ストローク1316によって形成される認識単位)に基づいて、ユーザデバイスは、手書き認識モデルを使用して、絵文字(例えば、様式化された「!」)を特定する。この認識された絵文字に基づいて、ユーザデバイスは、候補表示区域806内に、第1の認識結果1318(例えば、様式化された「!」を有する「Thanks!」)を提示する。更には、ユーザデバイスはまた、同じくその新たに入力された認識単位に視覚的に類似する、数字「8」も特定する。この認識された数字に基づいて、ユーザデバイスは、候補表示区域806内に、第2の認識結果1322(例えば、「Thanks 8」)を提示する。更には、特定された絵文字(例えば、様式化された「!」)に基づいて、ユーザデバイスはまた、その絵文字に対応する正規の文字(例えば、正規の文字「!」)も特定する。この間接的に認識された正規の文字に基づいて、ユーザデバイスは、候補表示区域806内に、第3の認識結果1320(例えば、正規の「!」を有する「Thanks!」)を提示する。この時点で、ユーザは、候補認識結果1318、1320、及び1322のうちの任意の1つを選択して、テキスト入力区域808内に、その候補認識結果を入力することができる。
図13Dに示されるように、ユーザは、手書き入力区域806内に、更なる手書きストローク1324を継続して提供する。今回、ユーザは、様式化された感嘆符の後に続けて、ハート記号を描いている。この新たな手書きストローク1324に応じて、ユーザデバイスは、その新たに提供された手書きストローク1324が、更に別の新たな認識単位を形成することを認識する。この新たな認識単位に基づいて、ユーザデバイスは、その新たな認識単位に関する候補文字として、絵文字「
」、及び代替的に数字「0」を特定する。新たな認識単位から認識された、これらの新たな候補文字に基づいて、ユーザデバイスは、2つの更新された候補認識結果1326及び1330(例えば、「Thanks
」及び「Thanks 80」)を提示する。一部の実施形態では、ユーザデバイスは、特定された絵文字(例えば、「
」)に対応する、正規の文字又は語(例えば、「Love」)を更に特定する。認識された絵文字に関する、その特定された正規の文字又は語に基づいて、ユーザデバイスは、認識された絵文字が、その対応する正規の文字又は語で置き換えられた、第3の認識結果1328を提示する。図13Dに示されるように、認識結果1328では、絵文字「
」が、通常の感嘆符「!」で置き換えられ、絵文字「
」が、正規の文字又は語「Love」で置き換えられている。
図13Eに示されるように、ユーザは、候補認識結果のうちの1つ(例えば、混合スクリプトのテキスト「Thanks
」を示す候補結果1326)を選択しており、この選択された認識結果のテキストが、テキスト入力区域808内に入力され、その後、チャットセッションの他の参加者に送信される。メッセージの吹き出し1332は、対話パネル1302内に、そのメッセージのテキストを示す。
図14は、ユーザが手書き入力を使用して絵文字を入力する、例示的プロセス1400の流れ図である。図13A〜図13Eは、一部の実施形態に係る、例示的プロセス1400を示す。
プロセス1400では、ユーザデバイスは、ユーザから手書き入力を受信する(1402)。この手書き入力は、手書き入力インタフェースの手書き入力区域内に提供される、複数の手書きストロークを含む。一部の実施形態では、ユーザデバイスは、手書き認識モデルに基づいて、その手書き入力から複数の出力文字を認識する(1404)。一部の実施形態では、それらの出力文字は、少なくとも第1の絵文字(例えば、図13Dでの、様式化された感嘆符「
」又は絵文字「
」)と、自然人間言語のスクリプトからの少なくとも第1の文字(例えば、図13Dでの、語「Thanks」からの文字)とを含む。一部の実施形態では、ユーザデバイスは、例えば、図13Dに示されるように、それらの第1の絵文字(例えば、図13Dでの、様式化された感嘆符「
」又は絵文字「
」)と自然人間言語のスクリプトからの第1の文字(例えば、図13Dでの、語「Thanks」からの文字)とを含む認識結果(例えば、図13Dでの結果1326)を、手書き入力インタフェースの候補表示区域内に表示する(1406)。
一部の実施形態では、手書き認識モデルに基づいて、ユーザデバイスは、任意選択的に、その手書き入力から、少なくとも第1の意味的単位(例えば、語「Thanks」)を認識し(1408)、この第1の意味的単位は、それぞれの人間言語での、それぞれの意味論的意味を伝達することが可能な、それぞれの文字、語、又は語句を含む。一部の実施形態では、ユーザデバイスは、手書き入力から認識された第1の意味的単位(例えば、語「Thanks」)に関連付けられる、第2の絵文字(例えば、「握手」の絵文字)を特定する(1410)。一部の実施形態では、ユーザデバイスは、手書き入力インタフェースの候補表示区域内に、第1の意味的単位(例えば、語「Thanks」)から特定された第2の絵文字を少なくとも含む、第2の認識結果(例えば、「握手」の絵文字の後に続けて「
」及び「
」の絵文字を示す、認識結果)を表示する(1412)。一部の実施形態では、第2の認識結果を表示することは、少なくとも第1の意味的単位(例えば、語「Thanks」)を含む第3の認識結果(例えば、認識結果「Thanks
」)と同時に、第2の認識結果を表示することを更に含む。
一部の実施形態では、ユーザは、候補表示区域内に表示された第1の認識結果を選択する、ユーザ入力を受信する。一部の実施形態では、このユーザ入力に応じて、ユーザデバイスは、手書き入力インタフェースのテキスト入力区域内に、その選択された第1の認識結果のテキストを入力し、このテキストは、少なくとも、第1の絵文字と、自然人間言語のスクリプトからの第1の文字とを含む。換言すれば、ユーザは、自然言語キーボードと絵文字キーボードとを切り替えることなく、手書き入力区域内の単一の手書き入力(複数のストロークを含む手書き入力ではあるが)を使用して、混合スクリプトのテキスト入力を入力することが可能である。
一部の実施形態では、手書き認識モデルは、少なくとも3つの非重複スクリプトの文字に対応する書き込みサンプルを含む、マルチスクリプト訓練コーパスについて訓練されており、それらの3つの非重複スクリプトは、絵文字、中国文字、及びラテンスクリプトのセットを含む。
一部の実施形態では、ユーザデバイスは、手書き入力から直接認識された第1の絵文字(例えば、「
」の絵文字)に対応する、第2の意味的単位(例えば、語「Love」)を特定する(1414)。一部の実施形態では、ユーザデバイスは、手書き入力インタフェースの候補表示区域内に、第1の絵文字(例えば、「
」の絵文字)から特定された第2の意味的単位(例えば、語「Love」)を少なくとも含む、第4の認識結果(例えば、図13Dでの1328)を表示する(1416)。一部の実施形態では、ユーザデバイスは、図13Dに示されるように、候補表示区域内に、第1の認識結果(例えば、結果「Thanks
」)と同時に、第4の認識結果(例えば、結果1328「Thanks!Love」)を表示する。
一部の実施形態では、ユーザデバイスは、ユーザが、絵文字を描くことによって正規のテキストを入力することを可能にする。例えば、ユーザが、語「elephant」の綴り方を知らない場合には、ユーザは、任意選択的に、手書き入力区域内に、「elephant」に関する様式化された絵文字を描き、ユーザデバイスが、その手書き入力を、「elephant」に関する絵文字として正しく認識することができる場合には、ユーザデバイスはまた、任意選択的に、候補表示区域内に表示される認識結果のうちの1つとして、通常のテキストで語「elephant」も提示する。別の実施例では、ユーザは、手書き入力区域内に、中国文字「
」を書き込む代わりに、様式化された猫を描くことができる。ユーザデバイスが、このユーザによって提供された手書き入力に基づいて、「猫」に関する絵文字を特定する場合には、ユーザデバイスはまた、任意選択的に、候補表示区域内に、「猫」に関する絵文字と共に、中国語で「猫」を意味する中国文字「
」も提示する。認識された絵文字に関する通常のテキストを提示することによって、ユーザデバイスは、周知の絵文字に一般的に関連付けられる、少ない数の様式化されたストロークを使用して、複雑な文字又は語を入力する、代替的な方法を提供する。一部の実施形態では、ユーザデバイスは、絵文字を、1つ以上の好ましいスクリプト又は言語(例えば、英語又は中国語)での、それらの対応する通常のテキスト(例えば、文字、語、語句、記号など)と結びつける、辞書を記憶する。
一部の実施形態では、ユーザデバイスは、手書き入力から生成された画像に対する、絵文字の視覚的類似性に基づいて、絵文字を認識する。一部の実施形態では、手書き入力からの絵文字の認識を可能にするために、ユーザデバイス上で使用される手書き認識モデルは、自然人間言語のスクリプトの文字に対応する手書きサンプル、及び人工的に設計された絵文字のセットに対応する手書きサンプルの双方を含む、訓練コーパスを使用して訓練される。一部の実施形態では、同じ意味概念に関連する絵文字は、異なる自然言語のテキストを有する混合入力内で使用される場合に、異なる外観を有し得る。例えば、「Love」の意味概念に関する絵文字は、1つの自然言語(例えば、日本語)の通常のテキストで提示される場合は、「ハート」の絵文字とすることができ、別の自然言語(例えば、英語又はフランス語)の通常のテキストで提示される場合は、「キス」の絵文字とすることができる。
本明細書で説明されるように、複数文字の手書き入力の認識を実行する場合、手書き入力モジュールは、手書き入力区域内に現時点で蓄積されている手書き入力の分割を実行し、それらの蓄積されたストロークを、1つ以上の認識単位へと分離する。手書き入力をどのように分割するかを判定するために使用されるパラメータのうちの1つは、手書き入力区域内で、それらのストロークがどのようにクラスタ化されているか、及び異なるストロークのクラスタ間の距離とすることができる。人々は、種々の書体を有する。一部の人々は、ストローク間の距離、又は同じ文字の異なる部分間の距離を大きくして、極めて低い密度で書き込む傾向があり、その一方で、他の人々は、ストローク間の距離、又は異なる文字間の距離を極めて小さくして、極めて高い密度で書き込む傾向がある。同じユーザに関してさえも、不完全な計画により、手書き文字は、バランスが取れた外観から逸脱し、種々の方式で偏るか、延伸されるか、又は圧縮される場合がある。本明細書で説明されるように、マルチスクリプト手書き認識モデルは、ストローク順序非依存式の認識を提供し、それゆえ、ユーザは、文字又は文字の諸部分を、順番から外れて書き込むことができる。結果として、文字間の手書き入力の空間的均一性及びバランスを達成することは、困難となる恐れがある。
一部の実施形態では、本明細書で説明される手書き入力モデルは、ユーザが、手書き入力モジュールに、2つの隣接する認識単位を単一の認識単位へと融合させるべきか、又は単一の認識単位を2つの別個の認識単位へと分離するべきかを通知するための方法を提供する。このユーザの手助けで、手書き入力モジュールは、初期の分割を訂正し、ユーザによって意図された結果を生成することができる。
図15A〜図15Jは、ユーザが、ユーザデバイスによって特定された認識単位を修正するために、既定のピンチジェスチャ及び拡大ジェスチャを提供する、一部の例示的ユーザインタフェース及びプロセスを示す。
図15A及び図15Bに示されるように、ユーザは、手書き入力インタフェース802の手書き入力区域806内に、複数の手書きストローク1502(例えば、3つのストローク)を入力している。ユーザデバイスは、現時点で蓄積されている手書きストローク1502に基づいて、単一の認識単位を特定しており、候補表示区域806内に、3つの候補文字1508(例えば、それぞれ、「
」、「
」、及び「
」)を提示している。
図15Cは、ユーザが、手書き入力区域606内の、初期の手書きストローク1502の右に、少数の追加ストローク1510を更に入力していることを示す。ユーザデバイスは、ストローク1502及びストローク1510が、2つの別個の認識単位として見なされるべきであることを、(例えば、複数のストローク1502並びに1510の寸法及び空間的分布に基づいて)判定する。この認識単位の分離に基づいて、ユーザデバイスは、それらの第1の認識単位及び第2の認識単位の入力画像を、手書き認識モデルに提供し、2つの候補文字のセットを取得する。次いで、ユーザデバイスは、それらの認識文字の種々の組み合わせに基づいて、複数の認識結果(例えば、1512、1514、1516、及び1518)を生成する。各認識結果は、第1の認識単位に関する認識文字、及び第2の認識単位に関する認識文字を含む。図15Cに示されるように、複数の認識結果1512、1514、1516、及び1518は、2つの認識文字をそれぞれ含む。
この実施例では、ユーザは、実際には、この手書き入力が単一の文字として認識されることを意図していたが、その手書き文字(例えば、「
」)の左部分(例えば、左の部首「
」)と右部分(例えば、右の部首「
」)との間に、過度に大きい空間を不用意に残したと想定する。候補表示区域806内に提示された結果(例えば、1512、1514、1516、及び1518)を視認して、ユーザは、ユーザデバイスが、現在の手書き入力を、誤って2つの認識単位へと分割していることを理解する。この分割は、客観的な基準に基づき得るものであるが、ユーザにとっては、現在の手書き入力を削除し、この文字全体を、左部分と右部分との距離をより小さくして再度書き直すことは、望ましいものではない。
その代わりに、図15Dに示されるように、ユーザは、手書きストローク1502及び1510の2つのクラスタの上で、ピンチジェスチャを使用して、それらの手書き入力モジュールによって特定された2つの認識単位が、単一の認識単位として融合されるべきであることを、手書き入力モジュールに示す。このピンチジェスチャは、互いに向けて移動する、タッチ感知面上での2つの接触1520及び1522によって示される。
図15Eは、ユーザのピンチジェスチャに応じて、ユーザデバイスが、現時点で蓄積されている手書き入力(例えば、ストローク1502及び1510)の分割を訂正し、それらの手書きストロークを、単一の認識単位へと融合させていることを示す。図15Eに示されるように、ユーザデバイスは、訂正された認識単位に基づいた入力画像を、手書き認識モデルに提供し、その訂正された認識単位に関する、3つの新たな候補文字1524、1526、及び1528(例えば、「
」、「
」、及び「
」)を取得している。一部の実施形態では、図15Eに示されるように、ユーザデバイスは、任意選択的に、手書き入力区域806内の手書き入力のレンダリングを、手書きストロークの左クラスタと右クラスタとの距離が低減されるように調節する。一部の実施形態では、ユーザデバイスは、手書き入力区域608内に示される手書き入力のレンダリングを、ピンチジェスチャに応じて変更することがない。一部の実施形態では、ユーザデバイスは、手書き入力区域806内で検出される、(単一の接触とは対照的な)2つの同時接触に基づいて、ピンチジェスチャを入力ストロークから識別する。
図15Fに示されるように、ユーザは、従前に入力された手書き入力(すなわち、文字「
」に関するストローク)の右に、更に2つのストローク1530を入力している。ユーザデバイスは、この新たに入力されたストローク1530が、新たな認識単位であることを判定し、その新たに特定された認識単位に関する候補文字(例えば、「
」)を認識する。次いで、ユーザデバイスは、その新たに特定された文字(例えば、「
」)を、以前に特定された認識単位に関する候補文字と組み合わせ、候補表示区域806内に、幾つかの異なる認識結果(例えば、結果1532及び1534)を提示する。
手書きストローク1530の後に続けて、ユーザは、図15Gに示されるように、ストローク1530の右に、更なるストローク1536(例えば、3つの更なるストローク)を継続して書き込む。ストローク1530とストローク1536との水平距離は、極めて小さいため、ユーザデバイスは、ストローク1530及びストローク1536が、同じ認識単位に属すると判定し、手書き認識モデルに、それらのストローク1530及び1536によって形成される入力画像を提供する。手書き認識モデルは、訂正された認識単位に関する、3つの異なる候補文字を特定し、現時点で蓄積されている手書き入力に関する、2つの訂正された認識結果1538及び1540を生成する。
この実施例では、最後の2つのストローク1530及び1536のセットは、実際には、2つの別個の文字(例えば、「
」及び「±」)として意図されていると想定する。ユーザは、ユーザデバイスが、2つのストローク1530及び1536のセットを、誤って単一の認識単位へと組み合わせていることを視認した後、ユーザは、続けて拡大ジェスチャを提供して、ユーザデバイスに、2つのストローク1530及び1536のセットが、2つの別個の認識単位へと分離されるべきであることを通知する。図15Hに示されるように、ユーザは、ストローク1530及び1536の周りで、2つの接触1542及び1544を実施して、次いで、それらの2つの接触を、概して水平な方向で(すなわち、デフォルトの書き込み方向に沿って)互いから離れる方向に移動させる。
図15Iは、このユーザの拡大ジェスチャに応じて、ユーザデバイスが、現時点で蓄積されている手書き入力の従前の分割を訂正し、ストローク1530及びストローク1536を、2つの連続的な認識単位へと割り当てたことを示す。それらの2つの別個の認識単位に関して生成された入力画像に基づいて、ユーザデバイスは、ストローク1530に基づいた第1の認識単位に関して、1つ以上の候補文字を特定し、ストローク1536に基づいた第2の認識単位に関して、1つ以上の候補文字を特定する。次いで、ユーザデバイスは、それらの認識文字の種々の組み合わせに基づいて、2つの新たな認識結果1546及び1548を生成する。一部の実施形態では、ユーザデバイスは、任意選択的に、ストローク1536及び1536のレンダリングを、従前に特定された認識単位の分離を反映するように修正する。
図15J、図15Kに示されるように、ユーザは、候補表示区域806内に表示された候補認識結果のうちの1つを、(接触1550によって示されるように)選択しており、その選択された認識結果(例えば、結果1548)が、ユーザインタフェースのテキスト入力区域808内に入力されている。選択された認識結果が、テキスト入力区域808内に入力された後、候補表示区域806及び手書き入力区域804は双方ともクリアされ、後続のユーザ入力を表示するための準備が整う。
図16A、図16Bは、ユーザが、既定のジェスチャ(例えば、ピンチジェスチャ及び/又は拡大ジェスチャ)を使用して、現在の手書き入力の既存の分割を、どのように分割又は訂正するかを通知する、例示的プロセス1600の流れ図である。図15J及び図15Kは、一部の実施形態に係る、例示的プロセス1600の図を提供する。
一部の実施形態では、ユーザデバイスは、ユーザから手書き入力を受信する(1602)。この手書き入力は、デバイスに結合されたタッチ感知面内に提供される、複数の手書きストロークを含む。一部の実施形態では、ユーザデバイスは、手書き入力インタフェースの手書き入力区域(例えば、図15A〜図15Kの手書き入力区域806)内に、それらの複数の手書きストロークをリアルタイムでレンダリングする(1604)。ユーザデバイスは、例えば、図15D及び図15Hに示されるように、それらの複数の手書きストロークの上での、ピンチジェスチャ入力及び拡大ジェスチャ入力のうちの一方を受信する。
一部の実施形態では、ピンチジェスチャ入力を受信すると、ユーザデバイスは、例えば、図15C〜図15Eに示されるように、複数の手書きストロークを、単一の認識単位として処理することによって、それらの複数の手書きストロークに基づいた、第1の認識結果を生成する(1606)。
一部の実施形態では、拡大ジェスチャ入力を受信すると、ユーザデバイスは、例えば、図15G〜図15Iに示されるように、複数の手書きストロークを、拡大ジェスチャ入力によって引き離された2つの別個の認識単位として処理することによって、それらの複数の手書きストロークに基づいた、第2の認識結果を生成する(1608)。
一部の実施形態では、第1の認識結果及び第2の認識結果のうちの、それぞれの一方を生成すると、ユーザデバイスは、例えば、図15E及び図15Iに示されるように、生成された認識結果を、手書き入力インタフェースの候補表示区域内に表示する。
一部の実施形態では、ピンチジェスチャ入力は、複数の手書きストロークによって占有される区域内で互いに向けて収束する、タッチ感知面上での2つの同時接触を含む。一部の実施形態では、拡大ジェスチャ入力は、複数の手書きストロークによって占有される区域内で互いに分散する、タッチ感知面上での2つの同時接触を含む。
一部の実施形態では、ユーザデバイスは、これらの複数の手書きストロークから、2つの隣接する認識単位を特定する(例えば、1614)。ユーザデバイスは、例えば、図15Cに示されるように、候補表示区域内に、2つの隣接する認識単位から認識されたそれぞれの文字を含む、初期の認識結果(例えば、図15Cでの結果1512、1514、1516、及び1518)を表示する(1616)。一部の実施形態では、ピンチジェスチャに応じて、第1の認識結果(例えば、図15Eでの結果1524、1526、又は1528)を表示する場合、ユーザデバイスは、候補表示区域内で、初期の認識結果を、その第1の認識結果で置き換える(1618)。一部の実施形態では、ユーザデバイスは、図15Dに示されるように、初期の認識結果が候補表示区域内に表示されている間に、ピンチジェスチャ入力を受信する(1620)。一部の実施形態では、このピンチジェスチャ入力に応じて、ユーザデバイスは、例えば、図15Eに示されるように、手書き入力区域内の、2つの隣接する認識単位間の距離を低減するように、複数の手書きストロークを再レンダリングする(1622)。
一部の実施形態では、ユーザデバイスは、これらの複数の手書きストロークから、単一の認識単位を特定する(1624)。ユーザデバイスは、候補表示区域内に、その単一の認識単位から認識された文字(例えば、「
」「
」)を含む、初期の認識結果(例えば、図15Gの結果1538又は1540)を表示する(1626)。一部の実施形態では、拡大ジェスチャに応じて、第2の認識結果(例えば、図15Iでの結果1546又は1548)を表示する場合、ユーザデバイスは、例えば、図15H、図15Iに示されるように、候補表示区域内で、初期の認識結果(例えば、結果1538又は1540)を、その第2の認識結果(例えば、結果1546又は1548)で置き換える(1628)。一部の実施形態では、ユーザデバイスは、図15Hに示されるように、初期の認識結果が候補表示区域内に表示されている間に、拡大ジェスチャ入力を受信する(1630)。一部の実施形態では、この拡大ジェスチャ入力に応じて、ユーザデバイスは、図15H及び図15Iに示されるように、手書き入力区域内の、第1の認識単位に割り当てられた、第1のストロークのサブセットと、第2の認識単位に割り当てられた、第2の手書きストロークのサブセットとの距離を増大させるように、複数の手書きストロークを再レンダリングする(1632)。
一部の実施形態では、ユーザが、ストロークを提供して、それらのストロークが、標準的な分割プロセスに基づく正しい分割に対して、過度に散開している恐れがあることを理解した直後に、ユーザは、任意選択的に、ピンチジェスチャを提供して、それらの複数のストロークを単一の認識単位として処理するように、ユーザデバイスに通知する。ユーザデバイスは、ピンチジェスチャに存在する2つの同時接触に基づいて、ピンチジェスチャを正規のストロークから識別することができる。同様に、一部の実施形態では、ユーザが、ストロークを提供して、それらのストロークが、標準的な分割プロセスに基づく正しい分割に対して、過度に密集している恐れがあることを理解した直後に、ユーザは、任意選択的に、拡大ジェスチャを提供して、それらの複数のストロークを2つの別個の認識単位として処理するように、ユーザデバイスに通知する。ユーザデバイスは、ピンチジェスチャに存在する2つの同時接触に基づいて、拡大ジェスチャを正規のストロークから識別することができる。
一部の実施形態では、ジェスチャの下でどのようにストロークを分割するかについての、更なる手引きを提供するために、ピンチジェスチャ又は拡大ジェスチャの動きの方向が、任意選択的に使用される。例えば、手書き入力区域に関して、複数行の手書き入力が有効である場合には、垂直方向に移動する2つの接触を有するピンチジェスチャは、手書き入力モジュールに、2つの隣接する行内で特定される2つの認識単位を、(例えば、上の部首及び下の部首として)単一の認識単位へと融合させるように通知することができる。同様に、垂直方向に移動する2つの接触を有する拡大ジェスチャは、手書き入力モジュールに、単一の認識単位を、2つの隣接する行内の2つの認識単位へと分離するように通知することができる。一部の実施形態では、ピンチジェスチャ及び拡大ジェスチャはまた、文字入力のサブ部分での分割の手引き、例えば、2つのサブ構成要素を融合させること、又は複合文字(
など)内の単一の構成要素を、その複合文字の種々の部分(例えば、上、下、左、又は右の部分)に分離することの手引きも、提供することができる。このことは、複雑な複合文字を手で書き込む場合に、ユーザは正しい比率及びバランスを失う傾向があるため、複雑な複合中国文字を認識するために特に役立つ。手書き入力の完了後に、例えば、ピンチジェスチャ及び拡大ジェスチャによって、手書き入力の比率及びバランスを調節することが可能であることは、ユーザが、正しい比率及びバランスに到達するための幾つかの試みを実施することを必要とせずに、正しい文字を入力するために、特に役立つ。
本明細書で説明されるように、手書き入力モジュールは、複数文字の手書き入力をユーザが入力することを可能にし、手書き入力区域内での、1つの文字内で、複数の文字にわたって、また更には、複数の語句、文、及び/又は行にわたって、それらの複数文字の手書き入力に関する順序外のストロークを可能にする。一部の実施形態では、手書き入力モジュールはまた、手書き入力区域内での、文字単位での削除も提供し、その文字削除の順序は、書き込みの逆方向であり、各文字に関するストロークが、いつ手書き入力区域内に提供されたかとは無関係である。一部の実施形態では、手書き入力区域内での各認識単位(例えば、文字又は部首)の削除は、任意選択的に、ストローク単位で実行され、ストロークは、それらのストロークが認識単位内に提供された、逆の時間的順序で削除される。図17A〜図17Hは、ユーザからの削除入力に応じて、複数文字の手書き入力内に、文字単位での削除を提供するための、例示的ユーザインタフェースを示す。
図17Aに示されるように、ユーザは、手書き入力ユーザインタフェース802の手書き入力区域804内に、複数の手書きストローク1702を提供している。これらの現時点で蓄積されているストローク1702に基づいて、ユーザデバイスは、候補表示区域806内に、3つの認識結果(例えば、結果1704、1706、及び1708)を提示する。図17Bに示されるように、ユーザは、手書き入力区域806内に、更なる複数のストローク1710を提供している。ユーザデバイスは、3つの新たな出力文字を認識し、3つの従前の認識結果1704、1706、及び1708を、3つの新たな認識結果1712、1714、及び1716で置き換える。一部の実施形態では、図17Bに示されるように、ユーザデバイスが、現在の手書き入力(例えば、ストローク1702及びストローク1710)から、2つの別個の認識単位を特定している場合であっても、ストローク1710のクラスタは、手書き認識モジュールのレパートリー内の、いずれの既知の文字とも良好に対応しない。結果として、ストローク1710を含む認識単位に関して特定された候補文字(例えば、「
」、「
」)は全て、既定の閾値を下回る認識信頼度を有する。一部の実施形態では、ユーザデバイスは、第1の認識単位に関する候補文字(例えば、「
」)のみを含むが、第2の認識単位に関するいずれの候補文字も含まない、部分的認識結果(例えば、結果1712)を、候補表示区域806内に提示する。一部の実施形態では、ユーザデバイスは、認識信頼度が既定の閾値に合格しているか否かにかかわらず、双方の認識単位に関する候補文字を含む、完全認識結果(例えば、結果1714又は1716)を更に表示する。部分的認識結果を提供することは、その手書き入力のいずれの部分に訂正が必要であるかを、ユーザに通知する。更には、ユーザはまた、最初に、その手書き入力の正しく認識された部分を入力することを選択し、次いで、正しく認識されなかった部分を書き直すこともできる。
図17Cは、ユーザが、ストローク1710の左に、更なる手書きストローク1718を継続して提供していることを示す。ストローク1718の相対的場所及び距離に基づいて、ユーザデバイスは、この新たに追加されたストロークが、手書きストローク1702のクラスタと同じ認識単位に属していると判定する。この訂正された認識単位に基づいて、第1の認識単位に関する新たな文字(例えば、「
」)が認識され、新たな認識結果1720、1722、及び1724のセットが生成される。この場合も、第1の認識結果1720は、ストローク1710に関して特定される候補文字のいずれもが、既定の信頼度閾値を満たさないため、部分的認識結果である。
図17Dは、ユーザが、この時点で、ストローク1702とストローク1710との間に、複数の新たなストローク1726を入力していることを示す。ユーザデバイスは、この新たに入力されたストローク1726を、ストローク1710と同じ認識単位に割り当てる。この時点で、ユーザは、2つの中国文字(例えば、「
」)に関する手書きストロークの全ての入力を完了しており、正しい認識結果1728が、候補表示区域806内に示される。
図27Eは、ユーザが、例えば、削除ボタン1732上で軽い接触1730を実施することによって、削除入力の初期部分を入力していることを示す。ユーザが、削除ボタン1732との接触を維持する場合には、ユーザは、現在の手書き入力文字を、文字単位で(又は、認識単位ごとに)削除することができる。この削除は、全ての手書き入力に関して、同時には実行されない。
一部の実施形態では、ユーザの指が、最初に、タッチ感知スクリーン上の削除ボタン1732にタッチすると、図17Eに示されるように、デフォルトの(例えば、左から右への)書き込み方向での最後の認識単位(例えば、文字「
」に関する認識単位)が、手書き入力区域804内で同時に表示されている他の認識単位に対して、視覚的に強調表示される(例えば、境界線1734又は明るい背景などで強調表示される)。
一部の実施形態では、ユーザが、削除ボタン1732上での接触1730を、閾値持続時間を超えて維持していることを、ユーザデバイスが検出すると、ユーザデバイスは、図17Fに示されるように、手書き入力区域806から、強調表示された(例えば、ボックス1734内の)認識単位を除去する。更には、ユーザデバイスはまた、図17Fに示されるように、その削除された認識単位に基づいて生成された、いずれの出力文字も削除するように、候補表示区域608内に示される認識結果も訂正する。
図17Fは、手書き入力区域806内の最後の認識単位(例えば、文字「
」に関する認識単位)が削除された後、ユーザが、削除ボタン1732上での接触1730を継続して維持する場合には、削除された認識単位に隣接する認識単位(例えば、文字「
」に関する認識単位)が、削除される次の認識単位になることを更に示す。図17Fに示されるように、この残存する認識単位は、(例えば、ボックス1736内で)視覚的に強調表示されており、削除される準備が整っている。一部の実施形態では、認識単位の視覚的な強調表示は、ユーザが、削除ボタンとの接触を継続して維持する場合には、削除されることになる認識単位のプレビューを提供する。閾値持続時間に到達する前に、ユーザが、削除ボタンとの接触を中断する場合には、視覚的な強調表示は、最後の認識単位から除去され、その認識単位は削除されない。当業者には認識されるように、接触の持続時間は、認識単位が削除されるたびに、毎回リセットされる。更には、一部の実施形態では、接触の強度(例えば、ユーザが、タッチ感知スクリーンとの接触1730に加えている圧力)を任意選択的に使用して、現在強調表示されている認識単位を削除するユーザの意図を確認するための、閾値持続時間を調節する。図17F及び図17Gは、閾値持続時間に到達する前に、ユーザが、削除ボタン1732との接触1730を中断しており、文字「
」に関する認識単位が、手書き入力区域806内に保存されていることを示す。ユーザが、この認識単位に関する第1の認識結果(例えば、結果1738)を、(例えば、接触1740によって示されるように)選択すると、図17G及び図17Hに示されるように、その第1の認識結果1738内のテキストが、テキスト入力区域808内に入力される。
図18A及び図18Bは、ユーザデバイスが、複数文字の手書き入力内に、文字単位の削除を提供する、例示的プロセス1800の流れ図である。一部の実施形態では、この手書き入力の削除は、その手書き入力から認識された文字が確認されて、ユーザインタフェースのテキスト入力区域内に入力される前に実行される。一部の実施形態では、手書き入力内の文字の削除は、その手書き入力から特定された認識単位の、逆の空間的順序に従って進行し、それらの認識単位が形成される時間的配列とは無関係である。図17A〜図17Hは、一部の実施形態に係る、例示的プロセス1800を示す。
図18Aに示されるように、例示的プロセス1800では、ユーザデバイスは、ユーザから手書き入力を受信し(1802)、この手書き入力は、手書き入力インタフェースの手書き入力区域(例えば、図17Dでの区域804)内に提供される、複数の手書きストロークを含む。ユーザデバイスは、それらの複数の手書きストロークから、複数の認識単位を特定し(1804)、各認識単位は、それらの複数の手書きストロークのうちの対応のサブセットを含む。例えば、図17Dに示されるように、第1の認識単位は、ストローク1702及び1718を含み、第2の認識単位は、ストローク1710及び1726を含む。ユーザデバイスは、それらの複数の認識単位から認識された、それぞれの文字を含む、複数文字の認識結果(例えば、図17Dでの、結果1728)を生成する(1806)。一部の実施形態では、ユーザデバイスは、その複数文字の認識結果(例えば、図17Dでの、結果1728)を、手書き入力インタフェースの候補表示区域内に表示する。一部の実施形態では、その複数文字の認識結果が、候補表示区域内に表示されている間に、ユーザデバイスは、例えば、図17Eに示されるように、ユーザから削除入力(例えば、削除ボタン1732上での接触1730)を受信する(1810)。一部の実施形態では、この削除入力の受信に応じて、ユーザデバイスは、例えば、図17E、図17Fに示されるように、候補表示区域(例えば、候補表示区域806)内に表示された複数文字の認識結果(例えば、結果1728)から、最後の文字(例えば、空間的配列「
」の最後に現れる文字「
」を除去する(1812)。
一部の実施形態では、ユーザデバイスは、例えば、図17A〜図17Dに示されるように、複数の手書きストロークがユーザによって提供される際に、手書き入力インタフェースの手書き入力区域内に、それらの複数の手書きストロークをリアルタイムでレンダリングする(1814)。一部の実施形態では、削除入力の受信に応じて、ユーザデバイスは、手書き入力区域(例えば、図17Eでの手書き入力区域804)から、その手書き入力区域内の、複数の認識単位によって形成された空間的配列内の、最後の認識単位(例えば、ストローク1726及び1710を含む認識単位)に対応する、複数の手書きストロークのうちの対応のサブセットを除去する(1816)。この最後の認識単位は、複数文字の認識結果(例えば、図17Eでの、結果1728)内の、最後の文字(例えば、文字「
」)に対応する。
一部の実施形態では、この最後の認識単位は、ユーザによって提供された複数の手書きストロークの中の、時間的に最後の手書きストロークを含まない(1818)。例えば、ユーザが、ストローク1726及び1710を提供した後に、ストローク1718を提供している場合には、ストローク1726及び1710を含む最後の認識単位が、依然として最初に削除される。
一部の実施形態では、削除入力の初期部分の受信に応じて、ユーザデバイスは、例えば、図17Eに示されるように、最後の認識単位を、手書き入力区域内で特定された他の認識単位から、視覚的に識別する(1820)。一部の実施形態では、削除入力の初期部分は、手書き入力インタフェース内の削除ボタン上で検出される、初期の接触であり(1822)、この初期の接触が、既定の閾値時間量を超えて持続される場合に、削除入力が検出される。
一部の実施形態では、最後の認識単位は、手書き中国文字に対応する。一部の実施形態では、手書き入力は、筆写体の書体で書き込まれる。一部の実施形態では、手書き入力は、筆写体の書体で書き込まれた、複数の中国文字に対応する。一部の実施形態では、それらの手書きストロークのうちの少なくとも1つは、複数の認識単位のうちの、2つの隣接する認識単位へと分離される。例えば、場合によっては、ユーザは、複数の文字へと続け書きされる、長いストロークを使用することができ、そのような場合には、手書き入力モジュールの分割モジュールは、任意選択的に、その長いストロークを、幾つかの認識単位へと分離する。手書き入力の削除が、文字単位で(又は、認識単位ごとに)実行される場合、この長いストロークの区分(例えば、対応する認識単位内の区分)のみが、一度に削除される。
一部の実施形態では、削除入力は、手書き入力インタフェース内に提供される削除ボタン上での持続的接触であり(1824)、複数の手書きストロークのうちの対応のサブセットを除去することは、最後の認識単位内の手書きストロークのサブセットを、その手書きストロークのサブセットがユーザによって提供された逆の時間的順序で、手書き入力区域からストローク単位で除去することを更に含む。
一部の実施形態では、ユーザデバイスは、例えば、図17B及び図17Cに示されるように、複数の認識単位から認識されたそれぞれの文字のサブセットを含む、部分的認識結果を生成し(1826)、それぞれの文字のサブセットのそれぞれは、既定の信頼度閾値を満たす。一部の実施形態では、ユーザデバイスは、手書き入力インタフェースの候補表示区域内に、部分的認識結果(例えば、図17Bでの結果1712、及び図17Cでの結果1720)を、複数文字の認識結果(例えば、結果1714及び1722)と同時に表示する(1828)。
一部の実施形態では、部分的認識結果は、複数文字の認識結果内の、少なくとも最後の文字を含まない。一部の実施形態では、部分的認識結果は、複数文字の認識結果内の、少なくとも最初の文字を含まない。一部の実施形態では、部分的認識結果は、複数文字の認識結果内の、少なくとも中間の文字を含まない。
一部の実施形態では、削除の最小単位は部首であり、手書き入力は、部首が偶然に、手書き入力区域内に依然として残存する手書き入力内の、最後の認識単位となる場合は常に、一度に1つの部首が削除される。
本明細書で説明されるように、一部の実施形態では、ユーザデバイスは、水平書き込みモード及び垂直書き込みモードの双方を提供する。一部の実施形態では、ユーザデバイスは、水平書き込みモードで、左から右への書き込み方向及び右から左への方向のうちの一方、若しくは双方で、ユーザがテキストを入力することを可能にする。一部の実施形態では、ユーザデバイスは、垂直書き込みモードで、上から下への書き込み方向及び下から上への方向のうちの一方、若しくは双方で、ユーザがテキストを入力することを可能にする。一部の実施形態では、ユーザデバイスは、現在の手書き入力に関する、それぞれの書き込みモード及び/又は書き込み方向を呼び出すための、様々なアフォーダンス(例えば、書き込みモード又は書き込み方向ボタン)を、ユーザインタフェース上に提供する。一部の実施形態では、テキスト入力区域内でのテキスト入力方向は、デフォルトで、手書き入力方向での手書き入力方向と同じである。一部の実施形態では、ユーザデバイスは、テキスト入力区域内での入力方向、及び手書き入力区域内での書き込み方向を、ユーザが手動で設定することを可能にする。一部の実施形態では、候補表示区域内でのテキスト表示方向は、デフォルトで、手書き入力区域内での手書き入力方向と同じである。一部の実施形態では、ユーザデバイスは、手書き入力区域内での手書き入力方向とは無関係に、テキスト入力区域内でのテキスト表示方向を、ユーザが手動で設定することを可能にする。一部の実施形態では、ユーザデバイスは、手書き入力インタフェースの書き込みモード及び/又は書き込み方向を、対応するデバイスの向きと関連付け、そのデバイスの向きの変化により、書き込みモード及び/又は書き込み方向の変化がトリガされる。一部の実施形態では、書き込み方向の変化により、最上ランクの認識結果の入力が、テキスト入力区域内に自動的に入力される。
図19A〜図19Fは、水平入力モード及び垂直入力モードの双方を提供する、ユーザデバイスの例示的ユーザインタフェースを示す。
図19Aは、水平入力モードのユーザデバイスを示す。一部の実施形態では、水平入力モードは、図19Aに示されるように、ユーザデバイスが、横表示の向きにある場合に提供される。一部の実施形態では、水平入力モードは、任意選択的に、デバイスが縦表示の向きで操作される場合に関連付けられ、提供される。異なるアプリケーションでは、デバイスの向きと書き込みモードとの関連性は、異なる場合がある。
水平入力モードでは、ユーザは、水平の書き込み方向で(例えば、左から右に進むデフォルトの書き込み方向、又は右から左に進むデフォルトの書き込み方向で)手書き文字を提供することができる。水平入力モードでは、ユーザデバイスは、この水平の書き込み方向に沿って、1つ以上の認識単位への、手書き入力の分割を実行する。
一部の実施形態では、ユーザデバイスは、手書き入力区域内での、単一の行の入力のみを許容する。一部の実施形態では、図19Aに示されるように、ユーザデバイスは、手書き入力区域内での、複数行の入力(例えば、2つの行の入力)を可能にする。図19Aでは、ユーザは、手書き入力区域806内に、複数の手書きストロークを、幾つかの行で提供している。ユーザが提供した複数の手書きストロークの配列、並びに複数の手書きストロークの相対的場所、及びそれらのストローク間の距離に基づいて、ユーザデバイスは、2つの行の文字をユーザが入力していると判定する。この手書き入力を、2つの別個の行へと分割した後、デバイスは、各行内の認識単位を判定する。
図19Aに示されるように、ユーザデバイスは、現在の手書き入力1902内で特定された各認識単位に関する、それぞれの文字を認識して、幾つかの認識結果1904及び1906を生成している。図19Aに更に示されるように、一部の実施形態では、特定の認識単位(例えば、初期のストロークによって形成された認識単位)のセットに関する出力文字(例えば、文字「I」)が低い場合には、ユーザデバイスは、十分な認識信頼度を有する出力文字のみを示す、部分的認識結果(例えば、結果1906)を、任意選択的に生成する。一部の実施形態では、ユーザは、認識モデルが正しい認識結果を作り出すために、第1のストロークを訂正するか、又は個別に削除することができることを、この部分的認識結果1906から理解することができる。この特定の実施例では、第1の認識単位1904は、第1の認識単位に関する所望の認識結果を示しているため、その第1の認識単位を編集することは、必要ではない。
この実施例では、図19A、図19Bに示されるように、ユーザは、(例えば、図19Bに示される)縦表示の向きにデバイスを回転させている。このデバイスの向きの変化に対応して、手書き入力インタフェースは、図19Bに示されるように、水平入力モードから垂直入力モードに変更される。垂直入力モードでは、手書き入力区域804、候補表示区域806、及びテキスト入力区域808のレイアウトは、水平入力モードで示されるものとは異なり得る。水平入力モード及び垂直入力モードの具体的なレイアウトは、種々のデバイスの形状及びアプリケーションの要求に適合するように、変化させることができる。一部の実施形態では、デバイスの向きの回転、及び入力モードの変化により、ユーザデバイスは、最上ランクの結果(例えば、結果1904)を、テキスト入力区域808内に、テキスト入力1910として自動的に入力する。カーソル1912の向き及び位置もまた、入力モード及び書き込み方向の変化を反映する。
一部の実施形態では、入力モードの変化は、任意選択的に、特殊な入力モード選択アフォーダンス1908にユーザがタッチすることによって、トリガされる。一部の実施形態では、この入力モード選択アフォーダンスは、現在の書き込みモード、現在の書き込み方向、及び/又は現在のパラグラフ方向もまた示す、グラフィカルユーザインタフェース要素である。一部の実施形態では、入力モード選択アフォーダンスは、手書き入力インタフェース802によって提供される、全ての利用可能な入力モード及び書き込み方向を、循環して切り替えることができる。図19Aに示されるように、アフォーダンス1908は、現在の入力モードが、左から右への書き込み方向、及び上から下へのパラグラフ方向を有する、水平入力モードであることを示す。図19Bでは、アフォーダンス1908は、現在の入力モードが、上から下への書き込み方向、及び右から左へのパラグラフ方向を有する、垂直入力モードであることを示す。書き込み方向とパラグラフ方向との他の組み合わせが、様々な実施形態に従って可能である。
図19Cに示されるように、ユーザは、垂直入力モードで、手書き入力区域804内に、複数の新たなストローク1914(例えば、2つの中国文字「
」に関する手書きストローク)を入力している。この手書き入力は、垂直の書き込み方向で書き込まれる。ユーザデバイスは、この垂直方向での手書き入力を、2つの認識単位へと分割し、垂直方向でレイアウトされた2つの認識文字をそれぞれが含む、2つの認識結果1916及び1918を表示する。
図19C及び図19Dは、ユーザが、表示された認識結果(例えば、結果1916)を選択すると、その選択された認識結果が、テキスト入力区域808内に垂直方向で入力されることを示す。
図19E及び図19Fは、ユーザが、垂直の書き込み方向で、更なる手書き入力1920の行を入力していることを示す。これらの行は、伝統的な中国語の書き込みのパラグラフ方向に従って、左から右に進む。一部の実施形態では、候補表示区域806もまた、手書き入力区域に関する方向と同じ書き込み方向及びパラグラフ方向で、認識結果(例えば、結果1922及び1924)を示す。一部の実施形態では、ユーザデバイスに関連付けられる主要言語、又はユーザデバイス上にインストールされているソフトキーボードの言語(例えば、アラビア語、中国語、日本語、英語など)に従って、他の書き込み方向及びパラグラフ方向を、デフォルトで提供することができる。
図19E及び図19Fはまた、ユーザが、認識結果(例えば、結果1922)を選択すると、その選択された認識結果のテキストが、テキスト入力区域808内に入力されることも示す。図19Fに示されるように、テキスト入力区域808内に現在入力されているテキストは、それゆえ、左から右への書き込み方向を有する、水平モードで書き込まれたテキストと、上から下への書き込み方向を有する、垂直モードで書き込まれたテキストとの双方を含む。水平のテキストに関するパラグラフ方向は、上から下であり、その一方で、垂直のテキストに関するパラグラフ方向は、右から左である。
一部の実施形態では、ユーザデバイスは、手書き入力区域804、候補表示区域806、及びテキスト入力区域808のそれぞれに関して、ユーザが、好ましい書き込み方向、パラグラフ方向を、別個に確立することを可能にする。一部の実施形態では、ユーザデバイスは、手書き入力区域804、候補表示区域806、及びテキスト入力区域808のそれぞれに関して、ユーザが、それぞれのデバイスの向きに関連付けられる、好ましい書き込み方向及びパラグラフ方向を確立することを可能にする。
図20A〜図20Cは、ユーザインタフェースのテキスト入力方向及び手書き入力方向を変更するための、例示的プロセス2000の流れ図である。図19A〜図19Fは、一部の実施形態に係る、プロセス2000を示す。
一部の実施形態では、ユーザデバイスは、デバイスの向きを判定する(2002)。デバイスの向き、及びデバイスの向きの変化は、そのユーザデバイス内の、加速度計及び/又は他の向き感知要素によって検出することができる。一部の実施形態では、ユーザデバイスは、そのデバイスが第1の向きにあることに従って、そのデバイス上に、手書き入力インタフェースを、水平入力モードで提供する(2004)。この水平入力モードで入力される手書き入力のそれぞれの行は、水平の書き込み方向に沿って、1つ以上のそれぞれの認識単位へと分割される。一部の実施形態では、デバイスは、そのデバイスが第2の向きにあることに従って、そのデバイス上に、手書き入力インタフェースを、垂直入力モードで提供する(2006)。この垂直入力モードで入力される手書き入力のそれぞれの行は、垂直の書き込み方向に沿って、1つ以上のそれぞれの認識単位へと分割される。
一部の実施形態では、水平入力モードで動作している間に(2008)、デバイスは、第1の向きから第2の向きへの、デバイスの向きの変化を検出する(2010)。一部の実施形態では、このデバイスの向きの変化に応じて、デバイスは、水平入力モードから垂直入力モードに切り替える(2012)。このことは、例えば、図19A及び図19Bに示される。一部の実施形態では、垂直入力モードで動作している間に(2014)、ユーザデバイスは、第2の向きから第1の向きへの、デバイスの向きの変化を検出する(2016)。一部の実施形態では、このデバイスの向きの変化に応じて、ユーザデバイスは、垂直入力モードから水平入力モードに切り替える(2018)。一部の実施形態では、デバイスの向きと入力モードとの関連性は、上述のものとは反対にすることができる。
一部の実施形態では、水平入力モードで動作している間に(2020)、ユーザデバイスは、ユーザから、第1の複数語の手書き入力を受信する(2022)。この第1の複数語の手書き入力に応じて、ユーザデバイスは、手書き入力インタフェースの候補表示区域内に、水平の書き込み方向に従って、第1の複数語の認識結果を提示する(2024)。このことは、例えば、図19Aに示される。一部の実施形態では、垂直入力モードで動作している間に(2026)、ユーザデバイスは、ユーザから、第2の複数語の手書き入力を受信する(2028)。この第2の複数語の手書き入力に応じて、ユーザデバイスは、候補表示区域内に、垂直の書き込み方向に従って、第2の複数語の認識結果を提示する(2030)。このことは、例えば、図19C及び図19Eに示される。
一部の実施形態では、ユーザデバイスは、例えば、図19A、図19Bに示されるように、第1の複数語の認識結果を選択する、第1のユーザ入力を受信し(2032)、この選択は、入力方向を変更するための入力(例えば、デバイスの回転、又はアフォーダンス1908の選択)を使用して、暗黙的に実施される。ユーザデバイスは、例えば、図19C又は図19Eに示されるように、第2の複数語の認識結果を選択する、第2のユーザ入力を受信する(2034)。ユーザデバイスは、手書き入力インタフェースのテキスト入力区域内に、第1の複数語の認識結果及び第2の複数語の認識結果の、対応のテキストを同時に表示し(2036)、第1の複数語の認識結果の対応のテキストは、水平の書き込み方向に従って表示され、第2の複数語の認識結果の対応のテキストは、垂直の書き込み方向に従って表示される。このことは、例えば、図19Fでのテキスト入力区域808内に示される。
一部の実施形態では、手書き入力区域は、水平の書き込み方向で複数行の手書き入力を受け入れ、デフォルトの上から下へのパラグラフ方向を有する。一部の実施形態では、この水平の書き込み方向は、左から右である。一部の実施形態では、この水平の書き込み方向は、右から左である。一部の実施形態では、手書き入力区域は、垂直の書き込み方向で複数行の手書き入力を受け入れ、デフォルトの左から右へのパラグラフ方向を有する。一部の実施形態では、手書き入力区域は、垂直の書き込み方向で複数行の手書き入力を受け入れ、デフォルトの右から左へのパラグラフ方向を有する。一部の実施形態では、この垂直の書き込み方向は、上から下である。一部の実施形態では、第1の向きは、デフォルトで横表示の向きであり、第2の向きは、デフォルトで縦表示の向きである。一部の実施形態では、ユーザデバイスは、デバイスの向きに関わりなく、水平入力モードと垂直入力モードとを手動で切り替えるために、手書き入力インタフェース内に、対応のアフォーダンスを提供する。一部の実施形態では、ユーザデバイスは、2つの代替的な書き込み方向を手動で切り替えるために、手書き入力インタフェース内に、対応のアフォーダンスを提供する。一部の実施形態では、ユーザデバイスは、2つの代替的なパラグラフ方向を手動で切り替えるために、手書き入力インタフェース内に、対応のアフォーダンスを提供する。一部の実施形態では、このアフォーダンスは、連続的に1回以上呼び出される場合に、入力方向とパラグラフ方向との利用可能な各組み合わせを巡って回転する、トグルボタンである。
一部の実施形態では、ユーザデバイスは、ユーザから手書き入力を受信する(2038)。この手書き入力は、手書き入力インタフェースの手書き入力区域内に提供される、複数の手書きストロークを含む。この手書き入力に応じて、ユーザデバイスは、手書き入力インタフェースの候補表示区域内に、1つ以上の認識結果を表示する(2040)。それらの1つ以上の認識結果が、候補表示区域内に表示されている間に、ユーザデバイスは、現在の手書き入力モードから代替の手書き入力モードに切り替えるための、ユーザ入力を検出する(2042)。このユーザ入力に応じて(2044)、ユーザデバイスは、現在の手書き入力モードから代替の手書き入力モードに切り替える(2046)。一部の実施形態では、ユーザデバイスは、手書き入力区域内から、手書き入力を消去する(2048)。一部の実施形態では、ユーザデバイスは、候補表示区域内に表示された1つ以上の認識結果のうちの、最上ランクの認識結果を、手書き入力インタフェースのテキスト入力区域内に、自動的に入力する(2050)。このことは、例えば、図19A及び図19Bに示され、現在の手書き入力モードは、水平入力モードであり、代替の手書き入力モードは、垂直入力モードである。一部の実施形態では、現在の手書き入力モードは、垂直入力モードであり、代替の手書き入力モードは、水平入力モードである。一部の実施形態では、現在の手書き入力モード及び代替の手書き入力モードは、任意の2つの異なる手書き入力方向又はパラグラフ方向が提供されるモードである。一部の実施形態では、このユーザ入力は、現在の向きから、異なる向きへの、デバイスの回転である(2052)。一部の実施形態では、このユーザ入力は、現在の手書き入力モードを、代替の手書き入力モードに手動で切り替えるための、アフォーダンスの呼び出しである。
本明細書で説明されるように、手書き入力モジュールは、手書きストローク及び/又は文字を、ユーザが、任意の時間的順序で入力することを可能にする。それゆえ、複数文字の手書き入力内の、個別の手書き文字を削除すること、及び、削除された文字と同じ場所に、同じ手書き文字若しくは異なる手書き文字を書き直すことは、ユーザが、手書き入力の全体を削除することを必要とせずに、長い手書き入力を訂正する助けとなるため、有利である。
図20A〜図20Hは、手書き入力区域内に現時点で蓄積されている、複数の手書きストローク内で特定された認識単位を、視覚的に強調表示し、かつ/又は削除するための、例示的ユーザインタフェースを示す。複数の入力内で特定された複数の認識単位のうちの任意の1つを、ユーザが個別に選択し、見て、削除することを可能にすることは、複数文字の手書き入力、また更に、複数行の手書き入力が、ユーザデバイスによって許容される場合に、特に有用である。手書き入力の最初又は中間部の特定の認識単位を、ユーザが削除することを可能にすることによって、望ましくない認識単位の後に位置する全ての認識単位を、ユーザが削除することを必要とせずに、ユーザは、長い入力に対する修正を実施することが可能となる。
図21A〜図21Cに示されるように、ユーザは、手書き入力ユーザインタフェース802の手書き入力区域804内に、複数の手書きストローク(例えば、ストローク2102、2104、及び2106)を提供している。ユーザが、手書き入力区域804に、追加ストロークを継続して提供する間に、ユーザデバイスは、手書き入力区域内に現時点で蓄積されている手書き入力から特定される、認識単位を更新し、その更新された認識単位から認識される出力文字に従って、認識結果を訂正する。図20Cに示されるように、ユーザデバイスは、現在の手書き入力から2つの認識単位を特定し、2つの中国文字をそれぞれが含む、3つの認識結果(例えば、2108、2010、及び2112)を提示している。
この実施例では、ユーザが2つの手書き文字を書き込んだ後に、ユーザは、第1の認識単位が誤って書き込まれ、結果として、所望の認識結果を、ユーザデバイスが特定して候補表示区域内に提示していないことを理解する。
一部の実施形態では、ユーザが、タッチ感知ディスプレイ上にタップジェスチャ(例えば、接触に続く、同じ場所での即座のリフトオフ)を提供すると、ユーザデバイスは、そのタップジェスチャを、手書き入力区域内で現在特定されている個別の認識単位の、視覚的な強調表示を引き起こすための入力として解釈する。一部の実施形態では、別の既定のジェスチャ(例えば、手書き入力区域の上での、複数の指でワイプするジェスチャ)を使用して、ユーザデバイスに、手書き入力区域804内の個別の認識単位を強調表示させる。タップジェスチャは、手書きストローク(通常、より長い持続時間持続的接触を伴い、手書き入力区域804内での接触の移動を有するもの)から識別することが比較的容易であるため、好ましい場合がある。マルチタップジェスチャは、手書きストローク(通常、手書き入力区域804内での単一の接触を伴うもの)から識別することが比較的容易であるため、好ましい場合がある。一部の実施形態では、ユーザデバイスは、個別の認識単位を、(例えば、ボックス2108及び2110によって示されるように)視覚的に強調表示させるための、ユーザによって(例えば、接触2114を介して)呼び出すことが可能なアフォーダンス2112を、ユーザインタフェース内に提供する。一部の実施形態では、このアフォーダンスは、そのようなアフォーダンスを収容するための、十分な画面空間が存在する場合に好ましい。一部の実施形態では、このアフォーダンスは、ユーザによって連続的に複数回呼び出すことができ、このことは、ユーザデバイスに、分割束内の異なる分割鎖に従って特定された認識単位を、視覚的に強調表示させ、また、その強調表示に関して、全ての分割鎖が示された場合に、オフにさせる。
図21Dに示されるように、ユーザが、手書き入力区域804内の個別の認識単位を強調表示するために、必要なジェスチャを提供している場合、ユーザデバイスは、強調表示された各認識単位の上に、それぞれの削除アフォーダンス(例えば、小さい削除ボタン2116及び2118)を更に表示する。図21E及び図21Fは、ユーザが、それぞれの認識単位の削除アフォーダンス(例えば、ボックス2118内の第1の認識単位に関する削除ボタン2116)に、(例えば、接触2120を介して)タッチすると、それぞれの(例えば、ボックス2118内の)認識単位が、手書き入力区域804から除去されることを示す。この特定の実施例では、削除される認識単位は、時間的に最後に入力された認識単位ではなく、書き込み方向に沿った、空間的に最後の認識単位でもない。換言すれば、ユーザは、任意の認識単位を、手書き入力区域内にその認識単位が提供された時間及び場所に関わりなく、削除することができる。図21Fは、手書き入力区域内での、この第1の認識単位の削除に応じて、ユーザデバイスが、候補表示区域806内に表示される認識結果も更新することを示す。図21Fに示されるように、ユーザデバイスはまた、削除された認識単位に対応する候補文字を、認識結果からも削除している。結果として、新たな認識結果2120が、候補表示区域806内に示される。
図21G及び図21Hに示されるように、第1の認識単位が、手書き入力インタフェース804から除去された後、ユーザは、この削除された認識単位によって従前に占有されていた区域内に、複数の新たな手書きストローク2122を提供している。ユーザデバイスは、手書き入力区域804内の、現時点で蓄積されている手書き入力を、再分割している。この手書き入力から特定された認識単位に基づいて、ユーザデバイスは、候補表示区域806内に、認識結果(例えば、結果2124及び2126)を再生成している。図21G及び図21Hは、ユーザが、それらの認識結果のうちの1つ(例えば、結果2124)を、(例えば、接触2128を介して)選択しており、その選択された認識結果のテキストが、テキスト入力区域808内に入力されることを示す。
図22A及び図22Bは、現在の手書き入力内で特定された個別の認識単位が、視覚的に提示され、それらの認識単位が形成される時間的順序に関わりなく、個別に削除することが可能な、例示的プロセス2200に関する流れ図である。図21A〜図21Hは、一部の実施形態に係る、プロセス2200を示す。
例示的プロセス2200では、ユーザデバイスは、ユーザから手書き入力を受信する(2202)。この手書き入力は、デバイスに結合されたタッチ感知面上に提供される、複数の手書きストロークを含む。一部の実施形態では、ユーザデバイスは、手書き入力インタフェースの手書き入力区域(例えば、手書き入力区域804)内に、それらの複数の手書きストロークをレンダリングする(2204)。一部の実施形態では、ユーザデバイスは、それらの複数の手書きストロークを、2つ以上の認識単位へと分割し(2206)、各認識単位は、それらの複数の手書きストロークのうちの対応のサブセットを含む。
一部の実施形態では、ユーザデバイスは、ユーザから編集リクエストを受信する(2208)。一部の実施形態では、この編集リクエストは、手書き入力インタフェース内に提供された、既定のアフォーダンス(例えば、図21Dでのアフォーダンス2112)の上で検出される、接触である(2210)。一部の実施形態では、この編集リクエストは、手書き入力インタフェース内の既定の区域の上で検出される、タップジェスチャである(2212)。一部の実施形態では、この既定の区域は、手書き入力インタフェースの手書き入力区域内に存在する。一部の実施形態では、この既定の区域は、手書き入力インタフェースの手書き入力区域の外側に存在する。一部の実施形態では、手書き入力区域の外側での、別の既定のジェスチャ(例えば、十字ジェスチャ、水平スワイプジェスチャ、垂直スワイプジェスチャ、傾斜スワイプジェスチャ)を、編集リクエストとして使用することができる。手書き入力区域の外側でのジェスチャは、手書き入力区域の外側に提供されるため、手書きストロークから容易に識別することができる。
一部の実施形態では、この編集リクエストに応じて、ユーザデバイスは、例えば、図21Dでのボックス2108及び2110を使用して、手書き入力区域内の2つ以上の認識単位を、視覚的に識別する(2214)。一部の実施形態では、2つ以上の認識単位を視覚的に識別することは、手書き入力区域内の2つ以上の認識単位間の、それぞれの境界線を強調表示することを更に含む(2216)。様々な実施形態では、現在の手書き入力内で特定された認識単位を視覚的に識別する、種々の方法を使用することができる。
一部の実施形態では、ユーザデバイスは、手書き入力区域から、2つ以上の認識単位のうちのそれぞれを、個別に削除する手段を提供する(2218)。一部の実施形態では、2つ以上の認識単位のうちのそれぞれを、個別に削除する手段は、例えば、図21Dでの削除ボタン2116及び2118によって示されるような、各認識単位の近位に表示される、それぞれの削除ボタンである。一部の実施形態では、2つ以上の認識単位のうちのそれぞれを、個別に削除する手段は、各認識単位の上での、既定の削除ジェスチャ入力を検出する手段である。一部の実施形態では、ユーザデバイスは、強調表示された認識単位の上に、個別の削除アフォーダンスを視覚的に表示しない。その代わりに、一部の実施形態では、ユーザは、削除ジェスチャを使用して、その削除ジェスチャの下の、それぞれの認識単位を削除することが可能となる。一部の実施形態では、ユーザデバイスが、視覚的に強調表示された方式で、認識単位を表示している際には、ユーザデバイスは、手書き入力区域内に、更なる手書きストロークを受け入れない。その代わりに、視覚的に強調表示された認識単位の上で検出される、既定のジェスチャ又は任意のジェスチャが、ユーザデバイスに、その認識単位を手書き入力区域から除去させ、候補表示区域内に表示される認識結果を、適宜に訂正させる。一部の実施形態では、タップジェスチャが、ユーザデバイスに、手書き認識区域内で特定された個別の認識単位を、視覚的に強調表示させ、次いで、ユーザは、削除ボタンを使用して、書き込みの逆方向で、個別の認識単位を1つずつ削除することができる。
一部の実施形態では、ユーザデバイスは、例えば、図21Eに示されるように、2つ以上の認識単位のうちの第1の認識単位を、手書き入力区域から個別に削除するための削除入力を、ユーザから、提供された手段を通じて受信する(2224)。この削除入力に応じて、ユーザデバイスは、例えば、図21Fに示されるように、手書き入力区域から、第1の認識単位内の、手書きストロークのうちの対応のサブセットを除去する(2226)。一部の実施形態では、第1の認識単位は、2つ以上の認識単位内の、空間的に最初の認識単位である。一部の実施形態では、第1の認識単位は、例えば、図21E及び図21Fに示されるように、2つ以上の認識単位の中の、空間的に中間の認識単位である。一部の実施形態では、第1の認識単位は、2つ以上の認識単位の中の、空間的に最後の認識単位である。
一部の実施形態では、ユーザデバイスは、複数の手書きストロークから、分割束を生成し(2228)、この分割束は、それぞれがそれらの複数の手書きストロークから特定される対応の認識単位のセットを表す、複数の代替的な分割鎖を含む。例えば、図21Gは、認識結果2024及び2026を示し、認識結果2024は、2つの認識単位を有する1つの分割鎖から生成され、認識結果2026は、3つの認識単位を有する別の分割鎖から生成される。一部の実施形態では、ユーザデバイスは、ユーザから、2つ以上の連続的編集リクエストを受信する(2230)。例えば、それらの2つ以上の連続的編集リクエストは、図21Gでのアフォーダンス2112上での、幾つかの連続的タップとすることができる。一部の実施形態では、2つ以上の連続的編集リクエストのそれぞれに応じて、ユーザデバイスは、手書き入力区域内で、複数の代替的な分割鎖のうちの異なる1つからの、対応の認識単位のセットを、視覚的に識別する(2232)。例えば、第1のタップジェスチャに応じて、手書き入力区域804内で、2つの(例えば、それぞれ、文字「
」及び「
」に関する)認識単位が強調表示され、第2のタップジェスチャに応じて、3つの(例えば、それぞれ、文字「
」、「
」、及び「
」に関する)認識単位が強調表示される。一部の実施形態では、第3のタップジェスチャに応じて、視覚的な強調表示が、任意選択的に、全ての認識単位から除去され、手書き入力区域は、通常状態に戻り、更なるストロークを受け入れる準備が整う。一部の実施形態では、ユーザデバイスは、手書き入力区域内に現在表されている、対応の認識単位のセットのそれぞれを、個別に削除する手段を提供する(2234)。一部の実施形態では、この手段は、強調表示された各認識単位に関する、個別の削除ボタンである。一部の実施形態では、この手段は、強調表示された各認識単位の上での、既定の削除ジェスチャを検出し、及び、その既定の削除ジェスチャの下の強調表示された認識単位を、削除する機能を呼び出す手段である。
本明細書で説明されるように、一部の実施形態では、ユーザデバイスは、手書き入力区域内での、継続的入力モードを提供する。手書き入力区域の面積は、ポータブルユーザデバイス上では限られているため、ユーザによって提供される手書き入力をキャッシュして、ユーザが、従前に提供されている手書き入力を確定することなく、画面空間を再使用することを可能にするための方法を提供することが、望ましい場合がある。一部の実施形態では、ユーザデバイスは、ユーザが手書き入力区域の終端部に十分に接近しつつある場合に、入力区域が特定の量(例えば、一度に1つの認識単位)で徐々に移行する、スクロールする手書き入力区域を提供する。一部の実施形態では、手書き入力区域内で既存の認識単位を移行させることは、ユーザの書き込みプロセスを妨げ、恐らくは、認識単位の正しい分割を妨げる可能性があるため、認識単位を動的に移行させることなく、その入力区域の従前に使用された領域を、再生利用することが有利な場合がある。一部の実施形態では、テキスト入力区域内に未だ入力されていない手書き入力によって占有される区域を、ユーザが再使用する場合、その手書き入力区域に関する最上位の認識結果が、テキスト入力区域内に自動的に入力されて、ユーザは、その最上ランクの認識結果を明示的に選択することなく、新たな手書き入力を継続して提供することができる。
一部の従来システムでは、ユーザは、手書き入力区域内に依然として示されている、既存の手書き入力の上に、書き込むことが可能となる。そのようなシステムでは、時間的情報を使用して、新たなストロークが、以前の認識単位の一部であるか、又は新たな認識単位の一部であるかを判定する。そのような時間的情報に依存するシステムは、ユーザが手書き入力を提供する速度及び緩急に対して、厳格な要件を強いるものであり、多くのユーザには、その要件を満たすことは困難である。更には、その手書き入力の視覚的レンダリングは、ユーザにとって解読することが困難な、雑然としたものになる恐れがある。それゆえ、その書き込みプロセスは、ユーザにとって苛立たしく混乱したものとなり、劣悪なユーザエクスペリエンスをもたらす恐れがある。
本明細書で説明されるように、従前に書き込まれた認識単位によって占有される区域を、ユーザがいつ再使用して、その手書き入力区域内での書き込みを継続することができるかを示すために、フェーディングプロセスが使用される。一部の実施形態では、このフェーディングプロセスは、閾値時間量にわたって手書き入力区域内に提供されている、各認識単位の視認性を徐々に低減して、その上に新たなストロークが書き込まれる場合に、既存のテキストが、その新たなストロークと視覚的に競合することがない。一部の実施形態では、フェードした認識単位の上に書き込むことにより、ユーザが書き込みを中断し、最上ランクの認識結果に関する選択入力を、明示的に提供することを必要とせずに、その認識単位に関する最上ランクの認識結果を、テキスト入力区域内に自動的に入力させる。最上ランクの認識結果の、この暗黙的かつ自動的な確認は、手書き入力インタフェースの入力の効率及び速度を向上させ、現在のテキスト構成の思考の流れを維持するための、ユーザに強いられる認知負担を軽減する。一部の実施形態では、フェードした認識単位の上に書き込むことにより、最上ランクの検索結果の自動的な選択は引き起こされない。その代わりに、フェードした認識単位は、手書き入力スタック内にキャッシュされ、現在の手書き入力として、新たな手書き入力と組み合わされる。ユーザは、手書き入力スタック内に蓄積された、それらの認識単位の全てに基づいて生成される認識結果を、選択を実施する前に視認することができる。
図23A〜図23Jは、手書き入力区域の異なる領域内に提供された認識単位が、例えば、既定の時間量の後に、それらの対応の領域から徐々にフェードアウトし、このフェードアウトが特定の領域内で生じた後、ユーザは、その領域内に新たな手書きストロークを提供することが可能となる、例示的なユーザインタフェース及びプロセスを示す。
図23Aに示されるように、ユーザは、手書き入力区域804内に、複数の手書きストローク2302(例えば、大文字「I」に関する3つの手書きストローク)を提供している。手書きストローク2302は、ユーザデバイスによって、1つの認識単位として特定される。一部の実施形態では、手書き入力区域804内に現在示されている手書き入力は、ユーザデバイスの手書き入力スタック内の、第1の層内にキャッシュされる。この特定された認識単位に基づいて生成された、幾つかの認識結果が、候補表示区域804内に提供される。
図23Bは、ユーザが、ストローク2304の右に、1つ以上のストローク2302を継続して書き込むと、第1の認識単位内の手書きストローク2302が、手書き入力区域804内で、徐々にフェードアウトを開始することを示す。一部の実施形態では、この第1の認識単位の視覚的レンダリングの、徐々のフェーディング又は消失を模倣する、アニメーションが表示される。例えば、このアニメーションは、ホワイトボードからインクが蒸発する、視覚効果を作り出すことができる。一部の実施形態では、認識単位のフェーディングは、認識単位全体にわたって均一なものではない。一部の実施形態では、認識単位のフェーディングは、経時的に増大して、最終的に、その認識単位は、手書き区域内で完全に不可視となる。しかしながら、認識単位が、もはや手書き入力区域804内で可視ではない場合であっても、一部の実施形態では、その不可視の認識単位は、手書き入力スタックの最上位に維持され、その認識単位から生成された認識結果が、候補表示区域内に継続して表示される。一部の実施形態では、フェードした認識単位は、その上に新たな手書き入力が書き込まれるまで、完全にはビューから除去されない。
一部の実施形態では、ユーザデバイスは、フェーディングアニメーションが開始すると即座に、新たな手書き入力が、フェードした認識単位によって占有されていた領域の上に提供されることを可能にする。一部の実施形態では、ユーザデバイスは、フェーディングが特定の段階に(例えば、最も微弱なレベルに、又は、その領域内で認識が完全に不可視となるまで)進行した後にのみ、新たな手書き入力が、フェードした認識単位によって占有されていた領域の上に提供されることを可能にする。
図23Cは、第1の認識単位(すなわち、ストローク2302)が、そのフェーディングプロセスを完了している(例えば、インクの色が、極めて微弱なレベルで安定化しているか、又は不可視になっている)ことを示す。ユーザデバイスは、ユーザによって提供された更なる手書きストロークから、更なる認識単位(例えば、手書き文字「a」及び「m」に関する認識単位)を特定し、候補表示区域804内に提示される認識結果を更新している。
図22D〜図22Fは、時間の経過と共に、ユーザが、手書き入力区域804内に、複数の更なる手書きストローク(例えば、2304及び2306)を提供していることを示す。同時に、従前に特定された認識単位は、手書き入力区域804から、徐々にフェードして消える。一部の実施形態では、各認識単位が、その認識単位が特定された後に、それ自体のフェーディングプロセス開始するためには、既定の時間量を要する。一部の実施形態では、各認識単位に関するフェーディングプロセスは、ユーザが、その認識単位の下流に、第2の認識単位を入力することを開始するまでは、開始されない。図23B〜図23Fに示されるように、手書き入力が筆写体で提供される場合、単一のストローク(例えば、ストローク2304又はストローク2306)は、手書き入力区域内で、複数の認識単位(例えば、語「am」又は「back」内の各手書き文字に関する認識単位)を経て続けられる場合がある。
図22Gは、認識単位が、そのフェーディングプロセスを開始した後であっても、ユーザは、既定の再生入力、例えば、削除ボタン2310上での(例えば、接触2308の後に続く即座のリフトオフによって示されるような)タップジェスチャによって、その認識単位を、非フェード状態に回復させることができることを示す。認識単位が再生されると、その外観は、通常の視認性レベルに戻る。一部の実施形態では、フェードした認識単位の再生は、手書き入力区域804内での書き込みの逆方向で、文字単位で実施される。一部の実施形態では、フェードした認識単位の再生は、手書き入力区域804内で、語単位で実施される。図23Gに示されるように、語「back」に対応する認識単位は、フェード完了状態から、完全な非フェード状態に再生されている。一部の実施形態では、フェーディングプロセスを開始するためのクロックは、認識単位が非フェード状態に再生されると、各認識単位ごとにリセットされる。
図22Hは、削除ボタン上での持続的接触により、デフォルトの書き込み方向での最後の認識単位(例えば、語「back」内の文字「k」に関する認識単位)が、手書き入力区域804から削除されることを示す。この削除入力が継続的に維持されると、より多くの認識単位(例えば、語「back」内の文字「c」、「a」、「b」に関する認識単位)が、書き込みの逆方向で、1つずつ削除される。一部の実施形態では、認識単位の削除は語単位であり、手書き入力区域804から削除される手書きの語「back」の全ての文字が、同時に除去される。図22Hはまた、接触2308が、手書きの語「back」内の文字「b」に関する認識単位の削除の後に、削除ボタン2310上で維持されると、従前にフェードした認識単位「m」が、同様に再生されることも示す。
図23Iは、手書きの語「am」内の再生された認識単位「m」の削除が実施される前に、削除入力が停止される場合には、その再生された認識単位が、再び徐々にフェードすることを示す。一部の実施形態では、各認識単位の状態(例えば、1つ以上のフェード状態及び非フェード状態のセットから選択される状態)が、手書き入力スタック内で維持及び更新される。
図23Jは、ユーザが、手書き入力区域内の、フェードした認識単位(例えば、文字「I」に関する認識単位)によって占有されていた区域の上に、1つ以上のストローク2312を提供している場合、一部の実施形態では、図23I、図23Jに示されるように、ストローク2312の前に実施された手書き入力に関する、最上ランクの認識結果(例えば、結果2314)のテキストが、テキスト入力区域808内に、自動的に入力されることを示す。図23Jに示されるように、テキスト「I am」は、もはや暫定的であるとして示されず、その代わりに、テキスト入力区域808内に確定されている。一部の実施形態では、完全にフェードした手書き入力又は部分的にフェードした手書き入力に関して、テキスト入力が実施されると、その手書き入力は、手書き入力スタックから除去される。新たに入力されたストローク(例えば、ストローク2312)が、手書き入力スタック内の現在の入力になる。
図23Jに示されるように、テキスト「I am」は、もはや暫定的であるとして示されず、その代わりに、テキスト入力区域808内に確定されている。一部の実施形態では、完全にフェードした手書き入力又は部分的にフェードした手書き入力に関して、テキスト入力が実施されると、その手書き入力は、手書き入力スタックから除去される。新たに入力されたストローク(例えば、ストローク2312)が、手書き入力スタック内の現在の入力になる。
一部の実施形態では、ストローク2312が、手書き入力区域内の、フェードした認識単位(例えば、文字「I」に関する認識単位)によって占有されていた区域の上に提供される場合、ストローク2312の前に実施された手書き入力に関する、最上ランクの認識結果(例えば、結果2314)のテキストは、テキスト入力区域808内に、自動的には入力されない。その代わりに、手書き入力区域804内の(フェード及び非フェードの双方の)現在の手書き入力が消去され、手書き入力スタック内にキャッシュされる。新たなストローク2312は、その手書き入力スタック内のキャッシュされた手書き入力に付加される。ユーザデバイスは、手書き入力スタック内に現時点で蓄積されている手書き入力の全体に基づいて、認識結果を判定する。それらの認識結果は、候補表示区域内に表示される。換言すれば、現時点で蓄積されている手書き入力の一部分のみが、手書き入力区域804内に示される場合であっても、認識結果は、手書き入力スタック内にキャッシュされた(可視の部分、及びもはや可視ではない部分の双方の)手書き入力全体に基づいて生成される。
図23Kは、ユーザが、手書き入力区域804内に、更なるストローク2316を入力しており、そのストロークが、経時的にフェードしていることを示す。図23Lは、フェードしたストローク2312及び2316の上に書き込まれた、新たなストローク2318により、フェードしたストローク2312及び2316に関する最上位の認識結果2320のテキストが、テキスト入力区域808内に入力されていることを示す。
一部の実施形態では、ユーザは、任意選択的に、複数の行で手書き入力を提供する。一部の実施形態では、複数行の入力が有効である場合に、同じフェーディングプロセスを使用して、新たな手書き入力のために、手書き入力区域をクリアすることができる。
図24A及び図24Bは、手書き入力インタフェースの手書き入力区域内に、フェーディングプロセスを提供するための、例示的プロセス2400の流れ図である。図23A〜図23Kは、一部の実施形態に係る、プロセス2400を示す。
一部の実施形態では、デバイスは、ユーザから第1の手書き入力を受信する(2402)。この第1の手書き入力は、複数の手書きストロークを含み、それらの複数の手書きストロークは、手書き入力インタフェースの手書き入力区域に関連付けられた、それぞれの書き込み方向に沿って分布する、複数の認識単位を形成する。一部の実施形態では、ユーザデバイスは、それらの手書きストロークがユーザによって提供される際に、手書き入力区域内に、それらの複数の手書きストロークのそれぞれをレンダリングする(2404)。
一部の実施形態では、ユーザデバイスは、認識単位が完全にレンダリングされた後に、複数の認識単位のそれぞれに関する、それぞれのフェーディングプロセスを開始する(2406)。一部の実施形態では、それぞれのフェーディングプロセスの間に、第1の手書き入力内の認識単位のレンダリングが、フェードして消える。このことは、一部の実施形態では、図23A〜図23Fに示される。
一部の実施形態では、ユーザデバイスは、例えば、図23I、図23J、及び図23K、図23Lに示されるように、複数の認識単位のうちのフェードした認識単位によって占有されていた、手書き入力区域の領域の上に、ユーザから第2の手書き入力を受信する(2408)。一部の実施形態では、この第2の手書き入力の受信に応じて(2410)、ユーザデバイスは、手書き入力区域内に、その第2の手書き入力をレンダリングして(2412)、全てのフェードした認識単位を、手書き入力区域から消去する(2414)。一部の実施形態では、第2の手書き入力の前に手書き入力区域内に入力されていた、全ての認識単位は、その認識単位が、そのフェーディングプロセスを開始しているか否かにかかわらず、手書き入力区域から消去される。このことは、例えば、図23I、図23J、及び図23K、図23Lに示される。
一部の実施形態では、ユーザデバイスは、第1の手書き入力に関する、1つ以上の認識結果を生成する(2416)。一部の実施形態では、ユーザデバイスは、手書き入力インタフェースの候補表示区域内に、それらの1つ以上の認識結果を表示する(2418)。一部の実施形態では、第2の手書き入力の受信に応じて、ユーザデバイスは、候補表示区域内に表示された最上ランクの認識結果を、ユーザ選択なしで、手書き入力インタフェースのテキスト入力区域内に、自動的に入力する(2420)。このことは、例えば、図23I、図23J、及び図23K、図23Lに示される。
一部の実施形態では、ユーザデバイスは、第1の手書き入力及び第2の手書き入力を含む、入力スタックを記憶する(2422)。一部の実施形態では、ユーザデバイスは、第1の手書き入力と第2の手書き入力との連結から認識された、対応の空間的な文字の配列をそれぞれが含む、1つ以上の複数文字の認識結果を生成する(2424)。一部の実施形態では、ユーザデバイスは、第2の手書き入力のレンダリングが、手書き入力区域内で、第1の手書き入力のレンダリングを置き換えている間に、手書き入力インタフェースの候補表示区域内に、それらの1つ以上の複数文字の認識結果を表示する(2426)。
一部の実施形態では、各認識単位に関するそれぞれのフェーディングプロセスは、その認識単位がユーザによって完了された後、既定の期間が経過している場合に開始される。
一部の実施形態では、各認識単位に関するフェーディングプロセスは、その認識単位の後に、ユーザが次の認識単位に関するストロークの入力を開始している場合に開始される。
一部の実施形態では、各認識単位に関するそれぞれのフェーディングプロセスの終了状態は、その認識単位に関して、既定の最小限の視認性を有する状態である。
一部の実施形態では、各認識単位に関するそれぞれのフェーディングプロセスの終了状態は、その認識単位に関して、ゼロの視認性を有する状態である。
一部の実施形態では、第1の手書き入力内の最後の認識単位がフェードした後、ユーザデバイスは、ユーザから、既定の再生入力を受信する(2428)。この既定の再生入力の受信に応じて、ユーザデバイスは、その最後の認識単位を、フェード状態から非フェード状態に復帰させる(2430)。このことは、例えば、図23F〜図23Hに示される。一部の実施形態では、この既定の再生入力は、手書き入力インタフェース内に提供された削除ボタン上で検出される、初期の接触である。一部の実施形態では、削除ボタン上で検出される持続的接触が、手書き入力区域から最後の認識単位を削除し、最後から2番目の認識単位を、フェード状態から非フェード状態に再生する。このことは、例えば、図23G及び図23Hに示される。
本明細書で説明されるように、マルチスクリプト手書き認識モデルは、ストローク順序非依存式及びストローク方向非依存式の、手書き文字の認識を実行する。一部の実施形態では、この認識モデルは、手書き認識モデルの語彙内の種々の文字に対応する、書き込みサンプルのフラットな画像内に含まれる、空間的に導出される特徴のみについて訓練される。書き込みサンプルの画像は、それらの画像内に含まれる個別のストロークに関連する、いずれの時間的情報も含まないため、結果的に得られる認識モデルは、ストローク順序非依存式及びストローク方向非依存式である。
上記で説明されるように、ストローク順序及びストローク方向非依存式の手書き認識は、文字の時間的な生成に関連する情報(例えば、それらの文字内のストロークの、時間的配列)に依存する従来の認識システムに勝る、多くの利点を提供する。しかしながら、リアルタイム手書き認識のシナリオでは、個別のストロークに関連する時間的情報が利用可能であり、手書き認識システムの認識精度を向上させるために、この情報を利用することが有益な場合がある。以下では、手書き認識モデルの空間的特徴の抽出に、時間的に導出されるストローク分布情報を統合する技術が説明されるが、この時間的に導出されるストローク分布情報の使用は、手書き認識システムのストローク順序及び/又はストローク方向非依存性を損なうものではない。種々の文字に関連するストローク分布情報に基づいて、明確に異なるストロークのセットで作り出される、類似した見た目の文字間の、曖昧性除去が可能となる。
一部の実施形態では、手書き入力が、手書き認識モデル(例えば、CNN)に関する入力画像(例えば、入力ビットマップ画像)に変換される場合、個別のストロークに関連付けられる時間的情報が失われる。例えば、中国文字「
」に関しては、8つの(例えば、図27で#1〜#8と標識される)ストロークを使用して、この文字を書き上げることができる。この文字に関するストロークの配列及び方向は、その文字に関連付けられる、幾つかの独自の特徴を提供する。認識システムのストローク順序及びストローク方向非依存性を損なうことなく、ストローク順序及びストローク方向の情報を捕捉するための素朴な方法は、訓練サンプル内に、ストローク順序及びストローク方向の全ての可能な順列を、明示的に列挙することである。しかしながら、単に適度の複雑性の文字に関してさえ、この順列は、10億を超える可能性に及び、実際に実装することは、不可能ではないにせよ、非現実的なものとなる。本明細書で説明されるように、ストローク生成の時系列態様(すなわち、時間的情報)を抽象化する、ストローク分布プロファイルが、各書き込みサンプルに関して生成される。それらの書き込みサンプルのストローク分布プロファイルは、時間的に導出される特徴のセットを抽出するように訓練され、その時間的に導出される特徴のセットが、その後、(例えば、入力ビットマップ画像からの)空間的に導出される特徴と組み合わされて、手書き認識システムのストローク順序及びストローク方向非依存性に影響を及ぼすことなく、認識精度を向上させる。
本明細書で説明されるように、1つの文字に関連付けられる時間的情報は、各手書きストロークを特徴付ける、様々なピクセル分布を計算することによって抽出される。1つの文字のあらゆる手書きストロークは、所定の方向上に投影される場合に、決定論的なパターン(又は、プロファイル)を生じさせる。このパターン自体は、そのストロークを明確に認識するためには不十分な場合があるが、他の同様のパターンと組み合わされると、この特定のストロークに固有の、特定の特性を捕捉するために適切となり得る。この種のストローク表現を、同様に、空間的特徴の抽出(例えば、CNNでの入力画像に基づく特徴の抽出)と共に統合して、手書き認識モデルのレパートリー内の、類似した見た目の文字間の曖昧性を除去するために有用となり得る、直交性の情報が提供される。
図25A及び図25Bは、手書き認識モデルの訓練の間に、手書きサンプルの、時間的に導出される特徴と空間的に導出される特徴とを統合するための、例示的プロセス2500の流れ図であり、この場合、結果的に得られる認識モデルは、ストローク順序及びストローク方向非依存式のまま維持される。一部の実施形態では、例示的プロセス2500は、訓練された認識モデルをユーザデバイス(例えば、ポータブルデバイス100)に提供する、サーバデバイス上で実行される。一部の実施形態では、このサーバデバイスは、1つ以上のプロセッサ、及びメモリを含み、このメモリは、それらの1つ以上のプロセッサによって実行される場合にプロセス2500を実行する、命令を含む。
例示的プロセス2500では、デバイスは、手書き認識モデルの、空間的に導出される特徴のセットと時間的に導出される特徴のセットとを、別個に訓練し(2502)、空間的に導出される特徴のセットは、それぞれが、出力文字セットのそれぞれの文字に関する手書きサンプルの画像である、訓練画像のコーパスについて訓練され、時間的に導出される特徴のセットは、ストローク分布プロファイルのコーパスについて訓練され、各ストローク分布プロファイルは、出力文字セットのそれぞれの文字に関する手書きサンプル内での、複数のストロークの空間的分布を、数値的に特徴付ける。
一部の実施形態では、空間的に導出される特徴のセットを別個に訓練することは、入力層、出力層、及び複数の畳み込み層を有する、畳み込みニューラルネットワークを訓練することを更に含み(2504)、この複数の畳み込み層は、最初の畳み込み層、最終畳み込み層、最初の畳み込み層と最終畳み込み層との間の0以上の中間畳み込み層、及び、最終畳み込み層と出力層との間の隠れ層を含む。例示的な畳み込みネットワーク2602が、図26に示される。この例示的な畳み込みネットワーク2602は、図6に示される畳み込みネットワーク602と、実質的に同じ方式で実装することができる。畳み込みネットワーク2602は、入力層2606、出力層2608、及び複数の畳み込み層を含み、この複数の層畳み込み層は、最初の畳み込み層2610a、0以上の中間畳み込み層、及び最終畳み込み層2610n、及び、最終畳み込み層と出力層2608との間の隠れ層2614を含む。畳み込みネットワーク2602はまた、図6に示される配置構成による、カーネル層2616及びサブサンプリング層2612も含む。この畳み込みネットワークの訓練は、訓練コーパス2604内の、書き込みサンプルの画像2614に基づく。空間的に導出される特徴が取得され、それらの種々の特徴に関連付けられるそれぞれの重みが、その訓練コーパス内の訓練サンプルに関する認識エラーを最小限に抑えることによって判定される。それらの同じ特徴及び重みは、訓練された後、訓練コーパス内に存在しない新たな手書きサンプルの認識のために使用される。
一部の実施形態では、時間的に導出される特徴のセットを別個に訓練することは、複数のストローク分布プロファイルを統計モデルに提供して、出力文字セットのそれぞれの文字を分類するための、複数の時間的に導出されるパラメータ、及びそれらの複数の時間的に導出されるパラメータに関するそれぞれの重みを判定することを更に含む(2506)。一部の実施形態では、図26に示されるように、ストローク分布プロファイル2620は、訓練コーパス2622内の各書き込みサンプルから導出される。訓練コーパス2622は、任意選択的に、コーパス2604と同じ書き込みサンプルを含むが、また、各書き込みサンプル内でのストローク生成に関連付けられる、時間的情報も含む。ストローク分布プロファイル2622は、統計モデル化プロセス2624に提供され、このプロセスの間に、時間的に導出される特徴が抽出され、それらの種々の特徴に関するそれぞれの重みが、統計モデル化方法(例えば、CNN、K近傍法など)に基づいて、認識エラー又は分類エラーを最小限に抑えることによって判定される。図26に示されるように、時間的に導出される特徴のセット及びそれぞれの重みは、特徴ベクトルのセット(例えば、特徴ベクトル2626又は特徴ベクトル2628)に変換され、畳み込みニューラルネットワーク2602内のそれぞれの層内に導入される。結果的に得られるネットワークは、それゆえ、空間的に導出されるパラメータ、及び時間的に導出されるパラメータを含み、それらのパラメータは、互いに直交して、文字の認識に一体となって寄与する。
一部の実施形態では、デバイスは、手書き認識モデル内で、空間的に導出される特徴のセットと時間的に導出される特徴のセットとを組み合わせる(2508)。一部の実施形態では、手書き認識モデル内で、空間的に導出される特徴のセットと時間的に導出される特徴のセットとを組み合わせることは、畳み込みニューラルネットワークの、畳み込み層のうちの1つ又は隠れ層内に、複数の空間的に導出されるパラメータ、及び複数の時間的に導出されるパラメータを導入することを含む(2510)。一部の実施形態では、複数の時間的に導出されるパラメータ、及びそれらの複数の時間的に導出されるパラメータに関するそれぞれの重みは、手書き認識に関する畳み込みニューラルネットワークの最終畳み込み層(例えば、図26での最終畳み込み層2610n)内に導入される。一部の実施形態では、複数の時間的に導出されるパラメータ、及びそれらの複数の時間的に導出されるパラメータに関するそれぞれの重みは、手書き認識に関する畳み込みニューラルネットワークの隠れ層(例えば、図26での隠れ層2614)内に導入される。
一部の実施形態では、デバイスは、この手書き認識モデルを使用して、ユーザの手書き入力に関するリアルタイム手書き認識を提供する(2512)。
一部の実施形態では、デバイスは、複数の書き込みサンプルから、ストローク分布プロファイルのコーパスを生成する(2514)。一部の実施形態では、それらの複数の手書きサンプルのそれぞれは、出力文字セット内の文字に対応し(2516)、手書きサンプルの各構成ストロークに関する、そのストロークが書き込まれた際のそれぞれの空間的情報を、別個に保存する。一部の実施形態では、ストローク分布プロファイルのコーパスを生成するために、デバイスは、以下のステップを実行する(2518)。
複数の手書きサンプルのそれぞれに関して(2520)、デバイスは、その手書きサンプル内の構成ストロークを特定し(2522)、その手書きサンプルの特定されたストロークのそれぞれに関して、デバイスは、複数の既定の方向のそれぞれに沿った、それぞれの占有率を算出し(2524)、占有率は、その各ストローク方向の投影スパンと、その書き込みサンプルの最大投影スパンとの比率であり、その手書きサンプルの特定されたストロークのそれぞれに関して、デバイスはまた、その各ストローク内のそれぞれのピクセル数と、その書き込みサンプル内の総ピクセル数との比率に基づいて、その各ストロークに関するそれぞれの飽和率も算出する(2526)。次いで、ユーザデバイスは、その書き込みサンプルのストローク分布プロファイルとして、その手書きサンプルに関する特徴ベクトルを生成し(2528)、この特徴ベクトルは、その手書きサンプル内の少なくともN個のストロークの、それぞれの占有率及びそれぞれの飽和率を含み、Nは、既定の自然数である。一部の実施形態では、Nは、複数の書き込みサンプル内の、いずれの単一の書き込みサンプル内で観察される最大ストローク数よりも少ない。
一部の実施形態では、複数の手書きサンプルのそれぞれに関して、デバイスは、既定の方向のそれぞれでの、特定されたストロークのそれぞれの占有率を、降順に並べ替え、N個の上位ランクの占有率及び飽和率の書き込みサンプルのみを、その書き込みサンプルの特徴ベクトル内に含める。
一部の実施形態では、それらの複数の既定の方向は、書き込みサンプルの水平方向、垂直方向、正の45度の方向、及び負の45度の方向を含む。
一部の実施形態では、この手書き認識モデルを使用して、ユーザの手書き入力に関するリアルタイム手書き認識を提供するために、デバイスは、ユーザの手書き入力を受信し、このユーザの手書き入力の受信に応じて、手書き認識出力を、その手書き入力の受信と実質的に同時に、ユーザに提供する。
図27に示される文字「
」を使用して、説明の目的のために、例示的実施形態が本明細書で説明される。一部の実施形態では、手書き文字の各入力画像は、任意選択的に、正方形へと正規化される。この正方形の、水平、垂直、斜め+45度、及び斜め−45度上に投影される場合の、個別の各手書きストローク(例えば、ストローク#1、#2...及び#3)のスパンが測定される。各ストロークSiのスパンは、4つの投影方向に関して、それぞれ、xスパン(i)、yスパン(i)、cスパン(i)、及びdスパン(i)として記録される。更には、画像全体にわたって観測された最大スパンもまた、記録される。この文字の最大スパンは、4つの投影方向に関して、それぞれ、xスパン、yスパン、cスパン、及びdスパンとして記録される。説明の目的のために、本明細書では、4つの投影方向が任意選択的に考察されているが、原理的には、任意の恣意的な投影のセットを、様々な実施形態で使用することができる。最大スパン(例えば、xスパン、yスパン、cスパン、及びdスパンとして示される)、及び4つの投影方向での、文字「
」内のストロークのうちの1つ(例えば、ストローク#4)のスパン(例えば、xスパン(4)、yスパン(4)、cスパン(4)、及びdスパン(4)として示される)が、図27に示される。
一部の実施形態では、上記のスパンが、全てのストローク1〜5(5は、この入力画像に関連付けられる、個別の手書きストロークの数である)に関して測定されると、各投影方向に沿った、それぞれの占有率が計算される。例えば、ストロークSiに関する、x方向に沿った対応の占有率Rx(i)は、Rx(i)=xスパン(i)/xスパンとして算出される。同様に、他の投影方向に沿った、対応の占有率を算出することができ、Ry(i)=yスパン(i)/yスパン、Rc(i)=cスパン(i)/cスパン、Rd(i)=dスパン(i)/dスパンである。
一部の実施形態では、各方向での全てのストロークの占有率は、降順で別個に並べ替えられ、それゆえ、その入力画像内の全てのストロークの、それぞれのランク付けが、各投影方向に関して、その方向でのそれらのストロークの占有率の観点から取得される。各投影方向でのストロークのランク付けは、関連する投影方向に沿った、各ストロークの相対的重要性を反映する。この相対的重要性は、そのストロークが、書き込みサンプル内で作り出された順序及び方向とは、無関係である。それゆえ、この占有率に基づくランク付けは、ストローク順序及びストローク方向非依存式の、時間的に導出される情報である。
一部の実施形態では、文字全体に対するストロークの重要性を示す、相対的重みが、各ストロークに与えられる。一部の実施形態では、この重みは、文字内の総ピクセル数に対する、各ストローク内のピクセル数の比率によって測定される。この比率は、各ストロークに関連付けられる、飽和率と称される。
一部の実施形態では、各ストロークの占有率及び飽和率に基づいて、各ストロークに関して特徴ベクトルを作り出すことができる。各文字に関して、5Sの数の特徴を含む、特徴ベクトルのセットが作り出される。この特徴のセットは、その文字のストローク分布プロファイルと称される。
一部の実施形態では、既定数の上位ランクのストロークのみが、各文字のストローク分布プロファイルを構築する際に使用される。一部の実施形態では、この既定数のストロークは、10個である。それらの上位の10個のストロークに基づいて、ストロークから導出される50の特徴が、各文字に関して生成される。一部の実施形態では、これらの特徴は、畳み込みニューラルネットワークの最終畳み込み層で、又は後続の隠れ層で導入される。
一部の実施形態では、リアルタイム認識の間に、空間的に導出される特徴及び時間的に導出される特徴の双方で訓練されている手書き認識モードに、認識単位の入力画像が提供される。その入力画像は、図26に示される手書き認識モデルの各層を通じて処理される。この入力画像の処理が、ストローク分布プロファイル入力が必要とされる層(例えば、最終畳み込み層又は隠れ層)に到達すると、その認識単位のストローク分布プロファイルが、その層内に導入される。この入力画像及びストローク分布プロファイルの処理は、出力分類(例えば、1つ以上の候補文字)が出力層2608で提供されるまで継続する。一部の実施形態では、全ての認識単位のストローク分布プロファイルが計算され、それらの認識単位の入力画像と共に、手書き認識モデルに入力として提供される。一部の実施形態では、認識単位の入力画像が、手書き認識モデルを(時間的に訓練された特徴の恩恵を受けることなく)最初に通過する。2つ以上の類似した見た目の候補文字が、近接した認識信頼度値で特定される場合、次いで、その認識単位のストローク分布プロファイルが、時間的に導出される特徴で訓練されている層(例えば、最終畳み込み層、又は隠れ層)で、手書き認識モデル内に導入される。その認識単位の入力画像及びストローク分布プロファイルが、手書き認識モデルの最終層を通過すると、2つ以上の類似した見た目の候補文字は、それらのストローク分布プロファイルの相違によって、より良好に区別することができる。それゆえ、個別の手書きストロークによって認識単位がどのように形成されるかに関する、時間的に導出される情報を使用して、手書き認識システムのストローク順序及びストローク方向非依存性を損なうことなく、認識精度が向上する。
前述の説明は、説明の目的上、特定の実施形態を参照して説明されている。しかしながら、上記の例示的な論考は、網羅的であること、又は本発明を、開示される厳密な形態に限定することを意図するものではない。上記の教示を鑑みて、多くの修正及び変形が可能である。これらの実施形態は、本発明の原理、及びその実際の適用を最も良好に説明するために、またそれにより、他の当業者が、想到される具体的な用途に適するような様々な修正を使用して、本発明及び様々な実施形態を最も良好に利用することを可能にするために、選択及び説明されたものである。