# 字符安排

字符安排选项卡提供一种图形方式来创建和编辑 OCRMax 函数的字段字符串和字段定义参数。结果值作为文字字符串插入到函数中。

字符安排提供验证和更正字符串的功能，返回最匹配的有效字符串集。字符安排有两个主要用途：

- OCR 结果验证，根据字段字符串和字段定义参数判断返回的字符串是否正确。
- OCR 结果校正，其中返回的字符串不在可接受结果列表中，并尝试查找最接近返回字符串的字段允许的可接受字符串。

字符安排的一个典型用例是当字符串包含前缀和/或后缀字符时，字符安排用于忽略这些前缀/后缀字符。在这种情况下，字段字符串和字段定义确定 ROI 中字符串位置的偏移量。

#### 字段字符串

指定字符串中包含的字符数。字段字符串条目可以是在文本输入对话框中找到的任何字母数字字符，包括（A 到 Z）、（a 到 z）、（0 到 9）、短线 (-)、点 (.) 和空格 ( )。

字段字符串中的每个字符对应于 0 到 31 之间的索引字段位置。字段字符串必须至少包含与读取传递的字符串中的字符相同的位置数（即，如果有 10 个字符，但字段字符串只指定 9 个字符，返回最匹配的 9；但是，如果有 8 个字符并且字段字符串定义 9 个字符，函数将返回 #ERR）。默认情况下，字段字符串中每个位置表示为星号 (*) 字符或字母数字“通配符”。这意味着任何字符在字符串中的任何位置都是有效的。

然而，字段字符串中的单个位置可以限制为仅考虑该位置可能字符的子集。这提高了整体性能和可靠性，因为在读取过程中不会考虑在某个位置出现的字符。

预定义的字段字符串条目是：

字段字符串条目 | 说明 | 有效字符
--- | --- | ---
* | 通配符 | 字体中的任何训练字符。
N | 数字 | 0123456789
A | 大写字母顺序 | ABCDEFGHIJKLMNOPQRSTUVWXYZ
a | 小写字母顺序 | abcdefghijklmnopqrstuvwxyz
H | 十六进制、大写字母和数字 | 0123456789ABCDEF
h | 十六进制、小写字母和数字 | 0123456789abcdef
O | 八进制 | 01234567

字段字符串示例 1

如果字段字符串为 **********AN，字体中的任意字符在字段字符串的前 10 个位置有效。但是在第 11 个位置，在读取过程中只会考虑大写字母字符。而在第 12 个位置，只会考虑数字字符。

字段字符串示例 2

该字体仅包含数字字符 0-9 和 /。如果字段字符串为 NN/NN/NN，则第一和第二、第四和第五以及第七和第八位置将只考虑数字字符。在第三个和第六个位置仅考虑正斜杠 (/) 字符。

但如果字段字符串是 NN/NN/AA，读取将返回 #ERR，因为字体不包含任何字母字符。

#### 字段定义

（可选）字段定义设置可用于为字段字符串创建用户定义的条目。当包含在字段字符串中时，这些条目将有效字符列表限制在它们插入的位置。有几个预定义的字段定义，可以添加用户定义的字段定义。预定义的定义以灰色文本显示，不能删除或编辑，只能启用或禁用。用户定义的定义以黑色文本显示，可以添加、删除或编辑。要添加字段定义，请按新增按钮，为字符分配图标，然后为字符分配定义。

注意:

- 用户定义的定义数量受 OCRMax 函数表达式长度 (249) 的限制。
- OCRMax 属性表关闭时禁用的任何用户定义的定义都将被删除，并且在重新打开函数的属性表时将不可用。
- 如果“常规”选项卡中的“字段定义”参数定义为单元格引用， 则字符安排选项卡中的字段定义选项将被禁用，并且将显示单元格引用的当前值。

为字段定义条目列出的字符必须包含在字体中。例如：如果用户训练的字体中包含 1、2、3 则 #=123 有效。但是，如果字体中不包含 1、2 和 3，#=123 将无效。

注意:使用预定义条目（*、N、A、a、H、h、O）字段定义参数将重新映射新定义中的有效字符列表。

字段定义示例 1

如果字段定义的值是 #=123;$=3456;%=789，而字段字符串是 #$%*******，则在第一个位置唯一有效的字符将是 1、2 或 3。第二个位置的唯一有效字符是 3、4、5 或 6。而在第三个位置，只有 7、8 或 9 是有效的。字体中的任何字符在第四到第十个位置都是有效的。

字段定义示例 2

如果字段定义的值是 #=123;$=3456;%=789, A=A，并且字段字符串为 #$%******A，则在第一个位置唯一有效的字符将是 1、2 或 3。第二个位置的唯一有效字符是 3、4、5 或 6。而在第三个位置，只有 7、8 或 9 是有效的。字体中的任何字符在第四到第九个位置都是有效的。只有 A 字符将被视为在第十个位置，因为字段定义 A=A 重新映射预定义的字段字符串入口。

#### 字段字符串参数

- 仅匹配字段字符串中的字符：指定函数是否只尝试将字符与由字段字符串中指示的字符进行匹配。

注意:当检查模式设置为读取/验证，此参数将针对匹配字符串参数中指定的文本字符串进行字符安排。

- 变长字符串：指定定义的字段字符串是否可以是完整读取文本字符串中的子字符串。如果找到子串，它将返回最匹配的子串。

注意:如果外部设置参数设置为引用 OCRMaxSettings 函数，仅匹配字段字符串中的字符和变长字符串参数将被禁用。

- 最小长度：在启用变长字符串参数时，此参数指定可接受的最小字符串长度（0 - 100；默认值 = 1）。
- 最小长度：在启用变长字符串参数时，此参数指定可接受的最大字符串长度（0 - 100；默认值 = 100）。
- 最大起始索引：在启用变长字符串参数时，此参数指定要考虑的字符安排子序列，必须从不大于此索引值（0 - 100；默认值 = 100）的位置开始。
- 最小结束索引：在启用变长字符串参数时，此参数指定要考虑的字符安排子序列，必须从不小于此索引值（0 - 100；默认值 = 0）的位置结束。