IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイスクリプトの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-04
(45)【発行日】2024-03-12
(54)【発明の名称】手書きの構造分解
(51)【国際特許分類】
   G06V 30/412 20220101AFI20240305BHJP
   G06F 40/137 20200101ALI20240305BHJP
   G06F 40/171 20200101ALI20240305BHJP
   G06F 40/189 20200101ALI20240305BHJP
   G06V 30/00 20220101ALI20240305BHJP
【FI】
G06V30/412
G06F40/137
G06F40/171
G06F40/189
G06V30/00 S
【請求項の数】 15
(21)【出願番号】P 2022544683
(86)(22)【出願日】2021-02-02
(65)【公表番号】
(43)【公表日】2023-03-24
(86)【国際出願番号】 EP2021052432
(87)【国際公開番号】W WO2021156253
(87)【国際公開日】2021-08-12
【審査請求日】2024-01-09
(31)【優先権主張番号】20305120.6
(32)【優先日】2020-02-07
(33)【優先権主張国・地域又は機関】EP
【早期審査対象出願】
(73)【特許権者】
【識別番号】515295429
【氏名又は名称】マイスクリプト
(74)【代理人】
【識別番号】110002952
【氏名又は名称】弁理士法人鷲田国際特許事務所
(72)【発明者】
【氏名】ロリアント ニコラス
(72)【発明者】
【氏名】ベルニュ ジュリアン
【審査官】真木 健彦
(56)【参考文献】
【文献】特開2005-100416(JP,A)
【文献】特開2017-134822(JP,A)
【文献】特開2014-086006(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06V 30/412
G06V 30/00
G06F 40/171
G06F 40/137
G06F 40/189
(57)【特許請求の範囲】
【請求項1】
手書きでリストを処理するためのコンピューティングデバイス(100)によって実装される方法であって、
-電子文書内のデジタルインクの複数のストロークに対してテキスト手書き認識を実行することによって、テキストであって、前記テキストが複数の連続するテキスト行を含むテキスト、を認識することと、
-最初に、各認識されたテキスト行を、リストの一部ではない別個のテキスト項目として分類することと、
-以下のステップを含む分類プロセスと:
a)前記テキスト行が、前記テキスト行がリストの一部であることを示す所定のリスト記号で始まるかどうかを判定し、所定のリスト記号で始まる各テキスト行をリストの一部である別個のリスト項目として分類するための、各テキスト行におけるパターン検出ステップと、
b)前記ステップa)に応答して、基準位置に対する各テキスト項目の項目インデントを決定し、前記基準位置に対する前記リスト項目で構成されるテキストの前記インデントを表すテキストインデントを各リスト項目に対して決定するステップと、
c)前記ステップb)に応答して、
o前記テキストにおいて、第1のテキスト行によって、続いて第2のテキスト行によって形成される連続するテキスト行の各対を、前記対の前記第1の及び第2のテキスト行が同じテキストインデントを有するテキスト項目である場合、かつ、前記第1のテキスト行の末尾に、前記第2のテキスト行を開始する第1の単語を収容するのに十分な空きスペースがない場合、同一のテキスト項目の一部としてマージすることと、
o第1のテキスト行によって、続いて第2のテキスト行によって形成される連続したテキスト行の各対を、前記第1のテキスト行がリスト項目であり、前記第2のテキスト行が、前記第1のテキスト行の前記テキストインデントと一致するテキストインデントを有するテキスト項目である場合、かつ、前記第1のテキスト行の末尾に、前記第2のテキスト行を開始する第1の単語を収容するのに十分な空きスペースがない場合、同一のリスト項目の一部としてマージすることと、を含むマージプロセスステップと、を含む分類プロセスと、
-前記マージプロセスの結果に基づいて、各テキスト行をテキスト項目またはリスト項目の一部として定義するテキスト構造データモデルを生成することと、を含む方法。
【請求項2】
-ユーザ入力としてデジタルインクの複数のストロークを取得し表示することを含み、前記認識することが、前記取得されたストロークに対して前記テキスト手書き認識を実行し、認識されたテキストから前記複数の連続したテキスト行を識別することを含む、請求項1に記載の方法。
【請求項3】
前記パターン検出が、各テキスト行について、前記テキスト行を開始する第1の記号を所定のリスト記号のセットと比較して、一致するかどうかを判定することを含む、請求項1または2に記載の方法。
【請求項4】
前記マージプロセスが、前記第1のテキスト行がテキスト項目であり、前記第2のテキスト行がリスト項目である場合、第1のテキスト行によって、続いて第2のテキスト行によって形成される連続するテキスト行の各対を別個の項目として維持することを含む、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記テキスト構造データモデルが、認識されたテキストを少なくとも1つのテキスト項目及び/または少なくとも1つのリスト項目に分解し、各項目が少なくとも1つのテキスト行及び前記少なくとも1つのテキスト行に属する各ストロークと関連付けられる、請求項1~4のいずれか一項に記載の方法。
【請求項6】
ユーザ命令に応答して、前記テキスト構造データモデルに基づく前記認識されたテキストの編集を含み、前記編集が、
-前記認識されたテキストの少なくとも1つの項目の内容を修正することと、
-前記認識されたテキストの少なくとも1つの項目のデジタルインクをリフローさせるリフロープロセス、のうちの少なくとも1つを含み、
前記コンピューティングデバイスが、前記テキスト構造データモデルの情報を使用して、前記編集を制御する、請求項1~5のいずれか一項に記載の方法。
【請求項7】
-認識されたテキストを表示することと、
-前記テキスト構造データモデルを生成した後、表示されている前記認識されたテキストに変更を加えるユーザ命令を取得することと、
-前記テキスト構造データモデルを更新して、前記ユーザ命令によって引き起こされた前記変更を反映させる、更新プロセスと、を含む、請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記ユーザ命令によって引き起こされた前記変更が、前記電子文書に少なくとも1つの新しいストロークを追加し、及び/または少なくとも1つの既存のストロークを削除もしくは修正することを含み、
前記更新プロセスが、前記テキスト構造データモデルから削除されたストロークを削除することと、前記テキスト構造データモデルのテキストまたはリスト項目のいずれかの既存または新規の項目に新しいストロークを割り当てることによって、前記テキスト構造データモデルを更新することと、を含む、請求項7に記載の方法。
【請求項9】
前記テキスト構造データモデルを前記生成することが、
-各テキスト項目について、前記テキスト項目の最初の可視文字で始まり、前方に伸びて、開始ゾーンが前記テキスト項目の前記末尾に達した場合に、所定の数以下の連続する可視文字に達するまで、1つ以上の完全な単語を囲む前記開始ゾーンと、
-各リスト項目について、関連する所定のリスト記号から始まり、前方に伸びて、所定の連続した可視文字の数に達するまで、または箇条書き領域が前記リスト項目の終わりに達する場合はそれ未満まで、1つ以上の完全な単語を囲む、前記箇条書き領域と、を定義することを含み、
前記更新プロセスが、
-各項目について、前記ユーザ命令によって引き起こされた前記変更が前記開始ゾーンまたは箇条書きゾーンを変更するかどうか、及び/または、少なくとも1つの文字が前記開始ゾーンまたは箇条書きゾーンの前に追加されるかどうかを判定し、肯定の場合、前記変更に基づいて前記開始ゾーンまたは箇条書きゾーンを更新し、前記更新後の開始ゾーンまたは箇条書きゾーンに基づいて前記ステップa)、b)及びc)を繰り返して、前記テキスト構造データモデルを更新すること、を含む、請求項7または8に記載の方法。
【請求項10】
前記更新プロセスが、
-前記ユーザ命令に応答して、テキストまたはリスト項目のテキスト行内に追加された少なくとも1つのストロークを検出することと、
-前記テキスト行が、前記テキスト行がリストの一部であることを示す所定のリスト記号で始まるかどうかを判定することと、
-肯定の場合、対応するテキスト項目またはリスト項目を分割して新しいリスト項目を作成し、前記テキスト構造データモデルを更新して前記分割を反映することと、を含む、請求項7~9のいずれか一項に記載の方法。
【請求項11】
前記テキスト構造データモデルを前記生成することが、
-各テキスト項目及び各リスト項目について、最初の行を過ぎた前記項目の各テキスト行の前記最初の可視文字で始まり、前方に伸びて、各開始ゾーンが前記テキスト項目の前記末尾に達した場合に、所定の数以下の連続する可視文字に達するまで、1つ以上の完全な単語を囲む前記開始ゾーン、を定義することを含み、
前記更新プロセスが、
-各テキスト項目及び各リスト項目について、第1のテキスト行を過ぎた各テキスト行が、前記ユーザ命令に応答して、前記テキスト行の前記開始ゾーン内または前記開始ゾーン前に追加された任意の新しいストロークをチェックすることと、
-ポジティブチェックされた各テキスト行について、前記テキスト行が、前記テキスト行がリストの一部であることを示す所定のリスト記号で始まるかどうかを判定することと、
-肯定の場合、対応するテキスト項目またはリスト項目を分割して、前記所定のリスト記号で始まる新しいリスト項目を作成し、前記分割を反映するようにテキスト構造データモデルを更新することと、を含む、請求項7~10のいずれか一項に記載の方法。
【請求項12】
前記テキスト構造データモデルを前記生成することが、各テキスト及びリスト項目について、前記項目の最後の可視文字から1つ以上の完全な単語を囲んで後方に延びるエンドゾーンを、前記エンドゾーンが前記項目の先頭に達する場合は所定の数以下の連続可視文字数に達するまで定義することを含み、
前記更新プロセスが、
-各項目について、前記ユーザ命令によって引き起こされた前記変更がそのエンドゾーンを変更するかどうか、及び/または、前記エンドゾーンの後に少なくとも1つのストロークが追加されるかどうかを判定し、肯定の場合、前記変更に基づいて前記エンドゾーンを更新し、前記更新されたエンドゾーンに基づいて前記ステップc)を繰り返して、前記テキスト構造データモデルを更新することを含む、請求項7~11のいずれか一項に記載の方法。
【請求項13】
既存の項目を2つの別個の項目に分割するためのユーザ命令として受け取った分割コマンドに応答して、
-前記分割コマンドが、テキスト行の先頭または末尾の分割位置を指定する場合、前記分割位置に空行を挿入し、
-前記分割コマンドがテキスト行内に分割位置を指定する場合、前記更新プロセスが、
o 前記テキスト行を、前記分割位置において、前記既存の項目を分割して得られた第1の項目及び第2の項目にそれぞれ属する第1のテキスト行及び第2のテキスト行に分割することと、
o 前記第2のテキスト行が、前記第2のテキスト行がリストの一部であることを示す所定のリスト記号で始まるかどうかを判定することと、
o 肯定の場合、前記第2の項目をリスト項目として分類し、そうでない場合、前記第2の項目をテキスト項目として分類することと、を含む、請求項7~12のいずれか一項に記載の方法。
【請求項14】
2つの別個の項目を一緒に結合するためのユーザ命令に応答してのみ、2つの連続する項目が同じ項目にマージされる、請求項1~13のいずれか一項に記載の方法。
【請求項15】
手書きでリストを処理するためのコンピューティングデバイスであって、
-電子文書内のデジタルインクの複数のストロークに対してテキスト手書き認識を行うことによって、テキストであって、前記テキストが、それぞれがリストの一部であるリスト項目またはリストの一部ではないテキスト項目のいずれかであり得る複数の連続したテキスト行を含む前記テキストを認識するように構成された認識モジュールと、
-認識された各テキスト行を別個のテキスト項目として最初に分類し、
a)前記テキスト行が、前記テキスト行がリストの一部であることを示す所定のリスト記号で始まるかどうかを判定し、所定のリスト記号で始まる各テキスト行をリスト項目として分類するための各テキスト行のパターン検出ステップと、
b)前記ステップa)に応答して、基準位置に対する各テキスト項目の項目インデントを決定し、前記基準位置に対する前記リスト項目を含むテキストのインデントを表すテキストインデントを各リスト項目に対して決定するステップと、
c)前記ステップb)に応答して、
o同一テキスト項目の一部として、前記テキストにおいて、第1のテキスト行によって、続いて第2のテキスト行によって形成される連続したテキスト行の各対を、前記対の前記第1及び第2のテキスト行が同一の項目インデントを有するテキスト項目であり、かつ前記第1のテキスト行の末尾に前記第2のテキスト行を開始する第1の単語を収容するために十分な空きスペースが存在しなければ、マージすることと、
o前記第1のテキスト行がリスト項目であり、前記第2のテキスト行が前記第1のテキスト行のテキストインデントと一致する項目インデントを有するテキスト項目であり、前記第1のテキスト行の末尾に第2のテキスト行を開始する第1の単語を収容するのに十分な空きスペースがない場合、第2のテキスト行に続く第1のテキスト行によって形成される連続するテキスト行の各対を同じリスト項目の一部としてマージすることと、を含むマージプロセスと、を含む分類プロセスを実行するように構成された分類器モジュールと、
-前記マージプロセスの結果に基づいて、各テキスト行をテキスト項目またはリスト項目の一部として定義するテキスト構造データモデルを生成するように構成されたモデル管理モジュールと、を備えるコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、フィールド手書き認識及び手書き処理に関し、具体的には、手書きでリストを認識することができるコンピューティングデバイスに関する。
【背景技術】
【0002】
手書き入力及び認識、すなわち、テキストコンテンツ(例えば、英数字)または非テキストコンテンツ(例えば、形状、図面)などの、ユーザによって手描きまたは手書きされた入力要素のために、様々なコンピューティングデバイスが長年にわたって開発されてきた。この目的のために、既知のコンピューティングデバイスは通常、ユーザがディスプレイ画面に表示され得るデジタルインクのストロークの形で手書きコンテンツを入力することを可能にするタッチセンシティブ面などを備えている。
【0003】
ユーザの手書き入力は、ユーザが手書きを入力するときにリアルタイムで認識できるオンライン手書き認識システムを使用して解釈できる。手書き認識は、例えば、クラウドベースのソリューションなどを使用して実行することができる。代替的には、オフラインシステムも知られている。認識されると、コンピューティングデバイスは、たとえば入力ストロークをタイプセットバージョンに変換し、編集機能を実装するなど、適切な処理タスクを実行できる。
【0004】
手書きの表示、操作(テキストリフローなど)、編集などの優れた体験をユーザに提供するには、ユーザからの手書き入力を認識し、その構造分解(文、段落、リストなどの構造要素)は、可能な限り正確に決定される。
【0005】
テキスト分類器は既に知られており、手書き文字、数字、記号、アクセントなどの手書きテキストを認識するために使用される。ただし、手書き入力は様々な性質のものである可能性があり、手書き認識のタスクが困難になることがある。構造分解は、それぞれの場合によって、テキストにおいて大きく変動する場合もある。手書きの文書では、読者は手書きのグローバル構造を直感的に認識できるが、手書き認識システムがテキストの構造分解を識別することは特に難しい場合がある。たとえば、ワードプロセッサとは異なり、従来の手書き認識システムは、手書きテキスト内のリストを検出するために、特別なユーザ命令(例えば、行区切り文字、段落区切り文字、垂直及び水平タブキー)に依存できない。
【0006】
したがって、手書きのテキスト構造分解、すなわち構造配置を決定するための効率的で信頼できるソリューションが必要である。具体的には、手書きの段落を検出するための効率的なソリューションが不足している。手書きのリストを検出するための効率的なソリューションも不足している。具体的には、手書き文字に対する操作や編集を改善するために、手書き文字中のリスト要素と非リスト要素を正確かつ信頼性の高い方法で識別するソリューションが必要とされている。
【発明の概要】
【0007】
本明細書で以下に説明する本発明の例は、手書きでリストを処理するためのコンピューティングデバイス、方法、及び対応するコンピュータプログラムを提供する。
【0008】
特定の態様によれば、本発明は、手書きでリストを処理するためのコンピューティングデバイスによって実装される方法を提供し、
電子文書内のデジタルインクの複数のストロークに対してテキスト手書き認識を実行することによって、テキストであって、テキストが複数の連続するテキスト行を含むテキスト、を認識することと、
最初に、各認識されたテキスト行を、リストの一部ではない別個のテキスト項目として分類することと、
a)テキスト行が、テキスト行がリストの一部であることを示す所定のリスト記号で始まるかどうかを判定し、所定のリスト記号で始まる各テキスト行をリストの一部である別個のリスト項目として分類するための、各テキスト行におけるパターン検出ステップと、
b)ステップa)に応答して、基準位置に対する各テキスト項目の項目インデントを決定し、基準位置に対するリスト項目で構成されるテキストのインデントを表すテキストインデントを各リスト項目に対して決定するステップと、
c)ステップb)に応答して、
テキストにおいて、第1のテキスト行によって、続いて第2のテキスト行によって形成される連続するテキスト行の各対を、一対の第1の及び第2のテキスト行が同じインデントを有するテキスト項目である場合、かつ、第1のテキスト行の末尾に、第2のテキスト行を開始する第1の単語を収容するのに十分な空きスペースがない場合、同一のテキスト項目の一部としてマージすることと、
第1のテキスト行によって、続いて第2のテキスト行によって形成される連続したテキスト行の各対を、第1のテキスト行がリスト項目であり、第2のテキスト行が、第1のテキスト行のテキストインデントと一致する項目のインデントを有するテキスト項目である場合、かつ、第1のテキスト行の末尾に、第2のテキスト行を開始する第1の単語を収容するのに十分な空きスペースがない場合、同一のリスト項目の一部としてマージすることと、を含むマージプロセスステップと、を含む分類プロセスと、
マージプロセスの結果に基づいて、各テキスト行をテキスト項目またはリスト項目の一部として定義するテキスト構造データモデルを生成することと、を含む。
【0009】
本発明は、手書き文字のテキスト構造分解、すなわち構造配置を決定するための効率的で信頼性の高いソリューションを提供する。本発明のおかげで、手書きのリスト項目を検出することができる。具体的には、本発明は、例えば、手書きの操作または編集を改善するために、正確かつ信頼できる方法で、手書きのリスト要素及び非リスト要素を区別する(または識別する)ことを可能にする。手書きの段落も検出することができる。
【0010】
特定の実施形態では、本方法は、ユーザ入力としてデジタルインクの複数のストロークを取得し表示することを含み、該認識することは、取得されたストロークに対してテキスト手書き認識を実行し、認識されたテキストから複数の連続したテキスト行を識別することを含む。
【0011】
特定の実施形態では、該パターン検出は、各テキスト行について、テキスト行を開始する第1の記号を所定のリスト記号のセットと比較して、一致するかどうかを判定することを含む。
【0012】
特定の実施形態では、所定のリスト記号は、数字または箇条書きである。
【0013】
特定の実施形態では、位置参照は、電子文書内の所定の位置である。
【0014】
特定の実施形態では、マージプロセスは、第1のテキスト行がテキスト項目であり、第2のテキスト行がリスト項目である場合、第1のテキスト行によって、続いて第2のテキスト行によって形成される連続するテキスト行の各ペアを別個の項目として維持することを含む。
【0015】
特定の実施形態では、テキスト構造データモデルは、認識されたテキストを少なくとも1つのテキスト項目及び/または少なくとも1つのリスト項目に分解し、各項目は少なくとも1つのテキスト行及び少なくとも1つのテキスト行に属する各ストロークと関連付けられる。
【0016】
特定の実施形態では、本方法は、ユーザ命令に応答して、テキスト構造データモデルに基づく認識されたテキストの編集を含み、該編集は、
認識されたテキストの少なくとも1つの項目の内容を修正することと、
認識されたテキストの少なくとも1つの項目のデジタルインクをリフローさせるリフロープロセス、のうちの少なくとも1つを含み、
コンピューティングデバイスは、テキスト構造データモデルの情報を使用して、編集を制御する。
【0017】
特定の実施形態では、リフロープロセス中に、ユーザ分割コマンドに応答して直前の項目から以前に分離されたテキストまたはリスト項目は、2つの項目を一緒に結合するユーザ結合コマンドに応答してのみ該直前の項目へマージされる。
【0018】
特定の実施形態では、本方法は、
認識されたテキストを表示することと、
テキスト構造データモデルを生成した後、表示されている認識されたテキストに変更を加えるユーザ命令を取得することと、
テキスト構造データモデルを更新して、ユーザ命令によって引き起こされた変更を反映させる、更新プロセスと、を含む。
【0019】
特定の実施形態では、ユーザ命令によって引き起こされる変更は、電子文書に少なくとも1つの新しいストロークを追加し、及び/または少なくとも1つの既存のストロークを削除または修正することを含み、更新プロセスは、テキスト構造データモデルから削除されたストロークを削除することと、テキスト構造データモデルのテキストまたはリスト項目のいずれかの既存または新規の項目に新しいストロークを割り当てることによって、テキスト構造データモデルを更新することと、を含む。
【0020】
特定の実施形態では、テキスト構造データモデルを該生成することは、
各テキスト項目について、該テキスト項目の最初の可視文字で始まり、前方に伸びて、開始ゾーンが該テキスト項目の末尾に達した場合に、所定の数以下の連続する可視文字に達するまで、1つ以上の完全な単語を囲む該開始ゾーンと、
各リスト項目について、関連する所定のリスト記号から始まり、前方に伸びて、所定の連続した可視文字の数に達するまで、または箇条書き領域が該リスト項目の末尾に達する場合はそれ未満まで、1つ以上の完全な単語を囲む、該箇条書き領域と、を定義することを含み、
更新プロセスは、各項目について、ユーザ命令によって引き起こされた変更が開始ゾーンまたは箇条書きゾーンを変更するかどうか、及び/または、少なくとも1つの文字が該開始ゾーンまたは該箇条書きゾーンの前に追加されるかどうかを判定し、肯定の場合、変更に基づいて該開始ゾーンまたは該箇条書きゾーンを更新し、該更新後の開始ゾーンまたは箇条書きゾーンに基づいて該ステップa)、b)及びc)を繰り返して、テキスト構造データモデルを更新すること、を含む。
【0021】
特定の実施形態では、更新プロセスは、
該ユーザ命令に応答して、テキストまたはリスト項目のテキスト行内に追加された少なくとも1つのストロークを検出することと、
該テキスト行が、テキスト行がリストの一部であることを示す所定のリスト記号で始まるかどうかを判定することと、
肯定の場合、対応するテキスト項目またはリスト項目を分割して新しいリスト項目を作成し、テキスト構造データモデルを更新して該分割を反映することと、を含む。
【0022】
特定の実施形態では、テキスト構造データモデルを生成することは、
各テキスト項目及び各リスト項目について、最初の行を過ぎた該項目のテキスト行の最初の可視文字で始まり、前方に伸びて、開始ゾーンがテキスト項目の末尾に達した場合に、所定の数以下の連続する可視文字に達するまで、1つ以上の完全な単語を囲むそれぞれの開始ゾーン、を定義することを含み、
更新プロセスは、
各テキスト項目及び各リスト項目について、第1のテキスト行を過ぎた各テキスト行が、該ユーザ命令に応答して、該テキスト行の開始ゾーン内または開始ゾーン前に追加された任意の新しいストロークをチェックすることと、
ポジティブチェックされた各テキスト行について、該テキスト行が、該テキスト行がリストの一部であることを示す所定のリスト記号で始まるかどうかを判定することと、
肯定の場合、対応するテキスト項目またはリスト項目を分割して所定のリスト記号で始まる新しいリスト項目を作成し、テキスト構造データモデルを更新して分割を反映することと、を含む。
【0023】
特定の実施形態では、該テキスト構造データモデルを生成することは、各テキスト及びリスト項目について、該項目の最後の可視文字から1つ以上の完全な単語を囲んで後方に延びるエンドゾーンを、エンドゾーンが該項目の先頭に達する場合は所定の数以下の連続可視文字数に達するまで定義することを含み、
更新プロセスは、
各項目について、ユーザ命令によって引き起こされた変更がそのエンドゾーンを変更するかどうか、及び/または、エンドゾーンの後に少なくとも1つのストロークが追加されるかどうかを判定し、肯定の場合、変更に基づいて該エンドゾーンを更新し、該更新されたエンドゾーンに基づいて該ステップc)を繰り返して、テキスト構造データモデルを更新することを含む。
【0024】
特定の実施形態では、既存の項目を2つの別個の項目に分割するためのユーザ命令として受け取った分割コマンドに応答して、
分割コマンドでテキスト行の開始位置または末尾位置に分割位置を指定した場合、該分割位置に空行が挿入し、
分割コマンドがテキスト行内に分割位置を指定する場合、更新プロセスは、
該テキスト行を、分割位置において、該既存の項目を分割して得られた第1の項目及び第2の項目にそれぞれ属する第1のテキスト行及び第2のテキスト行に分割することと、
第2のテキスト行が、該第2のテキスト行がリストの一部であることを示す所定のリスト記号で始まるかどうかを判定することと、
肯定の場合、第2の項目をリスト項目として分類し、そうでない場合、第2の項目をテキスト項目として分類することと、を含む。
【0025】
特定の実施形態では、2つの別個の項目を一緒に結合するためのユーザ命令に応答してのみ、2つの連続する項目が同じ項目にマージされる。
【0026】
別の態様によれば、本発明は、本文書で定義される本発明の方法のステップを実行するための命令を含むコンピュータ可読プログラムコード(またはコンピュータプログラム)をその上に記録した非一時的コンピュータ可読媒体に関する。
【0027】
本発明のコンピュータプログラムは、任意のプログラミング言語で表現することができ、ソースコード、オブジェクトコード、またはソースコードとオブジェクトコードの間の任意の中間コードの形式に、例えば、部分的にコンパイルされた形式に、または他の適切な形式に、することができる。
【0028】
本発明は、上記のようなコンピュータプログラムも提供する。
【0029】
前述の非一時的コンピュータ可読媒体は、コンピュータプログラムを記憶することができる任意のエンティティまたはデバイスであり得る。例えば、記録媒体は、ROMメモリ(CD-ROMまたはマイクロ電子回路に実装されたROM)などの記憶手段、または例えばフロッピーディスクまたはハードディスクなどの磁気記憶手段を備えることができる。
【0030】
本発明の非一時的コンピュータ可読媒体は、電気または光ケーブルを介して、または無線または他の任意の適切な手段によって伝達することができる、電気または光信号などの伝達可能な媒体に対応することができる。本開示に係るコンピュータプログラムは、特にインターネットまたは同種のネットワークからダウンロードすることができる。
【0031】
代替的には、非一時的なコンピュータ可読媒体は、コンピュータプログラムがロードされる集積回路に対応することができ、回路は、本発明の方法の実行または実行に使用されるように適合されている。
【0032】
特定の実施形態では、本発明は、コンピュータ可読プログラムコードが具現化された非一時的なコンピュータ可読媒体に関し、該コンピュータ可読プログラムコードは、本文書で定義されるコンピューティングデバイス上で方法を実施するように実行されるように適合されており、コンピューティングデバイスは、該方法のステップを実行するためのプロセッサを含む。
【0033】
本発明は、本開示で定義される方法を実施するのに適したコンピューティングデバイスにも関する。より具体的には、本発明は、手書きでリストを処理するためのコンピューティングデバイスを提供し、
電子文書内のデジタルインクの複数のストロークに対してテキスト手書き認識を行うことによって、該テキストであって、該テキストが、それぞれがリストの一部であるリスト項目またはリストの一部ではないテキスト項目のいずれかであり得る複数の連続したテキスト行を含むテキストを認識するように構成された認識モジュールと、
認識された各テキスト行を別個のテキスト項目として最初に分類し、
a)該テキスト行が、該テキスト行がリストの一部であることを示す所定のリスト記号で始まるかどうかを判定し、所定のリスト記号で始まる各テキスト行をリスト項目として分類するための各テキスト行のパターン検出ステップと、
b)ステップa)に応答して、基準位置に対する各テキスト項目の項目インデントを決定し、基準位置に対する該リスト項目で構成されるテキストのインデントを表すテキストインデントを各リスト項目に対して決定するステップと、
c)ステップb)に応答して、
同一テキスト項目の一部として、該テキストにおいて、第1のテキスト行によって、続いて第2のテキスト行によって形成される連続したテキスト行の各対を、該対の第1及び第2のテキスト行が同一の項目インデントを有するテキスト項目であり、かつ第1のテキスト行の末尾に第2のテキスト行を開始する第1の単語を収容するために十分な空きスペースが存在しなければ、マージすることと、
第1のテキスト行がリスト項目であり、第2のテキスト行が第1のテキスト行のテキストインデントと一致する項目のインデントを有するテキスト項目であり、第1のテキスト行の末尾に第2のテキスト行を開始する第1の単語を収容するのに十分な空きスペースがない場合、第2のテキスト行に続く第1のテキスト行によって形成される連続するテキスト行の各対を同じリスト項目の一部としてマージすることと、を含むマージプロセスステップと、を含む分類プロセスを実行するように構成された分類器モジュールと、
マージプロセスの結果に基づいて、各テキスト行をテキスト項目またはリスト項目の一部として定義するテキスト構造データモデルを生成するように構成されたモデル管理モジュールと、を備える。
【0034】
本発明の方法に関連して上記で定義された様々な実施形態は、本開示のコンピューティングデバイス、コンピュータプログラム、及び非一時的なコンピュータ可読媒体に類似の方法で適用される。
【0035】
本開示で定義される本発明の方法の各ステップについて、コンピューティングデバイスは、該ステップを実行するように構成された対応するモジュールを備えることができる。
【0036】
特定の実施形態では、本開示は、ソフトウェア及び/またはハードウェア構成要素を使用して実施することができる。このコンテキストにおいて、「モジュール」という用語は、本開示において、ソフトウェア構成要素、及びハードウェア構成要素、または複数のソフトウェア及び/もしくはハードウェア構成要素を指すことができる。
【図面の簡単な説明】
【0037】
本開示の他の特徴及び利点は、限定的な特徴を有さない実施形態を示す添付の図面を参照してなされた以下の説明から明らかになるであろう。
図1】リストコンテンツと非リストコンテンツで構成される手書きテキストの例を示す。
図2】本発明の特定の実施形態に係るコンピューティングデバイスのブロック図である。
図3】本発明の特定の実施形態に係るコンピューティングデバイスによって実装されるモジュールを表すブロック図である。
図4】本発明の特定の実施形態に係る手書きテキストのインデントの決定を示す。
図5】本発明の特定の実施形態に係る手書きのリスト及び非リストコンテンツを処理するための方法のステップを示す。
図6】本発明の特定の実施形態に係る方法の異なるステップでの手書き入力を表す。
図7】本発明の特定の実施形態に係る方法の異なるステップでの手書き入力を表す。
図8】本発明の特定の実施形態に係る方法の異なるステップでの手書き入力を表す。
図9】本発明の特定の実施形態に係る方法の異なるステップで得られた結果を表す表である。
図10】本発明の特定の実施形態に係る手書きのリスト及び非リストコンテンツを処理するための方法のステップを示す。
図11A】本発明の特定の実施形態に係る手書きのリスト及び非リストコンテンツを処理するための方法のステップを示す。
図11B】本発明の特定の実施形態に係る方法によって処理された手書き入力を表す。
図11C】本発明の特定の実施形態に係る方法によって処理された手書き入力を表す。
図12】本発明の特定の実施形態に係る方法によって処理された手書き入力を表す。
図13】本発明の特定の実施形態に係る方法によって処理された手書き入力を表す。
図14】本発明の特定の実施形態に係る方法によって処理された手書き入力を表す。
図15】本発明の特定の実施形態に係る手書きのリスト及び非リストコンテンツを処理するための方法のステップを示す。
【0038】
図面中の構成要素は、必ずしも原寸に比例するとは限らず、代わりに、本開示の原理を明確に例示することを重視する。
【0039】
説明を簡単かつ明確にするために、特に明記されていない限り、同じまたは類似の部分を参照するために、図全体で同じ参照記号が使用される。
【発明を実施するための形態】
【0040】
以下の詳細な説明では、関連する教示を完全に理解するために、多数の具体的な詳細を例として挙げている。しかしながら、本教示がそのような詳細なしに実施され得ることは、当業者には明らかであるはずである。他の例では、現在の教示の不必要に曖昧な側面を回避するために、よく知られている方法、手順、及び/または構成要素が、詳細なしで、比較的高レベルで説明されている。
【0041】
例示的な実施形態の以下の説明は、添付の図面を参照する。以下の詳細な説明は、本発明を限定するものではない。代わりに、本発明は、添付の特許請求の範囲によって定義される。図に示される様々な実施形態では、コンピューティングデバイス、対応する方法、及び対応するコンピュータプログラムが説明されている。
【0042】
「手描き」と「手書き」という用語は、本明細書では互換的に使用され、ユーザが手(または指)または入力デバイス(ハンドヘルドスタイラスまたはデジタルペン、マウスなど)を使用して、入力面上にまたは入力面を用いてデジタルコンテンツ(手書き入力)を作成することを定義する。本明細書では、入力技術を簡潔に説明するために「手」などの用語を使用するが、足、口、目など、ユーザの体の他の部位の使用による同様の入力もこの定義に含まれる。
【0043】
手書きは、ユーザが入力したデジタルインクのストロークによって形成される。ストローク(インクストロークまたはインクセグメントとも呼ばれる)は、少なくともストローク開始位置(「ペンダウン」イベントに対応)、ストローク末尾位置(「ペンアップ」イベントに対応)、及びストローク開始位置とストローク末尾位置を結ぶ経路によって特徴付けられる。
【0044】
ストロークセグメントは、ストロークの一部分である。インク選択は、少なくとも2つの異なる(重複しない)インクストロークまたはインクセグメントの結合である。インク選択は、等質性、交差性などについて比較することができる。
【0045】
本開示における「テキスト」という用語は、任意の書記言語、より一般的には、書記テキストで使用される任意の記号における、すべての文字など(例えば、英数字)、及びその文字列を包含すると理解される。したがって、テキストには、ラテン文字、キリル文字、中国語文字などの任意の文字からの基本文字及びアクセントが含まれる。テキストは、1つ以上のそのような記号を含むことができ、テキスト行、複数のテキスト行の段落などの様々な方法で配置することができる。
【0046】
「リスト」という用語は、本開示では、リストとして配置された1つ以上のリスト項目の任意のセット(またはシーケンス)を包含するものとして理解される。各リスト項目はテキストで構成され、リスト記号と呼ばれる特殊な活字記号(またはグリフ)によって導入される。これは、箇条書き(または箇条書き点)、文字、数字(または桁)であるか、それらで構成することができる。箇条書きの記号は、円形、正方形、ひし形、矢印など、様々な形をとることができる。「*」(アスタリスク)、「-」(ハイフン)、「・」などの通常の記号を箇条書きとして使用することができる以下の説明では、これらの特殊な活字記号は一般に「リスト記号」と呼ばれる。リスト記号は、上記の箇条書き、文字、数字などのいずれか1つまたはそれらの組み合わせを含むことができる。リストは、順序付きリスト(リスト記号はリスト項目を順序付ける番号を含む)または非順序付きリスト(リスト記号は、リスト項目間の順序を定義していない)であってもよい。
【0047】
本開示では、リスト項目はリストの項目を指し、テキスト項目は非リスト項目、すなわちリストの一部ではないテキストの項目を指す。リスト項目及びテキスト項目は、各々、1つ以上のテキスト行を含むことができる。複数のテキスト行を含むテキスト項目は、段落を形成していると見なすことができる。
【0048】
さらに、以下に説明し、図面に示されている例は、左から右への書記言語のコンテキストであるため、位置への任意の参照は、異なる方向形式を有する書記言語に適合させることができる。
【0049】
図1は、3つのテキスト行110、112、及び114に配置されたテキストを含む手書き100の例を示している。手書き入力100は、デジタルインク形成文字のストローク102によって形成される。各ストローク102は、完全な文字、文字の一部、または複数の文字を形成することができる。例えば、文字「i」の上部の点は、それ自体でストロークを構成する。この場合、次のテキストがストローク102によって形成される:「これはリストである:」(テキスト行110)、「・項目1」(テキスト行112)及び「・項目2」(テキスト行114)。最初のテキスト行110は、テキスト項目(すなわち、非リスト項目)を構成し、テキスト行112及び114は、リスト記号120によって導入されたリスト項目を構成する。」(この場合は円形の箇条書き点)。
【0050】
本明細書で説明される様々な技術は、一般に、ポータブル及び非ポータブルコンピューティングデバイス上での手書きの処理、より詳細には、数式及びテキストの認識及び編集を目的とした処理に関する。以下に説明する様々な実施形態は、いわゆるオンライン認識技術を使用するデジタルインク手書き入力の認識を含むが、認識を実行するためにリモートデバイスまたはサーバを含むオフライン認識など、認識のための他の形式の入力を適用できることが理解される。
【0051】
本明細書で説明するシステム及び方法は、(後述するように)タッチセンシティブスクリーンなどの入力面を介してコンピューティングデバイスに入力されるユーザの自然な手書きスタイルの認識を利用することができる。
【0052】
以下でより詳細に説明するように、本発明の一態様は、手書きのテキスト構造分解を決定することに関し、具合的には、手書きにおけるリストコンテンツ及び非リストコンテンツの検出及び処理に関する。この方法は、具体的には、手書き入力でリスト記号を検出するためのパターン検出プロセスと、テキスト行が互いに対してどのように配置されるかの関数として特定のテキスト行を一緒にマージするためのマージプロセスとを含む。
【0053】
より具体的には、本発明は、リスト及び非リストコンテンツを処理するためのコンピューティングデバイスによって実装される方法に関し、この方法は、テキスト行を形成するデジタルインクの複数のストロークに対するテキスト手書き認識と、認識された各テキスト行をリストの一部ではない別個のテキスト項目として初期に分類することと、リスト項目またはテキスト(非リスト)項目のいずれかとして各テキスト行を分類するための分類プロセスとから構成される。さらに後述するように、分類プロセスは、所定のリスト記号(箇条書き、数字など)で始まる各テキスト行を検出するパターン検出と、検出された各テキスト行をリストの一部である明確なリスト項目として分類する分類ステップと、各テキスト項目の項目インデントと各リスト項目に対するテキストのインデントを表すテキストインデントを決定する決定ステップと、所定の条件を満たす(さらに後述)連続するテキスト行の各対をマージしてなるマージステップとを含んでもよい。コンピューティングデバイスは、マージプロセスの結果に基づいて、各テキスト行をテキスト項目またはリスト項目のいずれかの一部として定義するテキスト構造データモデルも生成してもよい。
【0054】
以下の特定の例に示されているように、テキスト構造データモデルは、テキスト行によって形成された手書きテキストの構造分解を定義する。
【0055】
図2は、本発明の特定の実施形態に係るコンピューティングデバイスDV1のブロック図である。コンピューティングデバイス(またはデジタルデバイス)DV1は、コンピューターデスクトップ、ラップトップコンピューター、タブレットコンピューター、電子書籍リーダー、携帯電話、スマートフォン、ウェアラブルコンピューター、デジタルウォッチ、インタラクティブホワイトボード、グローバルポジショニングシステム(GPS)ユニット、エンタープライズデジタルアシスタント(EDA)、個人デジタルアシスタント(PDA)、ゲーム機などであってもよい。コンピューティングデバイスDV1は、少なくとも1つの処理要素、ある形式のメモリ、及び入出力(I/O)デバイスの構成要素を含んでもよい。構成要素は、コネクタ、ライン、バス、リンクネットワーク、または当業者に知られている他のものなどの入力及び出力を介して相互に通信する。
【0056】
より具体的には、コンピューティングデバイスDV1は、手書き(または手描き)テキストINのための入力面4を備え、これは、以下でさらに説明するように、テキスト項目及び/またはリスト項目を含み得る。入力面4は、該入力面に入力された(またはを使用して)デジタルインクの複数のストロークSKを検出するのに適している。
【0057】
入力面4は、抵抗性、表面弾性波、静電容量、赤外線グリッド、赤外線アクリル投影、光学撮像、分散信号技術、音響パルス認識、またはタッチ感応面または近接感応面の形でユーザ入力を受け取るために当業者に知られている他の任意の適切な技術を使用してもよい。入力面4は、位置検出システムによって監視される非タッチセンシティブ面であってもよい。
【0058】
コンピューティングデバイス100は、手書きINなどのコンピューティングデバイスDV1からデータを出力するための少なくとも1つのディスプレイユニット(またはディスプレイデバイス)2も備える。ディスプレイユニット2は、任意の適切な技術(LCD、プラズマなど)のスクリーンなどであってもよい。ディスプレイユニット2は、ユーザが入力したデジタルインクのストロークSKを表示するのに適している。
【0059】
入力面4は、ディスプレイユニット2と同じ場所に配置するか、またはそれに遠隔接続することができる。特定の例では、ディスプレイユニット2及び入力面4は、タッチスクリーンの一部である。
【0060】
図2に示されるように、コンピューティングデバイスDV1は、プロセッサ6及びメモリ8をさらに備える。コンピューティングデバイスDV1は、メモリ8の一部として、またはそれとは別に、1つ以上の揮発性記憶要素(RAM)を含んでもよい。
【0061】
プロセッサ6は、ソフトウェア、具体的にはメモリ8に記憶されたソフトウェアを実行するためのハードウェアデバイスである。プロセッサ8は、任意のカスタムメイドまたは汎用プロセッサ、中央処理装置(CPU)、半導体ベースのマイクロプロセッサ(マイクロチップまたはチップセットの形態)、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲート配列(FPGA)または他のプログラマブル論理デバイス、またはその任意の組み合わせであり、より一般的には当業者に知られているように、ソフトウェア命令を実行するために設計された任意の適切なプロセッサ構成要素であり得る。
【0062】
メモリ8は、本開示の特定の実施形態に係る、非一時的(または不揮発性)コンピュータ可読媒体(または記録媒体)である。メモリ8は、不揮発性記憶素子(例えば、ROM、EPROM、フラッシュPROM、EEPROM、ハードドライブ、磁気または光テープ、メモリレジスタ、CD-ROM、WORM、DVDなど)の任意の組み合わせを含んでもよい。
【0063】
メモリ8は、コンピューティングデバイスDV1によってリモートでアクセス可能なサーバまたはクラウドベースのシステムにおけるなど、コンピューティングデバイスDV1から離れていてもよい。不揮発性メモリ8は、プロセッサ6に結合されているので、プロセッサ6は、メモリ8から情報を読み取り、メモリ8に情報を書き込むことができる。代替として、メモリ8は、コンピューティングデバイス8と一体である。
【0064】
メモリ8は、オペレーティングシステム(OS)10及び手書きアプリケーション(またはコンピュータプログラム)12を含む。オペレーティングシステム10は、アプリケーション12の実行を制御する。このアプリケーションは、本発明の特定の実施形態に係るコンピュータプログラム(またはコンピュータ可読プログラムコード)を構成し(または含み)、このコンピュータプログラムは、本発明の特定の実施形態に係る方法を実施するための命令を含む。
【0065】
本実施形態では、アプリケーション12は、適切な方法で取得された手書きINを処理するための命令を含む。この例では、処理される手書きINは、以下でさらに説明するように、コンピューティングデバイス100の入力面4を使用してユーザによって手書きされたデジタルインクのストロークSKであってもよい。変形例では、手元の手書きINは、コンピューティングデバイスDV1によって取得されるが、入力面4を介して入力されない。
【0066】
図2に示されるように、不揮発性メモリ8は、予め定義されたリスト記号BT及びテキスト構造データモデル(モデルとも呼ばれる)MLのセットを含む、コンピューティングデバイス2によって取得された様々なデータを記憶するのに適している。セットは、リスト項目の開始を特徴付ける1つ以上の予め定義されたリスト記号BTを含んでもよい。テキスト構造データモデルMLは、例えば、リスト項目LIまたはテキスト(すなわち、非リスト)項目TIのいずれかであり得るテキスト行のタイプなどの、手書きの構造を定義する情報を含む。これらの特徴の性質と使用法については、以下でより詳しく説明する。
【0067】
特定の実施形態に係る図3に示されるように、メモリ108(図2)に記憶されたアプリケーション12を実行するとき、プロセッサ6は、モジュール、すなわち、認識モジュールMD2、分類器モジュールMD4、モデル管理モジュール12、及び、いくつかの実施形態では、後処理モジュールMD14を実装することができる。
【0068】
認識モジュールMD2は、電子文書内のデジタルインクの複数のストロークSKでテキスト手書き認識を実行することによってテキストを認識するように構成することができ、テキストは、複数の連続するテキスト行LNを含む。
【0069】
分類器モジュールMD4は、各認識されたテキスト行LNを別個のテキスト項目TIとして最初に分類し、
a)該テキスト行LNが、該テキスト行LNがリストの一部であることを示す所定のリスト記号で始まるかどうかを判定し、所定のリスト記号BTで始まる各テキスト行LNをリストの一部である別個のリスト項目として分類するための、各テキスト行LNにおけるパターン検出することと、
b)ステップa)に応答して、基準位置に対する各テキスト項目TIの項目インデントを決定し、基準位置に対する該リスト項目LIで構成されるテキストのインデントを表すテキストインデントを各リスト項目LIに対して決定することと、
c)
同一テキスト項目の一部として、テキストにおいて、第1のテキスト行LNによって、続いて第2のテキスト行によって形成される連続したテキスト行LNの各対を、該対の第1及び第2のテキスト行が同一の項目インデントを有するテキスト項目であり、かつ第1のテキスト行の末尾に第2のテキスト行を開始する第1の単語を収容するために十分な空きスペースが存在しなければ、マージすることと、
第1のテキスト行がリスト項目であり、第2のテキスト行が第1のテキスト行のテキストインデントと一致する項目のインデントを有するテキスト項目であり、第1のテキスト行の末尾に第2のテキスト行を開始する第1の単語を収容するのに十分な空きスペースがない場合、第2のテキスト行LNに続く第1のテキスト行LNによって形成される連続するテキスト行LNの各対を同じリスト項目LIの一部としてとしてマージすることと、を含むマージプロセスステップと、を含むマージステップと、を含む分類プロセスを実行するように構成することができる。
【0070】
この例では、分類器モジュールMD4は、ステップa)を実行するように構成されたパターン検出モジュールMD6、ステップb)を実行する決定モジュールMD8、及びステップc)を実行するマージモジュールMD10を含む。
【0071】
モデル管理モジュールMD12は、マージステップの結果に基づいて、各テキスト行LNをテキスト項目またはリスト項目のいずれかの一部として定義するテキスト構造データモデルMLを生成するように構成されてもよい。
【0072】
後処理モジュールMD14は、テキスト構造データモデルに基づいて、認識モジュールMD2によって認識されたテキストの編集を行うように構成することができ、該編集は、認識されたテキストの少なくとも一つの項目の内容を修正することと、認識されたテキストの少なくとも1つの項目のデジタルインクのリフローを引き起こすリフロープロセスの、少なくとも1つを含む。後処理モジュールMD14は、ユーザ命令に応答して、認識されたテキストのそのような編集を実行することができる。
【0073】
アプリケーション12は、特定の実施形態で後述するように、本発明の方法のステップを実行するために、上述のモジュールMD2~MD14を実装するようにプロセッサ6を構成する命令を含む。
【0074】
コンピューティングデバイスDV1のモジュールMD2~MD14の構成及び動作は、図を参照して以下に説明する特定の実施形態においてより明白になろう。図3に示されるモジュールMD2~MD14は、本発明の例示的な実施形態にすぎず、他の実施が可能であることを理解されたい。
【0075】
本発明の方法の各ステップについて、コンピューティングデバイスDV1は、該ステップを実行するように構成された対応するモジュールを含んでもよい。
【0076】
以下の特定の実施形態でさらに説明するように、本発明の方法は、手書きテキストINのテキスト行LNのインデントを決定することを含むことができる。インデント(またはインデント)は、ドキュメント内の特定のテキスト行を開始する横方向の位置を定義する。インデントは、テキスト行LNの前の空のスペースによって形成される場合がある。多くの書記言語では、たとえば最初の行のインデントは段落の最初の行をインデントする。
【0077】
図4は、手書きテキストIN(便宜上タイプセットスタイルで表されている)が電子文書のデジタルインクストロークSKによって形成される例を示している。手書きテキストINは、4つのテキスト行LNa、LNb、LNc、及びLNd(まとめてLNと指定する)を含み、それぞれがテキストを含む。この例では、インデントは、ドキュメント内の(横方向の)基準位置30に対して決定される。
【0078】
インデント22a、22b、22c、及び22d(まとめて22と指定する)は、それぞれのテキスト行LNa、LNb、LNc、及びLNdのインデントを構成し、「項目インデント」と呼ばれる。言い換えれば、項目のインデントは、基準位置30に対する項目(リスト項目またはテキスト項目)のインデントである。
【0079】
テキスト行LNa及びLNbは、同じ(または実質的に同じ)項目インデント22a、22bを有するので、同じテキスト項目TIの一部としてコンピューティングデバイスDV1によって検出することができる。一方、テキスト行LNcが予め定義されたリスト記号BT「*」で始まり、テキスト行LNc,LNdが同じ(または実質的に同じ)項目インデント22c,22dを有するので、テキスト行LNc,LNdは同じリスト項目LIの一部としてコンピューティングデバイスDV1によって検出することができる。
【0080】
インデントを計算する様々な方法が企図され得る。この例では、テキスト項目とリスト項目の両方が、左マージン30に対する横方向の位置を表すそれぞれのインデント値-「i」と記す-を有する。この例では、コンピューティングデバイスDV1は、列ベースの計算を実行して、所与の項目の開始を基準位置30から分離するいくつかの予め定義された列C1に基づいて、各項目のインデントを表す値iを決定する。インデント値iは、テキスト項目の場合は単語の左側、リスト項目の場合はリスト記号の左側の最初の列境界を決定することによって計算することができる。これらの列のサイズC1は、テキスト行の高さに比例し、両方ともカスタマイズ可能である。言い換えれば、これらの列C1の幅(またはサイズ)Cは、テキスト行LNの高さに比例するように選択することができる。
【0081】
図4に示す例では、矢印34で示されている列は、インデント計算の許容範囲を示している。テキスト行LNa及びLNbの項目インデント22の値は1であり、テキスト行LNc及びLNdの項目インデント22の値は2である。
【0082】
項目インデント22は、テキスト行22a及び22b(例えば、値1)によって形成されるテキスト項目TI全体について計算することができる。同様に、項目インデント22は、テキスト行22c及び22d(例えば、値2)によって形成されるリスト項目LI全体について計算することができる。
【0083】
特定の例では、インデントiは次のように計算される:
【数1】
式中、Δは基準位置30からの項目の距離であり、Cは予め定義された列C1の幅であり、tは幅Cのパーセンテージ(%)として定義される許容誤差である。
【0084】
図4に示すように、リスト記号BT「*」で始まり、したがってリスト項目ITの一部であるテキスト行LNcは、基準位置30に対するテキスト行LNcで構成されるテキストのインデントを表すテキストインデント24によっても特徴付けられる。言い換えれば、予め定義されたリスト記号BTで始まる各リスト項目は、項目インデント22及びテキストインデント24によって特徴付けられ、後者は、基準位置30に対するリスト項目の最初の文字の横方向位置によって定義される。
【0085】
この例では、インデント値iはマージンからの距離ではなく、固定幅の列C1に基づく増分値である。テキスト項目の項目インデントを決定し、リスト項目のテキストインデントを決定するための他の実装を企図することができる。以下でさらに説明するように、インデント値iは、リストとサブリストのスコープを決定するために使用される。
【0086】
ここで、本発明の特定の実施形態に従って、図2図3に示されるコンピューティングデバイスDV1によって実施される方法を、図5図15を参照して説明する。より具体的には、コンピューティングデバイスDV1は、メモリ8に記憶されたアプリケーション12を実行することによってこの方法を実装する。
【0087】
コンピューティングデバイスDV1が手書きIN(手書きテキスト)を取得し、手書き認識アプリケーション12を実装して、取得した手書きINのテキスト構造データモデルMLを決定し、より具体的には、該手書きINのTIリスト項目LI及びテキスト項目を認識する、例示的シナリオ例が考慮される。
【0088】
より具体的には、取得ステップS2(図5)において、コンピューティングデバイスDV1は、デジタルインクの形態で手書きINを取得する。取得した手書き入力INは、デジタルインクの複数のストロークSKによって形成される。これらのストロークSKは、手書きINのデジタル表現を構成する。取得されたストロークのセットSKは、電子文書40において実質的に同じ方向に沿って延びる複数のテキスト行LNを形成すると考えられる。これらの連続するテキスト行LNは、各事例に応じて様々な方法で配置できる。
【0089】
各テキスト行LNは、1つ以上の文字(または記号)CHを形成する1つ以上のストロークSKによって形成され、後者は、1つ以上の単語WDを形成する。
【0090】
特定の例では、テキスト行のテキストは、手書きとタイプセットされた(またはタイプセット)テキストの両方をミックスすることができ、タイプセットされたテキストでは、各グリフがストロークとみなされる。
【0091】
説明のために、実際の言語での手書きの代わりに、偽の(架空の)言語での手書きを使用する。本発明は、偽の言語を含む、任意の手書きテキストのテキスト構造を決定することを可能にする。
【0092】
等高線は、各テキスト行LN間の項目境界をマークするために図6に示されているだけである。この例では、手書き入力INは、22の連続するテキスト行LN1からLN24を形成し、まとめてLNと指定される。各テキスト行LNは、テキスト、すなわち、単語WDを形成する複数の文字CHを形成する複数のストロークを含む。この例では、手書き入力は、テキストを含まない2つの連続する空の行L0(テキスト行LN8とLN9の間)も含む。図6に示される手書き入力INは、もちろん、特定の実施形態における本発明の概念を説明するための単なる例として提供される。
【0093】
したがって、コンピューティングデバイスDV1は、図6に示されるように、取得されたストロークSTをディスプレイ2に表示する(S2)。
【0094】
既に示したように、各入力ストロークSKは、少なくともストローク開始位置、ストローク末尾位置、及びストローク開始位置とストローク末尾位置を接続する経路によって特徴付けられる。したがって、たとえば文字「i」(テキスト行LN1の「felis」という単語)の上部に配置されたドットは、それ自体で単一ストロークSKを構成する。
【0095】
この場合、デジタルインクの複数のストロークSTは、コンピューティングデバイスDV1の入力面4を使用して、電子文書40においてユーザによって入力されると想定される。ユーザは、手または指、または入力面4での使用に適したデジタルペンやスタイラスなどの入力機器を使用して入力ストロークSKを入力できる。ユーザは、入力面4の近傍の動きを感知するように構成された手段が使用されている場合、入力面4の上方でジェスチャを行うことによって、またはマウスやジョイスティックなどのコンピューティングデバイスDV1の周辺デバイスを使用して入力ストロークSKを入力することもできる。
【0096】
しかしながら、コンピューティングデバイスDV1は、他の適切な方法で手書きINを取得することができることを理解されたい。
【0097】
この例では、コンピューティングデバイスDV1は、オンライン手書き認識を実行するために、入力面4を用いてユーザによって入力されたストロークSKを取得する。しかしながら、本発明は、オフライン手書き認識に類似の方法で、すなわち、このように手書きの静的表現を形成する手書きの画像に対して本発明の概念を実行することによって適用され得ることに留意されたい。したがって、時間経過に伴うストロークの相対的な入力方法に関する時間的な情報は必要ない。
【0098】
テキスト手書き認識ステップS4において、コンピューティングデバイスDV1は、S2で取得されたストロークSKに対してテキスト手書き認識を実行することによってテキストを認識する。具体的には、コンピューティングデバイスDV1は、S4において、認識されたテキストから複数のテキスト行LN1~LN24を識別する。テキスト手書き認識S2は、当業者に知られている任意の技術を使用して(例えば、逐次分類器を使用して)、任意の適切な方法で実行することができる。
【0099】
このテキスト手書き認識S4を実行することにより、コンピューティングデバイスDV1は、テキスト認識結果の一部として、ストロークSKによって形成される文字CH、文字CHによって形成される単語WD、及び単語WDによって形成されるテキスト行LNを認識することができる。
【0100】
特定の例では、S4で得られたテキスト認識結果は、処理されるストロークSKに対して複数のテキスト解釈を提供することができる。テキストIN、単語WD、及び文字CHに対して、信頼スコアが関連付けられた様々な結果候補を生成することができる。各テキスト候補(テキスト、単語、文字)は、構成ストロークSKに関連付けることができる。テキスト手書き認識モジュールS4は、最高の信頼スコアを有するテキスト候補を選択することができる。テキスト手書き認識は当業者に知られているので、この点に関してさらなる詳細は提供されない。
【0101】
各文字(または記号)CHは、1つ以上の入力ストロークSKによって、または少なくともストロークSKの一部によって形成される。
【0102】
さらに、各テキスト行LNは、リスト項目LIの一部であるか、またはリスト項目(すなわち、テキスト項目TI)の一部ではないかのいずれかであり得る。この方法の目的は、手書きINによって形成された複数のテキスト行LNからリスト項目LI及びテキスト(非リスト)項目TIを識別することである。本方法の結果として特定される各リスト項目LI及び各テキスト項目TIは、1つ以上のテキスト行LNから構成されてもよい。
【0103】
初期分類ステップS6中に、コンピューティングデバイスDV1は、最初に、認識された各テキスト行LNを、リストの一部ではない別個のテキスト項目TIとして分類する。その結果、すべてのテキスト行LN1~LN24は、別個のテキスト項目TIとして分類される(図5図6)。この初期分類ステップS6中に、コンピューティングデバイスDV1は、2つのラインL0を空のラインとしても分類する。この初期分類の結果は、モデル管理モジュールMD12(図3)によって、不揮発性メモリ8内のテキスト構造データモデルMLに記憶され得る(S6)。
【0104】
図9に示される表は、コンピューティングデバイスDV1が方法の様々なステップの間にテキスト行LNの分類を進める間、テキスト構造データモデルMLの対応する状態を示している。文字「T」は「テキスト項目」を表し、文字Lは「リスト項目」を表し、文字「D」は空行を表す。ステージtは、初期分類ステップS6の結果としての分類の現在の状態に対応する。
【0105】
この初期段階tにおいて、テキスト構造データモデルMLは、テキスト手書き認識S4で生成されたテキスト認識結果に基づいて得られた初期構造情報を含み得る。具体的には、テキスト構造データモデルMLは、テキスト手書き認識S4で決定された、各文字CHとその構成ストロークSK、各単語WDとその構成文字CH、各テキスト行LNとその構成単語WDを関連付けて定義することができる。この初期段階tにおいて、各テキスト行LNは、初期分類S6の結果として、テキスト構造データモデルMLに従ってテキスト項目TIとして分類される。
【0106】
モデルMLは、各テキスト行LNの最初及び最後のストロークSKを定義する情報を含むことができる。空行L0(この場合、連続する2つの空行として認識される)は、S6において分類され、テキスト構造データモデルMLによって、2つの異なる項目(各々がテキスト項目TIまたはリスト項目LIのいずれか)を分離する同一の仕切り項目Dの一部として定義されてもよい。言い換えれば、この仕切り項目Dは、手書きテキストIN内のテキスト/リスト項目の終わり及び別のテキスト/リスト項目の開始をマークすることができる。
【0107】
方法が進む間、テキスト構造データモデルMLは、モデル管理モジュールMD12(図3)によって更新されて、メソッドの様々なステップの分類結果が反映される。
【0108】
次いで、コンピューティングデバイスDV1は、パターン検出ステップS10、インデント決定ステップS12、及びマージステップ(またはマージプロセス)S14を連続して含む分類プロセスS8(図5及び図7)に進み、各テキスト項目TI及び/または認識された手書きテキストINに含まれるリスト項目LIを検出する。方法が進む間、テキスト構造データモデルMLは、モデル管理モジュールMD12(図3)によって更新されて、パターン検出ステップS10及びマージステップS14の結果を反映する。
【0109】
より具体的には、パターン検出ステップS10中に、コンピューティングデバイスDV1は、該テキスト行LNがリストの一部であることを示す所定のリスト記号BTによって該テキスト行LNが開始するかどうかを決定するために、各テキスト行LNにおいてパターン検出を実行し、次いで、所定のリスト記号で始まる各テキスト行LNを、リストの一部である別個のリスト項目LIとして再分類する(図7)。当初は、すべてのテキスト行LN1~LN24はテキスト項目TIであると想定されるので、コンピューティングデバイスDV1は、したがって、所定のリスト記号BTによって導入された各テキスト行LNを別個のリスト項目LIとして再分類する。その結果、S6で取得した初期分類から(またはそれに基づいて)、所定のリスト記号BTで始まる各テキスト行LNは、別個のリスト項目LIとして再分類されるが、任意の他のテキスト行LNは別個のテキスト項目として初期分類を保持する。
【0110】
この例では、パターン検出S10は、不揮発性メモリ8に記憶された所定のリスト記号BTのセットに基づいて実行される。S10において、コンピューティングデバイスDV1は、各テキスト行LNの開始を調べ、1つ以上の開始ストローク(例えば、予め定められた開始ストローク数SKまたはテキスト行LNの開始時の最初の文字CH)を予め定められたリスト記号の集合BTと比較する。例えば、パターン検出モジュールMD6は、各テキスト行LNについて、該テキスト行LNを開始する第1の記号を、所定のリスト記号BTのセットと比較して、一致するかどうかを判定する。一致する場合、パターン検出モジュールMD6は、テキスト行LNがリスト記号BT(箇条書きなど)で始まっていると推測し、その結果、テキスト行LNを単独でリスト項目LIとして分類する。
【0111】
所定のリスト記号BTによって開始するものとして検出されないS10の各テキスト行LNは、この段階でテキスト項目TIであると想定される。先に示したように、各テキスト行LNは、最初は別個のテキスト項目TIとして分類される(S6)。したがって、S10で所定のリスト記号BTを有さないと検出された各テキスト行LNは、テキスト項目として初期の分類を保持する。
【0112】
前述のように、リスト記号BTは、リスト項目の導入として定義されている限り、様々な形式をとることができる。特定の例では、パターン検出モジュールMDMD6は、正規表現マッチングを使用してパターン検出を実行する。事前定義されたリスト記号の範囲には、次のUnicode文字が含まれる場合がある:HYPHEN-MINUS、NUMBER-SIGN、ASTERISKなど。単一文字の箇条書きに加えて、ローマ字、アラビア数字、ピリオドで区切られた文字、及び/または閉じ括弧で終わっている文字は、リスト記号BTとして認識される場合もある。所定のリスト記号BTのいくつかの例を次に示す:「1)」、「b.」、「1.a」、「vi」、及び「IV」。
【0113】
例えば、図7では、コンピューティングデバイスDV1は、テキスト行LN9、LN13及びLN15がリスト記号BT(それぞれ「1.」、「・」及び「1.2.3.4.5」)で始まると検出し、したがって、これらのテキスト行を別個のリスト項目LIとして再分類する。
【0114】
図9に示すように、ステージtは、すべてのテキスト行LNで実行されたパターン検出S10の結果としての分類の現在の状態に対応する。
【0115】
パターン検出ステップS10に応答して、コンピューティングデバイスDV1は、インデント決定ステップS12に進む(図5及び7)。次いで、インデント決定ステップS12において、コンピューティングデバイスDV1は、電子文書40内の基準位置22に関して各テキスト項目TIの項目インデント22を決定し、各リスト項目LIについて、基準位置30に関してリスト項目LIに含まれるテキストのインデントを表すテキストインデント24を決定する。この段階で、どのテキスト行LNがリスト項目LIと見なされ、どのテキスト行LNがテキスト項目TIと見なされるかの決定は、前のパターン検出ステップS10の結果に基づく(すなわち、例えば、テキスト構造データモデルMLで定義された現在の分類状態に基づく)。
【0116】
この例(図7)では、コンピューティングデバイスDV1はこのように決定する(S12)。
テキスト項目LN1-LN8、LN10-LN12、LN14及びLN16-LN24の項目インデント22、及び、
リスト項目LN9、LN13、及びLN15のテキストインデント24。
【0117】
現在、項目のインデント22及びテキストのインデント24は、図4に関して以前に説明されたように決定されると想定されているが、他のインデント計算技術が企図され得る。図9の表は、S12で決定された上記のインデントの各々について、コンピューティングデバイスDV1によって計算された値iを示している。前に説明したように(図4)、これらの値iは、電子文書40の横方向基準位置30に関するインデントを表す。この例では、各インデント(テキスト項目TIの項目インデントまたはリスト項目LIのテキストインデント)で取得された値iの範囲は0~1である。もちろん、これらの値は、インデント計算の実行に使用される列ベースの戦略に依存する。
【0118】
インデント決定ステップS12に応答して、コンピューティングデバイスDV1は、マージステップS14に進む(図5及び図7図8)。次いで、マージステップS14において、コンピューティングデバイスDV1は、手書きINにおいてこの段階で認識された各テキスト項目TI及びリスト項目LIを分析して、前のインデント決定ステップS12で決定したインデントに基づいて、どの項目を(あれば)同一項目でマージすべきかを決定する。この目的のために、コンピューティングデバイスDV1は、連続するテキスト行LNの各対PR(図7)を連続的に調べて、所定のマージ条件CDが満たされているかどうかを判定し、満たされている場合、対PRの2つのテキスト行LNを同じ項目(リスト項目LIまたはテキストTIのいずれか)の一部としてマージする。これは、事前定義されたルールに基づいて、2つの連続するテキスト行LNをマージする必要があるかどうかを評価するために、行ごと(またはペアごと)の分析を実行することによって実現される。
【0119】
より具体的には、マージステップS14中に、コンピューティングデバイスDV1は、
同一テキスト項目TIの一部として、第1のテキスト行LNによって、続いて第2のテキスト行LNによって形成される連続したテキスト行LNの各対PRを、該対PRの第1及び第2のテキスト行が同一の項目インデント22を有するテキスト項目TIであり、かつ第1のテキスト行LNの末尾に第2のテキスト行LNで始まる第1の単語WDを収容するために十分な空きスペースが存在しなければ(条件CD1)、マージし、
同一リスト項目TIの一部として、第1のテキスト行LNによって、続いて第2のテキスト行LNによって形成される連続したテキスト行LNの各対PRを、第1のテキスト行がリスト項目LIであり、第2のテキスト行が第1のテキスト行のテキスト行のテキストインデント24と一致する項目インデント22を有するテキスト項目TIであり、第1のテキスト行の末尾に第2のテキスト行を開始する第1の単語を収容するのに十分な空きスペースがない場合(条件CD2)、マージする。
【0120】
上記からわかるように、S14では、連続するテキスト行LNの各対PRに対して2つのテストを適用し、これら2つの条件のうちいずれか1つが満たされるかどうかをそれぞれ判定する:
条件CD1:対PRテキスト項目TIの第1及び第2のテキスト行LNが同一項目インデント22であるか、及び第1のテキスト行LNの末尾に第2のテキスト行LNを開始する第1の単語WDを収容するのに十分な空きスペースがないか?
条件CD2:対PRの第1のテキスト行はリスト項目LIであるか、及び第2のテキスト行は、項目インデント22が第1のテキスト行のテキストインデント24と一致するテキスト項目TIを有する第2のテキスト行であるか?
【0121】
したがって、各条件CD1及びCD2は、対応する条件が満たされるために両方が満たされなければならない2つのサブ条件を含む。
【0122】
したがって、この例では、マージモジュールMD10は、連続するテキスト行LNの各対PRを連続的に検査して、条件CD1及びCD2のいずれかが満たされているかどうかを判定する。この目的のために、マージモジュールMD10は、テキスト構造データモデルMLを参照して、各テキスト行LNの現在の項目タイプ(テキスト項目TIまたはリスト項目LIのいずれか)を判定し、条件CD1または条件CD2が対PRのいずれかで満たされているかどうかをチェックする。
【0123】
例として、マージモジュールMD10は、連続する行LN3とLN4(図7図8)によって形成される対PRを調べる(S14、図5)。マージモジュールMD10は、この対PRの第1のテキスト行LN3及び第2のテキスト行LN4がともにテキスト項目TIであることを検出し、したがって、両方のテキスト行が互いに一致する(すなわち、本例では同じ値iを有する)項目インデント22を有するかどうかを検証する。両方の項目インデント22が一致するため(両方のテキスト行NLN3、LN4でi=0)、マージモジュールMD10は、第2のテキスト行LN2を開始する第1の単語「Vivamus」を収容するのに十分な空きスペース(テキストなし)が最初の行LN3の末尾にあるかどうかを判定する。現在、マージモジュールMD10は、したがって、第1のテキスト行LN3を終了する空きスペース42を、第1の単語「Vivamus」のサイズ(占有エリア)と比較する。この例では、エリア42には、「Vivamus」という単語全体を収容または配置するのに十分なスペースがない。従って、マージモジュールMD10は、テキスト行LN3及びLN4を同一のテキスト項目ITの一部としてマージする。
【0124】
この予め定義された条件CD1は、ユーザの自然な手書きを考慮に入れるように定義されている。ユーザがテキスト行LNの末尾に比較的大きな空きスペースを残し、次のテキスト行LNで手書きを開始した場合、この次のテキスト行は前の項目とは異なる新しい項目(テキスト項目またはリスト項目)を開始する可能性がある。
【0125】
別の例として、マージモジュールMD10は、連続する行LN9とLN10(図7図8)によって形成される対PRを調べる(S14、図5)。マージモジュールMD10は、対PRの第1のテキスト行LN9がリスト項目LIである一方、第2のテキスト行LN10がテキスト項目TIであることを検出し、したがって、第1の行LN9のテキストインデント24が第2のテキスト行LN10の項目インデント24に一致するかどうかを検証し、第1のテキスト行LN9の末尾に第2のテキスト行LN10を始める第1の単語を収容できるだけの空きスペースがないかどうかも検証する。この例では、これら2つのインデントが一致し(LN9、LN10ともにインデント値i=1)、第1のテキスト行LN9の末尾に第2のテキスト行LN10を始める第1の単語「vulputate」を収容するのに十分な空きスペースがないので、マージモジュールMD10は2つのテキスト行LN9、LN10を同じリスト項目LIの一部としてマージする。
【0126】
この例では、マージモジュールMD10は、テキスト行LN8及びLN9が、空行L0によって形成される仕切り項目によって分離されているので、互いに連続していないと見なす。
【0127】
この例では、本実施例では、マージステップS14において、マージモジュールMD10は、(テキスト構造データモデルMLの現在の状態に従って)第1の項目がテキスト項目であり、第2の項目がリスト項目であれば、第1のテキスト行によって、続いて第2のテキスト行によって形成される連続したテキスト行LNの各対PRを別の項目として維持する。
【0128】
これらの2つのテスト(それぞれ条件CD1とCD2に基づく)を連続するテキスト行LNの連続する各対に適用することにより、モデル管理モジュールMD12(図3)は、図9に示す表のステージtに表されるように、テキスト構造データモデルMLの構造情報を徐々に更新する。上述のようにマージステップS14で連続するテキスト行LNをマージすることにより、手書きテキストINからテキスト項目TI及びリスト項目LIが認識される。この例では、マージステップS14の結果として、テキスト構造データモデルMLは、
テキスト行LN1~LN8によって形成されるテキスト項目TI、
2つの空行L0によって形成される仕切り項目D、
テキスト行LN9~LN12によって形成されるリスト項目LI、
テキスト行LN13~LN14によって形成されるリスト項目LI、
テキスト行LN15~LN20によって形成されるリスト項目LI、及び、
テキスト行LN21~LN24によって形成されるテキスト項目TI、の別個の項目を定義する。
【0129】
変形例では、コンピューティングデバイスDV1は、段落の最初の行が、その段落の互いのテキスト行LNに対してインデントされていることを認識することができる。したがって、同じ段落に対応する同じテキスト項目に複数のテキスト行LNを識別してマージするために、上述のようにマージモジュールMD10によって適用される条件CD1は、段落の最初の行がその同じ段落の1つ以上の他のテキスト行に対して異なる(すなわち高い)インデント値を有することを考慮に入れて適合されてもよい。
【0130】
生成ステップS16において、モデル管理モジュールMD12は、ステップS14をマージステップの結果に基づいて、テキスト構造データモデルMLを生成する。本実施形態では、この生成は、テキスト手書き認識S4の結果をテキスト構造データモードMLに記憶し、パターン検出S10において及びマージステップS14において、初期分類ステップS4で得られた結果に基づいてこのモデルMLを連続的に更新することによって徐々に実行される。変形例では、テキスト構造データモデルMLは、前のステップS4、S6、S10及びS14の結果に基づいて、マージステップS14をマージした後に生成される。
【0131】
本発明は、手書き文字のテキスト構造分解、すなわち構造配置を決定するための効率的で信頼性の高いソリューションを提供する。本発明のおかげで、手書きのリスト項目を検出することができる。具体的には、本発明は、(以下でさらに説明するように)例えば、手書きの操作または編集を改善するために、正確かつ信頼できる方法で、手書きのリスト要素及び非リスト要素を区別する(または識別する)ことを可能にする。手書きの段落も検出され得る。
【0132】
より具体的には、効率的な分類は、最初に認識された各テキスト行が別個のテキスト項目であると想定し、パターン検出、インデント決定、及びマージプロセスを連続して含む分類プロセスを実行することによって達成することができる。パターン検出は、箇条書きで始まる各テキスト行が別個のテキスト項目から別個のリスト項目に再分類されるように実行されるため、テキストとリスト項目の最初の信頼できる識別を実行できる。次に、特定のインデント、つまりテキスト項目の項目インデントとリスト項目のテキストインデントが決定される。これらの特定のインデントに基づいて、マージプロセスを効率的に実行して、分類プロセスのステップa)で得られた分類結果を改善することができる。
【0133】
次に、マージプロセス中に、手元の各対のテキスト行の項目の性質(リスト/テキスト項目の)に応じて、2種類のマージが実行される。それにより、テキスト項目を同じテキスト項目の一部としてマージする(第1のマージ)だけでなく、リスト項目の後に同じリスト項目の一部としてテキスト項目をマージする(第2のマージ)ことができる。どちらの場合も、マージを続行するかどうかの判定は、対の第2のテキスト行の第1の単語を収容するのに十分な空きスペースが対の第1のテキスト行の末尾にあるかどうかに基づいている。これらの2つのマージでは、人間の自然な手書きを考慮して、テキスト行を同じテキストまたはリスト項目の一部と見なす場合を最高の精度で判定する。
【0134】
一般に、テキスト構造データモデルMLは、認識されたテキストINを少なくとも1つのテキスト項目TI及び/または少なくとも1つのリスト項目LIに分解してもよく、各項目は少なくとも1つのテキスト行LN及び該少なくとも1つのテキスト行LNに属する各ストロークSKと関連付けられている。モデルMLは、すべてのインクストロークSKを少なくとも1つの文字CHに関連付けることができる。さらに、各文字CHは、単一の構造項目(つまり、テキスト項目TI、リスト項目LI、または後者を考慮した場合は仕切り項目D)に属する。
【0135】
テキスト構造データモデルMLの様々な形式、内容、及び構造を検討することができる。
【0136】
この例では、各テキスト項目TI、リスト項目LI、及び仕切り項目Dが行全体を包含する。
【0137】
モデルMLは、1つ以上の空行に対応する少なくとも1つの仕切り項目をさらに含むことができる。各仕切り項目Dは、認識されたテキストINの他の2つの項目を分離することができる。
【0138】
したがって、本例では、テキスト構造データモデルMLは、認識されたテキストINを、場合によっては仕切り項目Dを含む、複数のテキスト項目TI及び複数のリスト項目LIに分解する。
【0139】
テキスト構造データモデルMLは、認識されたテキストINに含まれる各テキスト項目TI及び各リスト項目LIを識別することができる。モデルMLには、認識された項目ごとに、項目タイプ(テキスト項目TI、リスト項目LI、場合によっては仕切り項目D)、ストロークSK、文字CH、行、開始位置と終了位置、の構造情報(またはそれらの任意の組み合わせ)を含めることができる。すべての項目(テキスト/リスト項目及び仕切り)は、テキスト内の開始カーソル位置と終了カーソル位置で表すことができる。
【0140】
テキスト構造データモデルMLでは、表示されている各項目(つまり、テキストとリスト項目、ただし仕切り項目ではない)にも、含まれているすべての文字CHのインク選択を割り当てることができる。
【0141】
図10に関して以下でさらに説明するように、コンピューティングデバイスDV1は、S2で取得された手書きテキストINの変更を引き起こす、後のユーザ命令(ステップS2~S14の後に受信される)に基づいてテキスト構造データモデルMLを更新することができる。
【0142】
テキスト構造データモデルMLがS16で生成されると(図5)、コンピューティングデバイスDV1はテキスト構造データモデルMLを使用して手書きテキストINを編集できる。S18を編集するための様々なタイプ及び実装が企図され得る。
【0143】
特定の例では、後処理モジュールMD14は、テキスト構造データモデルMLに基づいて、認識されたテキストINの編集S18を実行する。この編集S18は、
認識されたテキストINの少なくとも1つのテキスト及び/またはリスト項目の内容を修正または変更すること(S20)と、
認識されたテキストINの少なくとも1つのテキスト及び/またはリスト項目のデジタルインクのリフローを引き起こすリフロープロセス(S22)、のうちの少なくとも1つを含むことができる。
【0144】
したがって、S18で実行される編集は、手書きINに影響を与える異なる種類の修正を含むことができる。編集S18は、1つ以上のインク修正変更を含むことができ、これによれば、手書きINの少なくとも1つのインクストロークSKは、修正、追加、または削除によって変更される。特定の例では、ユーザ命令によって引き起こされる変更は、電子文書40に少なくとも1つの新しいストロークSKを追加すること、及び/または少なくとも1つの既存のストロークSKを削除または修正すること(インク修正変更)を含む。編集S18は、手書きINの1つ以上の既存の項目(テキスト及び/またはリスト項目)のリフローを必要とする1つ以上の再フォーマット変更(インクの追加、修正または削除なし)も含むことができる。したがって、この場合、リフロープロセスにより、手書きINの少なくとも1つの項目のデジタルインクがリフローされる。
【0145】
編集S18に応答して、コンピューティングデバイスDV1は、編集された手書きテキストに対して再度テキスト手書き認識を実行して、テキスト構造データモデルMLを更新するための新しいテキスト認識結果を生成することができる。
【0146】
逆に、テキストリフローは、特定の表示エリア(ページ、画面、ウィンドウなど)に合わせてテキストを移動するプロセスを指定する。テキストリフローは、可読性を向上させ、読者の理解を容易にするため、当業者にはよく知られている。テキストリフローは、アプリケーション12が必要とするときはいつでも、コンピューティングデバイスDV1によってトリガーされ得る。
【0147】
分類プロセスS8、より具体的には、ステップS14(図5)で実行されるマージプロセスは、任意の変更が行われたときのリスト処理の迅速かつ動的な応答を可能にする。これは、分類プロセスS8により、手書きテキストINの各テキスト行LNがテキスト項目またはリスト項目のいずれかの一部として分類されることが可能であるためである。この特定の例では、テキスト構造データモデルMLは、各テキスト行LNをテキスト項目TIまたはリスト項目LIの一部として定義する。その結果、編集がS18で行われる場合、コンピューティングデバイスDV1は、例えば、前述のようにまたは任意の他の適切な方法によって(図5)ステップS4~S16を実行することによって、影響を受けるテキスト行LNのみを処理して、それらの分類を(リスト項目またはテキスト項目の一部として)再評価することができる。マージプロセスS14がなければ、手書きテキストINに対して編集が実行されるたびにすべてのテキスト行LNを再評価する必要があり、これは時間及び処理の過剰コストにつながる。
【0148】
したがって、マージプロセスS14では、(任意の編集、すなわちインク修正変更及び/または再フォーマット変更によって)影響を受けたテキスト行LNのみが再処理されるので、手書きテキストINを迅速に再処理することができ、リスト/テキスト分類の結果をより速く、より首尾一貫したものにすることが可能となる。
【0149】
S18の編集中、コンピューティングデバイスDV1は、テキスト構造データモデルMLの情報を使用して、テキストの編集方法(変更、リフローなど)を制御し、ユーザ体験を向上させる。たとえば、テキストリフローは、同じリスト項目LIの各テキスト行LNを自動的に位置合わせすることによって改善できる。箇条書きの追加、箇条書きの変更などの自動コンテンツ編集もリスト項目に適用できる。本発明のおかげで、テキストの操作は、テキストの構造分解に基づいて適合させることができ、具体的には、リスト及び非リストのコンテンツに適合した編集を実行することができる。
【0150】
コンピューティングデバイスDV1は、テキストINに対して実行された編集S18を反映するようにテキスト構造データモデルMLを更新することもできる。
【0151】
編集S18は、コンピュータデバイスDV1への任意の適切な方法によって(例えば、入力面4またはコンピューティングデバイスDV1の任意のユーザインターフェースを介して)入力されたユーザ命令に応答して実行され得る。ただし、手書きINに対する編集(S16)が、コンピューティングデバイスDV1によって自動的に実行される、すなわち、手書きINを編集するためのユーザ命令がない場合にコンピュータデバイスDV1によってトリガーされる他の例も可能である。
【0152】
たとえば、ユーザはキーボードを使用して、手書きのテキストINを編集するための特別な命令を入力できる(たとえば、表組み、戻り)。予め定義されたジェスチャもユーザが入力できる。
【0153】
特定の例では、分割ジェスチャ(たとえば下向き)を入力して行を分割することができ、これは、キーボードのReturnキーをアクティブにすることと同じであり得る。分割命令がテキスト行で分割を実行するように命令すると、そのテキスト行は2つの異なるテキスト行に分割され、そのテキスト行が属する項目(テキストまたはリスト項目)も2つの異なる項目に分割される。同じ単語WDの2つの連続する文字間の分割ジェスチャにより、この単語WDが2つの単語に分割される可能性があり、2つの連続する単語WD間の分割ジェスチャにより、2つの異なる行で行が分割される可能性がある。
【0154】
同様に、場合によっては、結合ジェスチャ(たとえば上向き)を入力して、2行または2単語を結合することができる。
【0155】
手書きテキストの修正または編集を引き起こす様々な他のユーザ命令が企図され得る。
【0156】
特定の例では、リフロープロセスS22(図5)中に、ユーザ分割コマンドに応答して直前の項目から以前に分離されたテキストまたはリスト項目は、2つの項目を結合するユーザ結合コマンドに応答してのみ該直前の項目にマージされる。
【0157】
特定の実施形態では、テキスト構造データモデルMLは、テキスト項目タイプを2つのサブタイプ、すなわち、明示的(または第1の)テキスト項目及び暗黙的(第2の)テキスト項目に分類することができる。言い換えれば、モデルMLは、各テキスト項目TIを明示的テキスト項目または暗黙的テキスト項目のいずれかとして定義することができる。明示的なテキスト項目として定義されるのは、分割命令などのコンピューティングデバイスDV1への所定のユーザ命令入力に応答して作成されるテキスト項目TI、分割命令などである。逆に、この分類を確認するための所定のユーザ命令を受けることなく、コンピューティングデバイスDV1によってテキスト項目TIであると想定され、したがってそのように分類された項目は、暗黙のテキスト項目として定義される。
【0158】
たとえば、各テキスト行LNは初期分類S2(図5)で暗黙のテキスト項目TIとして分類され、分割ジェスチャ(またはブレーク命令)に応答して作成されたテキスト項目は明示的なテキスト項目として分類される。
【0159】
したがって、テキスト構造データモデルMLでテキスト項目を明示的または暗黙的なテキスト項目として定義すると、ユーザの意図と一致するグローバルテキスト構造を維持することにより、テキストの操作方法をさらに改善できる。
【0160】
さらに、先に示したように、コンピューティングデバイスDV1は、認識されたテキストIN、すなわちテキスト手書き認識S4で認識されたテキストINに変更をもたらすユーザ命令を取得することに応答して、生成ステップS16の後にテキスト構造データモデルMLを更新することができる。
【0161】
図10は、コンピューティングデバイスDV1が、生成ステップS16の後に、表示されている認識されたテキストINに編集または変更を引き起こすユーザ命令INS1を取得する(S30)、特定の実施形態を示す。
【0162】
この場合、認識されたテキストINに生じた変更は、手書きINの少なくとも1つのインクストロークSKが、修正、追加、または削除(インク修正変更)によって変更されることを意味する。言い換えれば、ユーザ命令INS1によって引き起こされる変更は、少なくとも1つの新しいストロークSKを電子文書40に追加すること、及び/または少なくとも1つの既存のストロークSKを削除または修正することを含む。
【0163】
認識ステップS32において、コンピューティングデバイスDV1は、ステップS4(図5)と同様の方法でテキスト手書き認識を実行することによって変更された手書きテキストINを認識し、それにより、ここで変更された認識されたテキストを表す新しい認識結果を生成する。
【0164】
更新プロセスS34において、コンピューティングデバイスDV1は、S32で得られた新しい認識結果に基づいて、テキスト構造データモデルMLを更新する。特定の例では、ユーザ命令INS1に応答して、コンピューティングデバイスDV1は、手書きテキストINの内容を表示上で編集し、それに応じてテキスト構造データモデルMLを更新する。モデルMLのこの更新は、例えば、テキスト項目TIからリスト項目LIへの少なくとも1つの項目の定義の切り替え、及び/またはリスト項目LIからテキスト項目TIへの少なくとも1つの項目の切り替えを含み得る。
【0165】
更新プロセスS34は、テキスト構造データモデルMLから削除された任意のストロークSKを削除し、テキスト構造データモデルMLの既存または新規の項目(テキストまたはリスト項目)に任意の新しいストロークSKを割り当てることにより、テキスト構造データモデルMLを更新することを含み得る。言い換えれば、新しいインクの追加と削除は、単にテキスト構造データモデルMLのブックキーピングをトリガーして、追加されたストローク、文字、単語を対応するテキスト行とそれが属する項目(テキスト項目TIまたはリスト項目LI)に割り当てることができる。新しい項目ごとに、新しいインクストロークSK、新しい文字CHなどがその新しい項目に割り当てられる。変更の結果、既存の項目にインクが残っていない場合、項目全体が削除される。
【0166】
ステップS30~S34は、テキスト構造データモデルMLを最新の状態に維持するために複数回繰り返すことができ、それにより、それは、手書き入力INの現在の状態を常に表す。したがって、構造分解分析は、新しいユーザ入力ごとに(つまり、新しいテキスト入力を取得するたびに)段階的に実行できる。
【0167】
図10に示される実施形態では、新しいテキスト手書き認識S32がトリガーされて、ユーザ命令INS1によって変更されたテキストINを認識する。変形例では、ユーザ命令INS1は、テキストの内容を実際に変更することなく(追加、修正、及び/または変更による既存のストロークの変更なし)、操作(テキストリフローまたは前述の再フォーマット変更)を引き起こす。その場合、この方法は、新しいテキスト手書き認識S32を実行することなく、取得ステップS30から更新プロセスS34に進むことができる(図10)。
【0168】
前述のように、テキスト構造データモデルMLは、各テキスト行LNをテキスト項目TIまたはリスト項目LIの一部として定義する。その結果、ユーザ命令INS1に応答してS34で編集が行われると、コンピューティングデバイスDV1は、影響を受けるテキスト行LNのみを処理して、分類を再評価することができる(リスト項目またはテキスト項目の一部として)。影響を受けるテキスト行LNの再処理は、前述のように分類プロセスS8を繰り返す(図5)、またはその他の特定の更新手法(以下で説明する)など、様々な方法で実行できる。マージステップS14がなければ、手書きテキストINに対して編集が実行されるたびにすべてのテキスト行LNを再評価する必要があり、これは時間及び処理の過剰コストにつながる。したがって、この方法のステップS14(図5)で実行されるマージプロセスは、手書きの変更または編集が行われるときに、リスト処理の迅速かつ動的な応答を可能にする。
【0169】
具体的には、上記の更新プロセスS34(図10)を使用することにより、本発明は、ユーザが以前に分類されたリストまたはテキスト項目の一部を変更する可能性のあるデジタルインクに変更を加えるときに動的項目及びインデント決定を可能にする。
【0170】
ここで、更新プロセスS34(図10)を実装する特定の例を以下に説明する。
【0171】
図11Aに示すように、S34(図10)で、ユーザ命令INS1による改変が、先行するテキスト手書き認識のテキスト認識結果に含まれなかった1つ以上の新しいインクストロークSKの認識テキストINへの追加につながることを検出すると(S4またはS32)、コンピューティングデバイスDV1は、テキスト構造データモデルMLの各新しいストロークSKをそれが出現するテキスト行LNに割り当てる。新しいテキスト行LNに現れる新しいインクストロークSKについて、コンピューティングデバイスDV1は、テキスト行LN全体を囲む新しいテキスト項目(例えば、新しい暗黙のテキスト項目)を作成することができる。
【0172】
図11Aに示す例では、テキスト手書き認識S32(図10)の結果として、「mauris」という単語が既存の項目IT1(この場合はテキスト項目TI)に追加され、新しい単語「Ligula」に対して、新しい項目IT2(この場合はテキスト項目TI)が作成される。この例では、項目IT1、IT2に対して(図5を参照して先に説明したような)ステップS10、S12、S14が適用され、その結果、項目IT1の末尾には第2の項目IT2の第1の単語「ligula」を収容できるだけのスペースがあるので、これらの項目IT1、IT2はマージされない。
【0173】
図11Bに示される例では、分割命令(例えば、分割ジェスチャまたはリターンキー入力)は、S30(図10)のユーザ命令INS1として取得される。分割命令INS1は、手書きテキストINのテキスト項目IT2の単語「amet」と「1)」の間の位置で取得されるため、これらの単語の間に改行が発生する。単語「1)」が有効なリスト記号BTを構成することを検出すると、コンピューティングデバイスDV1は、テキスト項目IT2を2つの項目、すなわち、単語「amet」で終わるテキスト項目IT3とリスト記号「1)」で始まるリスト項目IT4とに分割することによって、テキスト構造データモデルMLを更新する。
【0174】
図11Cに示す例では、コンピューティングデバイスDV1は、カーソルがリストの最後にあるときにReturnコマンドが押されたことを検出し、新しいリスト記号「4)」を自動的に作成して、リスト内に新しいリスト項目を作成する。
【0175】
図12図15に示される特定の実施形態では、コンピューティングデバイスDV1は、各テキスト項目TI及び各リスト項目LI(図5の生成ステップS16中、及び図10の更新プロセスS34中)について、テキスト構造データモデルMLに検出ゾーンを定義する。これらの検出ゾーンには、
各テキスト項目TIの開始時に開始部分を定義する開始ゾーンZ1、
各リスト項目LIの先頭に開始部分を定義する箇条書きゾーンZ2、及び、
各項目の末尾に末尾部分を定義するエンドゾーンZ3(リスト項目LIとテキスト項目TI)(またはそれらの任意の組み合わせ)が含まれ得る。
【0176】
これらの検出ゾーンZ1、Z2及び/またはZ3は、認識されたテキストが変更されたときにテキスト構造データモデルMLの更新を容易にするために使用することができ、それにより時間及びリソースのコストを節約し、したがってユーザ体験をさらに改善する。
【0177】
より具体的には、図12は、図6図8の例において、コンピューティングデバイスDV1によって認識及び処理された手書きテキストINを示している。ステップS2~S16(図5)が前述のように実行されたと想定される。したがって、生成されたステップS16において、マージステップS14(図8~、図9)の結果を表すテキスト構造データモデルMLが生成されている。図12に示すように、テキスト構造データモデルMLでは、
テキスト項目ITとして分類された項目IT10及びIT12、
リスト項目LTとして分類された項目IT14、IT16及びIT18、ならびに、
テキスト項目TIとして分類された項目IT20の項目が定義されていると想定される。
【0178】
この例では、生成ステップS16において、コンピューティングデバイスDV1は、
各テキスト項目TIについて、該テキスト項目TIの最初の可視文字CHで始まり、前方に伸びて、開始ゾーンがテキスト項目の末尾に達した場合に、所定の数(例えば、5の数)以下の連続する可視文字CHに達するまで、1つ以上の完全な単語WDを囲む開始ゾーンZ1、及び、
各リスト項目LIについて、該リスト項目LIの予め定義されたリスト記号BTから始まり、該箇条書きゾーンZ2がリスト項目LIの末尾に達した場合、連続した可視文字の予め定義された数(例えば、5の数)以下に達するまで1つ以上の完全な単語WDを囲むように前方に延びる箇条書きゾーンZ2、を定義する。
【0179】
言い換えると、テキスト構造データモデルMLは、各テキスト項目TIに対して(それぞれ各リスト項目LIに対して)開始ゾーンZ1(及びそれぞれ箇条書きゾーンZ2)を定義する。
【0180】
この例では、開始ゾーンと箇条書きゾーンは単一行に制限されている。
【0181】
さらにこの例では、各リスト項目LIの箇条書きゾーンZ2は、リスト記号(そのような可視文字がある場合)を過ぎた(連続した)少なくとも1つの可視文字を含むと見なされる。
【0182】
図12の現在の例に示されているように、コンピューティングデバイスDV1は、テキスト構造データモデルMLで、
項目IT10:開始ゾーンZ1「Etiam」、
項目IT12:開始ゾーンZ1「Vivamus」、
項目IT14:箇条書きゾーンZ2「1. vestibulum」、
項目IT16:箇条書きゾーンZ2「・usce」など、の検出ゾーンを定義する。
【0183】
更新プロセスS34(図10)中に、コンピューティングデバイスDV1は、いわゆる開始ゾーン更新を実行することができ、それにより、各テキスト項目TIの開始ゾーンZ1及び各リスト項目LIの箇条書きゾーンZ2を修正するためにテストする。すなわち、コンピューティングデバイスDV1は、開始ゾーンZ1及び箇条書きゾーンZ2ごとに、そのゾーンの少なくとも1つのインクセグメントSKが削除されたか、または少なくとも1つのインクセグメントSKがそのゾーンに挿入されたか、またはそのゾーンの左に追加されたかどうかをチェックする。より具体的には、更新プロセスS34中、コンピューティングデバイスDV1は、各リスト及びテキスト項目について、ユーザ命令INS1によって引き起こされた改変がその開始ゾーンZ1または箇条書きゾーンZ2を変更するかどうか(条件CD3)、及び/または少なくとも一つの文字CH(またはストロークSK)が該開始ゾーンZ1または箇条書きゾーンZ2より前に追加されるかどうか(条件CD4)を判断してもよい。肯定された場合(すなわち、条件CD3及びCD4の少なくとも一方が満たされた場合)、コンピューティングデバイスDV1は、S34において、ユーザ命令INS1による変更に基づいて、開始ゾーンZ1または箇条書きゾーンZ2を更新し、更新プロセスS34の一部として、パターン検出S10、インデント判定S12及びマージステップS14(図5)を繰り返し、更新後の開始ゾーンZ1または更新後の箇条書きゾーンZ2に基づいて、テキスト構造データモデルMLの更新を図る。そうでない場合(すなわち、条件CD3及びCD4のいずれも満たさない場合)、コンピューティングデバイスDV1は、開始ゾーンZ1または箇条書きゾーンZ2を更新せず、ステップS10~S14を実行せず、単に手書きテキストINの現在の状態を表すようにモデルMLの更新(ブックキーピング)を行うだけである。
【0184】
言い換えると、S34でテキスト構造データモデルが更新される方法(図10)は、開始ゾーンZ1と箇条書きゾーンZ2がユーザ命令INS1によって引き起こされる変更の影響を受けるかどうかの関数として適応され、それによって更新プロセスの効率が向上する。特に、これらのゾーンは、以下でさらに説明するように、リスト項目LIのリスト記号の変化を検出することを可能にし、また、既存のテキスト項目の先頭での新しいリスト記号の作成を検出することを可能にする。
【0185】
図13は、S30で取得したユーザ命令INS1に応答して、テキスト項目IT30、IT32、IT34、IT36、及びIT38の開始ゾーンZ1または箇条書きゾーンZ2に様々な変更(ALと表記)が行われた例を示している(図10)。テキスト手書き認識S32が完了すると、コンピューティングデバイスDV1は更新プロセスS34を実行する。更新プロセス34の一部として、コンピューティングデバイスDV1は、修正のために開始ゾーンZ1及び箇条書きゾーンZ2をテストする。この場合、変更は、
テキスト項目IT30の開始ゾーンZ1の一部が削除される、
テキスト項目IT32の開始ゾーンZ1の最初の文字が上書きされてる、
新しい文字「2」がリスト項目IT34の箇条書きゾーンZ2に挿入される、
リスト項目IT36の箇条書きゾーンZ3のリスト記号BYが消去されている、及び、
テキスト項目IT38)の開始ゾーンZ1の左側に新しい文字「1)」が追加されている、である。
【0186】
上記の各場合において、コンピューティングデバイスD1は、S34において、開始ゾーンZ1または箇条書きゾーンZ2が改変ALによって影響を受けることを検出するので、これらのゾーンを更新し、更新プロセスS34の一部として、修正した項目に対してパターン検出S10、インデント判定S12及びマージステップS14を実行する。その結果、項目IT30とIT32はテキスト項目TIのままであり、項目IT34はリスト項目LI(新しいリスト記号「1.2」)のままであり、リスト項目IT36はテキスト項目として再分類され(前面のリスト記号)、テキスト項目IT38は、リスト記号「1)」で始まるため、リスト項目LIとして再分類される。
【0187】
上記の例では、各テキストとリスト項目の先頭で開始ゾーンZ1と箇条書きゾーンZ2がチェックされ、テキスト構造データモデルMLが更新される。ただし、図14に示すように、テキスト及びリスト項目の第1のテキスト行を過ぎた各テキスト行LNの開始ゾーンZ1で、同様のプロセス(いわゆる箇条書き検出)を実行できる。
【0188】
より具体的には、図5の生成ステップS16中、コンピューティングデバイスDV1は、テキスト構造データモデルMLにおいて、各テキスト項目TI及び各リスト項目LIについて、その第1のテキスト行LNを過ぎた該項目の各テキスト行における最初の可視文字CHから始まり、開始ゾーンZ1がテキスト行末尾に到達した場合、予め定められた数(例えば5の数)以下の連続可視文字CHまで1つ以上の完全な単語を囲むよう前方に延びるそれぞれの開始ゾーンZ1が定義されてもよい。
【0189】
更新プロセスS34(図10)中に、コンピューティングデバイスDV1は、各テキスト項目TI及び各リスト項目LIについて、その第1のテキスト行を過ぎた各テキスト行LNに、S30で取得したユーザ命令INS1に応答して該テキスト行LNの開始ゾーンZ1内または開始ゾーンZ1前に追加された新しいストロークSKがあるかどうかをチェックする。ポジティブチェックされた各テキスト行LN(その開始ゾーンZ1内及び/またはその前に追加された新しいストローク(複数)SK)について、コンピューティングデバイスDV1は、該テキスト行LNがリストの一部であることを示す所定のリスト記号BTによって始まるかどうかを判断する(図5のS10と同様にパターン検出を行うことにより)。肯定的には、コンピューティングデバイスDV1は、対応するテキスト項目TIまたはリスト項目LIを分割して、所定のリスト記号BTで始まる新しいリスト項目LIを作成し、この分割を反映するようにテキスト構造データモデルMLを更新する。図13を参照して前述したように、更新プロセスS34で実行される更新とは逆に、この箇条書き検出プロセスは、追加されたインクセグメントSKにのみ関心がある。
【0190】
例えば、図14は、コンピューティングデバイスDV1が前述のステップS2~S16(図5)を実行した手書きテキストINを示している。テキスト項目IT50はテキスト構造データモデルMLで定義されていると想定され、この項目は連続するテキスト行LN40~LN45を含む。項目IT50の各テキスト行LNのうち、その第1のテキスト行を過ぎたところ(即ち、テキスト行LN41~LN45)の開始ゾーンZ1において上記箇条書き検出を行うことにより、コンピューティングデバイスDV1は、リスト記号BTがテキスト行LN41を開始したことは、単語が削除されているので検出しないが、そのテキスト行LN41の前または開始ゾーンZ1内に新しいインクストロークが付加されていないことは、検出しない。一方、コンピューティングデバイスDV1は、テキスト行LN44、LN45の開始ゾーンZ1の前または範囲内に新たなストロークSKが追加されたこと(すなわち、テキスト行LN44、LN45の先頭にそれぞれ「コン」「-」という文字が追加されたこと)を検出する。したがって、コンピューティングデバイスDV1は、パターンマッチングを行うことにより、テキスト行LN44、LN45に任意のリスト記号BTがあるかどうかをチェックする(パターン検出S10、図5と同様)。図14(右側)に示すように、コンピューティングデバイスDV1は、テキスト行LN45の先頭にリスト記号BT「-」の存在を検出し、したがって、リスト記号「-」で始まる新しいリスト項目IT54を作成し、テキスト項目IT50-ここではIT52と呼ばれる-を更新して、ここでは単語「neculae」で終了するようにして、テキスト項目IT50を2項目IT52及びIT54に分割する。テキスト構造データモデルMLは、これらの変更を反映するためにS34で適宜更新される。
【0191】
特定の例では、箇条書き検出は、少なくとも1つのインクストロークSKの追加を検出することに応答して、テキストまたはリスト項目の任意の部分で実行することができる。この例では、更新プロセスS34(図10)中に、コンピューティングデバイスDV1は、S30で取得したユーザ命令INS1に応答して、テキスト項目またはリスト項目のテキスト行LN内に追加された少なくとも1つのストロークSKを検出することと、該テキスト行LNがリストの一部であることを示す所定のリスト記号BTで始まるかどうかを判定すること(図5のS10と同様にパターン検出を実行する)と、肯定されると、該当テキスト項目またはリスト項目を分割して新しいリスト項目ITとし、テキスト構造データモデルMLを更新してこの分割を反映させることと、を実行する。
【0192】
上記の例では、開始ゾーンZ1を使用して、ユーザ命令INS1を受信したときの更新プロセスの効率を向上させる。同様の更新プロセスは、各テキスト及びリスト項目のエンドゾーンZ3に基づいて実行できる。
【0193】
図12に示される特定の例では、S16(図5)でテキスト構造データモデルMLを生成するとき、コンピューティングデバイスDV1は、テキスト及びリスト項目ごとに、1つ以上の完全な単語WDを囲んで該項目の最後の可視文字CHから後方に、該エンドゾーンZ3が該項目の先頭に到達する場合には、連続する可視文字CHの予め定められた数(例えば、5の数)以下に達するまで延びるエンドゾーンZ3を定義する。
【0194】
図12の現在の例に示されているように、コンピューティングデバイスDV1は、テキスト構造データモデルMLで、
項目IT10:エンドゾーンZ3「Nam.」、
項目IT12:エンドゾーンZ3「donec.」、
項目IT14:エンドゾーンZ3「auctor.」、
項目IT16:エンドゾーンZ3「velit.」など、の検出ゾーンを定義する。
【0195】
更新プロセスS34(図10)中に、コンピューティングデバイスDV1は、いわゆる項目マージを実行することができ、それにより、各項目IT10~IT20について、ユーザ命令INS1によって引き起こされた変更がそのエンドゾーンZ3を変更するかどうか、及び/またはエンドゾーンZ3の後に少なくとも1つのストロークSKが追加されるかを決定し、肯定的には、変更に基づいて該エンドゾーンZ3を更新し、更新されたエンドゾーンZ3に基づいて、前述のように該マージステップS14(図5)を繰り返して、テキスト構造データモデルMLを更新する。
【0196】
コンピューティングデバイスDV1は、更新プロセスS34を実行するときに、開始ゾーンZ1及び箇条書きゾーンZ2のみ、または、代替的には、エンドゾーンZ3のみを使用するように構成することができる(図10)。
【0197】
開始ゾーンZ1、箇条書きゾーンZ2、及びエンドゾーンZ3を使用すると、コンピューティングデバイスDV1は、テキスト行LNの主要部分で発生する変更に集中できるため、構造データモデルMLの更新に必要な計算量が抑制される。
【0198】
システムは各項目の先頭と末尾に焦点を合わせ、それに応じてテキスト構造データモデルを更新する方法を適応させることができるため、効率が向上し、時間とリソースが節約される。
【0199】
ここで、特定の実施形態に係る更新プロセスS34(図10)を、図15を参照して説明する。更新プロセスS34は、テキストINに変更を引き起こすユーザ命令INS1を取得すると、(例えば、図8に示されるように)手書きテキストINに対して実行されると想定される。
【0200】
ステップS40において、コンピューティングデバイスDV1は、各リスト項目LI及びテキスト項目TIを更新して、任意の削除されたインクセグメントSK(すなわち、削除された任意の文字CH及び単語WD)への参照を削除する。項目にインクが残っていない場合は、削除される。
【0201】
ステップS42において、任意の新しいインクセグメントSK(すなわち、任意の新しい文字CH及び単語WD)が、テキスト構造データモデルMLに追加される。各項目について、その項目のテキスト行LNに表示される新しいインクセグメントSKは、その項目に割り当てられる。新しいテキスト行LNに表示される新しいインクセグメントINKの場合、テキスト行全体を囲む新しいテキスト項目(新しい暗黙のテキスト項目など)が作成される。
【0202】
ステップS44において、各テキスト項目TIの開始ゾーンZ1及び各リスト項目LIの箇条書きゾーンZ2は、変更についてテストされ、テキスト構造データモデルMLは、図12図13を参照して前述したように開始ゾーン更新を実行することによって更新される。
【0203】
ステップS46において、各テキスト及びリスト項目の最初のテキスト行を過ぎたテキスト行は、追加されたインクセグメントについてテストされ、テキスト構造データモデルMLは、図14を参照して前述したように箇条書き検出を実行することによって更新される。
【0204】
ステップS48において、各テキスト及びリスト項目のエンドゾーンZ3は、変更についてテストされ、テキスト構造データモデルMLは、図5及び図10を参照して前述したように項目マージを実行することによって更新される。
【0205】
ステップS40~S48を連続して実行することにより、テキスト構造データモデルMLを効率的に更新することができ、それにより、それは常に手書き入力の現在の状態を表す。
【0206】
特定の例では、既存の項目を2つの別個の項目に分割するためのユーザ命令INS1(図10)として受信した分割コマンド(分割ジェスチャなど)に応答して、
分割コマンドでテキスト行の先頭位置または末尾位置に分割位置を指定した場合、その分割位置に空行が挿入され、
分割コマンドがテキスト行内の分割位置を指定する場合、更新プロセスは、
分割位置でテキスト行を、該既存の項目を分割することから得られた第1の項目及び第2の項目にそれぞれ属する第1のテキスト行及び第2のテキスト行に分割することと、
第2のテキスト行が、該第2のテキスト行がリストの一部であることを示す所定のリスト記号で始まるかどうかを判定することと、
肯定の場合、第2の項目をリスト項目として分類し、それ以外のでは、第2の項目をテキスト項目として分類することと、を含む。
【0207】
特定の例では、2つの別個の項目を一緒に結合するためのユーザ命令INS1に応答してのみ、更新プロセスS34(図10)中に2つの連続する項目が同じ項目にマージされる。2つの項目が連続している場合、それらは、明示的な結合命令に応答してのみ、更新プロセスS34中にマージされる。
【0208】
いくつかの代替的な実装では、ブロックに記された機能は、図に記された順序とは無関係に発生する可能性があることに留意されたい。例えば、連続して表示される2つのブロックは、実際には実質的に同時に実行されることもあり、関係する機能に応じて、ブロックが逆の順序で実行されることもあり、別の順序で実行されることもある。
【0209】
明確に説明されていないが、本実施形態は、それらの任意の組み合わせまたはサブ組み合わせで使用することができる。
【0210】
本開示は、特定の実施形態で説明されてきたが、当業者の能力の範囲内で、発明能力を発揮することなく、多数の修正及び実施形態に影響を受け得ることは明らかである。したがって、本発明の範囲は、以下の特許請求の範囲により定義される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11A
図11B
図11C
図12
図13
図14
図15