OCR_SR 操作

OCR/SR 操作库提供了一些操作,用于通过 OCR/S 引擎来执行图像识别和旋转。 可执行页面和字段级别识别,随后可由其他库中的操作来处理识别,并最终向用户显示识别效果以进行验证。 可识别机器打印文本和手写文本。

识别成功

在完成识别操作后,会设置变量 RecogStatus 以指示识别是成功还是失败。 如果正在执行页面级别识别,那么 RecogStatus 值 0、1 或 2 表示成功。 成功值的列表包括:

0 成功。
1 成功,但没有结果。 该页面为空。
2 成功。 执行了其他处理,如 RotateImage
任何其他值 失败。

自动重试

当识别耗用的时间超过预期值时,OCR/SR 操作支持自动重试。 在极少数情况下,识别可能无法完成,例如,处理已损坏图像或不规则图像时。 当发生这种情况时,如果达到所配置的超时,那么识别引擎将停止并重新启动。 将重新尝试识别,直到达到重试计数为止。

缺省情况下,如果由于达到超时而导致操作失败,那么将重试该操作 1 次。 缺省超时为 180 秒。 可使用 RecogShared 库中的 SetupAutomaticRetry 操作来更改这些缺省值。 无需执行其他操作来设置“自动重试”功能。 完成某些操作(例如 RecognizeToPDFOCR_S)所需的时间可能超过缺省时间。 所需的时间量将有所增加,具体取决于要处理的页面数以及机器和网络状况。 有关延长时间的更多信息,请参阅 RecognizeToPDFOCR_S.

系统中还存在其他超时,例如,为 Rulerunner 配置的超时。 存在一些旧的传统超时变量,已不推荐使用此类超时变量,它们已被自动重试操作指定的单一超时所取代。 传统方式针对引擎和进程外识别提供了不同的超时。 可使用 SetOutOfProcessTimeoutOCR_S 和 SetEngineTimeoutOCR_S 操作来配置传统超时。 如果要使用传统超时设置,那么正确配置这些设置的难度可能更高。

支持的语言

OCR_SR 支持以下语言:
  • 南非语 (39)
  • 阿尔巴尼亚语 (23)
  • 加泰罗尼亚语 (11)
  • 简体中文 (120)
  • 繁体中文 (121)
  • 克罗地亚语 (21)
  • 捷克语 (17)
  • 丹麦语 (7)
  • 荷兰语 (3)
  • 英语 (0)
  • 世界语 (28)
  • 爱沙尼亚语 (25)
  • 法罗语 (52)
  • 芬兰语 (6)
  • 法语 (2)
  • 爱尔兰盖尔语 (56)
  • 苏格兰盖尔语 ( 57)
  • 德语 (1)
  • 希腊语 (15)
  • 匈牙利语 (19)
  • 冰岛语 (8)
  • 意大利语 (13)
  • 日语 (119)
  • 拉脱维亚语 (26)
  • 立陶宛语 (27)
  • 马耳他语 (14)
  • 挪威语 (4)
  • 波兰语 (16)
  • 葡萄牙语 (9)
  • 巴西葡萄牙语 (45)
  • 拉埃提亚语 (90)
  • 罗马尼亚语 (22)
  • 俄语 (36)
  • 萨米语 (98)
  • 北萨米语 (100)
  • 南萨米语 (101)
  • 塞尔维亚西里尔语 (30)
  • 塞尔维亚拉丁语 (29)
  • 斯洛伐克语 (18)
  • 斯洛文尼亚语 (20)
  • 西班牙语 (10)
  • 斯瓦希里语 (105)
  • 瑞典语 (5)
  • 土耳其语 (24)

可通过在 Datacap Studio 的区域选项卡中的 OCR_S 选项卡中选择语言以将其与 DCO 对象绑定。 在 OCR_S 选项卡中选择某种语言时,s_lg 变量会设置为该语言对应的数字值。 也可以通过使用 rrSet 操作将 s_lg 变量设置为期望语言对应的数字值来设置语言。 例如:rrSet("2", "@X.s_lg") 会将语言设置为法语。 如果针对当前 DCO 对象未设置 s_lg 变量,那么将根据通过 hr_locale 变量设置的当前语言环境来确定所识别的语言。 例如,如果语言环境设置为“德国”,那么文本将识别为德语。 s_lg 中的值优先于语言环境设置。 如果已设置 s_lg,但引擎要改为使用针对 hr_locale 设置的值,那么将 dco_uselocale 变量设置为“1”可使 hr_locale 优先。

手写识别

OCR/SR 操作可识别手写文本。 相比于机器生成的文本,手写文本更难以准确识别,成功与否很大程度上取决于字符质量。 通过使用结构化格式来限制字符的可能范围,并配合使用区域级别过滤器和单个字符验证,可显著提高识别准确率。 识别范围是包含 159 个成员的字符集。 应用程序需要处理的是相比于高质量机器打印文本准确率偏低的手写文本。 除了对已识别文本设置限制之外,应用程序通常会使用规则和验证的组合来纠正文本。 手写识别功能是作为“预览”功能提供的。

为实现最佳识别效果,手写文本应满足以下要求:
  • 文本应来自预打印的表单;脱色效果最佳。 这可以是脱色组合框。
  • 字母之间不得相互接触。
  • 必须使用字段级别识别。
  • 块字符效果最佳。
  • 相比于机器打印,手写支持的语言和符号列表要小一些。
  • 虽然使用单行字段可获得更好的结果,但支持多行字段。
  • 采用相同大小和间隔来书写字符。
  • 如果使用脱色,请勿使用具有相同脱色的钢笔。
  • 铅笔和签字笔效果较差。
  • 最大行长度为 200 个字符。
  • 不支持草书文本。

可在 Datacap Studio 中区域选项卡中的 OCR/S 选项卡中启用手写识别。 在 DCO 树中启用编辑,然后选择要识别为文本的目标字段。 在“填充类型”属性中,选择“手写”。 对于“模块”属性,请选择“RER reRecognition Handprint”。 在可限制输入数据时,手写文本识别效果最佳。 在执行手印识别时,不必在 OCR/S 选项卡中使用 "过滤器" 设置。 但是,强烈建议使用它来大幅提高识别度。 "FilterPlus" 设置用于指示引擎限制识别特定字符,以提高识别质量。 以下是一些设置 "过滤器 "和 "FilterPlus" 的示例:

示例 1

  1. 在 OCR/S 选项卡中,单击 过滤器
  2. 从下拉列表中,选择 " 33-数字 "
  3. FilterPlus 框中键入 # * & %"
在上述设置中,识别为 012345679#*&%
示例 2
  1. 在 OCR/S 选项卡中,单击 过滤器
  2. 从下拉列表中,选择 "36-过滤器中列出的小写字符和字符加号"。
  3. FilterPlus 框中,输入 " ' ()! 对于上述设置,识别将是 a 到 z 和 " ' ()!
如果过滤器属性具有名为 "canned" 的设置,那么无需选择任何其他设置。 如果必须定制字符集,请使用 FilterPlus。
启用手写时,无法识别以下符号:
  • # 井号
  • % 百分号
  • @ 符号
  • & 和号
  • | 竖线
  • $ 美元符号
  • * 星号
  • + 加号
  • = 等号
  • _ 留空下划线
  • / 斜杠
  • \ 反斜杠
  • < 小于符号
  • > 大于符号

支持的手写语言

代码 - 语言/地域
  • AL - 阿尔巴尼亚语
  • AT - 奥地利语、德语
  • BE - 比利时语、荷兰语、法语、德语
  • CH - 瑞士语、法语、德语、意大利语
  • CS - 捷克语、斯洛伐克语
  • CZ - 捷克语
  • DE - 德语
  • DK - 丹麦语
  • EE - 爱沙尼亚语
  • ES - 西班牙语
  • EU - 西欧语言
  • FI - 芬兰语
  • FR - 法语
  • HU - 匈牙利语
  • IE - 爱尔兰语、英语、爱尔兰盖尔语
  • IT - 意大利语
  • LT - 立陶宛语
  • LV - 拉脱维亚语
  • NL - 荷兰语
  • NO - 挪威语
  • PL - 波兰语
  • PT - 葡萄牙语
  • RO - 罗马尼亚语
  • SE - 瑞典语
  • SF - 斯堪的纳维亚语
  • SL - 斯洛文尼亚语
  • SK - 斯洛伐克语
  • TR - 土耳其语
  • UK - 英式英语
  • US - 美式英语

不支持西里尔语和希腊语。 在匈牙利语中,不支持小写字符“小写 I 尖音”、“小写 O 尖音”和“小写 U 尖音”,因此识别仅限于大写字符。

自动旋转、纠偏和去边框

以下操作可在处理期间对图像执行自动旋转、纠偏和去边框:
  • RecognizePageOCR_S
  • 识别
  • RecognizePageFieldsOCR_S
  • RotateImageOCR_S

在启用自动旋转、自动纠偏或去边框后,上述操作会在识别之前调整图像。 方向正确且经过纠偏的图像的识别效果更好,并且生成的识别文本与源页面的一致性会更高。 在针对 RecognizePageOCR_S、Recognize 或 RecognizePageFieldsOCR_S 操作启用自动旋转后,无需使用 RotateImageOCR_S、RotateImageExOCR_S 或其他图像旋转操作对图像进行预旋转。

根据应用程序,最好在调用识别操作之前进行旋转和纠偏。 例如,在执行指纹识别时,图像应首先执行旋转和纠偏以及其他“图像增强”操作(例如,去斑和去线)。 应用程序可能还提供了一些其他功能,这些功能也需要在识别之前进行类似的图像增强。 如果在执行识别之前对图像进行增强,那么可针对识别步骤禁用这些功能,因为无需再次运行这些功能。 如果应用程序不需要对图像进行预处理,那么可直接在识别操作中执行旋转(只需一个步骤即可)。

自动旋转、纠偏和其他图像增强设置仅适用于图像文件,不会对可直接识别的 PDF 文件进行调整。 要在识别之前对 PDF 页面进行旋转、纠偏和增强,请使用“转换”操作库中的 PFFFREDocumentToImage 操作来首先将此 PDF 转换为独立的 TIF 图像而不对其进行识别,根据需要执行图像增强和纠正,然后使用 RecognizePageOCR_S、Recognize、RecognizePageFieldsOCR_S 或 RecognizeFieldOCR_S 对经过纠正的图像执行识别。

自动旋转

可通过将 DCO 变量 s_autorotate 设置为 1 来启用自动旋转,或者将此变量设置为 0 来禁用自动旋转。 缺省情况下,“自动旋转”处于关闭状态。 在启用“自动旋转”功能时或者在使用 RotateImageOCR_S 或 RotateImageExOCR_S 时,为 DCO 对象正确设置语言非常重要。

自动纠偏

可通过将 DCO 变量 s_deskew 设置为 1 来启用自动纠偏,或者将此变量设置为 0 来禁用自动纠偏。 缺省情况下,“自动纠偏”处于关闭状态。 如果图像包含各种方向(例如,垂直和水平)的文本,那么该图像经过旋转后可能仍然不符合期望。 自动图像旋转算法依赖于具有高质量机器打印文本的图像,并且对此类图像的效果最佳。 页面应包含至少一个文本行,其中包含至少 30 个字符的机器打印文本。

自动旋转算法不完全适用于包含 9 针点阵文本或非机器打印文本的图像。 自动纠偏仅对偏度低于 15 度的图像有效。 如果图像偏度超过该值,那么可能可以对该图像进行纠偏,也可能无法对其进行纠偏。

去边框

可通过将 DCO 变量 s_removeborders 设置为边框像素宽度来启用去边框。 去边框不会对图像进行裁剪,而是将图像周围的黑色边框更改为白色边框。 “0”表示禁用去边框。 缺省情况下,“去边框”处于关闭状态。 去边框用于清除由于扫描或者对图像进行纠偏时可能产生的边缘阴影。 使用白色填充边框。 不对图像进行裁剪。 缺省情况下,此功能处于关闭状态,但可使用 DCO 变量 s_removeborders 来启用此功能。 将此变量设置为指示边框宽度的正整数(以像素为单位)以执行去边框。 如果需要调整某些文档,典型的起始数字可为 50 像素。 以该值作为起始值,测试实际数据以了解需要向上还是向下调整该数字。

如果该变量为空或设置为 0,那么将禁用该功能。 旋转和纠偏等功能由识别引擎执行时相比于基于图像几何学运行的图像增强操作更可靠一些。 但是,其他类型的图像增强功能(例如,去斑、去噪、去线和其他图像清除步骤)最好由图像增强操作来处理。 单独的“图像增强”规则集允许以交互方式使用设置,这样,您可以输入值,还可以在配置窗口中立即查看结果。 这种交互方式有助于指导您实现一组最佳的增强功能,以干净的背景提供最清晰的字母。 在设置应用程序时,可通过对可用图像增强方法进行一些试验,以帮助找到所需输入文档的适当组合。 此外,“图像增强”规则集还会为每个页面类型保存唯一的图像调整设置。 可根据页面类型来执行不同的增强功能,这样便可以根据页面类型来调整特定的增强功能。 可能需要结合使用这些不同的方法来准备要识别的文档。

原始图像备份

当图像需要旋转或 OCRS 操作执行其他增强功能时,原始图像将使用类似于 "filename.ocrs.ext" 的名称保存在批处理中的备份文件中。 例如,如果原始文件名为 "TM000001.tif" ,那么原始文件的新名称为 "TM000001.ocrs.tif" ,并且将使用更正后的旋转和偏差来更新文件 "TM000001.tif"。 可通过设置 DCO 变量 s_ImageSuffix 来控制对原始文件名添加的后缀。 如果未设置该变量,那么缺省值为“.ocrs”。

OCR/S 引擎设置

Datacap Studio 的区域选项卡中的 OCR/S 选项卡包含了一些可用于配置引擎的设置。 每个设置都有相应的描述,用于标识其配置的对象。 这些设置用于帮助定制引擎以提高对特定类型的输入文档的识别质量。 例如,在这里,可以为应用程序中的每种文档类型设置识别语言。

要为页面或字段级别对象配置设置,请首先锁定 DCO,选择目标 DCO 节点,然后在 OCR/S 选项卡中完成相应的设置。 完成后,保存设置并将 DCO 解锁。 “过滤器”和“附加过滤器”设置是仅限字段级别的设置,允许指定期望的字符集。 这些设置通过向引擎提供有关期望字符的信息来提高字段级别识别质量。 例如,如果期望字段中仅包含数字值,那么应指定数字字符以提高识别质量。 例如,如果某个字段只能包含数字,那么系统会向引擎提供一些提示,使其将“1”识别为数字“1”,而不是表示 L 的小写形式“l”。 可针对期望的字符集定制这些过滤器,从而减少错误字符和替换字符。 应始终尽可能限制输入字符集,以防止出现错误字符。

智能参数

使用 "@" 表示法的参数,例如 "@X.xxxx" , "@P.xxxx" , "@STRING()" , "@PILOT()" 等。 称为 "智能参数"。 作为参数传递到操作的数据在运行时进行求值。 例如, "@X" 是用于访问当前对象的表示法。 "@P" 访问页面对象,该对象可以是当前对象,也可以是父对象。 在运行时求值,允许将识别的数据或其他特定于批处理的数据传递到操作或存储为元数据。 可以使用智能参数 (例如 @DATE ) 根据当前日期来命名导出文件。 类似的智能参数检索当前批处理标识,当前批处理目录,当前操作员标识等。 智能参数是一种非常强大的机制,用于从应用程序的其他区域获取数据并将其复制到新位置或将其作为参数传递到操作。 建议查看智能参数文档以了解可用的全部功能。 动作库 ValidationsAndTextAdjustments 动作库还包含有关智能参数的信息。 某些字符,例如 + , \ 和。 也有特殊的智能参数含义,可能被解释为智能参数。 这可以使用智能参数语法进行控制。

临时文件

处理文件时,识别引擎会在 Windows 临时目录中创建临时文件。 在某些情况下,当批处理完成时,可能不会除去这些文件。 缺省情况下,在执行 OCR/SR 识别时,将自动除去其中任何存在时间超过 2 小时的文件。 如果需要更改最大目录年龄,可将批处理级变量 s_MaxTempDirAge 设置为临时引擎文件的最大允许年龄(以分钟为单位)。

该变量可以在设置 DCO 的批处理级别设置,也可以在运行时使用 rrSet, 设置,例如: rrSet("180","@B.s_MaxTempDirAge" )。