次の方法で共有


認識エンジンの格子構造

Windows Vista および Windows XP Tablet PC Edition で使用するために作成された認識エンジンでは、認識結果をタブレット PC プラットフォーム ライブラリに返すために、それぞれが格子と呼ばれる一連の構造体を使用します。 その後、Tablet PC プラットフォームは、これらの構造体の情報を IInkRecognitionResult オブジェクト、 IInkRecognitionAlternates コレクション、および IInkRecognitionAlternate オブジェクトにコピーします。

プラットフォームが HRECOCONTEXT ハンドルで GetLatticePtr 関数を呼び出すときに、認識エンジンによって格子へのポインターが返される必要があります。

ここでは、格子構造について詳しく説明します。 認識エンジンと関連する概念の概要については、「 手書き認識について」を参照してください。

格子の必要性

認識エンジンは、一連のインク ストロークを認識セグメントに分割するいくつかの方法を見つけることができます。 認識エンジンが認識セグメントとして使用するものは、認識エンジンの種類によって異なります。 英語認識エンジンは、通常、認識セグメントとして単語を使用します。 他の認識エンジンは、認識セグメントとして文字、図形、またはジェスチャを使用する場合があります。 格子構造の柔軟性により、複雑な関係で組み合わせることができる多数の認識結果を論理的に管理できます。

内部的には、認識エンジンは格子を使用して、特定のインクの基本的な認識単位を保持します。 格子は、結合された結果のスコア (信頼度) も保持します。 さらに、格子には、元のインク ストロークへのセグメントのマッピングが格納されます。

格子構造は RecTypes.h ヘッダー ファイルで定義されます。 格子構造には、次の構造が含まれます。

格子コンポーネント

次の例では、次の図に示すように、"together" という単語のストロークを使用します。 例では、セグメントは 1 つ以上の単語として評価されます。 数値は、評価対象のセグメント内の個々のストロークを表します。 各 "t" 文字には 2 つのストロークが含まれていることに注意してください。

格子は、セグメントごとに 1 つ以上の列で構成されます。 各列には、1 つ以上の要素が含まれます。 要素は、個別の認識代替を保持します。 列の詳細については、「 RECO_LATTICE_COLUMN 構造体」を参照してください。 要素の詳細については、RECO_LATTICE_ELEMENT構造体に関する ページを 参照してください。

認識エンジンは、前の例で示したインク サンプルを評価するときに 1 つのセグメントを返す場合があります。 この場合、格子には単一の要素を持つ単一の列が含まれています。

より複雑な例は、認識エンジンがインク サンプルを評価し、セグメントごとに複数のセグメントと複数の代替を考え出すときに、それ自体を示します。

認識代替の数は、小さなインク サンプルの場合でも、千鳥状になる場合があります。 たとえば、"t o g e t h e r" は次の結果を生成できます。

  • "彼女を取得する" (各単語の代替候補)
  • "集める" (各単語の代替候補)
  • "to got her" (プラス各単語の代替)
  • "together" (単語の代替候補)

この場合、認識エンジンによって次の格子構造が作成される場合があります。

注意

各列は、すべて同じ InkStrokes コレクションを参照するため、同じストローク順序を共有します。