Region 方法可以获得以此方式创建的区域。在图像上显示该假设区域,或基于该假设创建块时,区域边界不会精确贴合每个矩形的边界;为更好地可视化,搜索区域的边界会被平滑化。通过假设的 SimplifiedRegion 方法可以获得以此方式创建的区域。Region 与 SimplifiedRegion 方法既可在 Search Conditions 部分(描述元素的搜索区域时)使用,也可在描述块属性并使用已找到的元素时使用。
如果未找到假设,则它与其搜索区域的模糊矩形相一致。在图像上显示未找到的假设时,程序将绘制该模糊矩形的外接矩形。
任何假设的 Left、top、Right 和 Bottom 边界都是区间。对于每个已找到的假设,区间会退化为一个点,即 Left.Start = Left.End、top.Start = top.End 等。对于未找到的假设,其边界区间与其搜索区域的区间相同。
在相应的块和元素对话框的代码中访问生成的假设及其属性,可为设置 FlexiLayout 提供更多手段。可以按元素名称访问元素的假设。要在 Hypotheses Evaluation 部分访问当前元素的假设,仅需使用属性名称。
只能以唯讀方式访问假设及其属性。可在 Search Conditions、Hypotheses Evaluation 两个部分以及 field 的 Code Editor 部分访问元素的假设。在 Search Conditions 中,可访问位于 Elements 树中当前元素之上的所有元素的生成假设(及其属性)。在 Hypotheses Evaluation 中,可访问位于 Elements 树中当前元素之上的元素的生成假设以及当前元素本身的假设。在 field 的 Code Editor 中,可访问所有元素的假设(及其属性)。
下表列出了适用于所有元素类型的假设属性。
| Property | Description |
|---|---|
Logic IsNull() | 此假设是否为 null(如果已检测到该元素,假设的 IsNull 属性为 True)。 |
Logic IsFound() | 此假设是否非空(如果未检测到该元素,假设的 IsNull 属性为 False)。等同于 IsNull。 |
XInterval Left() | 假设的左边界(全局坐标中的水平范围)。 |
YInterval top() | 假设的上边界(全局坐标中的垂直范围)。 |
XInterval Right() | 假设的右边界(全局坐标中的水平范围)。 |
YInterval Bottom() | 假设的下边界(全局坐标中的垂直范围)。 |
XInterval XCenter() | 假设中心的 X 坐标(全局坐标中的水平范围)。 |
YInterval YCenter() | 假设中心的 Y 坐标(全局坐标中的垂直范围)。 |
DistInterval Width() | 假设在全局坐标中的宽度(距离范围)。 |
DistInterval Height() | 假设在全局坐标中的高度(距离范围)。 |
FuzzyRect FuzzyRect() | 假设在全局坐标中的模糊矩形。 |
Rect Rect() | 在全局坐标中外接该假设的矩形。与模糊矩形的外接矩形一致。 |
Region Region() | 假设在全局坐标中的区域。该方法不支持 Group 元素。 |
Region SimplifiedRegion() | 为更佳可视化而简化的假设区域(全局坐标)。该方法不支持 Group 元素。 |
ImageObjectSet Set() | 构成该假设的图像对象。 |
ImageObjectSet ExcludeSet() | 通过 Exclude 类型的方法从搜索区域中排除的区域内的图像对象。 |
RectArray Rects() | 该假设包含的矩形数组。对于大多数元素,它与包围已检测对象的矩形数组一致。对于 White Gap 和 Region 元素,不提供对象。 |
Int HypothesesCount() | 在搜索区域中可为该元素构建的假设数量。仅当文档的最大和最小页数均设置为 1(即检测到的文档只有一页)时可使用此函数。如果将此函数用于多页文档,匹配 FlexiLayout 将返回错误。 |
PageInterval Pages() | 可找到该假设的页范围。 |
PageArea PageAreaGlobal( Int PageNumber ) | 返回位于指定页上的假设部分(全局坐标)。 |
PageArea PageAreaLocal( Int PageNumber ) | 返回位于指定页上的假设部分(该页的本地坐标)。 |
调用假设属性的示例代码
IsNull 属性)。访问空假设(对应未检测到的元素)的属性会导致错误。
假设你的文档上有一个以条码表示的标识符,并且你希望 FlexiLayout 只匹配那些条码值为 1556897142240 的文档。要实现这一目标,请按以下步骤操作:在描述该条码属性和搜索约束的元素的 Hypotheses Evaluation 部分中编写如下代码:
Quality: 0; 代码会将该假设的质量重置为 0。随后会为该元素生成一个空假设,程序也会对其检查条件 value != "1556897142240"。由于此时不允许访问空假设的值(它没有该属性),程序会给出错误消息 “…undefined hypothesis…”
因此,需要按如下方式调整代码:
else {Quality: 0;},则该语句会对所有假设(包括空假设)执行,并会停止 FlexiLayout 的匹配,因为在该元素处,整条假设链也会被重置为 0。
方法 Region Region() 与 Region SimplifiedRegion() 的比较
Region Region() 和 Region SimplifiedRegion() 都可用于获取元素的区域,但 Region Region() 返回的是精确区域,而 Region SimplifiedRegion() 返回的是基于边界坐标生成的 Rectangle。