识别器 Lattice 结构

为与 Windows Vista 和 Windows XP Tablet PC Edition 一起使用而创建的识别器使用一组结构(每个结构称为一个格子)将识别结果传递回平板电脑平台库。 然后,平板电脑平台将这些结构中的信息复制到 IInkRecognitionResult 对象、 IInkRecognitionAlternates 集合和 IInkRecognitionAlternate 对象中。

当平台在 HRECOCONTEXT 句柄上调用 GetLatticePtr 函数时,识别器应返回指向格子的指针。

本部分详细介绍了格子结构。 有关识别器和相关概念的概述,请参阅 关于手写识别

需要一个格子

识别器可能会找到多种方法将一组墨迹笔划分解为识别段。 识别器用作识别段的内容取决于识别器的类型。 英语识别器通常使用字词作为识别段。 其他识别器可能会使用字符、形状或手势作为识别段。 格结构的灵活性允许对大量可在复杂关系中组合的识别结果进行逻辑管理。

在内部,识别器使用格子来保存给定墨迹的基本识别单位。 格子还保留组合结果的分数或置信度。 此外,格子存储段到原始墨迹笔划的映射。

Lattice 结构在 RecTypes.h 头文件中定义。 格结构包括以下结构:

Lattice 组件

以下示例使用单词“together”的笔划,如下图所示。 在示例中,段的计算结果为一个或多个单词。 这些数字表示正在计算的段中的各个笔划。 请注意,每个“t”字符都包含两个笔划。

“在一起”一词的笔划

一个格子由一个或多个列组成,每个列对应一个段。 每列又包含一个或多个元素。 元素包含离散识别备用项。 有关列的详细信息,请参阅 RECO_LATTICE_COLUMN 结构。 有关元素的详细信息,请参阅 RECO_LATTICE_ELEMENT 结构。

在评估上一示例中所示的墨迹样本时,识别器可能会返回单个段。 在本例中,格子包含具有单个元素的单个列。

当识别器评估墨迹样本并为每个段提供多个段和多个备用项时,会出现更复杂的示例。

即使对于少量墨迹样本,识别备用项的数量也可能令人吃惊。 例如,“t o g e t h e r”可产生以下结果:

  • “去找她” (每个单词的替换词)
  • “to gather” (以及每个单词) 的备用项
  • “得到她” (加上每个单词的替换)
  • “在一起” (加上单词) 的替代项

在这种情况下,识别器可能会创建以下格子结构。

单词“在一起”的格子结构

注意

每个列共享相同的笔划顺序,因为它们都引用相同的 InkStrokes 集合。