识别器格子结构
创建用于 Windows Vista 和 Windows XP Tablet PC Edition 的识别器使用一组结构,每个结构称为格子,用于将识别结果传回平板电脑平台库。 然后,平板电脑平台将这些结构中的信息复制到 IInkRecognitionResult 对象、IInkRecognitionAlternates 集合以及 IInkRecognitionAlternate 对象。
当平台调用 HRECOCONTEXT 句柄上的 GetLatticePtr 函数时,识别器应返回指向格子的指针。
本部分详细介绍了格子结构。 有关识别器和相关概念的概述,请参阅 关于手写识别。
需要一个格子
识别器可能通过多种方式将一组墨迹笔划分解为识别段。 识别器用作识别段的内容取决于识别器的类型。 英语识别器通常使用单词作为识别段。 其他识别器可能使用字符、形状或手势作为识别段。 格子结构的灵活性允许逻辑管理大量可在复杂关系中组合的识别结果。
在内部,识别器使用格子来保存给定墨迹的基本识别单位。 格子还保留组合结果的分数或置信度。 此外,格子存储段与原始墨迹笔划的映射。
格子结构在 RecTypes.h 头文件中定义。 格子结构包括以下结构:
Lattice 组件
以下示例使用“一起”一词的笔划,如下图所示。 在示例中,段的计算结果为一个或多个单词。 这些数字表示正在计算的段中的单个笔划。 请注意,每个“t”字符都包含两个笔划。
“一起”一词的
格子由一个或多个列组成,每个段各列一列。 每个列又包含一个或多个元素。 元素保存离散识别替代项。 有关列的详细信息,请参阅 RECO_LATTICE_COLUMN 结构。 有关元素的详细信息,请参阅 RECO_LATTICE_ELEMENT 结构。
在评估上一示例中所示的墨迹样本时,识别器可能会返回单个段。 在这种情况下,格子包含具有单个元素的单个列。
当识别器评估墨迹样本并为每个段提供多个段和多个备用项时,一个更复杂的示例将呈现自身。
识别备用项的数量可能令人吃惊,即使对于小墨迹样本也是如此。 例如,“t o g e t h e r”可以产生以下结果:
- “要找她”(加上每个单词的替补)
- “要收集”(加上每个单词的备用项)
- “得到她”(加上每个单词的替补)
- “一起”(加上单词的替代项)
在这种情况下,识别器可能会创建以下格子结构。
注意
每列共享相同的笔划顺序,因为它们都引用相同的 inkStrokes 集合。