Win32 API 日本語リファレンス
ホームUI.TabletPC › IInkRecognitionAlternate

IInkRecognitionAlternate

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDb7e660ad-77e4-429b-adda-873780d1fc4a継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

認識エンジンの辞書と照合されたインクのセグメントについて、一致する可能性のある単語の候補を表します。

解説(Remarks)

認識セグメントとは、認識エンジンが既知の InkDisp オブジェクトに対する認識結果を生成するために内部的に使用する、基本的なインクの断片または単位です。セグメントは通常、間隔によって決定され、可能な限り小さなインクの断片に分割されます。

インクによっては、セグメント間の区切りが曖昧になる場合があります。これらのセグメントは認識エンジンの辞書と照合され、一致する可能性のある候補 (代替候補) が判定されます。セグメントを照合すると、認識エンジンは可能性のある代替候補の一覧を作成し、それぞれに信頼度レベルを割り当てて、最有力の候補を選択します。

たとえば、「how are you」というフレーズを考えてみます。このフレーズは (セグメント間の間隔にもよりますが) 通常、単語ごとに 3 つのセグメントに分割されます。

各セグメントが認識されると、RecognitionResult が作成されます。そして各結果は、選択可能な代替候補の一覧を返します。たとえば、セグメント「how」には「how」、「now」、「new」などの代替候補があり、「how」が最有力の代替候補となります。既定では、各セグメントについて最有力の代替候補が返されます。最有力以外の代替候補を返すように選択することもできます。

また、認識結果の信頼度レベルや、代替候補が現れる行番号など、代替候補のプロパティに基づいて代替候補を返すこともできます。認識プロパティの一覧については、RecognitionProperty オブジェクトを参照してください。

代替候補に対する代替候補を返すこともできます。

すべての認識エンジンが上記のプロパティをすべて設定するわけではありません。認識エンジンが設定していないプロパティにアプリケーションがアクセスしようとすると、引数の例外がスローされます。

このインターフェイスを実装するクラスを定義した場合、その新しいクラスは Tablet PC のアプリケーション プログラミング インターフェイス (API) と正しく連携しません。

メソッド 15

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get_String(LPWSTR* RecoString)

代替候補の最有力の文字列を取得します。

RecoStringLPWSTR*outこの代替候補の認識文字列を受け取るポインタである。
vtbl 8 HRESULT get_Confidence(InkRecognitionConfidence* Confidence)

IInkRecognitionAlternate オブジェクトまたはジェスチャの認識に対して、認識エンジンが持つ信頼度のレベル (strong、intermediate、poor) を取得します。(IInkRecognitionAlternate.get_Confidence)

ConfidenceInkRecognitionConfidence*outこの代替候補の認識信頼度(強・中・弱)を受け取る InkRecognitionConfidence へのポインタである。

解説(Remarks)

返される可能性のある信頼度の値の一覧については、InkRecognitionConfidence 列挙型を参照してください。

Note 現在のリリースの Windows XP Tablet PC Edition では、すべてのジェスチャ認識エンジンで信頼度の評価を利用できます。

IInkRecognitionAlternate Interface オブジェクトの場合:

代替候補がフレーズまたは文を表す場合、この値はそのフレーズまたは文に含まれる認識セグメントのうち、最も低い信頼度レベルを表します。一方、代替候補が単語を表す場合、この値はその単語の信頼度レベルを表します。

Note IInkRecognitionAlternate Interface を生成した IInkRecognizer Interface が信頼度レベルをサポートしていない場合、このプロパティは例外をスローします。
Microsoft の認識エンジンのうち、信頼度レベルをサポートしているのは Microsoft English (US) Handwriting Recognizer と Microsoft Gesture Recognizer のみです。サードパーティ製の認識エンジンは、信頼度レベルをサポートする場合もしない場合もあります。
vtbl 9 HRESULT get_Baseline(VARIANT* Baseline)

1 行のテキストを表す IInkRecognitionAlternate オブジェクトのベースラインを取得します。

BaselineVARIANT*out認識された文字のベースラインを表す点配列を受け取る VARIANT へのポインタである。

解説(Remarks)

ベースラインとは、ディセンダーを除く各文字の下端が揃えられる仮想的な水平線です。これは x ハイトの下端にも対応します。

Note

認識代替候補が 1 行のテキスト内で複数の認識セグメントにまたがる場合、このプロパティは、代替候補内の最初のセグメントのベースラインの始点から、最後のセグメントのベースラインの終点までを結ぶ線を返します。

propertyType パラメーターに Segmentation 認識プロパティのグローバル一意識別子 (GUID) を指定して AlternatesWithConstantPropertyValues メソッドを使用すると、元の代替候補のセグメント分割に対応する、1 セグメントの認識代替候補のコレクションを取得できます。

Note 認識代替候補が複数の行にまたがる場合、このプロパティは E_FAIL エラーを生成します。LineAlternates プロパティを使用すると、複数行の認識代替候補に対応する、1 行ごとの認識代替候補のコレクションを取得できます。
vtbl 10 HRESULT get_Midline(VARIANT* Midline)

1 行のテキストを表す IInkRecognitionAlternate オブジェクトのミッドラインを取得します。

MidlineVARIANT*out認識された文字のミッドライン(中線)を表す点配列を受け取る VARIANT へのポインタである。

解説(Remarks)

ミッドラインとは、アセンダーを除く各文字の本体部分の上端が揃えられる仮想的な水平線に対応します。ミッドラインは x ハイトの上端にも対応します。

Note

認識代替候補が 1 行のテキスト内で複数の認識セグメントにまたがる場合、このプロパティは、その代替候補のベースラインと平行な線を返します。ベースラインからミッドラインまでの距離は、最初のセグメント内における対応する距離によって決定されます。

propertyType パラメーターに Segmentation 認識プロパティのグローバル一意識別子 (GUID) を指定して AlternatesWithConstantPropertyValues メソッドを使用すると、元の代替候補のセグメント分割に対応する、1 セグメントの認識代替候補のコレクションを取得できます。

Note 認識代替候補が複数の行にまたがる場合、このプロパティは E_FAIL エラーを生成します。LineAlternates プロパティを使用すると、複数行の認識代替候補に対応する、1 行ごとの認識代替候補のコレクションを取得できます。
vtbl 11 HRESULT get_Ascender(VARIANT* Ascender)

1 行のテキストを表す IInkRecognitionAlternate オブジェクトのアセンダー ラインを取得します。

AscenderVARIANT*out認識された文字のアセンダー線を表す点配列を受け取る VARIANT へのポインタである。

解説(Remarks)

欧米の言語では、アセンダーは小文字の本体部分 (ミッドラインまたは x ハイト) より上に伸びる部分に相当します。たとえば「b」の縦線のうち、その文字の丸い部分の最上部より上に伸びる部分です。アセンダー ラインとは、これらのアセンダーの上端を横切る仮想的な水平線です。

Note 認識代替候補が 1 行のテキスト内で複数の認識セグメントにまたがる場合、このプロパティは、その代替候補のベースラインと平行な線を返します。ベースラインからアセンダー ラインまでの距離は、最初のセグメント内における対応する距離によって決定されます。propertyType パラメーターに Segmentation 認識プロパティのグローバル一意識別子 (GUID) を指定して AlternatesWithConstantPropertyValues メソッドを使用すると、元の代替候補のセグメント分割に対応する、1 セグメントの認識代替候補のコレクションを取得できます。
Note 認識代替候補が複数の行にまたがる場合、このプロパティは E_FAIL エラーを生成します。LineAlternates プロパティを使用すると、複数行の認識代替候補に対応する、1 行ごとの認識代替候補のコレクションを取得できます。
vtbl 12 HRESULT get_Descender(VARIANT* Descender)

1 行のテキストを表す IInkRecognitionAlternate オブジェクトのディセンダー ラインを取得します。

DescenderVARIANT*out認識された文字のディセンダー線を表す点配列を受け取る VARIANT へのポインタである。

解説(Remarks)

欧米の言語では、ディセンダーは小文字のうちベースラインより下に伸びる部分に相当します。たとえば「p」の縦線のうち、その文字の丸い部分の最下部より下に伸びる部分です。ディセンダー ラインとは、これらのディセンダーの下端を横切る仮想的な水平線です。

Note

認識代替候補が 1 行のテキスト内で複数の認識セグメントにまたがる場合、このプロパティは、その代替候補のベースラインと平行な線を返します。ベースラインからディセンダー ラインまでの距離は、最初のセグメント内における対応する距離によって決定されます。

propertyType パラメーターに Segmentation 認識プロパティのグローバル一意識別子 (GUID) を指定して AlternatesWithConstantPropertyValues メソッドを使用すると、元の代替候補のセグメント分割に対応する、1 セグメントの認識代替候補のコレクションを取得できます。

Note 認識代替候補が複数の行にまたがる場合、このプロパティは E_FAIL エラーを生成します。LineAlternates プロパティを使用すると、複数行の認識代替候補に対応する、1 行ごとの認識代替候補のコレクションを取得できます。
vtbl 13 HRESULT get_LineNumber(INT* LineNumber)

代替候補を構成するインクの行番号を取得します。

LineNumberINT*outこの代替候補が属する行番号を受け取るポインタである。

解説(Remarks)

行番号は 1 から始まります。

Note Recognizer オブジェクトは、行間隔に関するメトリックを自動的に決定します。
vtbl 14 HRESULT get_Strokes(IInkStrokes** Strokes)

オブジェクトに含まれる、またはオブジェクトの作成に使用されたストロークのコレクションを取得します。(IInkRecognitionAlternate.get_Strokes)

StrokesIInkStrokes**outこの代替候補に対応するストローク コレクションを受け取るポインタである。

解説(Remarks)

このストロークのコレクションは、InkDisp オブジェクトに含まれるストロークのコピーである場合と、そのオブジェクトまたはコレクションの作成に使用されたストロークである場合があります。

Note InkDisp オブジェクトの Strokes プロパティは、InkDisp オブジェクトが実際に操作しているコレクションではなく、そのコピーを返します。つまり、このコレクションにストロークを追加または削除しても、InkDisp オブジェクトのストロークには影響しません。ストロークを追加または削除するには、AddStrokesAtRectangleDeleteStrokeDeleteStrokes などの InkDisp のメソッドを使用してください。ただし、コレクション内の各ストロークは、元の IInkStrokeDisp オブジェクトへの参照です。
vtbl 15 HRESULT get_LineAlternates(IInkRecognitionAlternates** LineAlternates)

コレクション内の各代替候補がそれぞれ別々の行に存在する、IInkRecognitionAlternates コレクションを取得します。

LineAlternatesIInkRecognitionAlternates**out行単位での代替候補のコレクションを受け取るポインタである。

解説(Remarks)

インクの段落に対する認識代替候補がある場合、LineAlternates プロパティを使用すると、各代替候補が段落の 1 行を表す認識代替候補のコレクションを取得できます。

このプロパティは、propertyType パラメーターに RecognitionProperty 定数の LineNumber の値を指定して AlternatesWithConstantPropertyValues メソッドを呼び出す代わりに使用できます。代替候補のプロパティの詳細については、RecognitionProperty 定数を参照してください。

Note IInkRecognizer オブジェクトは、インクを描画する際に行のメトリックを自動的に決定します。
vtbl 16 HRESULT get_ConfidenceAlternates(IInkRecognitionAlternates** ConfidenceAlternates)

コレクション内の各代替候補が、同じプロパティ値を持つセグメントで構成される代替候補のコレクションを取得します。

ConfidenceAlternatesIInkRecognitionAlternates**out信頼度の境界ごとにグループ化された代替候補のコレクションを受け取るポインタである。

解説(Remarks)

このプロパティは、AlternatesWithConstantPropertyValues メソッドの代わりに使用できます。代替候補のプロパティの詳細については、RecognitionProperty 定数を参照してください。

vtbl 17 HRESULT GetStrokesFromStrokeRanges(IInkStrokes* Strokes, IInkStrokes** GetStrokesFromStrokeRanges)

既知の入力 InkStrokes コレクションを含み、かつ IInkRecognizer オブジェクトが代替候補を提供できる、最小の InkStrokes コレクションを取得します。

StrokesIInkStrokes*inoptionalこのコレクションを含む認識結果の代替候補について、最小のストローク コレクションを検索するために使用するストローク オブジェクトのコレクション。
GetStrokesFromStrokeRangesIInkStrokes**outこのメソッドから制御が戻るときに、既知の入力ストローク コレクションを含み、かつ認識エンジンが代替候補を提供できる最小のストローク コレクションへのポインターが格納されます。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_POINTER
パラメーターに無効なポインターが含まれていました。
E_INK_EXCEPTION
メソッド内で例外が発生しました。
E_INK_MISMATCHED_INK_OBJECT
strokes パラメーターが別の Ink オブジェクトに関連付けられています。
E_FAIL
原因不明のエラーが発生しました。

解説(Remarks)

返されるコレクションは入力コレクションと一致する場合もありますが、入力されたすべてのストロークを含む最小の認識結果の一部にしか入力コレクションが一致しない場合には、それより大きくなることがあります。

このメソッドは、シングル クリックによる単語の選択に最も役立ちます。たとえば、クリックした単語を構成するストロークを返すには、ストロークをクリックし、IInkStrokeDisp オブジェクトの HitTest メソッドを呼び出してクリックされたストロークを取得し、その後 GetStrokesFromStrokeRanges を呼び出します。

ストローク範囲は、InkDisp オブジェクトが変更されるまで有効です。

vtbl 18 HRESULT GetStrokesFromTextRange(INT* selectionStart, INT* selectionLength, IInkStrokes** GetStrokesFromTextRange)

代替候補内の指定した文字範囲を含む、最小の認識セグメントの集合に対応するコレクションを取得します。

selectionStartINT*inoutこの代替候補内における文字範囲の開始位置。selectionStart の位置にある文字は、認識されたテキストの範囲に含まれます。このパラメーターは、入力された選択範囲を含む 1 つ以上のセグメントからなる最小の認識単位の先頭に調整されます。selectionStart パラメーターは、認識代替候補のテキスト内の文字に対する 0 から始まるインデックスです。
selectionLengthINT*inout代替候補内における文字範囲の長さ。このパラメーターは 0 より大きい値である必要があります。このパラメーターは、入力された選択範囲を含む 1 つ以上のセグメントからなる最小の集合の長さに調整されます。
GetStrokesFromTextRangeIInkStrokes**outこのメソッドから制御が戻るときに、既知の認識テキスト範囲に対応するストロークのコレクションへのポインターが格納されます。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_POINTER
パラメーターに無効なポインターが含まれていました。
E_INK_EXCEPTION
メソッド内で例外が発生しました。
E_FAIL
原因不明のエラーが発生しました。
E_OUTOFMEMORY
ストローク ハンドラーのヘルパー オブジェクトを割り当てられません。

解説(Remarks)

GetStrokesFromTextRange についてさらに説明するために、認識済みのストロークのコレクションがあり、それらのストロークに対する最有力の代替候補が「how are you」である場合を考えます。このメソッドに渡すパラメーターは、この文字列結果内の一部 (場合によっては全体) の範囲です。この代替候補は 5 つのセグメント (単語ごとに 1 つ、スペースごとに 1 つ) で構成されます。返されるストロークは、入力範囲全体を含む最小のセグメントの集合に対応します。selectionStart パラメーターが 0、selectionLength パラメーターが 5 で、結果文字列の「how a」に相当する範囲を作成した場合、返されるストロークは「how are」というセグメントを構成する認識済みストロークのすべてになります。これが、入力範囲を含む最小のセグメントの集合だからです。

単語ベースの認識エンジンでも文字ベースの認識エンジンでも、スペースは 1 文字として数えられます。入力された選択範囲がスペース文字に相当する場合、このメソッドは空の InkStrokes コレクションを返します。

vtbl 19 HRESULT GetTextRangeFromStrokes(IInkStrokes* Strokes, INT* selectionStart, INT* selectionLength)

既知の InkStrokes コレクションを含む代替候補を認識エンジンが返せる、認識済みテキストの最小の範囲を取得します。

StrokesIInkStrokes*inoptionalそれを含む代替候補を検索する対象となるストロークのコレクション。
selectionStartINT*inoutこのメソッドを呼び出した代替候補オブジェクト内において、渡されたストロークを含む最小の代替候補に一致する、認識済みテキスト範囲の開始位置。
selectionLengthINT*inoutこのメソッドから制御が戻るときに、渡されたストロークを含む最小の代替候補の認識済みテキスト範囲内における、テキストの長さが格納されます。

戻り値

成功した場合は S_OK を返します。それ以外の場合は HRESULT のエラー コードを返します。

解説(Remarks)

指定したストロークの範囲に対応するテキストを取得するには、このメソッドを使用します。たとえば、9 本のストローク (文字ごとに 1 本、単語ごとに 3 本) で描かれた「how are you」というストロークのコレクションを考えます。6 番目と 7 番目のストローク (文字「e」と「y」に相当) からなるコレクションを渡すと、返されるテキスト範囲は「are you」を含む代替候補に一致し、選択の開始位置と長さもこの部分文字列に一致します。

vtbl 20 HRESULT AlternatesWithConstantPropertyValues(LPWSTR PropertyType, IInkRecognitionAlternates** AlternatesWithConstantPropertyValues)

このメソッドを呼び出した IInkRecognitionAlternate オブジェクトを分割した結果である、IInkRecognitionAlternates コレクションを取得します。

PropertyTypeLPWSTRin

プロパティを識別する文字列値を指定します。使用できるプロパティの一覧については、RecognitionProperty を参照してください。

BSTR データ型の詳細については、Using the COM Library を参照してください。

AlternatesWithConstantPropertyValuesIInkRecognitionAlternates**outこのメソッドから制御が戻るときに、このメソッドを呼び出した代替候補を分割して構成された IInkRecognitionAlternates コレクションが格納されます。コレクション内の各 IInkRecognitionAlternate オブジェクトには、propertyType パラメーターに指定したプロパティの値が同一である、隣接した認識セグメントが含まれます。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_POINTER
パラメーターに無効なポインターが含まれていました。
E_INVALIDARG
認識範囲が無効です。
E_INK_EXCEPTION
処理中に例外が発生しました。
E_OUTOFMEMORY
操作を完了するためのメモリを割り当てられません。

解説(Remarks)

コレクション内の各代替候補には、メソッドに渡したプロパティの値が同一である、隣接した認識セグメントが含まれます。

たとえば、次のような基準で元の代替候補を分割した代替候補を返すことができます。

プロパティの種類の完全な一覧については、RecognitionProperty を参照してください。
Note ストロークを認識セグメントに分割する方法は、認識エンジンが決定します。スペースなど一部の認識セグメントは、空の InkStrokes コレクションに対応することがあります。
Note 認識セグメントの順序は認識エンジンが決定します。そのため、隣接する認識セグメントは、インクが描かれた順序に基づく場合もあれば、左から右、上から下といった位置に基づく場合もあります。
ConfidenceAlternates プロパティは AlternatesWithConstantPropertyValues メソッドの代わりに使用でき、この場合、返される認識代替候補コレクション内の代替候補を分割する RecognitionProperty は ConfidenceLevel です。

LineAlternates プロパティは AlternatesWithConstantPropertyValues メソッドの代わりに使用でき、この場合、返される認識代替候補コレクション内の代替候補を分割する RecognitionProperty は LineNumber です。

Note IInkRecognitionAlternate オブジェクトの AlternatesWithConstantPropertyValues メソッド、LineAlternates プロパティ、ConfidenceAlternates プロパティは、IInkRecognitionResult オブジェクトの AlternatesFromSelection メソッドとは動作が異なります。AlternatesFromSelection は、要求された認識結果のセグメントに対する代替候補のコレクションを返します。
vtbl 21 HRESULT GetPropertyValue(LPWSTR PropertyType, VARIANT* PropertyValue)

代替候補の指定したプロパティの値を取得します。

PropertyTypeLPWSTRin

返す代替候補のプロパティを、RecognitionProperty オブジェクトの GUID のいずれかで指定します。

BSTR データ型の詳細については、Using the COM Library を参照してください。

PropertyValueVARIANT*out

制御が戻るときに、プロパティの種類の値がバイト配列として格納されます。この値の解釈は、プロパティの種類ごとに異なります。

RecognitionProperty の種類 説明
ConfidenceLevel
CONFIDENCE_LEVEL 列挙型。
HotPoint
POINT。
LineMetrics
LATTICE_METRICS 構造体。
LineNumber
ULONG。
MaximumStrokeCount
使用されません。
PointsPerInch
使用されません。
Segmentation
値ではありません。TPC_E_INVALID_PROPERTY を返します。
S_OK
成功しました。

VARIANT 構造体の詳細については、Using the COM Library を参照してください。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

戻り値 説明
E_INK_EXCEPTION
処理中に例外が発生しました。
E_POINTER
パラメーターに無効なポインターが含まれていました。
CO_E_CLASSSTRING
GUID の形式が無効です。
E_FAIL
原因不明のエラーが発生しました。
E_INVALIDARG
フラグが無効です。
E_OUTOFMEMORY
操作を完了するためのメモリを割り当てられません。

解説(Remarks)

Confidence プロパティや LineNumber プロパティのような対応するヘルパー プロパティが用意されていない RecognitionProperty オブジェクトのプロパティ値を取得するには、このメソッドを使用します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IInkRecognitionAlternate "{B7E660AD-77E4-429B-ADDA-873780D1FC4A}"
#usecom global IInkRecognitionAlternate IID_IInkRecognitionAlternate "{}"
#comfunc global IInkRecognitionAlternate_get_String                            7 var
#comfunc global IInkRecognitionAlternate_get_Confidence                        8 var
#comfunc global IInkRecognitionAlternate_get_Baseline                          9 var
#comfunc global IInkRecognitionAlternate_get_Midline                           10 var
#comfunc global IInkRecognitionAlternate_get_Ascender                          11 var
#comfunc global IInkRecognitionAlternate_get_Descender                         12 var
#comfunc global IInkRecognitionAlternate_get_LineNumber                        13 var
#comfunc global IInkRecognitionAlternate_get_Strokes                           14 sptr
#comfunc global IInkRecognitionAlternate_get_LineAlternates                    15 sptr
#comfunc global IInkRecognitionAlternate_get_ConfidenceAlternates              16 sptr
#comfunc global IInkRecognitionAlternate_GetStrokesFromStrokeRanges            17 sptr,sptr
#comfunc global IInkRecognitionAlternate_GetStrokesFromTextRange               18 var,var,sptr
#comfunc global IInkRecognitionAlternate_GetTextRangeFromStrokes               19 sptr,var,var
#comfunc global IInkRecognitionAlternate_AlternatesWithConstantPropertyValues  20 wstr,sptr
#comfunc global IInkRecognitionAlternate_GetPropertyValue                      21 wstr,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。