关于 ABBYY FlexiCapture 10...

ABBYY FlexiCapture 10 是将数据从硬拷贝文档自动输入信息系统数据库的软件解决方案。

ABBYY FlexiCapture 10 采用高级的键入和手印字符识别、图像处理和文档分析技术，可从在单一流程中处理的各种类型文档中方便地自动提取有意义的信息 - 结构化（固定）表单、半结构化（弹性表单和文档）和自由格式非结构化文档。通过 ABBYY FlexiCapture 10，不必手动排序和重新打印文档中的信息，避免了繁杂的、低效率处理工作。

基本文档处理方案如下：

  1. 文档放在自动扫描仪进纸器上，开始扫描。
  2. 将扫描的文档图像提交供识别，此时软件自动识别文档（包括多页文档）、查找有意义的字段、提取数据并加载检查规则。
  3. 如有必要，在识别之后执行数据校验和规则错误检查。
  4. 识别和校验的数据连接文档的电子副本均保存至数据库（信息系统）或文件。


ABBYY FlexiCapture 10 的新功能

ABBYY FlexiCapture 9.0 Professional 中所没有的 ABBYY FlexiCapture 10 的新功能

导入和图像处理

从电子邮件及通过 FTP 导入图像

可从电子邮件收件箱添加图像，包括附件。MAPI 和 POP3 协议均受支持。在使用 MAPI 协议时，处理工作站应在与电子邮箱所有者相同的帐户下启动。图像还可以下载
导入配置文件

校验

复选标记组的字段校验

如果选中了一个以上的选项，则仅允许一个选项的复选标记组将发送至字段校验。数据校验操作员将能更正该选择。

自定义

脚本

实施不同的脚本，如识别脚本、事件处理程序等。

使用 ABBYY FlexiCapture 10 中的脚本
自定义热键

添加了用户指定快捷键的可能性。用户可在工作站上更改默认热键。

自定义热键
ABBYY FlexiCapture 8.0 Professional 中所没有的 ABBYY FlexiCapture 9.0 的新功能

项目管理

批处理文件类型

可以为每个批处理文件指定一种类型（如果未指定类型，将为其分配“默认”类型）。一个项目可以包含任意数量的批处理文件类型。批处理文件类型定义了图像处理和识别选项、批处理文件完整性检查、默认导出设置以及如何处理属于该类型的批处理文件。“默认”类型的批处理文件采用项目设置。
文档批处理文件

注册参数

现在可以指定描述批处理文件或文档的注册参数。也可以在以后导出图像和数据时使用这些参数。

注册参数
优先级

现在可以设置文档和批处理文件的优先级，从而对处理进行控制。

分析和识别

匹配文档定义的顺序

现在您可以控制匹配文档定义的顺序。可以采用以下方法指定匹配顺序：

  • 在文档定义对话框中明确定义文档定义的顺序。
  • 对于 FlexiLayouts：使用分类器选择所需的文档定义
  • 对于 FlexiLayouts： 在文档定义对话框中，指定如何选择相应的 FlexiLayout

。
编辑和发布文档定义
分类器

更新文档定义版本（不重新识别）

现在在不重新识别的情况下更新文档定义版本， 只要满足下列条件：

  • 如果只更改了导出设置，对于这种情况，将采用新设置导出文档
  • 如果更改了规则，对于这种情况，将再次执行规则校验

校验

可以自动获取校验任务和检查任务
在组校验和字段校验期间可以查看图像
文件和数据库可以用作规则校验的数据源
可以禁用空字段的数据库检查规则
增加了求和计算规则
识别可靠度水平指示的是整个批处理文件的可靠度水平。
增加了组校验和字段校验设置，其中包括单个字符的置信水平
可以指定字段校验的初始光标位置。
在字段校验期间可以有选择地突出显示整个字段（对于用户要键入整个字段的情况十分有用）
单独显示每种错误类型。检测的错误类型有：
  • 组装错误
  • 格式错误
  • 规则错误
校验识别的数据

导出

自动导出

现在识别质量高且无规则或格式错误的文档会自动导出，无需用户干预。所需的不确定字符的百分比在设置项目时指定。

导出至多个目标

可以将数据和图像导出至多个目标。可以将某些目标标记为重要目标。如果导出至重要目标失败，会显示一条错误消息。导出至非重要目标失败不会导致整个导出错误。
配置数据导出

文件名和位置设置

新增了创建文件命名模板来导出数据和图像（及其路径）的功能。 也可以在从热文件夹导出时保留文件夹结构。
导出文件命名标准

归档有错误的文档

可以将有格式或规则错误的文档保存至指定的存储位置。导出有错误的文档的设置方式与导出正常文档的设置方式一样。
配置数据导出

导出后自动删除文档

如果成功导出，可以删除已导出的文档。保留了手动删除文档的选项。

保密

现在可以编辑（如删除）文档中的个别字段。每次导出可以指定不同的编辑规则，以管理信息对不同用户的可见程度。
配置数据导出

选项

批处理文件完整性检查

可以使用脚本检查批处理文件的完整性。导出前自动启动脚本。
文档批处理文件
用于创建自定义规则的样本脚本

标准化脚本

可以使用脚本纠正从字段中提取的信息。
处理输入的值
用于创建自定义规则的样本脚本

自定义脚本

可以为每个字段指定由校验操作员触发的脚本。

自定义操作
服务字段

增加了新的字段类型 - 服务字段。此类字段利用从选定来源获取的数据自动填入。

服务字段

受支持的语言

新 OCR 语言

现已增加对如下语言的 OCR 支持：

  • 越南语
  • 中文
  • 朝鲜语
  • 日语


通过 ABBYY FlexiCapture 10 处理的文档类型

ABBYY FlexiCapture 10 是从各种类型文档捕获单流数据的软件解决方案。

可在单一流程中处理各种文档。也可将程序设置为处理混合类型的文档，例如，包含结构化和半结构化节段的文档。文档类型仅影响系统配置，即创建文档定义的方法。操作员工作的性质不受所处理的文档类型影响。

可针对以下文档的自动化输入配置 ABBYY FlexiCapture，包括在单一流程中：

结构化 – 固定表单；
结构化表单是包含一组标记信息字段的文档，这些字段的格式、编号和布局已严格定义，不因文档实例而异。该等文档称为固定文档。例如，大多数调查问卷和应用程序表单就是固定表单。该等表单通常作为银行表单分发，并用手填写。

要在文档流中识别固定表单并从其中提取数据，则需要创建单一固定布局，该布局将告诉程序包含要提取数据的字段的位置。

根据自动输入要求创建的固定表单的处理效率最高。该等表单称为机器可读表单。要了解有关该等表单的要求及其创建方法的更多信息，请参见创建机器可读表单部分。

程序包括可用于设计机器可读表单的便利工具 – ABBYY FormDesigner 10（随 ABBYY FlexiCapture 10 一起提供）。您可在用户指南的帮助主题中阅读有关借助 ABBYY FormDesigner 10 设计表单的信息。

特意为结构化文档描述了创建文档定义的基本阶段。
半结构化 – 弹性表单和文档；
这些是包含一组信息字段的文档，这些字段的设计、编号和布局可能因不同的文档实例而相差很大。这些文档称为弹性文档。便如，帐单就是弹性文档，因为其通常因项目数量及项目格式而异，它们源自于不同的公司。所有帐单均有帐单号和应付金额，但位于不同的位置。

为了识别弹性表单并从其中提取数据，ABBYY FlexiCapture 10 使用了一种弹性布局 (FlexiLayout)。弹性表单是借助于一种称为 ABBYY FlexiLayout Studio 的特定模块创建的。有关此模块的详细信息，请参见用户指南中的帮助主题。

处理弹性文档与处理固定表单的不同之处在于创建和加载布局阶段。有关详细信息，请参见创建用于处理弹性文档的文档定义。
带自由样式设计的非结构化文档。
ABBYY FlexiCapture 10 可用于处理包含以自由样式显示的信息的文档，例如，合同、信函、订单和图形。程序可自动将非结构化文档识别为附录或固定表单或弹性表单，或借助于一种弹性布局识别这些文档，然后将这些文档作为 PDF 可搜索文件或图形文件导出。您可用两种方法从非结构化文档中提取索引字段：自动借助于弹性布局和通过手动输入。

处理非结构化文档的一种典型情况是：当当需要将硬拷贝存档转化为电子表单且需要提取两个或三个索引字段以进行基于属性的快速搜索。

有关详细信息，请参见处理非结构化文档。


使用 ABBYY FlexiCapture 10 处理文档的简要描述

使用 ABBYY FlexiCapture 10 处理文档简要描述

本节概述了如何使用 ABBYY FlexiCapture 10 处理文档。

配置程序和已配置项目操作部分中详细描述了此程序的使用过程。

用于文档处理的程序配置概述
通过已配置程序执行的操作概述


文档处理程序设置简述

管理员配置用于处理某类型文档的程序。要为程序处理文档作好准备，您需要创建：

  1. 项目

    项目包含处理某类型文档所需的所有设置：图像导入配置文件、文档定义和要处理的文档批处理文件。

  2. 一个或多个文档定义

    创建文档定义是项目配置中最为重要的阶段。如果您想要在单一流程中处理各种类型的文档，则需要创建多个文档定义作为单一项目的一部分。

  3. 图像导入配置文件

    创建导入配置文件是为便于并简化操作员的工作。如未导入配置文件，则每当添加图像时必须选择导入来源并配置设置。通过导入配置文件，只需单击鼠标按钮就可添加图像，并轻易地在导入来源之间切换。

  4. 文档批处理文件

    提交供处理的文档添加至批处理文件中。向批处理文件分配文档的原则是由用户定义的：您可处理单一批处理文件中所有文档或从同一日期添加的文档形成批处理文件或从在单程中扫描的批处理文件中处理文档。如果您添加没有相应批处理文件的图像，则将自动创建一个批处理文件。

阅读更多有关配置程序的的信息


创建项目

要处理作为单一项目一部分的不同文档，项目必须拥有多个文档定义。如果文档流未交叉及其处理设置差异很大，则可为其创建独立的项目。

开始时，您至少需要创建一个项目。

要创建新的项目，请启动项目安装工作站并选择文件>新建项目…

项目符号 阅读更多有关如何创建项目的信息


创建文档定义概述

创建文档定义是项目配置中最为重要的部分，它决定了处理后获取的数据的质量。

文档定义描述了文档元素的位置，并指明了将用于数据提取的字段。

要创建文档定义，请运行文档定义向导：

  1. 在项目安装工作站主窗口中，选择项目>文档定义…
  2. 在文档定义对话框中，单击新建…按钮。
  3. 按照文档定义向导中的说明操作。

文档定义创建的主要阶段取决于被处理的文档类型。

为固定表单创建文档定义的主要阶段
  1. 借助于文档定义向导创建新的文档定义。在运行向导的情况下，打开将用于执行文档定义标记的文档页面图像。
  2. 标记静态元素 – 定位点和标识符，配置其属性。静态元素用于文档定义匹配和标识。通常而言，静态元素是自动检测的并分配有默认属性。
  3. 标记图像上的字段。字段用于数据提取。
  4. 配置字段属性。字段属性不但影响识别质量，而且可确定将由操作员导出并提交校验的字段值。他们指定某字段的数据类型和值范围。
  5. 为多页文档创建文档定义：添加页面并为每个页面重复所有阶段。
  6. 配置数据导出。
  7. 如有必要，您可配置在文档窗口中显示数据并根据规则对其进行检查等的方式。
  8. 使用多个文档的图像测试文档定义。

注：如果您通过 ABBYY FormDesigner 创建了机器可读表单，则您仅需要导入扩展名为 *.xfd 的文件，可跳过前三个阶段。将打开带有就绪标记的页面图像（如果您使用了 ABBYY FormDesigner 创建多页表单，则将显示多页图像）。有关详细信息，请参见为通过 ABBYY FormDesigner 创建的表单导入文档定义。

为弹性文档创建文档定义的主要阶段
  1. 使用 ABBYY FlexiLayout Studio 创建弹性描述（扩展名为 *.afl 的文档）。有关详细信息，请参见“ABBYY FlexiLayout Studio 帮助主题”。
  2. 借助于文档定义向导创建新的文档定义。在运行向导的情况下，打开文档页面图像，附上弹性描述（您已创建的 *.afl 文件）。完成向导后，字段标记将显示在图像上。
  3. 配置字段属性。按照为固定表单配置文档定义属性的程序操作。
  4. 配置数据导出。
  5. 如有必要，您可配置在文档窗口中显示数据并根据规则对其进行检查等的方式。
  6. 使用多个文档的图像测试文档定义。

对于包含带有固定表单和半结构化节段的固定类型文档，您可附上弹性说明作为文档定义的其中一个节段。从任何节段开始创建文档定义（弹性的或固定的），然后添加另一种类型的新节段。

可在单一流程中处理各种类型的文档：作为同一项目的一部分，您可为固定表单和弹性文档创建文档定义，并为混合类型的文档创建文档定义。程序将自动选择文档定义。

要处理带附录的文档，请创建文档定义并在文档定义属性中启用启用附加页面选项。参见为带附录的文档创建文档定义。

项目符号 阅读更多有关创建文档定义的信息


创建批处理文件类型

文档是在批处理文件中处理的。批处理文件在导入或扫描文档时创建。同时，每个批处理文件均分配有类型。

批处理文件类型预定了以下文档处理参数：

  • 图像预处理
  • 用其相应文档匹配文档定义
  • 批处理文件完整性检查
  • 默认的批处理文件导出
  • 批处理文件处理
项目符号 | 批处理文件类型
项目符号 | 创建文档批处理文件


工作流设置

处理设置

每种批处理文件类型都要指定批处理文件的处理顺序。在创建批处理文件时，将为其分配一种处理类型，并确定该批处理文件的处理顺序。

如果未创建批处理文件类型，将采用预先配置的<默认设置>（项目>项目属性…，工作流）来处理所有批处理文件。

批处理文件的处理设置在批处理文件类型属性对话框的工作流选项卡上配置。

处理设置：

  1. 当需要校验的字符百分比等于或小于以下项时跳过校验和数据校验 - 如果突出显示字符的百分比低于在每文档百分比字段中指定的值时，将跳过数据校验和校验阶段。
  2. 对于要自动导出的文档，请在文档定义属性对话框的导出目标选项卡上选择启用自动报告选项。


创建导入配置文件

操作员从向项目添加新图像开始：这些可能是需要扫描的硬拷贝文档，也可能是现有的电子图像。

程序可自动化经常重复的操作或从同一来源添加图像，以便只需单击按钮就可启用导入。要实现此目的，请创建图像导入配置文件。此外，您可在后台模式中配置对传入图像的处理及图像的定期添加。配置了所需的设置后，单击鼠标，就可扫描图像或从预设来源导入图像，并处理收到的图像（例如，已去斑的图像）。如有必要，您可更改图像导入的来源或其设置。

如果导入来源经常发生变化，则可创建多个导入配置文件，并在这些配置文件之间切换，以避免一直在改变导入来源设置。

要添加导入配置文件，请从主程序窗口中选择菜单项项目>图像导入配置文件…。在打开的对话框中，您可创建新的导入配置文件、编辑、删除和复制现有配置文件。

项目符号 阅读更多有关创建导入配置文件的信息


创建文档批处理文件

提交供处理的文档添加至批处理文件中。向批处理文件分配文档的原则是由用户定义的：您可处理单一批处理文件中所有文档或从同一日期添加的文档创建批处理文件或从在单程中扫描的批处理文件中创建批处理文件。

如果项已不包含批处理文件，程序将在您尝试添加图像时自动创建批处理文件。

要创建新的批处理文件，请从带有当您在主窗口中右击时所显示的批处理文件列表的上下文菜单中选择新建批处理文件…。

项目符号 阅读更多有关创建文档批处理文件的信息


操作员使用已配置程序的概述

操作员使用预配置的程序以用于处理特定类型文档。文档处理对于所有文档类型均相同，并包括以下阶段：

  1. 添加图像

    在您已配置导入配置文件后，添加文档页面图像最为轻松。您还可通过扫描添加图像或从文件加载它们。

  2. 启动识别过程

    识别是自动的过程：程序基于在定义中预配置的静态元素位置来标识文档定义，应用文档定义，并识别在文档定义中指定的字段中的数据。在启动识别过程前，您可分析文档或其页面，并将相关的文档定义应用至图像。

  3. 校验

    校验（检查数据的过程）是操作员工作中最为劳动密集型的部分。它包括：

    • 文档组装校验 – 检查文档页面是否已正确组装；
    • 组校验 – 在完全识别的字符组上进行目测检查；
    • 字段校验 – 在具有已知值范围的字段上下文内检查不确定识别的字符；
    • 在文档编辑器中校验 – 在文档编辑器窗口中检查错误，包括规则校验。

  4. 数据导出

    根据在文档定义中配置的导出设置，单击按钮执行导出。在不使用文档定义的导出设置的情况下，您还可将数据导出至文件或数据库。
    在导出后，选择导出后删除文档选项以自动删除文档。

注：对于将要自动处理的文档，请使用以下设置：

  • 创建导入配置文件，以自动导入图像。
  • 在工具>选项…菜单的文档处理选项卡上选择自动识别添加的图像选项
  • 在批处理文件类型属性的工作流选项卡上，选择当需要校验的字符百分比等于或小于以下项时跳过校验和数据校验选项。
  • 在“文档定义”属性的导出目标选项卡上，选择启用自动报告选项，以自动导出文档。
  • 在导出后，选择导出后删除文档选项以自动删除文档。

项目符号 了解操作员如何使用已配置项目的更多信息


添加图像

要添加图像，请选择所需的批处理文件或创建一个新的批处理文件。导入按钮可供您用不同方式添加图像，按钮名称根据您所选择的导入方法而变化。

如果已在项目中配置了导入配置文件，其名称将显示为导入按钮菜单项。要开始导入程序，只需要选择其中一个配置文件。

要从文件加载图像，请单击导入按钮右侧的箭头，选择加载图像…。选择带图像的文件，配置所需的选项并执行导入。

要从扫描仪加载图像，请单击导入按钮右侧的箭头，选择扫描图像…。

从菜单中选择导入图像…后，您可选择其中一个现有的图像导入配置文件开始导入，添加新的配置文件或编辑现有的配置文件。

项目符号 阅读更多有关添加图像的信息


开始识别过程并分析和应用文档定义

要执行识别，请单击识别。

要对图像执行初步分析，请单击识别按钮右侧的箭头并选择匹配文档定义…。如果可以应用某个文档定义，将对该页及该页所属的文档相应命名。如果任何项目文档定义均不匹配图像，将不会处理该页。

您也可以对某页或整个文档应用某个特定的文档定义。在大多数情况下，会对页面自动应用在程序中正确创建的文档定义，但有些情况可能必须手动应用文档定义。要应用文档定义，请突出显示文档或页面，单击识别按钮右侧的箭头，并单击匹配文档定义…。

阅读有关识别的更多信息


校验

要开始校验过程，请单击运行校验…。数据校验过程随组校验过程一起开始，其后是字段校验过程。如果文档定义没有包括在组校验或字段校验中的字段，则将忽略相关的校验阶段。

对于多页文档，您需要纠正可能的文档组装错误。页面将自动组装进文档中。带有组装错误的文档标有以下符号 [image] 。文档定义名称下方提供了用红色字母表示的错误描述。创建文档定义后，需要配置文档组装规则：组装顺序和重复页数。也可根据关键字段的值配置组装校验：在此情况下，关键字段的值必须在文档的所有页面中保持一致。如果存在误匹，则将显示相关消息，并用红色突出显示关键字段的值。组装错误在页面概览模式中最易纠正，在该模式中，用户可清楚地查看页面图像及其所属的不同文档。

在组校验期间，将用相同方法识别的字符的组提交供校验。操作员的任务是识别已错误识别地不同字符。然后，其在查看含有此字符的字段的图像后，纠正其值。可将无法纠正的字符标为有问题。

在字段校验期间，将带有已知值范围的字段提交供校验。操作员的任务是在整个字段的上下文范围内检查不确定识别的字符。字段校验有两种模式：单一字段视图模式（带有字符剪切）和多个同类型字段视图模式。

未履行的规则标有：黄色标记 [image] （警告）或红色标记 [image] （错误）。操作员需要检查带有规则错误的字段，如有可能，并纠正其值。要运行规则错误校验，请单击按钮右侧的箭头，选择菜单项重新检查规则。如果在纠正字段值后符合了规则，则将移除标志。

数据校验也在文档窗口中执行，双击文档或页面名称即可打开此窗口。文档窗口不显示独立字段，只显示整个文档。它也显示所有不确定识别的字符和规则错误等。

阅读有关校验的更多信息


导出

要导出已识别和已校验的文档，请单击导出。导出将根据在文档定义中配置的设置执行。

如果您需要将数据导出至文件，请单击按钮右侧的箭头并选择将数据导出至文件…

如果您需要将图像导出至文件，请选择将图像导出至多个文件

如果您需要导出至数据库，请选择导出至数据库…

如有必要，请更改默认的导出设置并执行导出。

项目符号 了解导出的更多信息


安装并运行程序

本节包含有关安装、保护和运行 ABBYY FlexiCapture 10 的基本信息。它同时涵盖用于安装的系统要求。

项目符号 | 软件和硬件要求
项目符号 | 安装 ABBYY FlexiCapture 10
项目符号 | 运行程序


软件和硬件要求

硬件要求

  1. Intel® Core™2/2 Quad/Pentium®/Celeron®/Xeon™/Core™ i5/Core™ i7、AMD K6/Turion™/Athlon™/Duron™/Sempron™ 2 GHz 或速度更快的处理器
  2. 每个 CPU 内核为 512 MB RAM，但不少于 1 GB
  3. 1 GB 硬盘空间，其中 700 MB 用于安装目的
  4. TWAIN、WIA 或 ISIS 扫描仪
  5. 用于激活序列号的有效因特网连接，及用于硬件保护密钥的 USB 端口
  6. 至少 1024×768 显卡和显示器
  7. 键盘、鼠标或其它定位设备

软件要求

  1. 操作系统：
    • Windows XP SP3
    • Windows Vista SP2
    • Windows 7
    • Windows Server 2003 SP2
    • Windows Server 2008 SP2 或 R2 + Desktop Expirience
  2. .Net Framework 2.0 或更高版本（在使用 .Net 脚本时）

如果您要使用本地化的界面，则操作系统必须支持相应的语言。

建议使用 Arial Unicode MS 字体。其它字体可能错误地显示 CJK 字符。


安装 ABBYY FlexiCapture 10 工作站

安装 ABBYY FlexiCapture 10

关闭所有其他应作程序（例如 Microsoft Outlook or Microsoft Word）后再安装 ABBYY FlexiCapture 10。

重要事项！安装程序将临时文件复制到由环境变量 %temp% 定义的文件夹。如果在安装时遇到问题，请确保可访问此文件夹并有足够的可用空间存储临时文件。

要安装 ABBYY FlexiCapture 10：

  1. 将 ABBYY FlexiCapture Transformer 10 CD-ROM 插入 CD-ROM 驱动器。
  2. 在 Autorun 菜单中，选择本地安装，按照安装程序的说明操作。（如果在计算机上启用了 Autorun，双击位于 CD-ROM 上的 setup.exe 文件）。
  3. 选择安装语言（英语或俄语）。安装程序将对比系统区域与选定语言。如果语言不兼容，将显示一条警告消息。
  4. 接着，安装程序将检查操作系统版本及管理权限的可用性。如果操作系统版本不受程序支持或您没有管理权限，则将显示一条警告消息，安装程序将终止。
  5. 如果成功通过所有检查，则将显示最终用户许可协议。仔细阅读许可协议，如果您同意本协议条款，请选择相应的选项并单击下一步。
  6. 将打开一个对话框，在其中可输入有关您本人的某些信息。输入必需的信息，继续安装。
  7. 在打开的对话框中，选择其中一个可用的安装模式：
    • 管理员工作站 – 程序将完全安装。您可在操作员模式与管理员模式之间切换，并使用 FormDesigner 10 和 FlexiLayout Studio 10。
    • 操作员工作站 – 将仅安装操作员工作站。（将不安装管理员工作站、FormDesigner 10 和 FlexiLayout Studio 10）
  8. 接着，选择目标文件夹。默认情况下，程序安装在：<磁盘名称>:\Program Files\ABBYY FlexiCapture 10。如果选定硬盘上没有足够空间，则将出现一个窗口显示您的硬盘空间、可用空间及安装所需的空间。选择具有足够可用空间的磁盘，继续安装。
  9. 程序文件将复制到您的计算机。安装完毕，安装程序将显示一条消息说明应用程序已安装成功。
  10. FlexiCapture 10 License Manager 将自动启动以便您激活此应用程序的副本。输入您的序列号，激活应用程序。


更改安装模式，修复和删除 ABBYY FlexiCapture 10

要更改安装模式（选择完整安装或操作员工作站）：

  1. 选择开始>控制面板>添加或删除程序，然后从所安装的程序列表中选择 ABBYY FlexiCapture 10，并单击更改。

  2. 选择修改项目，单击下一步。

  3. 在打开的对话框中，选择所需的安装模式。

要修复受损或删除的文件：

  1. 选择开始>控制面板>添加或删除程序，然后从所安装的程序列表中选择 ABBYY FlexiCapture 10，并单击更改。

  2. 选择修复项目，单击下一步。

要从计算机上删除 ABBYY FlexiCapture 10：

  1. 选择开始>控制面板>添加或删除程序，然后从所安装的程序列表中选择 ABBYY FlexiCapture 10，并单击更改。

  2. 确认您想要删除此程序。


运行程序

要启动 ABBYY FlexiCapture 10：

  • 在管理员模式中：转至开始>程序>ABBYY FlexiCapture 10 并选择 ABBYY FlexiCapture 10 Administrator Station。
  • 在操作员模式中：转至开始>程序>ABBYY FlexiCapture 10 并选择 ABBYY FlexiCapture 10 Operator Station。

重要事项！运行程序之前，请确保：

  • 扫描仪已连接至 PC 且已开机。
    如果扫描仪尚未连接，请参阅扫描仪用户指南。
    为了使扫描仪正常运行，必须先启动扫描仪再启动 PC。
  • 您的 PC 上安装了保护密钥。没有了密钥，程序就无法运行。

控制应用程序启动的注册表项

您可使用以下注册表项（在 Shell\StartUp 中）控制启动应用程序的方式：

  • AdminMode - 定义应用程序是在操作员模式还是在管理员模式中运行。
  • 项目 - 设置在启动应用程序时将自动打开的项目；
  • 批处理文件 - 设置在启动应用程序时将自动打开的批处理文件（必须指定批处理文件）；
  • ProhibitChangePath - 禁止更改在操作员模式中自动打开的批处理文件和项目（将注册表项值设置为“true”）。

默认情况下，这些注册表项不是在注册表中创建的。如有必要，管理员添可将这些注册表项添加至用户操作系统的注册表中。

可使用相应的命令行启动参数覆盖注册表项。

命令行启动参数

以下参数可用于通过命令行启动应用程序：

FlexiCapture.exe [/Station:(Admin,Operator)] [/Project:"path to project"] [/Batch:"batch name"] [/ProhibitChangePath].

  • [/Station:(Admin,Operator)] - 定义应用程序是在操作员模式还是在管理员模式中运行。如未指定模式，将在启动应用程序时显示一个对话框，提示用户选择所需模式；
  • [/Project:"path to project"] - 设置在应用程序启动时将自动打开的项目；
  • [/Batch:"batch name"] - 设置在启动应用程序时将自动打开的批处理文件；
  • [/ProhibitChangePath] - 禁止更改在操作员模式中自动打开的批处理文件和项目。


使用在较早版本 ABBYY FormReader 中创建的模板

在 ABBYY FormReader 6.5 和 6.0 中创建的模板可导入 ABBYY FlexiCapture 10。

导入在较早版本中创建的文档定义后，则将导入页面标记（除开服务字段）和数据类型。数据类型复制到文档定义数据类型中的自定义文件夹。有关详细信息，请参见文本输入字段的数据类型。

重要事项！将不导出导出设置、校验规则及批处理文件中包含的图像。

要导入在 ABBYY FormReader 6.5 或 6.0 中创建的文档定义：

  1. 在管理员模式中启动 ABBYY FlexiCapture 10。
  2. 创建一个新项目，或打开想要将在先前版本程序中创建的文档定义导入到的现有项目。
  3. 在主菜单中，选择项目>文档定义…
  4. 在文档定义对话框中，单击导入…。
  5. 在文件类型下拉列表中，选择 FormReader 6.5 批处理文件 (*.frm) 然后，选择要将文档定义导入到的批处理文件。

导入的文档定义将添加至模板列表中。如果批处理文件中的文档定义不止一个，则将导入所有模板。如果在 ABBYY FormReader 6.5 中指定了多页文档的结构，按此结构描述的模板将合并到一个多页文档定义中。

提示。
  1. 有关新旧版本中规则差异的详细信息，请参见 FormReader 6.5 and FlexiCapture 10 规则对比。
  2. 有关从 FormReader 6.5 假设规则、自动化规则和自动导出迁移至 FlexiCapture 10 脚本的建议，请参见从 FormReader 6.5 规则和导出迁移至 FlexiCapture 10 脚本。


配置程序

在批量输入文档前，需针对所需类型的文档的处理对本程序进行配置。由管理员配置所需的全部设置。

要配置文档处理，请创建一个包含如下项目的项目：

  • 图像导入配置文件
  • 一个或多个文档定义
  • 要处理的文档批处理文件。

您可以在一个项目中包含多个文档定义，对于这种情况，会根据应用的文档定义将不同的文档作为同一个项目的组成部分进行处理。但是，如果文档流不交叉，就可以为这些文档创建多个独立的项目。

项目符号 | 管理员和操作员模式
项目符号 | 创建项目
项目符号 | 文档定义
项目符号 | 图像导入配置文件
项目符号 | 默认导出设置
项目符号 | 批处理文件类型
项目符号 | 文档批处理文件
项目符号 | 索引字段


管理员和操作员模式

要使用 ABBYY FlexiCapture 10 组织单流数据输入，需要将系统配置为处理某些特定类型的文档。所有设置均由管理员配置，而文档输入由操作员执行。工作站的个数取决于需要处理的文档的数目和工作量。

管理员配置系统和控制系统操作。管理员的任务有：

  • 设计新的空白表单（也可以由设计师处理这项任务）
  • 配置图像导入和扫描选项
  • 准备文档定义
  • 监控对所配置系统的数据输入并通知操作员

操作员执行文档输入。操作员使用由管理员预配置的系统，该系统对某些类型已完成文档的处理已准备就绪。操作员的任务有：

  • 扫描或导入文档
  • 校验数据
  • 导出数据

文档识别为自动执行的进程。

程序有两种操作模式：管理员模式和操作员模式。管理员可以访问所有程序功能，管理员模式可以采用密码保护。操作员既不能创建或编辑文档定义，也不能创建导入配置文件。操作员只允许处理一个项目或单个批处理文件。

在安装程序时，可以选择只安装操作员工作站或安装整个程序。如果选择完整安装，那么可以在管理员模式和操作员模式之间进行切换。要选择一种模式，请选择开始>所有程序>ABBYY FlexiCapture 10 >ABBYY FlexiCapture 10 管理员工作站或开始>所有程序>ABBYY FlexiCapture 10>ABBYY FlexiCapture 10 操作员工作站。（详情请参阅运行程序）。

在管理员模式下，主菜单中有测试批处理文件、文档定义…、通过密码保护…、未保护…项目，在操作员模式下无法访问这些项目。因此在管理员模式下只能操作测试批处理文件和文档定义。操作员不能编辑图像导入配置文件和批处理文件类型，也不能查看项目属性和导出项目。管理员也可以为项目设置密码保护或取消密码保护。如果要以管理员模式打开一个有密码保护的项目，会要求输入密码。

在操作员模式下，项目菜单中有项目切换至管理模式…。在选择该项目后，将打开当前项目和批处理文件（如果批处理文件有密码保护，还要接着输入正确的密码）。如果在操作员模式下不具备修改当前项目或批处理文件的权限，不会显示相关的菜单项和工具栏。


创建项目

在开始工作之前必须先创建一个项目。一个项目的组成包括：

  • 图像导入配置文件
  • 一个或多个文档定义
  • 要处理的文档批处理文件

运行本程序后，会打开打开项目对话框，在该对话框中可以从现有项目中选择一个项目，或创建一个新项目。

要创建新项目：

  1. 单击新建…按钮
  2. 指定存储项目的文件夹和项目名称。
  3. 单击创建

如果要在 ABBYY FlexiCapture 10 已经运行且已打开了一个项目的情况下创建新项目，请选择菜单项文件>新建项目…

项目属性
文档定义
图像导入配置文件
文档批处理文件


批处理文件类型

ABBYY FlexiCapture 10 允许处理批处理文件中的文档：在处理之前，创建一个批处理文件并将文档图像添加至该批处理文件。在导入图像时可以自动或手动创建批处理文件（如扫描文档或在导入已扫描文档的图像时）。文档处理采用的设置是针对每种批处理文件的类型单独指定的。您可以为最常用的处理设置组创建多个批处理文件类型。对于这种情况，操作员所要做的就是选择相应的批处理文件类型。

批处理文件类型定义如下处理设置：

  • 图像预处理
  • 文档定义和应用文档定义的顺序
  • 批处理文件完整性检查
  • 默认的批处理文件导出
  • 批处理文件处理

批处理文件类型也定义了注册参数（即表征批处理文件的文本信息）列表。

批处理文件类型针对每个项目单独创建。

要创建批处理文件类型：

  1. 从服务器打开项目
  2. 打开批处理文件类型对话框（通过选择项目>批处理文件类型…批处理文件类型...）
  3. 单击新建，并根据屏幕指示进行操作。


项目属性

当您在主窗口中选择项目>项目属性… 时，您可在打开的单独对话框中查看并更改项目属性。

常规选项卡显示项目名称、项目文件路径及项目描述。

图像预处理选项卡显示图像预处理选项。如有需要可更改这些选项。详情请参阅图像预处理选项。

识别选项卡包含识别期间删除空白页选项。如果您想在识别期间删除空白页面，请选中此选项。此外，您可在该选项卡上将 FlexiLayout 分类器连接至您的项目。

导出目标选项卡显示默认导出设置。要导出不可识别的文档，请选择导出不可识别的文档并指定导出设置。

在工作流选项卡上，您可设置批处理文件处理（适用于“默认”批处理文件类型）。


注册参数

注册参数是可以用于识别特定批处理文件或文档的文本属性。这些属性可以由扫描日期、扫描操作员姓名等表示。注册参数可以是必填参数，也可以是选填参数。

可以在创建期间将注册参数分配给某个批处理文件（如果使用 导入配置文件自动创建批处理文件）。也可以将注册参数分配给扫描工作站上的多个批处理文件和文档，并随图像一同发送至 ABBYY FlexiCapture。

可以分别在“批处理文件属性”或“文档属性”对话框的 注册参数 标签上配置注册参数（单击快捷菜单上的 属性… ）。


显示图像质量：

显示图像质量：选项确定加载于工作站上的图像的质量。

显示图像质量：。创建批处理文件之后，将指定其类型，并将以指定质量显示批处理文件图像。

如果未创建批处理文件类型，将以为整个项目指定的质量显示批处理文件图像（项目>项目属性…，常规选项卡）。

可选择显示图像质量的以下值：20%、40%、60%、80% 或 100%。

如果操作员计算机上的网络容量低（例如，若远程工作），则降低显示图像质量可用于提高加载图像的速度。如果选择了较低的质量，图像将由于尺寸较小，加载速度更快。


文档定义

创建文档定义是项目配置过程中最主要也是最关键的阶段，并且对处理后得到的数据质量有决定作用。

只能以管理员模式创建文档定义。

文档定义描述了文档要素的位置，并且指出了数据提取过程中要使用的字段。创建文档定义时，要指定字段属性及其值范围。另外还要配置数据导出设置。

要开始创建文档定义，请运行文档定义向导：

  1. 在 ABBYY FlexiCapture 10 主窗口中选择项目>文档定义…
  2. 在打开的文档定义对话框中单击新建…按钮。
  3. 根据文档定义向导中的指示进行操作。

文档定义向导
自动检测字段和静态元素
静态元素
为文档定义创建字段
字段属性
规则校验
配置数据导出
在文档窗口中配置数据显示
文档定义属性
为通过 ABBYY FormDesigner 创建的表单导入文档定义
为多页文档创建文档定义
为弹性文档处理创建文档定义
为带附录的文档创建文档定义
处理非结构化文档
编辑和发布文档定义
测试文档定义


文档定义向导

要创建新的文档定义，请选择主菜单项项目>文档定义…并在文档定义对话框中，单击新建…按钮。此时将打开新的文档定义创建向导。

  1. 在创建新的文档定义对话框中，指定主要文档定义设置：使各和注翻译及所用的语言（语言（区域）：）和书写风格（书写风格：）。默认情况下，下拉列表仅包含受词典支持的语言。要选择不受词典支持的语言，请启用选项 显示所有语言。务必正确指定语言：正确的文档识别取决于此。各个国家/地区的书写风格可能差别很大，正因如此，指定因家/地区以使程序选择典型的书写风格才变得很重要。

    显示各种数字书写风格的示例
    - 俄国的二
    - 美国的二
    - “普通的”五，可能出现在任何风格中。
    - 日本的五
    - 俄国的一
    - 德国的一
    - “普通的”九，可能出现在任何风格中。
    - 捷克的九，右边带有一个环
    - 美国的九，底部没有“钩”

    指定文本类型：

    • ICR（手印）– 如果文档中大多数字段将用手填写，请启用此选项；
    • OCR（打印）： –如果将打印大多数字段中的值，请启用此选项。在下拉列表中选择打印类型。

    注：并非所有语言均支持识别手印文本。对于某些语言，此识别类型将不可用。参见受支持的识别语言。

    以后您可为单一字段更改文本类型，将默认使用在此阶段中指定的类型。

    单击下一步转至下一步。

  2. 在第二步中，加载文档页面图像，以创建文档定义。您可扫描未完成页面的图像或从文件将其加载。

    注：固定表单的文档定义是使用通过扫描未完成表单而获取的图像创建的。此图像应质量优划，无失真（无歪斜和缺陷等）。创建彩色背景表单的文档定义时，您应使用未通过过滤器扫描的页面，以便背景在扫描期间不会消失。（此后，当您扫描用于数据识别的页面图像时，您将选择会引起背景消失的扫描模式）。

    如果您的文档包括多页，请加载第一页，并遵循为多页文档创建文档定义部分中的建议添加剩余页面。

    如果您需要使用通过 ABBYY FlexiLayout Studio 创建的弹性描述，请启用选项加载 FlexiLayout输入包含弹性描述的文件的路径。有关详细信息，请参见创建用于处理弹性文档的文档定义。

    单击下一步按钮。

  3. 在下一步中，选择必须在图像中自动检测的字段类型。您可标记复选标记和文本输入字段。程序将很好地自动检测带有区域和矩形复选标志的文本字段。如果表单上的输入字段没有区域，且在白色背景中插入了复选标记，则通常需要手动将其突出显示。

    注：始终执行自动定位点搜索。如果表单包含定位点，其将被检测到并标记在图像上。

    单击完成按钮。

完成文档定义向导后，将打开文档定义编辑器窗口，在其中，您可执行进一步操作以创建文档定义。在文档定义创建的下一个阶段，您必须在页面图像上标记字段和静态元素，并配置其属性。


自动检测字段元素和静态元素

添加图像时自动检测：

添加页面图像后，程序将始终检测定位点。如果图像有标准定位点（例如，黑色方块形），则将检测和标记这些定位点。如果用户启用了文本或复选标记选项，程序将搜索文本字段和复选标记。程序将很好地自动检测带有区域和矩形复选标志的文本字段。如果表单上的输入字段没有区域，且在白色背景中插入了复选标记，则通常需要手动将其突出显示。

在文档定义编辑器窗口中自动检测：

对于文档定义编辑器窗口中的自动检测，请选择所需的模式（字段元素或静态元素）后选择菜单项工具>自动检测对象…。标记要自动检测的字段或静态元素的类型。

如果需要自动检测图像上的特定对象，请选择所需的模式（字段或静态元素），在工具栏上单击 [image] 。如果单击元素 – 其将标有矩形。程序将自动检测元素类型。

自动检测区域：

对于要自动检测的特定类型的字段或静态元素区域，请执行以下操作：

  1. 选择所需的模式（字段或静态元素）
  2. 借助于工具栏上的相应按钮选择字段或静态元素的类型
  3. 按 Shift 键
  4. 在字段或静态元素区域中单击左键


静态元素

静态元素用于文档定义匹配和标识。不从其中提取数据。

要在文档定义编辑器中处理静态元素，请单击 [image] 按钮以切换至静态元素模式。

静态元素用于文档定义匹配和标识。当您配置元素属性时即已确定了其使用方法。定位点用于匹配文档定义与表单图像。标识符用于在单一流程中处理各种表单时确定页面所属的表单。有关详细信息，请参见创建机器可读表单。

静态元素没有名称，只有图像上的区域。

将文档定义应用于文档图像时，程序将搜索静态元素并根据其位置选择文档定义。只有在出于标识目的之需要时才对静态元素（文本和条形码）的值执行识别。参见指定标识符值。

程序处理以下类型的静态元素：

静态元素 | 工具栏按钮
定位点 |
分隔符 |
定位点文本 |
定位点条形码 |

程序在添加图像后自动搜索定位点。

如何手动创建静态元素：

  1. 选择静态元素模式
  2. 选择用于创建必要类型元素的工具
  3. 将光标放在元素的角落，单击左键，沿斜线将光标拖至对面的角落。
    或
    在元素区域中按 Shift-Click 键。

静态元素区域将用一个矩形框住。其颜色取决于静态元素类型。静态元素分配有默认属性。

如果更改静态元素的属性：

  1. 突出显示图像上的元素区域，单击右键，从快捷方式菜单中选择属性…。
  2. 在打开的对话框中修改静态元素属性：

阅读更多有关静态元素的信息：

  • 定位点
  • 分隔符
  • 定位点文本
  • 定位点条形码


定位点

定位点 - 静态元素自动在图像上突出显示

要手动突出显示定位点：

  1. 切换至静态元素模式
  2. 在工具栏上选择

  3. 将指针放在定位点一角，左键单击并呈对角将指针拖动至对角。

    或

    在定位点区域使用 Shift 并单击。

定位点属性

要修改定位点属性：

  1. 突出显示定位点；
  2. 右键单击定位点区域，并从快捷菜单选择属性…项
  3. 在打开的对话框中修改属性：
    • 用于文档定义匹配 – 必须启用该选项，以便使程序可以使用该定位点进行文档定义匹配（推荐）
    • 用于文档定义标识 – 启用该选项以将定位点用于文档定义标识
    • 定位点类型： – 要正确进行文档定义匹配，指定定位点类型很重要：黑方形、叉形或十字形


定位点文本

定位点文本 - 静态元素。这是图像上的任何静态文本 – 标题，说明性签名。

要突出显示定位点文本：

  1. 切换至静态元素模式
  2. 在工具栏上选择
  3. 将光标放在定位点文本的角落，单击左键，沿斜线将光标拖至对面的角落。

    或

    在定位点文本区域中按 Shift-Click。

定位点文本属性

要修改定位点文本属性：

  1. 突出显示文本
  2. 在定位点文本区域中单击右键，从快捷方式菜单中选择属性…
  3. 在打开的对话框中修改属性：

    在常规选项卡上：

    • 用于文档定义匹配 – 必须启用此选项，程序才能将定位点文本用于文档定义匹配（建议）
    • 用于文档定义标识 – 启用此选项可将定位点文本用于文档定义标识
    • 值： – 如果您在使用定位点文本作为标识符，则可设置其值。要自动插入值，请单击提示按钮。
    • 最大错误数： - 在此处您可指定允许定位点文本字符串中出现的最大错误数。

    在识别选项卡上，您需要为将以最大精度识别的静态文本配置识别选项：

    • ICR（手印） – 在手印静态文本时启用此选项。

    • OCR（打印）： – 在打印静态文本时启用此选项。从下拉列表中选择打印样式（印制、点矩阵打印机和打字机等）。另请参见支持的文本类型。

    • 高级： – 使用此选项可选择多个文本类型或指定自定义文本类型。

    • 数据类型： – 选择文本语言。使用选择…按钮作出选择。

    • 字母大小写： – 选择静态文本字母的大小写，如果文本同时有大写和小写字母，请保留自动值。

    • 方向： – 指定文本方向。

    • 为一行文本启用一行选项。

    • 如果文本不包含空格，即由一个单词组成，请启用一个单词选项。

    • 在识别期间配置图像处理选项：
    • 反转 – 反转图像。
    • 移除纹理 – 移除纹理。
    • 去斑 – 启用此选项可移除图像中的垃圾。
    • 仅清除指定大小的垃圾： – 如果您想要仅清除指定大小的垃圾，请启用此选项。指定垃圾大小。如果此选项已禁用且仅启用去斑选项，则将自动选择垃圾大小。


分隔符

分隔符是静态元素。分隔符是图像上的垂直或水平线条。

要突出显示分隔符：

  1. 切换至静态元素模式
  2. 在工具栏上选择
  3. 将光标放在分隔符的角落，单击左键，沿斜线将光标拖至对面的角落。

    或

    在分隔符区域中按 Shift-Click 键。

分隔符属性

要修改分隔符属性：

  1. 突出显示该分隔符
  2. 在分隔符区域中单击右键，从快捷方式菜单中选择属性…菜单项
  3. 在打开的对话框中修改属性：
    • 用于文档定义匹配 – 必须启用此选项，程序才能将分隔符用于文档定义匹配
    • 用于文档定义标识 – 启用此选项可将分隔符用于文档定义标识


定位点条形码

定位点条形码 - 静态元素。

重要事项！可将条形码突出显示为字段元素或静态元素。这取决于被处理的文档中的条形码值：如果是用于文档定义匹配或标识，则您需要在静态元素模式中创建它。如果条形码用于数据捕获，则您必须在字段标记模式中创建它。条形码属性的差异取决于其是字段元素还是静态元素。本节描述了静态元素的属性 – 定位点条形码，请参见条形码字段。

要突出显示定位点条形码：

  1. 切换至静态元素模式
  2. 在工具栏上选择
  3. 将光标放在条形码的角落，单击左键，沿斜线将光标拖至对面的角落。

    或

    在条形码区域中按 Shift-Click。

定位点条形码属性

要修改定位点条形的属性：

  1. 突出显示条形码
  2. 在条形码区域中单击右键，从快捷方式菜单中选择属性…菜单项
  3. 在打开的对话框中修改属性：

    在常规选项卡上：

    • 用于文档定义匹配 – 必须启用此选项，程序才能将条形码用于文档定义匹配
    • 用于文档定义标识 – 启用此选项可将条形码用于文档定义标识
    • 值： – 如果您在使用定位点条形码作为标识符，则可设置其值。要自动插入值，请单击提示按钮
    • 文档定义匹配所必需的 – 如已选择此选项，只有匹配了条形码后才能匹配文档定义。当批处理文件中存在大最极为相似的文档定义，仅仅只能按照其条形码值或甚至按其多个条形码之一的值才能区分这些文档定义时，请选择此选项。在此情况下，选择此选项将加快文档定义的选择。如果您想要在即使是没有条形码或条形码太模糊的情况下匹配文档定义，请不要选择此选项。

    在识别选项卡上：

    • 代码类型： – 指定条形码类型（这通常是自动确定的）
    • 方向： – 指定条形码方向。

    您也可以配置条形码图像预处理选项：

    • 反转 – 反转图像
    • 移除纹理 - 移除纹理
    • 去斑 – 启用此选项可移除图像中的垃圾
    • 仅清除指定大小的垃圾： – 如果您想要仅清除指定大小的垃圾，请启用此选项。指定垃圾大小。如果此选项已禁用且仅启用去斑选项，则将自动选择垃圾大小。


指定标识符值

标识符用于确定某页面所属表单，并用于通过一组原始的定位点从批处理文件包含的多个文档定义中选择一个文档定义。在单一流程中同时处理多个表单时，程序将根据标识符的位置确定此页面所属的表单。

如果定位点条形码或定位点文本用作标识符，则可指定该等标识符的值。在此情况下，在应用文档定义时，程序将图像中的已识别数据与标识符的值进行对比，只有这些值匹配时，文档定义才可能匹配。

可在常规选项卡上的静态元素属性对话框中设置标识符的值。文本和条形码的值可自动输入。提示按钮用于此目的。

注：如果仅根据元素位置就可识别带绝对确定性的页面，则您不必设置这些值。只有在绝对必要时才能使用此功能，因为分配标识符值将在文档定义应用阶段启动识别模块，从而减缓文档定义与图像的匹配。


创建文档定义的字段

字段将用于数据抽取。

要使用文档定义编辑器中的字段，请单击 [image] 按钮切换至字段标记模式。

用于数据捕获的图像上的所有区域必须标记为字段。这些字段中的数据已识别且其值可导出。

字段具有名称，其名称列表已显示在文档结构窗口中。通常，字段在图像上具有区域，但您也可以在无需区域的情况下创建字段（例如，用于存储中间结果）。

该程序将识别以下字段类型：

字段 | 工具栏按钮
文本条目字段 |
复选标记 |
复选标记组 |
条形码 |
图片 |
表格 |
字段组 |

要创建字段：

  1. 选择字段标记模式。
  2. 选择用于创建所需类型字段的工具。
  3. 将指针放在字段一角，左键单击并呈对角将指针拖动至对角
    或在字段区域中按 Shift 并单击。

该字段区域将使用矩形框住。其颜色取决于字段类型。

已创建的字段将指定一个默认名称，该名称与距离字段区域最近的解释性文本对应。该名称将会显示在文档结构窗口的字段选项卡上的字段列表中。

该字段将指定默认属性。

也可以通过以下方法创建字段：

  1. 从编辑菜单或从字段选项卡的字段列表页面的本地菜单中选择创建字段命令。
  2. 在字段属性对话框中，指定字段属性并单击确定。
  3. 新字段将添加至列表。它将用红色星号标记为无区域的字段。
  4. 要创建字段区域，单击工具栏上的 [image] 按钮，并在图像上绘制区域。系统将提示您从弹出列表中选择相应的字段名称。

要从识别中排除区域，请在图像上绘制非识别区域。为此，请使用 [image] 按钮。

  • 创建复选标记组
  • 创建表格
  • 创建字段组
  • 如何更改字段名称
  • 复制、移动、删除字段
  • 无区域的字段
  • 字段属性


创建复选标记组

复选标记组将通常与同一问题的互相排斥的答案相对应的具有逻辑性链接的复选标记组合在一起。在此情况下，程序将从组中选择一个复选标记并导出其值。但是，这不是必要条件。您可允许程序标记组中的多个复选标记（在复选标记组属性中选择相关的选项）。

一种创建复选标记组的方法：

要创建复选标记组：

  1. 选择 [image] 工具后，创建属于组的复选标记。
  2. 选择 [image] 工具，用矩形框住要包括在此组中的所有复选标记。
  3. 将突出显示矩形内的复选标记。其在文档结构中的名称将组合在一起，放在复选标记组名称下方。属于同一组的复选标记的属性是相同的，不能逐一编辑。

另一种创建复选标记组的方法：

您不需要突出显示属于组的每个复选标记。

  1. 在不逐一突出显示复选标记的前提下，选择 [image] 工具，用矩形突出显示要包括在此组中的所有复选标记。
  2. 将自动检测、命名矩形内的复选标记，并将其组合到组中。


创建字段组

可以将字段合并为组，以实现清晰显示文档结构和重复性字段组的创建。例如，城市、街道和楼号可组合进“家庭地址”组中。您可为“办公地址”组创建字段，只需复制“家庭地址”字段组。

要创建字段组：

  1. 创建要包括在组中的字段。
  2. 选择 [image] 工具，用矩形框住要包括在此组中的所有字段。
  3. 将突出显示矩形内的字段。其在文档结构中的名称将组合在一起，放在字段组名称的下方。

如果表单具备重复性字段组，则在创建一个组后您可为同一组创建多个实例。组中的所有字段属性和规则集将对每个组实例有效。参见有多个实例的字段。

您也可复制字段组，但在此情况下，复制将导致创建另一个独立的组。


创建表格

ABBYY FlexiCapture 10 允许您为包含表格的文档创建“文档定义”。创建表格字段可显著简化配置、数据抽取和从表格中的数据导出。表格字段是同类列和重复行的集合。

表格列可为以下类型：

  • 文本
  • 复选标记
  • 条形码
  • 图片

要创建表格：

  1. 选择 [image] 工具，并使用矩形框住表格区域。该表格页眉必须不包括在所选区域内。用于删除分隔符的其他表格处理工具将显示在工具栏上：
    删除分隔符
  2. 通过绘制所需的分隔符数标出表格单元。要创建分隔符，单击放置分隔符的位置。要创建垂直分隔符，将指针放在表格区域，按 Shift 键并单击一次。要创建水平分隔符，请按住 Alt 键执行相同操作。您也可以自动检测分隔符：选择已创建的表格，然后从本地菜单选择自动检测垂直分隔符和自动检测水平分隔符项。
  3. 创建表格列。要创建列，单击列区域，并从下拉列表中选择列类型。


如何更改字段名称

更改字段名称

要重命名字段：

  • 在文档结构中单击字段名称，单击右键，从快捷方式菜单中选择重命名，输入新的名称。

或

  • 单击图像上的字段区域，单击右键，从快捷方式菜单中选择建议名称。程序将向字段分配一个与字段区域最近的说明性文本相对应的名称。

或

  • 单击图像上的字段区域，单击右键，从快捷方式菜单中选择从图像获取名称…。接着，用光标突出显示可用作字段名称的说明性文本。字段名称将更改为选定的文本。

或

  • 打开字段属性对话框，在常规选项卡上更改名称。


复制、移动和删除字段

可复制、删除、移动和修改字段。已复制字段的名称具有不同的编号。要突出显示多个字段，请使用 Ctrl-Click 键。然后将选定的操作应用于所有突出显示的字段。

要删除字段，请将其突出显示，按删除键，或从快捷方式菜单中选择删除。要仅删除区域，但将字段保留在文档结构中，请按 Shift+Delete 或从字段的快捷方式菜单中选择删除区域。参见没有区域的字段。


没有区域的字段

图像上字段可能没有区域。没有区域的字段的名称在列表中标有红色星号。该等字段可用于存储用被识别字段的值执行的计算的中间结果。例如，您可借助于字段值合并规则组合多个字段的值，并将结果保存至没有区域的字段。

没有区域的字段具备其所属字段类型的所有属性。该等字段的值也可导出。

有两种方式创建没有区域的字段：

  1. 在文档定义编辑器窗口中，选择菜单项编辑>创建字段，并创建必要类型的字段。字段名称将显示在标有红色星号的列表中。在此情况下，程序将在文档结构中创建一个字段，但不在图像上创建其区域。
  2. 另一种方法是删除普通字段的区域。在图像上或在列表中突出显示必要的字段，从快捷方式菜单中选择删除区域。此时，区域被删除，字段名称标有红色星号。

要为图像上没有区域的字段创建区域，请在工具栏上选择 [image] 并用光标突出显示必要的区域。如果列表包含标有星号的字段，程序将要求您选择一个该等字段的名称。


从识别中排除区域

有时需要从识别中排除某个区域，例如，使从字段中提取数据变得复杂的带说明性文本的区域。

要从识别中排除区域，请选择 [image] 工具，用光标突出显示要排除的区域。


创建带有非矩形区域的字段

有时有必要创建带有非矩形区域的字段，如调查问卷中所示：

要创建非矩形字段区域：

  1. 选择用于创建必要类型字段的工具。
  2. 选择可在其中添加或删除片段的矩形区域，以创建所需形状的区域。
  3. 选择 [image] 工具，确保突出显示矩形区域。
  4. 要将片段添加至区域中：按 Shift 键（光标将显示为“加号”），并突出显示想要添加的片段。
  5. 要从区域中排除片段：按 Alt 键（光标将显示为“减号”），并突出显示想要排除的片段。


有多个区域的字段

字段可能包含图像上的多个区域。这些区域可相隔一定的距离，甚至位于不同的页面上。同一字段中所有区域的值可组合一起，并可作为一个字段一起导出。

为多页上字段创建多个区域很方便，例如，为较大的表格。

显示示例

要创建带有多个区域的字段，请执行以下操作：

  1. 创建字段。
  2. 将其突出显示，在字段区域中单击右键，并从快捷方式菜单中选择继续区域…。
  3. 将区域图像移至页面上的所需位置。


有多个实例的字段

重复元素可能出现在字段中。这些字段和字段组多次出现在表单中，描述了相似的对象，例如，多个雇员、儿童和帐户等的相同详细信息。将为该等对象创建带有多个实例的字段。

任何字段均可能有多个实例。其区域可能互相相隔一定的距离，甚至处于不同的页面上。字段实例具备相同的属性。它们被导出至独立的文件或数据库表格。

当表单具备重复组时，您可为字段组创建多个实例。

显示示例

要创建带有多个实例的字段，请执行以下操作：

  1. 创建字段
  2. 将其突出显示，在字段区域中单击右键，从快捷方式菜单中选择新建实例…
  3. 将区域图像移至页面上的所需位置。


字段属性

务必正确配置每个这段的属性。字段属性不但影响识别质量，而且可确定将由操作员导出并提交校验的字段值。某些属性对数据识别极为重要。例如，文本输入字段的标记方法：如果配置不正确，在扫描期间不消失的标记将不与字符分开，识别结果可能不令人满意。

每种类型的字段均有其自己的一组属性。当您在图像上创建某种类型的字段时，将向其分配默认属性。

如何更改字段属性：

  1. 在文档结构中或在图像的字段区域中突出显示字段名称，单击右键后从快捷方式菜单中选择属性…。
  2. 在打开的对话框中修改字段属性：

阅读有关字段属性的更多信息：

项目符号 | 文本输入字段
项目符号 | 复选标记
项目符号 | 复选标记组
项目符号 | 条形码
项目符号 | 图片
项目符号 | 表格
项目符号 | 字段组


文本输入字段

当您创建文本字段时，会向其分配默认的属性。从快捷方式菜单中选择属性…即可更改属性。属性修改对话框包括用于不同组属性的五个选项卡。

项目符号 | 基本属性
项目符号 | 数据类型
项目符号 | 认别属性
项目符号 | 校验属性
项目符号 | 规则校验


基本字段属性

可在常规选项卡上配置基本字段属性。

在此选项卡上，字段类型显示为名称右侧的图标。

  • 名称： – 字段名称。名称在创建字段时自动分配，并与最接近字段的说明性文本相对应。编辑属性时，可更改默认分配的名称。另请参见如何更改字段名称。
  • 标题： – 将显示在数据表单中的字段的名称。
  • 导出字段值 – 如果想要导出字段值，必须启用此选项（默认启用）。您可能需要禁用此选项，例如，如果此字段的值用于获取已计算字段的值（参见规则校验），且只需导出最终结果。
  • 显示在数据表单中 – 如果必须在数据表单中显示字段，则必须启用此选项（默认启用）。
  • 不得为空 – 如果想要使其成为必填字段，请启用此选项。
  • 只读 – 如果字段仅供查看时访问，请启用此选项，即，操作员无法修改其值。对于必须使用规则自动计算其值的字段，您可启用此选项，例如，对于您计划在其中保存总和或组合其他字段的字段（参见规则校验）。
  • 索引字段 – 如果您期望使用此字段建立文档索引，请启用此选项。处理文档时，您将可为每个文档显示此字段的值，并根据字段值排序和搜索文档。
  • 注释： – 您可输入任何注释。


文本输入字段的数据类型

某些可影响识别质量、初步检查和字段数据修改的最重要文本字段参数均为数据类型设置。

借助文本字段的数据类型参数，您可指定：

字段内容的类型，该字段内容允许您告知程序在字段中所需的数据类型。它可为位数、数字、日期、特定集合的符号、词典中的单词（名字、姓氏、城市和国家/地区等）或其它。在文本字段数据的识别期间，该程序使用内容类型。正确指定的字段内容改善了识别质量，提高了识别符号的置信水平，从而减少了操作员在数据校验阶段时所花的时间。指定内容类型的过程是非常灵活的。用户不仅能从一组为选择的识别语言而提供的内容类型中选择变体，而且可基于符号集、正则表达式或用户词典创建自己的自定义类型，以适用于特定用途。

自动校正的参数允许您实施识别字段值的自动更正（例如，替换或删除多余符号和空格，及更改大小写等）。这些参数支持自动数据转换，以转换为导出所需的格式，并减少操作员在手动更正字段数据时所花的时间。在指定自动校正选项时，您可使用标准参数或创建自定义脚本，以实现更复杂的字段值转换。详情请参阅处理已输入值；

值校验参数均用于指定已输入值和限制的格式（例如，文本长度校验值、数字的最小值和最大值及日期的时间间隔等）。通过使用外部来源：文本文件或数据库，您还可限制容许值列表。值校验参数和限制取决于字段内容的已选类型。如果识别数据和值校验参数不匹配，则格式错误将在校验阶段的文档窗口中输出。

注：在字段数据类型设置中，用户值列表（从文件或数据库中加载）可用于：

  • 通过为程序不仅提供符号集，而且提供可能单词的列表，从而提高字段的识别质量。在识别过程期间，来自该列表的值将由程序使用。作为文本字段的识别结果，该程序将提示与加载列表中的值相同或相近的变体。如果要识别的值不在词典中，那么仅通过使用符号集就可执行识别过程。要解决此问题，您必须在字段内容设置中添加用户词典。
  • 通过检查容许值列表校验已识别的文本值。一旦字段已识别，其值将可在容许值列表中搜索（该列表可为本地列表，也可来自外部来源）。如果未找到该值，则将输出有关字段格式错误的消息。要解决此问题，您必须加载或连接值校验设置中的容许值列表。

文本输入字段的数据类型可在字段属性对话框的数据类型选项卡上指定。根据内容类型，字段属性对话框中的属性视图可能有所不同。

文本
  1. 如果该字段包含文本，则从内容：列表中选择文本。
    在详细信息：字段中，您将看到已选数据类型的描述。如果您要更改语言、词典的使用或指定范围较窄的数据类型，则单击描述右侧的编辑…按钮。在打开的对话框中，您可：
    • 更改该字段的识别语言。要更改语言，请单击语言字段右侧的“...”按钮。您可选择一种或多种语言。
    • 对于标准文本类型（即，在内容设置：列表中选择常规），您可使用内置式词典和/或自定义词典。在这种情况下，该字段值将在这些词典中进行检查。
      要使用内置式词典，请选择禁用内置式词典选项。
      要使用自定义词典，请选择使用自定义词典选项并单击编辑…，以编辑词典。您可通过逐一地添加单词（单击添加...按钮以添加单词），或通过从文件加载单词列表（单击加载...按钮并指定带有扩展名 *.txt 或 *.dic 的所需文件的路径）创建自定义词典。
    • 特殊文本类型（例如，在内容设置：列表选择特殊）包含预定义数据类型，您可在该数据类型中选择适合给定字段的数据类型。在选择数据类型时，请参阅对话框下方出现的
      其描述。如果预定义类型都不适合您的用途，您还可创建自己的自定义数据类型。详情请参阅创建自定义数据类型。
  2. 对于任何数据类型，该程序可自动地处理已输入的值：删除多余空格，更改字母大小写，或者自动替换特定字符或文本片段。要启用自动处理值，请单击AutoCorrect 选项：字段旁边的编辑…按钮。在打开的对话框中，选择所需的自动处理选项。详情请参阅处理已输入值；
  3. 您还可为字段设置值校验，这样该程序将检查所输入的值是否位于指定的范围内。要指定字段值范围，请单击校验字段右侧的编辑…按钮。详情请参阅文本数据类型的值范围限制。
数字
  1. 如果该字段将包含数值，则从内容：列表中选择编号。
    在详细信息：字段中，您将看到已选数据类型的描述。如果您要更改语言，将整数更改为小数（或相反），或者指定范围较窄的数据类型（例如，两位数或罗马数字），则单击描述右侧的编辑…按钮。在打开的对话框中，您可：
    • 更改该字段的识别语言。要更改语言，请单击语言字段右侧的“...”按钮。您可选择一种或多种语言。
    • 如果字段必须包含一个整数，则选择整数。如果字段必须包含小数，则清除此选项。
    • 为整数或小数选择标准数据类型（例如，在内容设置：列表中选择常规）。
    • 特殊数字类型（例如，在内容设置：列表中选择特殊）包含预定义数据类型，您可在该数据类型中选择适合给定字段的数据类型。在选择数据类型时，请参阅对话框下方出现的
      其描述。如果预定义类型都不适合您的用途，您还可创建自己的自定义数据类型。详情请参阅创建自定义数据类型。
  2. 对于任何数据类型，该程序可自动地处理已输入的值：删除多余空格，更改字母大小写，或者自动替换特定字符或文本片段。要启用自动处理值，请单击AutoCorrect 选项：字段旁边的编辑...按钮。在打开的对话框中，选择所需的自动处理选项。详情请参阅处理已输入值；
  3. 您还可为字段设置值校验，这样该程序将检查所输入的值是否位于指定的范围内。要指定字段值范围，请单击校验字段右侧的编辑…按钮。详情请参阅数字的值范围限制。
重要事项！请勿为字段使用包含以下数字的数字数据类型，这些数字不但是正式的数字，而且作为代码使用（例如，信用卡数字和护照系列等）。为此类字段指定数字数据类型可能会发生错误（例如，字符串开头的零将丢失）。对于上述情况，可创建自定义文本类型并指定 0 至 9 的符号集（如有需要，可添加正则表达式），或仍使用数字数据类型，但要确保选择将文本作来值处理选项。对于后一种情况，字段值将作为文本处理，自定义词典可用于检查值，可以像指定文本值一样指定可能的值范围。详情请参阅文本数据类型的值范围限制。
日期
  1. 如果该字段将包含日期，则从内容：列表中选择日期。
    在详细信息：字段中，您将看到已选数据类型的描述。如果您要更改语言，更改日期组件的顺序，添加时间或周中日期，或者指定较狭窄数据类型（例如，使用罗马数字显示月份），则单击描述右侧的编辑…按钮。在打开的对话框中，您可：
    • 更改该字段的识别语言。要更改语言，请单击语言字段右侧的“...”按钮。您可选择一种或多种语言。
    • 从日期组件顺序：列表中选择所需顺序。
    • 为标准格式编写的日期选择标准数据类型（即，在内容设置：列表中选择常规）。对于标准日期类型，以下其它选项可用：
      可包括以文字表示的月份 - 如果月份还可作为单词而不是数字的形式编写，则使用该选项；可包括周日 - 如果日期可能包括周中某日，则使用该选项；可包括时间 - 如果日期可能包括时间，则使用该选项。
    • 特定日期类型（即，在内容设置：列表中选择特殊）包含预定义数据类型，您可在该数据类型中选择适合给定字段的数据类型。在选择数据类型时，请参阅对话框下方出现的
      其描述。如果预定义类型都不适合您的用途，您还可创建自己的自定义数据类型。详情请参阅创建自定义数据类型。
  2. 对于任何数据类型，该程序可自动地处理已输入的值：删除多余空格，更改字母大小写，或者自动替换特定字符或文本片段。要启用自动处理值，请单击AutoCorrect 选项：字段旁边的编辑...按钮。在打开的对话框中，选择所需的自动处理选项。详情请参阅处理已输入值；
  3. 您还可为字段设置值校验，这样该程序将检查所输入的值是否位于指定的范围内。要指定字段值范围，请单击校验字段右侧的编辑…按钮。详情请参阅日期的值范围限制。
重要事项！如果日期无法降至标准格式或您未打算将字段中的值作为日期处理，则选择将文本作来值处理选项。在这种情况下，字段值将作为文本处理，自定义词典可用于检查值，可以像指定文本值一样指定可能的值范围。详情请参阅文本数据类型的值范围限制。
时间
  1. 如果该字段包含时间，则从内容：列表中选择时间。
    在详细信息：字段中，您将看到已选数据类型的描述。如果您要更改语言，更改时间格式，或者指定范围较窄的数据类型（例如，12 小时格式），则单击描述右侧的编辑…按钮。在打开的对话框中，您可：
    • 更改该字段的识别语言。您可从下拉列表选择所需的语言或在语言字段的右侧选择显示所有语言选项。
    • 为标准格式编写的时间选择标准数据类型（即，在内容设置：列表中选择常规）。
    • 特定日期类型（即，在内容设置：列表中选择特殊）包含预定义数据类型，您可在该数据类型中选择适合给定字段的数据类型。在选择数据类型时，请参阅对话框下方出现的其描述。如果预定义类型都不适合您的用途，您还可创建自己的自定义数据类型。详情请参阅创建自定义数据类型。
  2. 对于任何数据类型，该程序可自动地处理已输入的值：删除多余空格，更改字母大小写，或者自动替换特定字符或文本片段。要启用自动处理值，请单击AutoCorrect 选项：字段旁边的编辑…按钮。在打开的对话框中，选择所需的自动处理选项。详情请参阅处理已输入值；
  3. 您还可为字段设置值校验，这样该程序将检查所输入的值是否位于指定的范围内。为此，指定日期字段的值范围。指定的限制也适用于时间字段。详情请参阅日期的值范围限制。
重要事项！如果时间无法降至标准格式或您未打算将字段中的值作为时间处理，则选择将文本作来值处理选项。在这种情况下，字段值将作为文本处理，自定义词典可用于检查值，可以像指定文本值一样指定可能的值范围。详情请参阅文本数据类型的值范围限制。
金额
  1. 如果该字段包含金额，则从内容：列表中选择金额。
    在详细信息：字段中，您将看到已选数据类型的描述。如果您要更改语言或指定范围较窄的数据类型（例如，货币代码），则单击描述右侧的编辑…按钮。在打开的对话框中，您可：
    • 更改该字段的识别语言。要更改语言，请单击语言字段右侧的“...”按钮。您可选择一种或多种语言。
    • 如果字段值是数字或随附了标准货币符号或代码的数字，则为金额选择标准数据类型（即，在内容设置：列表中选择常规）。
    • 特殊类型（即，在内容设置：列表中选择特殊）包含预定义数据类型，您可在该数据类型中选择适合给定字段的数据类型。在选择数据类型时，请参阅对话框下方出现的
      其描述。如果预定义类型都不适合您的用途，您还可创建自己的自定义数据类型。详情请参阅创建自定义数据类型。
  2. 对于任何数据类型，该程序可自动地处理已输入的值：删除多余空格，更改字母大小写，或者自动替换特定字符或文本片段。要启用自动处理值，请单击AutoCorrect 选项：字段旁边的编辑...按钮。在打开的对话框中，选择所需的自动处理选项。详情请参阅处理已输入值；
  3. 您还可为字段设置值校验，这样该程序将检查所输入的值是否位于指定的范围内。要指定字段值范围，请单击校验字段右侧的编辑…按钮。详情请参阅文本数据类型的值范围限制。
重要事项！如果金额无法降至标准格式或您未打算将字段中的值作为金额处理，则选择将文本作来值处理选项。在这种情况下，字段值将作为文本处理，自定义词典可用于检查值，可以像指定文本值一样指定可能的值范围。详情请参阅文本数据类型的值范围限制。
地址
  1. 如果该字段包含地址，则从内容：列表中选择地址。
    在详细信息：字段中，您将看到已选数据类型的描述。如果您要更改语言，指定自定义词典，或指定范围较窄数据类型（例如，电子邮件地址或邮编），则单击描述右侧的编辑…按钮。在打开的对话框中，您可：
    • 更改该字段的识别语言。要更改语言，请单击语言字段右侧的“...”按钮。您可选择一种或多种语言。
    • 为地址选择标准数据类型（即，在内容设置：列表中选择常规）。在这种情况下，建议使用自定义词典。要使用自定义词典，请选择使用自定义词典选项并单击编辑…，以编辑词典。您可通过逐一地添加单词（单击添加...按钮以添加单词），或通过从文件加载单词列表（单击加载...按钮并指定带有扩展名 *.txt 或 *.dic 的所需文件的路径）创建自定义词典。
    • 特殊类型（即，在内容设置：列表中选择特殊）包含预定义数据类型，您可在该数据类型中选择适合给定字段的数据类型。在选择数据类型时，请参阅对话框下方出现的
      其描述。如果预定义类型都不适合您的用途，您还可创建自己的自定义数据类型。详情请参阅创建自定义数据类型。
  2. 对于任何数据类型，该程序可自动地处理已输入的值：删除多余空格，更改字母大小写，或者自动替换特定字符或文本片段。要启用自动处理值，请单击AutoCorrect 选项：字段旁边的编辑...按钮。在打开的对话框中，选择所需的自动处理选项。详情请参阅处理已输入值；
  3. 您还可为字段设置值校验，这样该程序将检查所输入的值是否位于指定的范围内。要指定字段值范围，请单击校验字段右侧的编辑…按钮。详情请参阅文本数据类型的值范围限制。
名称
  1. 如果该字段将包含名称，则从内容：列表中选择名称。
    在详细信息：字段中，您将看到已选数据类型的描述。如果您要更改语言，指定自定义词典，或指定范围较窄数据类型（例如，姓氏或源于父名的姓），则单击描述右侧的编辑…按钮。在打开的对话框中，您可：
    • 更改该字段的识别语言。要更改语言，请单击语言字段右侧的“...”按钮。您可选择一种或多种语言。
    • 为名称选择标准数据类型（即，在内容设置：列表中选择常规）。在这种情况下，建议使用自定义词典。要使用自定义词典，请选择使用自定义词典选项并单击编辑…，以编辑词典。您可通过逐一地添加单词（单击添加...按钮以添加单词），或通过从文件加载单词列表（单击加载...按钮并指定带有扩展名 *.txt 或 *.dic 的所需文件的路径）创建自定义词典。
    • 特殊类型（即，在内容设置：列表中选择特殊）包含预定义数据类型，您可在该数据类型中选择适合给定字段的数据类型。在选择数据类型时，请参阅对话框下方出现的
      其描述。如果预定义类型都不适合您的用途，您还可创建自己的自定义数据类型。详情请参阅创建自定义数据类型。
  2. 对于任何数据类型，该程序可自动地处理已输入的值：删除多余空格，更改字母大小写，或者自动替换特定字符或文本片段。要启用自动处理值，请单击AutoCorrect 选项：字段旁边的编辑…按钮。在打开的对话框中，选择所需的自动处理选项。详情请参阅处理已输入值；
  3. 您还可为字段设置值校验，这样该程序将检查所输入的值是否位于指定的范围内。要指定字段值范围，请单击校验字段右侧的编辑…按钮。详情请参阅文本数据类型的值范围限制。
代码
  1. 如果该字段包含由字母和数字构成的代码，则从内容：列表中选择代码。
    在详细信息：字段中，您将看到已选数据类型的描述。如果您要更改语言，指定自定义词典，或指定范围较窄数据类型（例如，社会保障号码），则单击描述右侧的编辑…    按钮。在打开的对话框中，您可：
    • 更改该字段的识别语言。要更改语言，请单击语言字段右侧的“...”按钮。您可选择一种或多种语言。
    • 为字母数字代码选择标准数据类型（即，在内容设置：列表中选择常规）。在这种情况下，建议使用自定义词典。要使用自定义词典，请选择使用自定义词典选项并单击编辑…，以编辑词典。您可通过逐一地添加单词（单击添加...按钮以添加单词），或通过从文件加载单词列表（单击加载...按钮并指定带有扩展名 *.txt 或 *.dic 的所需文件的路径）创建自定义词典。
    • 特殊类型（即，在内容设置：列表中选择特殊）包含预定义数据类型，您可在该数据类型中选择适合给定字段的数据类型。在选择数据类型时，请参阅对话框下方出现的
      其描述。如果预定义类型都不适合您的用途，您还可创建自己的自定义数据类型。详情请参阅创建自定义数据类型。
  2. 对于任何数据类型，该程序可自动地处理已输入的值：删除多余空格，更改字母大小写，或者自动替换特定字符或文本片段。要启用自动处理值，请单击AutoCorrect 选项：字段旁边的编辑…按钮。在打开的对话框中，选择所需的自动处理选项。详情请参阅处理已输入值；
  3. 您还可为字段设置值校验，这样该程序将检查所输入的值是否位于指定的范围内。要指定字段值范围，请单击校验字段右侧的编辑…按钮。详情请参阅文本数据类型的值范围限制。


创建自定义数据类型

要创建新的数据类型，请从内容：列表（位于字段属性的数据类型选项卡上）中选择所需的项目。您可从与您的自定义数据类型语义相对应的列表中选择任一个项目：这将不影响新数据类型的性质，但其将存储在选定的类别中。

单击编辑…按钮（在详细信息：字段的右侧）。

在打开的对话框，选择特殊（位于内容设置：字段中）。

单击新建…按钮（在选定语言的数据类型：字段的右侧）。

按照数据类型创建向导的说明操作。

在向导的第一个窗口中，选择要创建数据的方式。您可数据词典、正则表达式和符号集或现有的数据类型创建新的数据类型（例如，通过向符号集添加所需的字符或通过展开其词典）。

要根据词典、正则表达式或符号集创建新的数据类型：

  1. 选择基于以下项的新数据类型：然后，选择用作创建新数据类型的依据：词典、正则表达式或符号集。然后为您的数据类型选择语言（区域）：单击下一步。
  2. 如果您选择根据词典创建新的数据类型，在下一个窗口中，向导将提示您选择要使用的词典类型。
    如果您想要针对在上一个窗口中选定的语言使用内置词典，请选择禁用内置式词典。要检查词典是否包含特定单词，请单击视图…并键入单词。单击视图按钮将显示弯曲的单词表单或一条警告消息，表明词典中没有该单词。
    如果您想要使用自定义词典，请选择使用自定义词典：并单击编辑…以编辑词典。可通过以下方法创建自定义词典：逐一添加单词（单击添加...按钮即可添加单词）或从文件中加载单词列表（单击加载...按钮并指定扩展名为 *.txt 或 *.dic 的所需文件的路径）。单击下一步。
  3. 如果您选择根据正则表达式创建新的数据类型，向导将提示您输入正则表达式。使用正则表达式字段右侧的 [image] 按钮，构建正则表达式。有关详细信息，请参见用于正则表达式的符号集。单击下一步。
  4. 如果选择根据符号集创建新数据类型，或如果您在正则表达式中所用的字符未包括在该语言的符号集中，向导将提示您为您的数据类型指定符号集。您可直接在键盘上键入所需用字符，或单击自定义…然后，使用鼠标选择所需的字符。

    要添加标点符号和排除的（禁用）字符，请单击高级参数…。您可直接在键盘上键入禁用字符或单击右侧的按钮，使用鼠标选择所需的字符。

    单击下一步。

  5. 在向导的最后窗口中，键入新数据类型的名称和简要描述。如果想要编辑新创建的数据类型的属性，请选择编辑属性选项。单击完成。

要根据现有数据类型创建新的数据类型：

  1. 在数据类型创建向导的第一个窗口中，选择基于现有类型的数据类型。选择所需的语言，单击下一步。
  2. 在下一个窗口中，选择作为创建新数据类型的源数据类型。与选定语言相对应的数据类型列在对话框右左侧的可用数据类型：。文本文件夹包含在第一个窗口中选择的自然语言。自定义文件夹包含用户创建的数据类型。其他文件夹包含与内容的类别和特定类型相对应的数据类型。
    要选择源数据类型，请在可用数据类型：字段中将其选定（按住 Ctrl 键可选择多项）然后单击添加 ->以将其传输至右窗格中。单击下一步。
  3. 在向导的最后窗口中，键入新数据类型的名称和简要描述。如果想要编辑新创建的数据类型的属性，请选择编辑属性选项。单击完成。

当您选择在创建数据类型时选择的内容时，新创建的数据类型将显示在预定义数据类型列表中。

要为您的字段指定新创建的数据类型；

  1. 在字段属性对话框的数据类型选项卡上，从内容：列表中选择所需的项目；
  2. 单击编辑…按钮（在详细信息：字段的右侧）
  3. 在内容设置：列表中，选择 特殊；
  4. 在所显示的列表中，选择您所创建的数据类型（自定义数据类型标有特定符号），然后单击确定。


文本数据类型的值范围限制

在校验设置对话框中，您可以对输入至字段的文本指定值范围限制。

注：该程序不仅会将文本类型视为具有文本内容的数据类型，而且将视为具有已选择将文本作来值处理选项的其他内容的数据类型。

  • 最大长度： – 指定字段中文本的最大长度；
  • 如果正则表达式应该用于检查字段值，则在内容限制：字段中，从列表中选择正则表达式。

    该 [image] 按钮将有助于您正确构成正则表达式。详情请参阅正则表达式中的符号集。

    要使错误消息更易于阅读，在正则表达式描述：字段中，提供将用于错误消息中正则表达式的描述。

  • 如果您需要指定允许的值列表，则在内容限制：字段中，从列表中选择允许值 。要添加值，单击添加… 并输入值。 要编辑值，请单击编辑…；要删除值，请单击删除。要从文件中加载可能的值，请单击加载…
  • 如果需要在外部文本文件或数据库的容许值列表中检查已识别的值，请选择使用允许值的外部来源选项。要指定值的来源，请单击编辑…按钮。在此类检查中，容许值列表将不会复制到项目中，并在检查期间将直接连接至外部来源。
  • 将校验错误视为警告 – 如果您希望将任何不符合您所指定限制的情况视为警告，请选择该选项。警告将不会阻止操作员将文档发送至下一处理阶段，而对于未更正的格式错误，则在发送文档之前需要操作员的进一步确认。


数字的值范围限制

要指定数字的值范围限制：

  1. 请启用选项使用限制：。
  2. 指定最大数字值和最小数字值。
  3. 将校验错误视为警告 – 如果您想要将与您指定的限制不符的任何项视为警告，请选择此选项。

处理文档时，程序将检查输入的值是否在指定的范围内。


日期值范围限制

在校验设置对话框中，可指定在此字段中输入的该日期间隔。

  1. 启用选项日期不得超过以下间隔：。
  2. 选择固定：以选择固定时间间隔或选择相对于校验日期：以设置一个相对于文档校验日期的时间间隔。
  3. 输入该间隔的开始和结束日期。
  4. 将校验错误视为警告 – 如果您想要将与您指定的限制不符的任何项视为警告，请选择此选项。


处理文本数据类型的已输入值

处理已输入值

对于任意数据类型，您可执行已输入值的自动处理：删除空白处，将字母转换至大写字母或小写字母，以及自动地替换特定的字符或文本。要启用字段值的自动处理，请在字段属性对话框的数据类型选项卡上单击AutoCorrect 选项：字段右侧的编辑…按钮。

选择所需的自动处理选项。

如果已选择仅在识别后应用一次 AutoCorrect，则在识别该字段值后，自动处理只执行一次。否则，每次字段中的值出现更改时，将执行自动处理。

  • 要在已识别字段值中执行字符的自动替换，请单击替换字符：字段右侧的编辑…按钮。在打开的对话框中，您可添加字符以进行自动替换。如果特定的字符出现在已识别字段值中，它们将被自动替换。
  • 要对字段值中的整个已识别字段值或单独的单词执行自动替换，请单击替换文本：字段右侧的编辑…按钮。

    在打开的对话框中，您可添加单词和表达式以进行自动替换。要仅仅替换整个字段，请选择匹配整个字段内容。

    如果您启用精确搜索选项，则该程序将检索和替换您已输入的精确单词或表达式；或如果您启用模糊搜索选项，则该程序将检索和替换与您已输入的单词或表达式相似的项。允许的错误数取决于单词的长度。

    对区分大小写的替换单词或表达式启用大小写匹配选项。

  • 在更改大小写：下拉列表中选择文本字母转换的方法之一：

    无 – 不用转换；

    大写 – 所有字母将转换为大写字母；

    小写 – 所有字母将转换为小写字母；

    首字母大写 – 首字母将为大写字母，其它的均保留为小写字母。

  • 删除多余的空格 – 如果您想删除空格，可启用此选项。

您还可使用脚本进行自动替换：选择使用脚本选项，并单击编辑…按钮以打开脚本编辑器，然后键入脚本的代码。


文本字段识别选项

识别属性在字段属性对话框的识别选项卡上设置（字段快捷菜单中的属性… 项）。正确确定的字段值将显著提高识别质量，并减少错误可能性。

在填写类型字段中，选择所需的识别模式：标准识别、不识别或脚本识别。

对于标准识别模式，请指定以下选项：

  • ICR（手印） – 如果该字段中的静态文本是手印文本，则启用该选项。

  • OCR（打印）：– 如果该字段中的静态文本是打印文本，则启用该选项。从下拉列表中选择打印样式（排版打印机、点阵打印机、打字机等）。另见支持的文本类型。

  • 高级： – 使用该选项选择多个文本类型或指定自定义文本类型。

  • 标记类型： – 选择标记类型；若要简化您的选择，请从下拉列表中选择样本。如果标记在扫描过程中消失，您的标记类型将是单空格的（灰框）。如果标记未在扫描过程中消失，且为字符空格分为单元，则您必须输入单元总数。当程序自动检测带有此类标记的字段时，将同时自动确定单元数。

  • 字母大小写： – 在字段中选择字母大小写。如果不区分小写和大写字母，则保留启用自动选项。

  • 方向： – 指定文本方向。

  • 为一行字段启用一行选项。

  • 对于其值将始终由单独的单词组成的字段，请启用一个单词选项。

  • 识别期间配置图像处理选项：

    • 反转 – 反转图像。
    • 移除纹理 – 移除纹理。
    • 去斑 – 启用该选项以从图像中删除“垃圾”。
    • 仅清除指定大小的垃圾： – 如果您想仅清除指定大小的垃圾，请启用该选项。指定垃圾大小。如果该选项已禁用，且仅启用了去斑选项，则将自动选择垃圾大小。

    如果字段由于某些原因（例如，如果字段中的文本是由融合字母组成）无法识别，请选择不识别模式，且操作员将手动输入其值。在这种情况下，您无需配置其他识别属性，因为该字段将不识别，并将要求操作员在校验期间输入字段值。

    如果您想要使用自定义识别或初始化算法，请选择脚本识别模式。详情请参阅自定义识别脚本。


字段校验属性

校验是由操作员执行的检查已识别数据的过程。程序将标出不确定识别的字符并将其提交操作员校验。但是，您可配置字段属性，以便程序提交字段供校验，即使其不包含不确定识别的字符。相反，即使其包含不确定识别的字符，也不将其提交供校验。操作员看到已识别的字符及其图像后，将确认识别结果或予以纠正。

在创建文档定义时，可以在字段属性对话框的校验选项卡上配置校验选项。

对于操作员要校验的字段，选择需要校验。

配置字符显示参数：

  • 如果需要突出显示校验字符，选择突出显示所有字符；
  • 如果您不需要突出显示字符，选择不要突出显示字符；
  • 如果要根据识别确定性突出显示字符，选择如果置信水平少于以下项时突出显示字符：，并在下拉列表中指定突出显示字符前的最低确定度。

组校验

  • 对于要发送至组校验的字段字符，选择发送字符至组校验。
  • 选择要发送至组校验的字符：仅突出显示的字符或所有字符。
  • 选择要进行组校验的字符集：只有数字或自定义。根据需要，可通过单击修改…更改用户定义的字符集。

字段校验

  • 对于要发送至字段校验的字段，选择发送到字段校验。
  • 选择发送至字段进行字段校验的情况：始终或如果字符具有突出显示的字符或格式错误。

双重校验

  • 如果需要双重校验，选择需要双重校验。


用户脚本

用户脚本（自定义操作）

用户脚本就是在字段校验期间或在文档编辑器中查看字段时由用户触发的自定义脚本规则。通过单击字段值右侧的 …可触发脚本。

您可以在字段属性对话框的自定义操作选项卡上设置自定义脚本（右键单击字段并从上下文菜单中选择属性...）。要添加或删除在用户脚本中可用的字段信息，请使用添加…和删除按钮。要编辑脚本，请使用单击编辑…时打开的脚本编辑器窗口。

要使操作员可以访问该脚本，请选择启用自定义操作。

有关脚本参数的详情，请参阅用户脚本。


复选标记

重要事项！将针对整个复选标记组配置组合到组中的复选标记属性。如果您尝试编辑属于组的复选标记的属性，则将打开用于编辑复选标记组属性的对话框。

当您创建复选标记字段时，会向其分配默认的属性。从快捷方式菜单中选择属性…即可更改属性。属性修改对话框包括用于不同组属性的五个选项卡。

项目符号 | 基本属性
项目符号 | 认别属性
项目符号 | 数据类型
项目符号 | 校验属性
项目符号 | 规则校验


基本字段属性

可在常规选项卡上配置基本字段属性。

在此选项卡上，字段类型显示为名称右侧的图标。

  • 名称： – 字段名称。名称在创建字段时自动分配，并与最接近字段的说明性文本相对应。编辑属性时，可更改默认分配的名称。另请参见如何更改字段名称。
  • 标题： – 将显示在数据表单中的字段的名称。
  • 导出字段值 – 如果想要导出字段值，必须启用此选项（默认启用）。您可能需要禁用此选项，例如，如果此字段的值用于获取已计算字段的值（参见规则校验），且只需导出最终结果。
  • 显示在数据表单中 – 如果必须在数据表单中显示字段，则必须启用此选项（默认启用）。
  • 只读 – 如果字段仅供查看时访问，请启用此选项，即，操作员无法修改其值。对于必须使用规则自动计算其值的字段，您可启用此选项，例如，对于您计划在其中保存总和或组合其他字段的字段（参见规则校验）。
  • 注释： – 您可输入任何注释。


复选标记数据类型

复选标记的数据类型可在字段属性对话框的数据类型选项卡上设置。

复选标记的数据类型决定了要分配给选定和未选定复选标记的复选标记字段的值。

为复选标记值选择合适的选项：

  • 是/否 – 如已选择复选标记，则字段值为“是”，如未选择，则字段值为“否”。
  • 1 / 0 – 如已选择复选标记，则字段值为“1”，如未选择，则字段值为“0”。
  • <复选标记名称>/空 – 如已选择复选标记，字段值将与复选标记名称匹配，如未选择 – 将向字段分配一个空值。
  • 自定义： – 通过启用此选项，您可输入自定义值。 选定 – 对于选定的复选标记；未选定 - 对于未选定的复选标记。


复选标记识别属性

可在字段属性对话框的识别选项卡上设置识别属性（从此字段的快捷方式菜单中选择属性…）。正确确定的字段值会大大提升识别质量，减少出现错误的可能性。

  • 复选标记类型： – 选择复选标记类型。此属性对正确识别复选标记极为重要。

    方块形 – 如果将复选标记放在受限制的方块形框中，则可选择此复选标记类型。

    没有框 – 如果复选标记放在没有框的白色背景中，请选择此复选标记类型。

    自动 – 如果您选择此类型，程序将自动确定复选标记类型。

    重要事项！请注意，在此情况下，不得选择表单上的复选标记，因为程序将检测是否已选择复选标记（将已处理文档上的复选标记的图像与用于创建文档定义的空白表单上的图像进行对比）。

  • 允许纠正 – 如果您想要允许纠正任何复选标记，请启用此选项，在此情况下，用墨水涂掉的复选标记将视为未选定。但是，如果您已选择自动类型，则不得允许纠正该等复选标记。

    • 您可以配置字段图像处理选项：

  • 反转 – 反转图像
  • 移除纹理 – 移除纹理
  • 去斑 – 启用此选项可移除图像中的垃圾。
  • 仅清除指定大小的垃圾： – 启用此选项可仅清除特定大小的垃圾。指定垃圾大小。如果此选项已禁用且仅启用去斑选项，则将自动选择垃圾大小。


字段校验属性

校验是由操作员执行的检查已识别数据的过程。程序将标出不确定识别的字符并将其提交操作员校验。但是，您可配置字段属性，以便程序提交字段供校验，即使其不包含不确定识别的字符。相反，即使其包含不确定识别的字符，也不将其提交供校验。操作员看到已识别的字符及其图像后，将确认识别结果或予以纠正。

在创建文档定义时，可以在字段属性对话框的校验选项卡上配置校验选项。

对于操作员要校验的字段，选择需要校验。

组校验

  • 对于要发送至组校验的字段的字符，选择发送字符至组校验。
  • 选择要发送至组校验的字符：仅突出显示的字符或所有字符。

字段校验（仅适用于复选标记组）

  • 对于要发送至字段校验的字段，选择发送到字段校验。
  • 选择发送至字段进行字段校验的情况：始终或如果字符具有突出显示的字符或格式错误。

双重校验

  • 如果需要双重校验，选择需要双重校验。


复选标记组

重要事项！组属性适用于属于复选标记组的所有复选标记。

复选标记组的值是由分号 (;) 分隔的选定复选标记名称的列表，如未选择复选标记则为空字符串。

当您创建复选标记组时，会向其分配默认的属性。从快捷方式菜单中选择属性…即可更改属性。属性修改对话框包括用于不同组属性的五个选项卡。

项目符号 | 基本属性
项目符号 | 认别属性
项目符号 | 数据类型
项目符号 | 校验属性
项目符号 | 规则校验


复选标记组的数据类型

复选标记的数据类型可在字段属性对话框的数据类型选项卡上设置。

允许空选择区域 – 如果必须在组中至少选择一个复选标记，则请启用此选项。在此情况下，如果没有在组中选择复选标记，程序将显示相关警告。

允许多个选择区域 – 启用此选项即允许在组中选择多个复选标记。如已禁用此选项，程序将在已选择组中多个复选标记时显示一条警告。

要更改复选标记的名称，请选择所需的行，单击编辑…。在打开的对话框中，提供复选标记字段的新名称及要在导出期间分配给复选标记的新名称。

当没有选择复选标记字段时及选择了多个复选标记字段时，您可定义要导出的值。要执行此操作，请从列表中选择 <未选择项目> 或 <多个项目…> 并单击编辑…。在打开的对话框中，在导出的值：字段中指定所需的值。如果没有指定导出值：a) 在没有选择复选标记字段时导出空字符串，b) 如果选择了多个字段，则将指定选定复选标记字段的值（由逗号分隔）。

创建复选标记组


条形码

当您创建条形码字段时，会向其分配默认的属性。从快捷方式菜单中选择属性…即可更改属性。属性修改对话框包括用于不同组属性的五个选项卡。

重要事项！可将条形码突出显示为字段元素或静态元素。这取决于被处理的文档中的条形码值：如果是用于文档定义匹配或标识，则您需要在静态元素模式中创建它。如果条形码用于数据捕获，则您必须在字段标记模式中创建它。条形码属性的差异取决于其是字段元素还是静态元素。本节描述了字段属性，另请参见定位点条形码。

项目符号 | 基本属性
项目符号 | 认别属性
项目符号 | 校验属性
项目符号 | 规则校验


条形码识别属性

可在字段属性对话框的识别选项卡上设置识别属性（从此字段的快捷方式菜单中选择属性…）。正确确定的字段值会大大提升识别质量，减少出现错误的可能性。

  • 不要识别（将自动输入图像字段中的密钥） – 如果条形码值将由操作员手动输入，请启用此选项。如果是这样，您不必配置剩余的识别设置。
  • 代码类型： – 指定条形码类型（这通常是自动确定的）。
  • 方向： – 指定条形码方向。

您也可以配置条形码图像预处理选项：

  • 反转 – 反转图像。
  • 移除纹理 – 移除纹理。
  • 去斑 – 启用此选项可移除图像中的垃圾。
  • 仅清除指定大小的垃圾： – 如果您想要仅清除指定大小的垃圾，请启用此选项。指定垃圾大小。如果此选项已禁用且仅启用去斑选项，则将自动选择垃圾大小。


字段校验属性

校验是由操作员执行的检查已识别数据的过程。程序将标出不确定识别的字符并将其提交操作员校验。但是，您可配置字段属性，以便程序提交字段供校验，即使其不包含不确定识别的字符。相反，您可指定即使其包含不确定识别的字符也不将其提交供校验。操作员看到已识别的字符及其图像后，将确认识别结果或予以纠正。

在创建文档定义时，可以在字段属性对话框的校验选项卡上配置校验选项。

对于操作员要校验的字段，选择 需要校验。

  • 对于要发送至字段校验的字段，选择 发送到字段校验。
  • 选择发送字段进行字段校验的情况：始终 或 如果字符具有突出显示的字符或格式错误。


图片

创建图片时，将向其分配默认属性。从快捷方式菜单中选择属性…即可更改属性。属性修改对话框包括用于不同组属性的四个选项卡。

项目符号 | 基本属性
项目符号 | 认别属性
项目符号 | 导出图片
项目符号 | 规则校验


基本字段属性

可在常规选项卡上配置基本字段属性。

在此选项卡上，字段类型显示为名称右侧的图标。

  • 名称： – 字段名称。名称在创建字段时自动分配，并与最接近字段的说明性文本相对应。编辑属性时，可更改默认分配的名称。另请参见如何更改字段名称。
  • 标题： – 将显示在数据表单中的字段的名称。
  • 导出字段值 – 如果想要导出字段值，必须启用此选项（默认启用）。您可能需要禁用此选项，例如，如果此字段的值用于获取已计算字段的值（参见规则校验），且只需导出最终结果。
  • 显示在数据表单中 – 如果必须在数据表单中显示字段，则必须启用此选项（默认启用）。
  • 注释： – 您可输入任何注释。


图片识别属性

可在字段属性对话框的识别选项卡上设置识别属性（从此字段的快捷方式菜单中选择属性…）。

  • 从识别中排除 – 如果必须将图片字段区域多其他字段落识别区域中排除，请启用此选项。（此选项仅可用于图片字段，确保与 FormReader 6.5 模板兼容。）


导出图片

在文档定义中，您可为每张图片选择导出设置。要选择图片导出设置，右键单击所需字段，选择属性…，然后单击导出选项卡。您可选择以下任意选项：

  • 文件类型：：（TIFF、JPEG、PDF、PDF/A、BMP、JPEG2000、PCX packbits、PNG）。
  • 质量：：对于 TIFF、JPEG 和 JPEG2000 文件，您可从高至低选择所生成文件的质量。
  • 颜色类型：：彩色、灰度和中间色（黑白）。

您也可设置所生成图片的分辨率：选择将分辨率更改为及输入所需分辨率，或从列表中选择。

图片将保存至的文件名称将基于用户指定的参数自动形成。要指定这些参数，单击更改…按钮并在打开的文件命名选项对话中选择所需选项。


表格

当您创建表格时，会向其分配默认的属性。从快捷方式菜单中选择属性…即可更改属性。属性修改对话框包括用于不同组属性的三个选项卡。

项目符号 | 基本属性
项目符号 | 列
项目符号 | 规则校验


表格，列

列选项卡显示了此表格各列的列表。每个表格列均属于某一字段类型（参见创建表格）并具备此字段类型的特定属性。

要编辑其中一个列的属性：

  1. 从列表中选择其名称。
  2. 单击属性…按钮


字段组

当您创建字段组时，会向其分配默认的属性。从快捷方式菜单中选择属性…即可更改属性。属性修改对话框包括用于不同组属性的三个选项卡。

项目符号 | 基本属性
项目符号 | 字段
项目符号 | 规则校验


组字段

字段选项卡显示了组包含的字段的列表。

要编辑其中一个字段的属性：

  1. 请从列表中选择其名称。
  2. 单击属性…按钮

创建字段组


服务字段

在创建服务字段时，可以单击快捷菜单上的属性…来配置默认属性。“属性”对话框有两个选项卡，每个属性组一个选项卡

基本字段属性
数据源属性


数据源属性

在数据源选项卡上，可指定服务字段的来源和数据类型：

  1. 从来源：列表中，为字段选择数据源。
  2. 如果您选择文档注册参数或批处理文件注册参数，请在参数名：字段中指定参数属性的名称，以作为数据源使用。
  3. 对于数据类型，应选择服务字段所需的数据类型。


规则校验

规则扩展了自动化结果检查的可能性。规则使设置数据限制成为可能，例如，指定在特定字段的值必须符合的条件。

如果文档中的值不符合这些条件，则此类页面将标记为警告。规则应用程序的主要用途是检查文档数据的完整性。

您还可借助规则处理已输入值：合并多个字段值或用数据库中相关值替换识别的值。

ABBYY FlexiCapture 10 让您可配置以下类型的规则：

  • 校验和 – 检查多个字段之和。特定字段值的总和将与预设的数字或不同字段中的值进行比较。
  • 对比字段 – 比较多个字段值。
  • 数据库检查 – 通过将其与来自特定数据库的值进行比较来检查已输入的值。
  • 合并字段 – 合并多个字段值。在合并字段时，可添加任何分隔符。
  • 脚本 – 用户借助于脚本来描述限制。
  • 总图数 - 总字数（俄语） – 将数字总和与用单词书写的同样总和进行对比（仅限于俄语）。

该规则可被分配错误或警告状态。当条件未得到满足时，该字段将会标上红色标记（错误）或黄色标记（警告）。请参阅规则校验。

规则可在对象属性对话框（字段、节段和文档等）的规则选项卡上配置。

在分层结构中，规则存储在其所创建的对象级别中：这可能为字段、文档定义节段或者文档定义本身。在大多数情况下，规则存储级别无关紧要。但是，如果您使用复杂版面、字段组或重复的元素创建文档定义，则您需要注意存储规则的位置。例如，如果您有字段组或组中的特定字段链接至规则，则在您创建该组的新实例时，只有该规则在组本身或在其字段之一存储，且不在更高级别存储时，该规则才会复制并且在新对象中得到满足。从对象属性对话框中，您可查看使用该对象的规则或存储在该对象及其附属对象中的规则。通过从显示在列表中：下拉列表中选择其中一个值，您可指定您想要查看的规则。

  • 处理对象的规则 – 显示适用于当前对象的规则（即，其属性对话框当前打开的对象）。
  • 存储在对象中的规则 – 显示存储在当前对象中的规则。
  • 存储在对象及其子对象中的规则 – 显示存储在当前对象及其子对象中的规则（对于字段组，例如，将显示存储在组中或所有其字段中的规则）。

注：仅可在存储在对象中的规则或存储在对象及其子对象中的规则显示模式中创建新规则。您不可在处理对象的规则显示模式中创建新规则。

每个规则具有错误或警告状态。如果您尝试导出带有规则错误的文档，程序将显示错误消息。规则警告不会阻止导出。

注：如果在字段属性中取消选择显示在数据表单中选项，则在校验期间将不会显示与此字段相关联的错误。

项目符号 | 检查总和
项目符号 | 比较字段
项目符号 | 检查数据库
项目符号 | 合并字段
项目符号 | 总图数 - 总字数
项目符号 | 借助脚本设置的规则


值总和检查规则

此规则用于检查多个字段值之和。特定字段的值总和将与预设数字或不同字段中的值进行比较。例如，如果您的文档中包含带有工资金额、奖金金额、其他报酬支付的字段及总和总计字段，则您可配置将检查字段值之和是否与结果字段中总和相匹配。在不匹配的情况下将显示错误消息。

注：将此规则应用至表格类型的字段时，计算取决于该规则创建时所位于的级别。如果您需要将表格列的所有单元格的值总和与计算或给定的数字进行比较，则必须在文档定义属性或文档节段属性中创建规则。如果您需要将列的每个单元格或一些表格列的所有单元格总和与计算或给定的数字进行比较，则必须在表格属性或表格列属性中创建规则。
在创建用于为带有一些实例的字段检查值总和的规则时，也应遵循这些指示。

要创建总和检查规则，处理步骤如下：

  1. 打开字段属性对话框（快捷菜单，属性…）或文档定义属性对话框（文档定义编辑器菜单，文档定义>文档定义属性…）。
  2. 转至规则选项卡。
  3. 单击新建规则…按钮。
  4. 从规则类型列表中，选择校验和并单击“确定”。
  5. 输入规则名称并选择规则类型：警告或错误，然后单击下一步。
  6. 将您想要检查其值总和的字段添加至求和字段值列表。使用添加…按钮添加字段。
  7. 启用以下选项之一：
    • 字段： – 用于将总和与结果字段值进行比较。使用选择…按钮选择字段名称。
    • 编号： – 用于将总和与指定数字进行比较。输入该数字。
  8. 比较值分数部分： – 在数字小数点后输入数位数字，以确定比较的准确率。
  9. 如果至少要使用两个非空和非零的被加数，选择至少要添加两个非空项目选项。除非满足该条件，否则在规则检查过程中，将在规则错误窗口中输出错误。
  10. 单击完成以完成规则创建。此规则名称将显示在规则选项卡上。


多个字段值对比规则

此规则是指检查多个字段的值。如果您的文档的多个字段必须具备相等的值，则可使用此规则。如果值不匹配，则将针对该文档显示规则错误消息。

要创建值对比规则，请执行以下操作：

  1. 打开字段属性对话框（快捷菜单，属性…）或文档定义属性对话框（文档定义编辑器菜单，文档定义>文档定义属性…）。
  2. 转至规则选项卡。
  3. 单击新建规则…按钮
  4. 从规则类型列表中选择对比字段并单击确定。
  5. 输入规则名称，选择规则类型：警告或错误并单击下一步。
  6. 向要对比字段列表中添加想要对比的值所属的字段。使用添加…按钮添加字段
  7. 选择匹配类型：
    • 完全匹配 – 适用于精确的值匹配；
    • 模糊匹配 – 适用于模糊的值匹配。在此情况下，将在不考虑字母大小写和空格的情况下对比字段，对于长于 4 个字符的字段值，允许显示一条错误。
  8. 单击完成以完成规则创建。此时，规则名称显示在规则选项卡中。


数据库检查规则

字段值的数据库检查包含将识别字段值与数据库表格中的值进行比较。如果在数据库的值中找到字段值，则视为正确。否则，将输出规则错误消息。

通过使用该规则，您可以检查数据库中所需值的条目，确保即使字段值中存在印刷错误或错误也将在表格中执行值的模糊搜索，用来自数据库的原始值替换字段值，将所有所需值从数据库复制至文档字段。

  1. 打开字段属性对话框（快捷菜单，属性…）或文档定义属性对话框（文档定义编辑器菜单，文档定义>文档定义属性…）。
  2. 转至规则选项卡。
  3. 单击新建规则…按钮
  4. 从规则类型列表中，选择数据库检查并单击“确定”。
  5. 输入规则名称并选择规则类型：警告或错误，然后单击下一步。
  6. 建立数据库连接。所需的设置可在当您单击设置…按钮时打开的数据链接属性对话框中配置
    提示：作为 OLE DB 提供程序，建议使用以下提供程序：
    • “OLE DB Provider for ODBC Drivers”用于导出至 SQL。选择“OLE DB Provider for ODBC Drivers”可能导致在处理某些数据类型和长字段时出现问题。
    • “Oracle Provider for OLE DB”用于导出至 Oracle。
  7. 从列表中选择数据库方案和表格。
  8. 如果在比较中未包含字段中的值，请选择所有字段为空时请勿勾选选项以忽略规则检查。它可使您为文档规则检查节省时间。
  9. 将文档定义中的字段与数据库表格中的字段进行匹配。要执行该操作，请单击添加…按钮。字段链接对话框将打开。从列表中选择文档定义字段并在数据库表格中选择相应字段（文档字段的数据类型与来自数据库的值格式必须匹配）。
    选择匹配类型：
    • 完全匹配 – 字段值必须精确匹配（字母大小写不匹配）。
    • 模糊匹配 – 字段值必须部分匹配。该比较类型只可用于文本字段。该程序将在此处（即添加、删除或替换最少字母数以获取原始单词的位置）搜索最接近的单词。所允许的错误数取决于原始单词的长度。如果多个值变体符合模糊搜索的标准，则将在文档窗口中输出“发现过多条目”的规则错误消息及来自数据库的最接近字段值的列表。操作员可从列表中选择合适的值。
      如果您想将文档字段值替换为来自数据库中的相应值，则启用从数据库复制字段值选项。如果在模糊搜索期间在数据库中找到所需值，则文档字段值将自动替换为来自数据库中的值。

      注：在字段为空的情况下，尽管数据库不包含空白值，也不会显示错误消息。

    • 不要对比 – 将不会执行比较，字段值将自动替换为来自数据库中的值（在此类比较中，将始终选择从数据库复制字段值<选项）。
      如果来自数据库中的一些值必须复制到文档，通常会使用此类比较。为此，必须在文档定义中创建无区域的空白字段。搜索包含自动替换值的条目的数据库必须用精确或模糊比较类型指定的不同字段映射来初步设置。如果未找到所需条目，则字段值将保留为未更改。
  10. 使用添加…、编辑…和删除按钮添加、编辑或删除字段之间的链接。


字段值合并规则

此规则是指合并多个字段的值。合并的字段值可用点、空格或其他分隔符隔开。

要创建值合并规则，请执行以下操作：

  1. 打开字段属性对话框（快捷菜单，属性…）或文档定义属性对话框（文档定义编辑器菜单，文档定义>文档定义属性…）。
  2. 转至规则选项卡。
  3. 单击新建规则…按钮。
  4. 从规则类型列表中选择合并字段并单击确定。
  5. 输入规则名称，选择规则类型：警告或错误 并单击下一步。如果合并程序中包括的一个字段已从文档定义中移除，则将显示此规则的错误。
  6. 向要合并字段列表中添加您想要包括在合并程序中的字段列表。使用添加…按钮添加字段。选择结果字段： – 用来存储合并结果的字段。在分隔符：窗口中输入必要的分隔符。
  7. 默认情况下，分隔符将添加在非空值之间。如果您想要程序始终添加分隔符，即使是对于空字段值，请启用选项插入空字段值的分隔符。
  8. 单击完成以完成规则创建。此时，规则名称显示在规则选项卡。

合并规则可存储在任何文档定义字段中。因此，使用不带区域的字段更为方便。

如果您仅需要导出所生成字段的值，而不是包括在合并程序中的字段的值，请为该等字段禁用导出字段值选项。


借助脚本设置的规则

ABBYY FlexiCapture 10 允许您借助脚本配置数据检查规则。

要创建此类规则，处理步骤如下：

  1. 打开字段属性对话框（快捷菜单，属性…）或文档定义属性对话框（文档定义编辑器菜单，文档定义>文档定义属性…）。
  2. 转至规则选项卡。
  3. 单击新建规则…按钮。
  4. 从规则类型列表中，选择脚本并单击确定。
  5. 输入规则名称并选择规则类型：警告或错误，然后单击下一步。
  6. 可用字段列表显示可用对象的列表。您可以借助添加…和删除按钮添加和删除字段。启用了只读选项的字段值仅可供读取，而禁用该选项的列表字段的值可借助脚本覆盖。
  7. 单击编辑…按钮以打开用于脚本编辑的特定窗口。
  8. 选择脚本语言并输入脚本文本。
  9. 可通过在主菜单中选择工具>检查脚本检查脚本。
  10. 选择文件>保存以保存脚本。
  11. 单击完成。创建的规则将显示在规则选项卡列表中。

有关脚本参数的详情，请参阅脚本规则


图数中的总和 - 单词中的总和

图形中的总和 - 单词中的总和

重要事项！只有您选为文档定义选择俄语识别语言时才能设置此规则（文档定义>文档定义属性…）。

此规则旨在将数字总和与用俄语单词表示的相应总和进行对比。如果两个总和不相同，则将显示消息表明规则返回错误。

要创建“图数中总和 - 单词中总和”规则，请执行以下步骤：

  1. 打开字段属性对话框（快捷菜单，属性…）或文档定义属性对话框（文档定义编辑器菜单，文档定义>文档定义属性…）。
  2. 转至规则选项卡。
  3. 单击新建规则…按钮。
  4. 从规则类型列表中选择总图数 - 总字数（俄语）并单击确定。
  5. 输入规则名称，选择规则类型：警告或错误并单击下一步。
  6. 单击选择…按钮（在数字总和：字段的右侧），然后选择包含数字总和的文档定义字段。
  7. 单击选择…按钮（在单词总和：字段的右侧），然后选择包含同一单词中总和的文档定义字段。
  8. 单击完成以完成规则创建。此时，规则名称显示在规则选项卡上。


值求和计算规则

此规则用于计算多个字段值之和，并将和输入指定的字段。例如，如果文档中有工资、奖金以及其他费用的字段，可以设置规则来计算这些字段之和，并将结果写入特定字段。

此规则也可用于计算表格列中的值之和。为此，必须在文档定义属性或节段属性中创建规则。必须取消选择至少要添加两个非空项目选项。

要创建求和计算规则，请执行以下操作：

  1. 打开字段属性对话框（快捷菜单，属性…）或文档定义属性对话框（文档定义编辑器菜单，文档定义>文档定义属性…）。
  2. 转至规则选项卡。
  3. 单击新建规则…
  4. 在规则列表上，选择计算总和并单击“确定”。
  5. 输入规则名称并选择规则类型：警告或错误。然后单击下一步。
  6. 将带有要进行求和的值的字段添加至汇总字段值：列表。要执行该操作，单击添加…。
  7. 在结果字段：字段中，指定您需要输入总和的字段。要执行该操作，单击选择…。
  8. 如果至少要使用两个非空和非零的被加数，选择至少要添加两个非空项目。除非满足该条件，否则在规则检查过程中，将在规则错误窗口中输出错误。

    注：当在规则参数中应用该选项时，必须至少添加两个文档字段（或两个表格列）至总和。所以，如果您使用该规则对表格列所有单元的值进行求和，则您无需选择该选项。

  9. 单击完成以完成创建该规则。此规则名称将显示在规则选项卡上。


配置数据导出

要指定如何保存通过处理纸质文档所获取的数据，则需要为每个文档定义设置导出。可能存在四种类型的导出：导出至文件、导出至数据库、导出至 Microsoft SharePoint 库或脚本导出。您所选择的导出类型决定了可用的导出设置。您可为文档定义指定多种导出类型。

对于每种导出类型，请指定应导出的文档：有错误的文件和/或无错误的文档。

对于每种导出类型，请指定其必要性。在导出失败的情况下（例如，由于文件访问被拒或连接错误），对于指定为重要的导出类型，则有关导出错误的消息将写入事件日志中并对该任务指定已成功状态。对于非强制导出类型，警告消息将写入事件日志，且如果此类型导出失败，将对该任务指定已成功状态。

在图像导出期间，可以隐藏特定字段的图像（以编辑机密信息和其他敏感数据）。字段清单单独对每种导出类型定义。因此，可以控制员工对特定信息的访问权限。要隐藏字段，在配置图像导出时，请选择编辑图像中的敏感性数据，然后单击选择要编辑的字段…，并在选择要编辑的字段对话框中，指定字段列表及您想要隐藏的图像。

将在文档定义属性窗口的导出目标选项卡上配置自动导出（适用于 FlexiCapture 单机版）。要使准备好导出的文档自动导出（无需操作员通过按钮单击初始化导出），请选择启用自动报告选项。
仅在文档定义的页面数明确指定时，自动导出才会工作。因此，如果部分中允许重复页面或使用间隔指定部分数，则自动导出将不工作。

注：如果文档自动导出，则将跳过批处理文件整体性检查，且警告将写入日志中。

配置导出类型时，可以指定用于将识别数据和/或文档图像保存至文件系统的路径。使用数据存储文件夹的完整路径时，可指定本地或网络路径（以 UNC 格式）。

如果在导出设置中定义的接收者路径是相对路径，且是文档必须保存至的子文件夹的名称，而不用指定该文件夹的完整路径，那么在默认情况下，将在项目文件夹的“导出”子文件夹中创建带有指定名称的文件夹。要定义保存文件的另一路径，请指定项目属性中的导出根路径：。将会创建相对于根路径的所有新数据存储子文件夹。该根路径可以是本地或网络路径（以 UNC 格式）。

要设置导出，在文档定义编辑器中选择文档定义>导出设置…，并在导出设置对话框中指定所需的导出类型。

导出至文件
图像导出至文件
导出至数据库
导出至 SharePoint
用脚本描述的导出


导出至文件

要配置导出至文件，请执行以下操作：

  1. 在文档定义编辑器窗口中，选择菜单项文档定义导出设置…
  2. 单击添加…并选择导出到数据文件（在类型：字段中）。
  3. 指定是否需要导出。
  4. 指定是否应导出图像。
  5. 指定应导出的文档（有和/或无错误）并单击下一步>。
  6. 指定导出参数并单击下一步>。这些可调整的导出参数由类型：字段中指定的值决定。
      重新创建 Hot Folder 子文件夹的文件名和结构；
      如果选择此值，文件夹结构将模仿导入文档图像的热文件夹的结构。在配置这种导出类型时，请在导出路径：字段中选择要模仿热文件夹结构的文件夹。
      将所有文档导出至一个文件；
      选择此值，将所有数据导出至一个文件。在配置这种导出类型时，请在路径字段中输入数据所要导出到的文件的路径及名称。
      对每个批处理文件创建单独的文件夹；
      选择此值，以将每个文档导出至一个独立文件：
      • 在文件前缀字段中指定路径和文件名的第一个字符；
      • 对于要导出至独立文件夹的每个批处理文件，请选择对每个批处理文件创建单独的文件夹。
      使用模板重新创建文件夹结构和文件名；
      如果选择此值，文件名和子文件夹结构将视文档参数而定。
      • 在导出路径：中指定根导出路径。
      • 指定文件命名选项。单击编辑… 并指定所需的规则即可。更多信息请参阅导出文件命名选项。
      • 在如果文件存在字段中，选择所生成名称的文件已存在时程序所要执行的操作。

      重要事项！为了正确完成导出，在将项目上传到服务器后，请确保以 UNC 格式指定导出路径 (\\computer_name\share_name[\path])。另外，还要确保和导出有关的所有工作站均具备对所指定位置的访问权限。

      采用以下格式指定路径时将发生导出错误：<disk:>\[path]。如果指定的是相对导出路径，则只能通过应用程序界面 (API) 来访问数据。如果要以另外的方式访问数据，相对路径的根文件夹必须采用 UNC 格式来指定（可在项目属性中进行配置）

  7. 选择文件类型（支持的格式有 CSV、DBF、TXT、XLS 和 XML），指定选定的文件类型的其他导出属性，并根据需要选择文本编码。然后单击下一步>。

    Microsoft Office Excel 下一步 (*.xls)；
    • 选择 Excel 版本（5.0/95; 97-2003; 97-2003（与 5,0/95 兼容））；
    • 选择导出时保留值类型，根据数据类型来导出数据。清除此选项可导出所有“常规”类型的数据；
    • 选择为可重复项目编辑独立文件，将包含多个可重复项目的表格和字段导出至独立文件。请留意注意事项；
    • 对于 Excel 5.0/95，请选择一个代码页。
    • 根据需要配置字段名称和格式。单击字段映射，并在字段映射对话框中指定文件名和包含有数字和日期的字段格式。
    XML 文档 (*.xml)；
    • 指定要导出的其他数据（字段位置和类型、错误、识别质量数据）；
    • 如果要保存带字段类型描述的 XML 方案，请选择导出时保留值类型。
    • 选择编码；
    • 根据需要指定字段名称。单击字段映射，并在字段映射对话框中指定字段名称。
    逗号分隔值文件 (*.csv)；
    • 选择列分隔符：；
    • 如果要将包含多个重复项目的表格和字段导出至独立文件，请选择为可重复项目编辑独立文件。请留意注意事项；
    • 选择编码；
    • 根据需要配置字段名称和格式。单击字段映射，并在字段映射对话框中指定文件名和包含有数字和日期的字段格式。
    文本文件 (*.txt)；
    • 选择列分隔符：；
    • 如果要将包含多个重复项目的表格和字段导出至独立文件，请选择为可重复项目编辑独立文件。请留意注意事项；
    • 选择编码。
    • 根据需要配置字段名称和格式。单击字段映射，并在字段映射对话框中指定文件名和包含有数字和日期的字段格式。
    DBase 文件 (*.dbf)；
    • 选择导出时保留值类型，根据数据类型来导出数据。所有文本类型的字段应清除该选项。
    • 如果要将包含多个重复项目的表格和字段导出至独立文件，请选择为可重复项目编辑独立文件。请留意注意事项；
    • 根据需要配置字段名称。单击字段映射，并在字段映射对话框中指定字段名称。
  8. 如果要保存图像，请指定图像保存参数并单击下一步>。
    • 选择同时保存图像和数据，或指定图像文件夹；
    • 选择图像文件命名方案：与数据文件相似或相反。请参阅导出文件命名选项。
    • 指定包含要在导出过程中隐藏的图像的字段。
  9. 如果应存储图像，请指定图像存储选项，单击下一步>。
    • 选择所需的图像格式、质量和颜色。
    • 要更改源图像的分辨率，请选择将分辨率更改为并从列表中选择相应的值。
    • 如果选择 PDF 或 PDF/A 作为存储格式，则可创建可搜索的 PDF 文件，只需选择 创建可搜索 PDF。您可选择与在文档定义中指定的语言不同的语言（或多语言文档的语言）：单击选择…（在语言：字段的右侧），并选择相应的语言。如果想要使用在文档定义中指定的语言，请选择与文档定义中相同（在语言：字段中）。
  10. 输入导出配置文件名称，单击完成。

注：默认情况下，重复字段（即，带有多个实例和表格的字段）导出至已为其创建了新文件夹的独立文件中。文件夹的名称包括导出文件夹名称。要禁用将重复字段导出至独立文件，请清除选项为可重复项目编辑独立文件（在导出目标向导选项卡上，此选项可用于 XML 以外的所有格式）。在此情况下，当重复字段被导出至一个导出文件时，程序将为每个元素实例添加新行。


将图像导出至文件

图像导出至文件

要将图像导出至文件：

  1. 在文档定义编辑器窗口中，选择文档定义>导出设置…
  2. 单击添加…并选择导出到图像文件字段中的 类型：。
  3. 指定是否需要导出。
  4. 指定应导出的文档（有错误和/或无错误）并单击下一步>。
  5. 指定导出参数并单击下一步>。这些可调整的导出参数由类型：字段中指定的值决定。
      重新创建 Hot Folder 子文件夹的文件名和结构；
      如果选择此值，文件夹结构将模仿导入文档图像的热文件夹的结构。在配置这种导出类型时，请在导出路径：字段中选择要模仿热文件夹结构的文件夹。
      将所有文档导出至一个文件；
      选择此值，将所有数据导出至一个文件。在配置这种导出类型时，请在路径字段中输入数据所要导出到的文件的路径及名称。
      将文档导出为独立的文件；
      选择此值，以将每个文档导出至一个独立文件：
      • 在文件前缀字段中指定路径和文件名的第一个字符；
      • 对于要导出至独立文件夹的每个批处理文件，请选择对每个批处理文件创建单独的文件夹。
      使用模板重新创建文件夹结构和文件名；
      如果选择此值，文件名和子文件夹结构将视文档参数而定。
      • 在导出路径：中指定根导出路径。
      • 指定文件命名选项。单击编辑… 并指定所需的规则即可。更多信息请参阅导出文件命名选项。
      • 在如果文件存在字段中，选择所生成名称的文件已存在时程序所要执行的操作。

      重要事项！为了正确完成导出，在将项目上传到服务器后，请确保以 UNC 格式指定导出路径 (\\computer_name\share_name[\path])。另外，还要确保和导出有关的所有工作站均具备对所指定位置的访问权限。

      采用以下格式指定路径时将发生导出错误：<disk:>\[path]。如果指定的是相对导出路径，则只能通过应用程序界面 (API) 来访问数据。如果要以另外的方式访问数据，相对路径的根文件夹必须采用 UNC 格式来指定（可在项目属性中进行配置）

  6. 指定图像保存选项，单击下一步 >。
    • 选择所需的图像格式、质量和颜色。
    • 要更改源图像的分辨率，选择将分辨率更改为，并从列表中选择适当的值。
    • 如果选择 PDF 或 PDF/A 作为存储格式，则可选择 创建可搜索 PDF 来创建可搜索的 PDF 文件。您可选择一种与在文档定义中指定的语言不同的语言（如果是多语言文档，则可选择多种语言）：单击选择…字段右边的语言：，并选择相应的语言。如果要使用在文档定义中指定的语言，请选择与文档定义中相同字段中的语言：。
  7. 输入导出配置文件名称，单击完成。


导出至数据库

要配置导出至数据库，请执行以下操作：

  1. 在文档定义编辑器窗口中，选择文档定义>导出设置…
  2. 单击添加…并选择类型：字段中的导出到 ODBC 兼容数据库。
  3. 指定是否需要导出。
  4. 指定是否应导出图像。
  5. 指定应导出的文档（有错误和/或无错误）并单击下一步>。

  6. 指定导出设置并单击下一步>。

    • 建立数据库连接。在连接字符串：窗口中输入连接参数，或单击设置连接…按钮，并在数据链接属性对话框中配置连接参数。

      提示：作为 OLE DB 提供程序，建议使用以下提供程序：

      • “OLE DB Provider for ODBC Drivers”用于导出至 SQL。选择“OLE DB Provider for ODBC Drivers”可能导致在处理某些数据类型和长字段时出现问题。
      • “Oracle Provider for OLE DB”用于导出至 Oracle。

    • 从下拉列表中选择方案。
    • 可以单击测试连接按钮来检查数据库连接。
    • 单击自动创建表格按钮以在数据库（文档中的数据将在此导出）中自动创建新表格。 将为每个文档部分创建独立的表格。自动创建的表格中的字段结构和格式与文档定义字段及其数据类型的集合相符。
    • 如果需要将数据导出至数据库的现有表格，请使用设置字段映射…按钮在文档定义字段和数据库表格字段之间建立一致性。
    • 在字段映射对话框中，指定程序要将文档定义字段值导出到的数据库表格和表格列。
      详细信息...

      左侧的字段映射对话框包含文档节段和字段。在右侧，您必须将其与数据库中的表格和字段相匹配。如果数据库已有用于数据导出的表格，那么在字段映射对话框中，需要为每个文档节段以及每个文档字段的数据库表格列选择数据库表格。（除了直接导出至数据库表格之外，还可以使用存储过程将数据保存至数据库。详情请参阅使用数据库存储过程配置数据导出的细节

      如果数据库没有用于导出的表格，则可单击自动创建表格按钮来自动创建数据库表格。单击此按钮后，程序将创建带有您导出时需要的结构的表格。文档字段将与表格列相匹配。

      字段组及带有多个实例和文档表格的字段均将导出至数据库中的独立表格。主键和外键用于将主要表格与附属表格相链接。在主要表格中，主键添加至每个条目中。在附属表格中，每个条目均有一个外键，其记录了主要表格中相应条目主键的值。如有必要，将自动添加主键和外键。您只需指定要将键导出到的字段。

      为每个文档字段选择数据库表格列。

      如果表格中缺少要将某些字段中的数据导出至的列，则该列可自动添加至现有表格。因此，其足以将文档字段及具有类似名称和注释（自动）的数据库字段的一致性保留在括号内。 或者您可以通过鼠标并单击自动按钮选择所需字段。
      您也可以使用自动按钮在数据库（其名称与文档定义的部分或表格名称类似）中创建新表格。

      如果必须在字段一致性设置对话中创建新表格（其名称和列标题与文档定义字段名称不同），请使用新建按钮为每个字段创建表格。

      使用上移和下移按钮管理自动创建的数据库表格中列的排列顺序。

      使用格式…按钮配置保存特有字段的参数，例如，数目类型或格式的字段值中的小数位数，及数据类型的字段的分隔符。

  7. 如果应保存图像（<b>图片</b>类型的文档图像和/或字段图像），请指定图像保存选项并单击下一步>。
    • 指定是否应将图像保存至数据库或另存为文件。
    • 如果选择将图像保存至文件，请指定文件命名模板（单击编辑…）。并且，如果其名称相同，应何时覆盖同名文件。详情请参阅导出文件命名标准。
    • 如有必要，指定要在导出时隐藏的字段。

    注：根据所选选项，图片类型字段和文档图像的内容可导出至文件系统或数据库。
    导出至独立文件时，图片或图像文件的名称和路径将储存在数据库的相应字段中（它将在建立字段的一致性时配置）。如果将网络磁盘指定为导出文件夹（对于图像、图片等）的路径，请确保使用该磁盘的所有工作站可进行访问。特定程序允许您将二进制图像从任意数据库转换至文件。

  8. 如果选择了保存图像的选项，请指定文件保存格式并单击下一步>。
    • 选择所需的图像格式、质量和颜色。
    • 要更改源图像的分辨率，选择将分辨率更改为，并从列表中选择适当的值。
    • 如果您选择 PDF 或 PDF/A 作为存储格式，则您可通过选择创建可搜索 PDF 创建可搜索的 PDF 文件。您可选择一种与在文档定义中指定的语言不同的语言（如果是多语言文档，则可选择多种语言）：单击选择…字段右边的语言：，并选择相应的语言。如果您想要使用文档定义中指定的语言，请选择语言：字段中的与文档定义中相同。
  9. 输入导出配置文件名称，单击完成。

注：

  1. 图片导出至独立的文件。 图片文件的名称和路径可存储在相应的数据库字段中（可在映射字段时作出此设置）。
  2. 如果图像和图片等目标文件夹的路径包含网络磁盘，请确保处理此项目的所有处理工作站均可访问此磁盘。

使用数据库存储过程配置数据导出的细节

除了直接导出数据至数据库表格之外，还可以使用存储过程将数据保存至数据库。

存储过程是表示一组 SQL 指令（编译后将存储在服务器上）的数据库对象。存储过程可用于在字符数据（其结果可分配至变量和参数）上执行数字计算和操作，并可对数据库执行标准操作。

与直接导出至数据库表格相比，使用存储过程的优势是：

  • 提高处理数据库的速度
  • 可以使用其他计算
  • 确保数据整体性

MS SQL 共享过程的样本：

Create procedure Export( @userId as int, @lastName as nvarchar(255), @firstName as nvarchar(255) )
as
begin
if Exists( Select Id from Users where Id = @userId ) begin
Update Users set LastName = @lastName, FirstName=@firstName where Id = @userId
end else begin
Insert into Users ( Id, LastName, FirstName ) values( @userId, @lastName, @firstName
)
end
end

使用以上过程将数据从 FlexiCapture 发送至数据库时，将执行以下操作：

传递至过程输入的三个参数是 FlexiCapture 文档的字段：标识符 (UserId)、名字 (FirstName) 和姓氏 (LastName)。如果数据库表格（用户）中不存在带有此类标识符的条目，则将添加新的条目至表格。如果存在带有此类标识符的条目，则该条目中名字和姓氏的值将替换为新值（FlexiCapture 字段的值）。

使用存储过程配置导出

要使用存储过程配置导出，首先必须建立与数据库的连接（见上）。接下来，单击设置字段映射…以确定文档字段与存储过程参数的一致性。

在设置字段映射…对话框中，从表格列表和数据库存储过程中选择所需的存储过程，以保存数据。

与直接配置导出至数据库表格的列不同，建议用于导出的字段是存储过程的参数。过程参数是特有的。对于映射，参数类型必须与文档定义字段的数据类型一致。

映射文档字段及数据库存储过程的参数。

注：如果不仅需要从文档中导出独立字段，还需导出表格和复杂字段（例如，带有一些实例的字段），则您必须设置正确的索引，以连接子条目与主文档数据条目。将返回值 (@RETURN_VALUE) 或存储过程的输出参数指定为可导出的主键 (ROW_INDEX)。因此，导出数据时，该过程会将数据写入数据库表格中，并返回当前条目（该条目将传递至存储过程）的标识符以导出子条目。


将数据导出至 SharePoint 文档库

ABBYY FlexiCapture 10 允许您将文档导出至 MicrosoftTM SharePoint 文档库。因此，您将获得文档图像库，且每个文档的其他列都填写有特定字段值。

注：

  1. 支持以下 MicrosoftTM SharePoint 版本：MS SharePoint 2003、MS SharePoint 2007 和 MS SharePoint 2010。
  2. 设置将数据导出至 SharePoint 需要管理员权限。添加者权限足以将数据导出至 SharePoint。
  3. 将数据记录至的 SharePoint 列必须为单行文本或多行文本类型。

要设置导出至 SharePoint：

  1. 在文档定义编辑器中，选择文档定义>导出设置…
  2. 单击添加…
  3. 在类型：字段中选择导出到 SharePoint。
  4. 指定导出是否必要
  5. 指定应导出的文档（有错误和/或无错误）并单击下一步>。

  6. 指定导出设置并单击下一步>。

    • 服务器 URL（例如：http://myserver）： – 输入您的 SharePoint 库所处的服务器地址。如果需要，请使用连接设置…按钮设置验证参数（默认为采用 Windows 验证参数）和代理设置。
    • 服务器地址、连接状态如下所示。如果服务器已断开连接，单击连接以重新建立连接。
    • 连接至 SharePoint 服务器之后，请从选择 SharePoint 库：列表中选择库。
    • 单击浏览… 并在库中查找所需文件夹。
    • 在内容类型：字段中，选择您文档的内容类型（支持 SharePoint 2007 以上版本）。在这种情况下，您可以将值导出至与所选内容类型对应的字段中。
    • 现在，请指定应导出的文档定义字段及导出位置。单击设置字段映射…按钮，并在字段映射对话框中选择所需选项。在该对话框中，您必须建立文档定义字段与 SharePoint 文档列之间的一致性。文档定义字段显示在左侧。对于要导出的每个文档定义字段（除组和表格之外），您可选择空白的 SharePoint 列。
  7. 指定图像保存选项并单击下一步>。
    • 指定文件命名模板（单击编辑…）以及在其名称相同时应被覆盖的时间。
    • 如有必要，指定要在导出时隐藏的字段。
  8. 如果应存储图像，请指定图像存储选项并单击下一步>。
    • 选择所需的图像格式、质量和颜色。
    • 要更改源图像的分辨率，选择将分辨率更改为，并从列表中选择适当的值。
    • 如果您选择 PDF 或 PDF/A 作为存储格式，则您可通过选择创建可搜索 PDF 创建可搜索的 PDF 文件。您可选择一种与在文档定义中指定的语言不同的语言（如果是多语言文档，则可选择多种语言）：单击语言：字段右侧的选择…，并选择相应的语言。如果要使用在文档定义中指定的语言，请选择语言：字段中的与文档定义中相同。
  9. 输入导出配置文件名称，单击完成。

导出完成之后，文档将保存在指定的 SharePoint 库中，且每个文档都将带有填写有指定字段值的相应列。这些值将可用于搜索和文档索引。


用脚本描述的导出

要借助脚本配置导出：

  1. 在文档定义编辑器窗口中，选择文档定义>导出设置…
  2. 单击添加…
  3. 选择类型：字段中的自定义导出（脚本）。
  4. 指定是否需要导出。
  5. 指定应导出的文档（有错误和/或无错误）并单击下一步>。
  6. 选择脚本语言。
  7. 单击编辑脚本…时，在出现的编辑器窗口中键入脚本代码。然后单击下一步>。
  8. 输入导出配置文件名称，单击完成。

有关脚本参数的详情，请参阅导出脚本。


用于命名导出文件的规则

导出文件命名标准

在导出期间，将根据用户指定的标准，自动形成文件名和路径。数据文件名和图像文件名均可配置。

注：导出至文件时，可以指定数据文件名称模板。导出至文件、ODBC 兼容数据库、Sharepoint 和图像文件时，可指定图像文件名称模板。

可在定义和文件名模板窗口中配置文件名和路径信息。根据所选导出类型，可通过单击编辑…（位于带有文件命名模板的字段左侧）或文件命名选项…打开该窗口。

以下是两种文件导出模板形成类型（在视图：字段中选择：）

简单；

对于这种类型，可以选择附加路径（设置图像导出与导出数据至文件同时进行时除外）、文件名的重要部分，并根据需要添加标识符。

要指定相对路径，请选择使用其他路径：，然后选择方法：与热文件夹结构相似（热文件夹的相对源路径）或根据批处理文件名称（批处理文件名称）。

以下项目可以用作文件名的重要部分：

  • 源文件名；
  • 文档定义名称；
  • 指定的文件名： - 用户指定的字符组合。

以下项目可以用作附加标识符

  • 文档标识符（选择添加文件标识符至文件名）；
  • 索引字段值（选择添加索引字段至文件名，然后单击…，并在选择字段窗口中选择索引字段）。
高级。

在该类型中，文件命名模板将作为文件名称模板：字段中的文本行输入。模板可以包含永久的部分和标记，这些部分和标记可以被替代为特定文件信息。可以使用键盘来输入标记，也可使用添加标记…和删除标记按钮来添加和删除标记。

为了正确地生成文件名，请确保您所选择的文件命名选项不会生成空文件名。如果发生此情况，程序将显示警告消息。

注：用于命名文档图像文件（将与数据一起导出）的方案可与用于命名数据的方案相同。要使用相同方案，选择定义和文件名模板对话框的图像导出设置选项卡上的与数据相同选项。


在文档窗口中配置数据显示

识别数据后，用户将在文档窗口中看到它。默认情况下，数据将按顺序排列，其标题与文档定义字段的名称相对应。

但是，您可更改数据显示，对其进行方便的排列，或重命名元素。可在文档定义编辑器窗口的右下角编辑数据显示。

您可在数据表单中更改字段标题，无需在文档结构中更改其名称。要更改标题，打开字段属性对话框，单击常规选项卡，然后在标题：字段中输入新名称。此名称将用作数据表单字段中的标题。此功能对自定义列名称有用，特别是对于无法在其中更改字段名称的 FlexiLayout。

可在文档定义属性对话框的数据表单选项卡上指定字段名称和已识别数据值的文本字体和大小（文档定义>文档定义属性…）。您也可更改大小，只需在数据表单窗口中单击右键，并选择首选大小（快捷方式菜单项文本大小）。

您可移动、修改和重命名字段并更改其他字段属性。要返回原始的字段显示，请选择合适的快捷方式菜单项。

您可添加任何文本，例如说明。要执行此操作，请在数据表单窗口中单击右键，选择插入标签方框。输入文本，替换标签文本。


文档定义属性

文档定义基本属性（例如，其名称、语言和编写样式）均借助文档定义向导配置。在默认情况下配置其它属性。

您可在打开的属性对话框（当您在文档定义编辑器窗口中选择菜单项文档定义>文档定义属性…时，该对话框将打开）中查看和更改文档定义的属性。

该对话框有六个选项卡。

常规选项卡

在该选项卡上，您可重命名文档定义并输入或编辑其描述。已启用：选项从文档处理中包括/排除文档定义。

识别选项卡

在该选项卡上，您可修改文档定义识别的常规属性：

  • 语言（区域）： – 指定用于正确识别的语言很重要。该属性决定了输入语言和其它本地设置（例如，日期格式和货币等）。
  • 书写风格： – 编写样式在不同的国家或地区可能有显著的差异，这就是必须指定国家/地区以启用该程序选择其典型编写样式的原因。

  • 指定文本类型：

    ICR（手印） – 如果文档中的多数字段将手动完成，则启用该选项；

    OCR（打印）： – 如果将打印多数字段中的值，则启用该选项。从下拉列表中选择打印类型。

    注：不是对于所有语言都支持手印文本的识别。对于某些语言，该识别类型将不可用。请参阅受支持的识别语言。

    接下来您可为单独字段更改文本类型，而在此阶段中指定的类型将在默认情况下使用。

  • 您可在可能页面方向组中启用一个或多个选项，这样在自动页面方向选择过程中，该页面将顺时针旋转 180°、90°或逆时针旋转 90°。
  • 单击高级选项…以配置对线性和非线性图像失真的校正。

组装选项卡

该选项卡可用于为多页面文档配置组装规则。

在最简单的方案中，文档定义由出现一次的单个节段组成。如果文档定义由多个节段组成，该选项卡将显示其名称的列表。通过在最小数量和最大数量列中修改数量，您可指定每个节段的重复数。

  • 使用关键字段均等性组装规则 – 如果您想要基于关键字段执行对文档组装的检查，则启用该选项。然后，在关键字段列中，为每个节段选择关键字段。当您输入文档时，只有带有每个节段中关键字段的匹配值的文档将视为正确组装。如果其值不匹配，则将显示组装错误消息。
  • 使用标准组装规则 - 如果您要使用以下标准规则执行文档组装检查，则启用该选项：
    • 禁用节段次序检查 - 如果您要在文档中禁用节段顺序检查（例如，如果节段顺序不影响文档组装），则启用该选项。该程序仍将检查存在于文档中的所有节段，但将忽视其顺序。
    • 启用附加页面 - 如果您要处理带有附录的文档，则启用该选项。如果启用处理带有附录的文档，您还可选择在不分析情况下根据预设的文档结构检测附录（快）选项，以便在现有文档结构基础上更快地检测附录。

      注：仅对于在导出阶段通过分隔方式创建的文档或通过在 API 应用特定标志创建的文档，在不分析情况下根据预设的文档结构检测附录（快）选项有效。此类文档从组装排除。

  • 使用自定义组装规则 - 如果您要使用文档组装脚本执行文档组装检查，则启用该选项。自定义组装脚本可单独执行，也可与标准组装规则一起执行。要开始编辑脚本，请单击编辑组装脚本...按钮。脚本编辑器将会打开。

详情请参阅创建多页文档的文档定义、将多个页面组装至文档及为带附录的文档创建文档定义。

规则选项卡

该选项卡可用于文档定义规则的操作。您可删除、编辑或创建新规则。

详情请参阅规则校验。

导出目标选项卡

该选项卡显示给定文档定义的当前导出设置。要更改导出设置，请单击编辑…按钮

详情请参阅配置数据导出。

数据表单选项卡

在该选项卡上，您可为显示已识别数据修改字体轮廓和大小。

数据文本设置组包含用于显示已识别值的字体设置。

标签文本设置组包含用于显示解释性文本（字段名称）的设置。

详情请参阅配置文档窗口中的数据显示。

.Net 参考选项卡

在该选项卡上，您可添加要在脚本和全局模块中使用的外部组装。标准的和编译的用户组装均可使用。要添加组装，请单击添加…。在打开的对话框中，选择标准组装名称或附加文件类型。根据所选类型，您可输入标准组装名称或浏览至组装文件。

详情请参阅外部组装。


为通过 ABBYY FormDesigner 创建的表单导入文档定义

ABBYY FormDesigner 是一种便利工具，专用于创建机器可读表单。除了符合自动化文档处理的所有要求的表单，通过 ABBYY FormDesigner 设计的表单也可为您提供几乎可直接用于在 ABBYY FlexiCapture 10 中处理这些表单的 Document Definition。

要获取用于处理通过 ABBYY FormDesigner 设计的表单的文档定义，请执行以下操作：

在 ABBYY FormDesigner 中：

  1. 创建表单
  2. 发布表单
  3. 将其导入 XML Form Definition 格式。您将获取扩展名为 .xfd 的文件。

有关如何创建、发布和导出表单的详细信息，请参见 ABBYY FormDesigner 10 帮助主题和用户指南。

在 ABBYY FlexiCapture 中：

  1. 在程序主窗口中，选择菜单项项目>文档定义…；
  2. 在文档定义对话框中，单击导入…按钮
  3. 在打开的打开要导入的文件对话框中，从文件类型下拉列表中选择 XML Form Definition 文件 (*.xfd)并指定 *.xfd 文件的路径；
  4. 新文档定义的名称显示在文档定义对话框的文档定义列表中。

打开用于编辑的已导入文档定义后，您将看到字段标记和静态元素已显示在图像中。您只需编辑字段属性并配置导出即可。


创建多页文档的文档定义

ABBYY FlexiCapture 10 允许您为多页文档创建文档定义。文档定义可由包含一个或多个页面的任意数量的节段组成。多页文档的文档定义需要您指定节段的顺序、其数量和用于将页面组装至文档的规则。

在向导完成创建新文档定义后，将创建一个不包含任何节段的简单文档定义。您可将页面添加至文档定义。在添加页面时，其图像将添加至文档定义编辑器窗口中的图像区域，同时在该页面上创建的字段也将列在常用字段列表中。在这种情况下，虽然文档可能包含多个页面，但它仍将单个节段组成。

如果文档有板块在多个页面上继续或重复，或有表格在接下来的页面上继续，您可将页面添加至单个节段。相同方法可用于加载多页弹性描述（请参阅创建用于处理弹性文档的文档定义）。弹性描述中的所有字段必须属于文档定义的一个节段。

另一方法即是将节段添加至文档定义。最简单的方案是一个节段包含一个页面。如果在页面上的字段集是独立的，则您可选择它。此方法更直观：文档结构显示字段所属的节段，且您也可配置文档组装的自定义结构。让我们假设一下。例如，您的文档包含 3 类页面，且第 1 和第 3 类页面仅可出现 1 次，而第 2 类页面可出现 2 至 5 次。然后，您必须创建 3 个节段，每种页面类型 1 个节段，并指定文档中的节段顺序及其可能出现的次数。

更复杂的方案是文档定义包含多个节段，某些节段包含一个以上的页面。例如，这可能是由固定节段和弹性多页节段组成的文档定义。或用于描述包含可重现多次的双面表单的文档的文档定义。假设您需要为包含标题页（页面 A）和特定数量的双面表单（页面顺序为 BCBC...）的文档创建文档定义。这样，您可创建由一个页面 A 组成的节段 A，及创建由两个页面 B 和 C 组成的节段 BC。文档的结构配置如下：节段 A 重复一次，接着是节段 BC，该节段重复 3 至 7 次。

对于由多个节段组成的文档定义，除了重复节段的顺序和数量之外，您还可以启用关键字段校验。要执行此操作，您必须标识每个文档节段中的关键字段。它们的值在不同节段中必须相同。关键字段的示例是完成文档的人员的姓氏（必须在每个页面上编写）或者是特定标识数字。

当处理批处理文件时，该程序尝试将一系列页面组装至文档，并在过程中检查组装规则。如果选择相应的选项，则该程序将执行关键字段值检查。如果关键字段在同一文档的页面上不匹配，则将显示错误消息。有时，由于在扫描期间错误地放置文档页面，因此会出现这种情况。在此情况下，更改页面的顺序足以符合文档组装规则。请参阅将页面组装至文档。

要将页面添加至节段，请使用文档定义编辑器中的文档定义>添加页面…菜单项或图像快捷菜单中的添加页面…项。然后，加载未完成新页面的图像并选择必须在页面上自动标记的对象类型。

要添加新节段，请使用文档定义编辑器窗口中的文档定义>添加文档节段…菜单项。节段创建向导将打开，以帮助您配置所有所需参数。按照该向导的指示，执行以下操作：

  • 指定节段名称。
  • 加载未完成页面的图像（扫描或从文件加载）或加载弹性描述文件。
  • 选择将自动标记的对象类型。

新节段及其包含的字段将显示在文档结构窗口中。

您还可从项目中的另一文档定义中导入节段。要执行此操作，请在主菜单上单击文档定义>导入文档节段…，并在选择要导入的节段定义对话框选择节段。

注：在导入节段时，不导入共享脚本模块。其结果可能是在新节段中编写的脚本规则将无效或不正常运行。

要在创建文档定义时查看生成的文档结构，请在文档定义编辑器窗口右侧部分的文档结构窗口中，转至页面选项卡。它将在页面轮廓模式中显示文档结构。在该选项卡上，您可更改包含在文档中的节段数（要执行此操作，请在节段名称右侧的方框中输入新值，该值可为数字或间隔），附加附录页面，更改节段中的页面顺序，以及只需通过拖放页面便可将其从一个节段移动到另一个节段。

对于可在节段中重复的页面，请在页面属性中选择可在节段中重复选项。要打开页面属性对话框，请从页面的本地菜单中选择属性...或按 Alt+Enter。

显示文档结构窗口

要指定重复节段的顺序和数量及组装规则，请使用文档定义编辑器窗口中的文档定义>文档定义属性…菜单项。在组装选项卡上，指定文档中每个节段包含的最小和最大数（默认值为 1）。如果您要检查关键字段值，请启用使用关键字段均等性组装规则选项，然后在每个节段中选择关键字段。

选择要使用的组装规则。标准和自定义组装规则均可使用。

标准组装规则允许您禁用节段顺序检查以及使用附录页面组装文档。
禁用节段顺序检查（禁用节段次序检查选项）生效，例如，如果节段顺序不影响文档组装。该程序仍将检查存在于文档中的所有节段，但将忽视其顺序。
要使用附录页面组装文档，请选择启用附加页面选项。要在当前文档结构基础上检测附录页面，请启用相应选项。

要使用文档组装脚本组装文档，请启用使用自定义组装规则选项。要开始编辑脚本，请单击编辑组装脚本…按钮。

显示组装选项卡


创建文档定义以进行弹性文档处理

对于票据、付款单和类似文档，您无法创建具有固定字段位置的文档定义。这是因为其位置、大小和数目均不相同，因此固定文档定义将无法应用至所有文档。在此类文档中，程序将在预识别整个页面之后搜索字段，并基于字段的关键字和相对位置来创建弹性描述。ABBYY FlexiLayout Studio 10 特定程序模块用于设计弹性描述（与 ABBYY FlexiCapture 10 一起提供）。您将在 ABBYY FlexiLayout Studio 10 的帮助主题中找到设计弹性描述的详细说明。

弹性描述将导出为 .afl 文件，然后在 ABBYY FlexiCapture 10 中加载。我们可使用整个文档定义或其部分之一的弹性描述。弹性描述可能为多页。

附加弹性描述

可在创建文档定义阶段附加弹性描述。要执行该操作，在文档定义向导的第二阶段添加文档图像，然后启用加载 FlexiLayout选项，并输入包含弹性描述的 .afl 文件的路径。

您可从文档定义部分对话框的文档编辑器窗口中附加弹性描述。

  1. 选择文档部分。（如果该文档由单个部分组成，则在文档结构窗口中打开页面选项卡，并选择单个部分的名称。）右键单击并从快捷菜单中选择属性…。
  2. 转至FlexiLayout选项卡。
  3. 单击加载…
  4. 选择包含弹性描述的所需 .afl 文件。

附加弹性描述之后，将在图像上显示字段的几何布局。现在，您必须按照为固定文档定义执行的相同方法配置字段属性。指定识别、校验及导出属性，并设置所需规则。

更新弹性描述

要更新在文档定义中使用的 FlexiLayouts，请选择工具>更新弹性描述…。在打开的对话框中，指定 FlexiLayouts 的路径并单击更新。

注：当导入带有包含可能字段值的文本文件的 FlexiLyout 时，这些文件将沿着创建 FlexiLayout 时定义的相对路径放置。相对路径与项目文件相关。要编辑这些文件，请在本地保存项目（选择项目>导出项目…），编辑文件，并在服务器上更新项目（选择项目>更新项目…）。


为带有附录的文档创建文档定义

ABBYY FlexiCapture 10 可供您为包含附录的文档创建文档定义。附录是每个表格可能附有的附加页面。没有文档定义应用于这些页面，但在文档组装期间会考虑到这些页面。例如，所提交的贷款申请表（固定表单）就附有自由表单格式的损益表。此损益表可作为附录处理。

要为带有附录的文档创建文档定义：

第一种方法：

  1. 打开页面选项卡（在文档结构窗口中，文档定义编辑器的第一部分）。
  2. 启用选项启用文档中的附加页面。
  3. 在节段名称右侧显示的方框中输入附录页面的数量或范围。
显示文档结构窗口

另一种为带有附录的文档创建文档定义的方法：
  1. 打开文档定义属性对话框（在文档定义编辑器窗口中选择文档定义>文档定义属性…）。
  2. 转至组装选项卡。
  3. 启用选项启用附加页面。此时附加页面行将显示在节段列表中。
  4. 在附录中输入最小和最大页面数。
显示对话框

为了保存附录文本，当配置导出时，您需要指定图像保存选项（在导出设置对话框中）。如果您选择可搜索 PDF 来保存图像，则将识别文本并保存在可搜索 PDF 文件中。


处理非结构化文档

ABBYY FlexiCapture 10 可用于处理包含以自由样式显示的信息的文档，例如，合同、信函、订单和附录。由空白表或条形码页面分隔的带有文本或图像的非结构化文档经过处理后导出至可搜索的 PDF 文件或图形文件。

处理该等文档通常涉及将转文档转换为电子表单并根据关键字段值运行搜索。

如有可能，在该等文档部搜索关键字段（例如，合同编号）使用通过 ABBYY FlexiLayout Studio 创建的弹性描述执行。参见创建用于处理弹性文档的文档定义。

如果无法自动搜索关键字段，操作员则可手动输入其值。I 要实现此目的，请创建带有一个字段（如有必要，也可以是多个字段）文档定义，并在此字段的识别属性中启用选项不要识别（将自动输入图像字段中的密钥）。操作员可在运行校验过程时手动输入关键字段。

您需要配置导出以启用数据存储：您可将关键字段值导出至文件或数据库，并以方便的格式保存文档图像。可将文档图像保存在图形文件或可搜索的 PDF 文件中。

将页面组装进行文档时请密切注意：通过可能为固定格式的非结构化文档可确定某而所属的文档。为了自动化非结构化文档的组装，我们建议使用空白表或带条形码的页面分隔文档。将图像添加至批处理文件（通过扫描、从文件添加或创建导入配置文件）时，您可能需要启用选项适用于由以下项分隔的图像并从下拉列表中选择值空白页面或带有条形码的页面具体取决于要用作分隔符的页面。页面自动组装进文档中：页面将添加至当前的文档，直至到达下一个分隔符页面。有关详细信息，请参阅添加页面图像。


编辑和发布文档定义

可在文档定义编辑器窗口中编辑文档定义。在此，您可修改字段和静态元素的布局，编辑其属性、规则并导出设置等。

为了不影响其他项目成员在编辑文档定义时所作的工作，程序允许您在将最新发布的文档定义版本用于识别时编辑本地文档定义副本。在此模式中，可在本地修改和测试文档定义，而操作员可完成对使用旧版本识别的文档的校验和导出，即使已对文档定义作出大幅修改或将其删除。其他用户不可访问正被编辑的文档定义以对其进行编辑。当您完成编辑文档定义后，即可将其发布、为其制作可用于文档识别的新版本或撤消所有更改。

要编辑文档定义，请执行以下操作：

  1. 在程序主窗口中，选择菜单项项目>文档定义…
  2. 选择要编辑的文档定义。
  3. 单击编辑…按钮（在文档定义）对话框中，以开始编辑文档定义。文档定义的本地版本将复制到您的 PC。文档定义将变成不可供其他用户访问以进行编辑。
  4. 在文档定义编辑器窗口中作出必要的修改。保存文档定义
  5. 通过多个图像测试文档定义。对于文档定义调整，您可使用适用于本地版本文档定义的测试批处理文件。
  6. 单击发布按钮（在文档定义对话框中），以发布文档定义。发布之后，新的文档定义版本将用于识别工作批处理文件中的文档。文档定义现在供其他管理员编辑。要返回原始的文档定义，请单击放弃更改。
  7. 文档定义将按其在文档定义窗口中列出的顺序应用。如有必要，更改文档定义的顺序。
  8. 要加快 FlexiLayout 匹配，请选择使用第一个可接受弹性布局以使程序使用第一个匹配的 FlexiLayout。否则，程序将尝试应用每个 FlexiLayout，然后选择最佳匹配。

新的文档定义版本在得以发布后将立即用于识别和进一步文档处理。但是，先前版本的文档定义用于在发布之时已被处理的文档。您可为处理中的文档更新文档定义，只需选择工具>更新至最新版本。取决于您对文档定义所作出的更改，将显示消息提示您重新识别文档（如果识别参数已更改）、重新检查规则（如果规则已更改）或重新导出文档（如果只有导出设置已更改）。


测试文档定义

在启动批量文档输入前，必须测试文档定义。测试将通过使用已添加至测试批处理文件的文档进行，因为这些批处理文件使用文档定义本地版本。这些批处理文件从主程序窗口的视图>测试批处理文件菜单中可用。您也可以通过选择批处理文件>切换至测试批处理文件…，从文档定义编辑器窗口中访问测试批处理文件。

重要事项！仅创建测试批处理文件的用户可使用该测试批处理文件。如果需要，工作批处理文件可用作测试批处理文件，在这种情况下，它将作为测试批处理文件的图像来源。

文档定义可直接在文档定义编辑器中测试，也可在用于创建文档定义的图像上测试。要启动测试，选择测试>运行测试。数据表单将像显示文档处理、格式错误、不确定字符和规则错误的情况一样显示。

您可使用测试>视图菜单重新排列窗口，以及使用测试>校验菜单浏览校验项、不确定字符和规则错误。单击完成测试按钮，或选择测试>完成测试以停止测试。

注：在测试模式中，更改字段边界将不会导致程序重新识别字段，这就是当您在文档窗口中更改字段边界时出现的情况。

要在其他图像上测试您的文档定义，请选择测试批处理文件（您可通过在文档定义编辑器中选择批处理文件>切换至测试批处理文件…执行该操作）。显示批处理文件选择对话框之前，程序将检查当前文档定义是否出错。如果文档定义没有错误，则将保存该文档定义，并显示批处理文件选择对话框。当您在该对话框中选择批处理文件时，程序主窗口将变为活动并自动切换至新选择的批处理文件。

我们建议至少用 20 张文档图像（如果文档是手动完成的，则最好使用由不同人员完成的文档）检查每个文档定义。

需要进行测试以确定：

  1. 是否存在足够数量的已标记定位点和标识符，以用于图像文档定义的特定应用程序。
  2. 字段属性是否已正确配置。
  3. 规则是否已正确配置。
  4. 导出是否已正确配置。

在测试过程中，您需要执行在处理文档时执行的整个一系列操作。

如果在测试过程中检测到规则错误、不正确的字段值等，则您必须编辑文档定义以更正它们。

仅在检测到所有错误已消除之后，您才可以发布文档定义并开始批量输入文档。

项目符号 操作已配置项目


分类器

分类器是在 ABBYY FlexiLayout Studio 中创建的项目，用于初步识别单一页面并将其分类为属于某特定类型。例如，可根据 FlexiLayout 或布局备选项分类页面。在 ABBYY FlexiLayout Studio 中创建分类器后，就可在 ABBYY FlexiCapture 中将其用于在项目级别或批处理文件类型级别分类文档。

要在项目级别添加分类器项目：

  1. 打开项目。
  2. 在主窗口中，在项目菜单中选择项目属性…。此时显示项目属性对话框。
  3. 单击识别选项卡，并单击加载…
  4. 选择包含分类器的 *.cfl 文件。

注：创建批处理文件时，如果将默认值指定为批处理文件类型，则在项目属性中指定的设置将用于处理。

要在批处理文件级别添加分类器项目：

  1. 打开批处理文件类型对话框（通过选择项目>批处理文件类型…）
  2. 从列表中选择批处理文件类型，单击编辑…。此时出现批处理文件类型属性对话框。
  3. 单击识别选项卡，然后在分类器部分中单击加载…
  4. 选择包含分类器的 *.cfl 文件。

分类器用于以下目的：

  • 加快选择文档定义。通过使用分类别，程序不必在搜索最佳匹配时搜索所有可用文档定定义，而是根据分类功能选择合适的文档定义。搜索顺序由用户确定，该用户选择分类功能并构建分类器树状图。对于具备大量文档定义的大规模项目，速度提升特别明显。
  • 要在分类器树状图中发布分类功能。例如，在最底层，您可根据带有某公司名称的文档部分选择在该公司内部发送的文档。在下一级别，可根据文档的标题或特定页面上的分隔符数量对文档进行分类。
  • 要管理第三方 FlexiLayout 应用程序。第三方开发人员创建的 FlexiLayout 可能与其文档不匹配。在此情况下，您可使用分类器作以补救，无需联系开发人员。
  • 要加速包含多语种文档定义的项目。如果使用了分类器，则仅执行两次文档预识别：当分类文档时及在应用选定的文档定义时。否则，必须为项目中每个语种的文档定义执行预识别。

有关分类器的详细信息，请参见 ABBYY FlexiLayout Studio 帮助。


图像导入配置文件

操作员通过添加新图像开始：这些可以是需要扫描的硬拷贝文档，也可以是现有的电子图像。

从同一资源添加图像的经常重复操作可自动执行，以启用单击导入。为此，您需要创建图像导入配置文件。另外，您可在后台模式中配置传入图像的处理和图像的定期添加。配置完所需的设置之后，图像将在单击某一按钮后进行扫描，或从预先设置的来源导入，并将处理接收的图像（例如，去斑）。如果需要，您可更改图像导入的来源或其设置。

当导入来源频繁更改时，您可创建多个导入配置文件并在它们之间进行切换，以避免一直更改导入来源设置。

创建导入配置文件

要添加导入配置文件，请在主程序窗口中选择菜单项项目>图像导入配置文件…。在打开的对话框中，您可创建新导入配置文件，编辑、删除并复制现有配置文件。

您可在配置文件向导（通过单击新建…从图像导入配置文件对话框中运行）的帮助下创建新导入配置文件， 在向导运行的第一阶段，选择导入来源，例如，扫描仪或热文件夹。

创建带有扫描仪的导入配置文件
  1. 选择扫描仪：作为导入来源。

    重要事项！必须连接扫描仪。要正确地连接扫描仪，请参阅随扫描仪提供的文档。确保您安装了随扫描仪提供的所有软件。

  2. 第二步，您可以配置扫描和处理已扫描图像的选项：
    • 设置对话框的样式： – 选择程序和扫描仪之间的交互方法：
      • FlexiCapture 扫描仪设置：在此情况下，ABBYY FlexiCapture 的扫描仪设置对话框将用于配置扫描选项。单击设置…按钮以配置扫描选项。如果您启用了扫描之前显示扫描仪设置选项，则在您在扫描之前选择该导入配置文件时，ABBYY FlexiCapture 的扫描仪设置对话框将出现。
      • 扫描选项：相关扫描仪驱动程序的对话框将用于配置扫描选项。在这种情况下，当您创建导入配置文件时，将无法更改扫描选项；但每次您开始扫描图像之前都将显示扫描仪设置对话。
    • 指定您在单次扫描中想要扫描一个或是多个图像。
  3. 下一步，您可配置确定添加图像至文档的原则的选项及图像处理选项。详情请参阅图像预处理选项。
  4. 最后一步，您可以更改分配给导入配置文件的默认名称，并输入您的注释。

重要事项！如果使用扫描仪创建导入配置文件的管理员希望给予该计算机的其他用户常规用户权利（用户组成员），使其可使用扫描仪创建或编辑导入配置文件，管理员必须授予此类用户修改 %allusersprofile%\Application Data\ABBYY\FlexiCapture\Scanning\Profiles 文件的权限。

通过热文件夹创建导入配置文件
  1. 选择热文件夹：作为导入来源。选择热文件夹类型：本地文件夹或局域网文件夹、POP3 服务器、MAPI（邮箱）或 FTP 服务器。单击浏览…按钮指定热文件夹路径，或单击设置…按钮指定登录和密码。

    重要事项！要从热文件夹中添加图像，用户必须具有该文件夹的读和写权限。
    对于从MAPI（邮箱）中导入，导入过程（用户工作站或处理工作站）必须在邮箱所属的用户帐号下运行。

    注：ABBYY FlexiCapture 不支持使用 SSL 协议（端口 995）的 POP3 电子邮件服务器。

    注：不支持 Microsoft Outlook 2010 64 位。

  2. 第二步，请设置图像加载选项：
    • 每 – 启用该选项，并输入程序的时间间隔以自动检查热文件夹中的新图像。

      注： 当用户使用启用每选项的配置文件开始导入图像时，程序开始监控热文件夹。当用户退出项目或在配置文件属性中禁用每选项时，程序停止监控热文件夹。

    • 在批处理文件设置中，启用其中一个选项，以指定用于添加新图像的批处理文件。
      • 将图像添加至当前批处理文件 – 启用该选项，以将图像从热文件夹添加至当前批处理文件；
      • 将图像添加至指定批处理文件： – 要将图像添加至指定批处理文件，请启用该选项并从下拉列表中选择批处理文件名称；
      • 自动为导入图像创建新批处理文件 – 启用该选项以自动为新图像创建批处理文件。在批处理文件类型：字段中，指定将要自动创建的批处理文件类型。如有需要，请单击注册参数…以指定批处理文件的注册参数并更改在优先级： 字段的批处理文件优先权。
    • 在要添加的文件数：下拉列表中，选择其中一个值，以指定要添加至指定或新建批处理文件的文件数。
      • 根据描述文件 – 将根据描述添加文件。要指定描述文件的名称和类型，单击设置…按钮。详情请参阅描述文件。
      • 所有文件 – 将添加来自热文件夹的所有文件。
      • 从子文件夹 - 程序将从其名称与指定模板匹配的子文件夹中添加文件。要指定名称模板，请单击设置…
      • 多个文件 – 将添加多个文件。要指定文件数，单击设置…按钮，然后输入数字或值的范围。
      • 注：如果您指定一定数量的文件，例如，5 个，且在热文件夹仅剩余 4 个文件，则将不导入这些文件。如果您指定一个范围，例如，1-5，则将导入剩余的 5 个文件。
      • 单个文件 – 将添加单个文件。
      • 已附加至字母 – 将添加所有附加至字母的文件。
    • 如果配置文件是用于导入照片而不是导入已扫描图像，请选择将图像视为照片。
  3. 下一步，您可配置确定添加图像至文档的原则的选项及图像处理选项。详情请参阅图像预处理选项。

  4. 第四步，配置文件向导将要求您在导入之后指定热文件夹清除选项：成功地导入的图像可删除或移至指定的文件夹。处理出错的图像可保留在热文件夹中，也可移至指定的文件夹。如果您想要移动图像，请指定要将图像移至的文件夹。

  5. 最后一步，您可以更改分配给导入配置文件的默认名称，并输入您的注释。

  6. 要开始自动检查热文件夹中的新图像，请在包含所需配置文件的导入配置文件列表行中选择自动检查。要查看当使用该配置文件时出现的错误，请单击查看错误。

已创建图像导入配置文件的名称将显示在导入按钮的下拉菜单中。要使用该配置文件执行图像导入，您只需要单击导入按钮右侧的箭头并选择带有配置文件名称的项目。

当您在导入按钮的下拉菜单中选择导入图像…项目时，您也可以从打开的选择导入配置文件对话框中编辑和创建新的导入配置文件。

添加页面图像


描述文件

描述文件是一种辅助文件，它定义从热文件夹中添加图像时批处理文件的形成方式。根据描述文件的格式，可使用不同的文件集形成批处理文件。

该程序使用以下类型的描述文件：

  1. Captiva QuickScan
    在描述文件中列出的所有图像文件都已添加至批处理文件。批处理文件中图像文件的顺序与描述文件中的顺序相同。
  2. Capture Software for Kodak
    位于 Kodak 文件夹中的图像文件已添加至按文件名的升序排列的批处理文件中。
  3. 空文件
    此文件用作显示必须创建新批处理文件的标记。文件内容无关紧要，只有文件名重要。将按字母表顺序从热文件夹添加图像。当找到其名称符合文件名：字段中指定掩码的文件时，系统将创建新批处理文件。因此，如果指定 *.dat 掩码，热文件夹将包含以下文件： Contract1.jpg、Contract2.jpg、Contract3.dat、Contract4.jpg、Contract5.jpg、Contract6.dat，将为 Contract1.jpg 和 Contract2.jpg 文件创建一个批处理文件（在找到 Contract3.dat 时），将为 Contract4.jpg 和 Contract5.jpg 文件创建另外一个批处理文件（在找到 Contract6.dat 时）。
  4. XML 文件
    这是带有文档结构的 XML 文件。当其他三种类型的文件无法使用，但可生成自定义描述文件时，会使用 XML 文件。在描述文件中列出的图像文件都已添加至批处理文件。

    XML 文档必须包含带有以下子级元素的根元素批处理文件：注册参数、文档和图像。该图像元素又必须包括其数量与正在创建的批处理文件中的页数相一致的图像元素。

    该批处理文件元素具有以下标记：

    • 优先级 - 批处理文件的优先级：最低、低、正常、高或最高。该标记可忽略。
    • 名称 - 所需的批处理文件名称。
    • 类型名称 - 批处理文件类型的名称。
    • 源 ID - 批处理文件来源的字符串标识符
    • 描述 - 批处理文件的描述。
    • 注册参数 - 批处理文件注册参数的列表。
    • 文档 - 文档列表（排除在自动文档组装外）。
    • 图像 - 单独页面列表（包含在自动组装内）。

    该参数元素具有以下标记：

    • 名称（属性） - 注册参数的名称。
    • 值 - 注册参数的值。

    该文档元素具有以下标记：

    • 索引（强制属性） - 从零开始计数的批处理文件文档内的文档索引。
    • 优先级 - 文档优先级：最低、低、正常、高或最高。该标记可忽略。
    • 名称 - 文档名称。
    • 条形码 - 条形码值。
    • 注册参数 - 文档注册参数的列表。
    • 图像 - 文档页面列表。

    该图像元素具有以下标记：

    • 索引（强制属性） - 从零开始计数的文档页面（批处理文件的文档）内的页面（图像元素页面的相应文档）索引。
    • 页面索引（属性） - 多页导入文件内从零开始的页面数。
    • 源路径（属性） - 带有源图像的文件夹的路径。
    • 源文件（属性） - 带有页面图像的源文件（与源路径相关的路径）。
    • 源文件页面索引（属性） - 多页源文件内从零开始的页面数。
    • 源详情（属性） - 来源描述（扫描仪名称）。
    • 值 - 为与热文件夹相关的页面指定的导入文件的路径。

    我们建议设置扫描程序，以便将已扫描的图像放入热文件夹本身或其第一级子文件夹中。创建批处理文件夹时，该程序会将相应描述文件的图像元素中列出的所有图像添加至该批处理文件。这些图像将按照其在描述文件中排列的顺序进行添加。

    批处理文件中图像文件的顺序与描述文件中的顺序相同。


图像预处理选项

当新图像添加至批处理文件时，该程序将执行图像预处理：该图像将分隔至文档、清理噪声、进行旋转等。

您可在图像预处理选项卡上选择预处理选项。可为以下内容选择预处理选项：

  1. 项目。在这种情况下，当新图像手动添加至项目批处理文件时，将默认使用所选选项。在主窗口中选择项目>项目属性…，然后单击 图像预处理选项卡。
  2. 批处理文件类型。在这种情况下，当处理来自给定类型批处理文件的图像时，将使用所选选项。创建批处理文件类型时，在图像预处理选项卡上选择图像预处理选项。
  3. 导入配置文件。当该导入配置文件用于添加新图像时，将使用这些选项。当 创建新导入配置文件时 ，在图像预处理阶段选择图像预处理选项。
  4. 图像已手动添加。当从文件中 添加图像时 ，请单击 加载图像对话框中的图像处理设置… 按钮。

注：如果图像是手动扫描，则未完成任何图像预处理。图像仅在导入配置文件用于添加图像时进行预处理。

用户可选择以下任意图像预处理选项：

  • 确定将图像添加至文档的原则的选项：
    • 应用文档定义时自动扫描 – 如果您想在匹配期间（识别期间）将图像分隔至文档，请选择该选项。在这种情况下，图像在已添加时不会立即分隔至文档，且文档仅在页面已根据在适当的“文档定义”中描述的结构进行分析和识别之后组装。 详情请参阅 为多页文档创建“文档定义” 及 将页面组装至文档。
    • 对于每个图像文件（适用于每个图像文件），
    • 或将在程序到达分隔符页时，将创建新文档（适用于由以下项分隔的图像 分隔）。

    • 要将空白页面用作分隔符，请从下拉列表中选择空白页面。要将带有条形码的页面用作分隔符，请从下拉列表中选择带有条形码的页面。您可通过单击设置…按钮设置其他参数。如果您无需要将分隔符页面添加至批处理文件，请选择删除分隔符页面。如果未选中该选项，则分隔符页面将添加至批处理文件，并成为每个文档的首页。

    注：您无需使用分隔符页面拆分文档之间的页面。只有在页面外观使确定其属于上一个文档或下一个文档成为不可能时，才必须使用分隔符页面。例如，文档由任意数量的相同页面组成，且批处理文件包含一个以上的此类文档时，会发生这种情况。

  • 配置图像处理选项：
    • 为图像去斑 – 消除图像噪声；
    • 将彩色和灰色图像转换为黑白 – 将图像转换为黑白图像；
    • 通过以下方式旋转图像 – 按指定方向旋转图像。
  • 消除歪斜选项。默认情况下，将选择这些选项，且程序将根据黑色方块和/或垂直和水平分隔符和文本消除新添加图像的歪斜。不建议关闭消除歪斜选项，除非不正确地完成了歪斜消除（例如，如果程序将图章或图形识别为分隔符，并尝试根据该错误数据消除图像歪斜）。
    • 使用黑色分隔符纠正歪斜 – 如果选择该选项，则将根据分隔符行消除图像歪斜；
    • 使用黑色方块形纠正歪斜 – 如果选择该选项，则将根据黑色方块消除图像歪斜；
    • 使用文本纠正歪斜 - 如果选择该选项，则将根据图像文本消除图像歪斜。


默认导出设置

当在未使用文档定义设置的情况下导出至文件或数据库时,以及对于未配置任何导出设置的文档定义，均使用默认导出设置。

将对每个“文档定义”配置导出设置，但有时您可能需要导出至不同的存储位置，例如，对于测试导出。在这种情况下，操作员可使用导出按钮菜单并使用与文档定义设置不同的设置导出至文档或数据库。请参阅导出识别的数据。在您首次导出时，使用默认设置。如果稍后修改导出设置，则最后一次使用的导出设置将被保存。

导出至文档或数据库的默认设置可在项目属性对话框的导出目标选项卡上配置（主窗口菜单项项目>项目属性…）。该选项卡显示当前默认的导出设置。您可配置设置以导出至文件或数据库。要修改默认导出设置，请单击编辑…，并配置类似于文档定义中导出设置的导出设置（请参阅配置数据导出）。


文档批处理文件

批处理文件

要处理的文档放在批处理文件中。将文档组合进批处理文件的原则由用户确定。例如，用户可选择将所有文档作为一个批处理文件处理，或将同一天导入或一次扫描的所有文档组合在一起。

在处理工作站上，从热文件夹导入图像会自动创建批处理文件。在扫描工作站上，可以由操作员手动创建批处理文件，有相应的扫描配置文件可用时会自动创建批处理文件。创建批处理文件应指定其类型，该类型决定批处理文件的处理方式。

页面图像在处理期间添加。详情请参阅添加页面图像。

在项目安装工作站上，可以通过创建批处理文件、向批处理文件添加文档图像和处理批处理文件（即识别、校验和导出结果）调试文档定义。要创建新批处理文件，在主窗口中右键单击批处理文件列表，并从快捷菜单中选择“新建批处理文件..”。

工作批处理文件和测试批处理文件

由批处理文件安装操作员使用测试批处理文件测试和调试文档定义。 工作批处理文件用于通过 ABBYY FlexiCapture 10 处理文档。如果在处理期间发生错误，批处理文件安装操作员也可以访问工作批处理文件。 在发生错误时，操作员可以打开该批处理文件并纠正错误。 测试批处理文件和工作批处理文件在本地文档定义中是不同的，它们用于处理测试批处理文件的文档，而发布的文档定义用于处理工作批处理文件的文档。请参阅 编辑和发布文档定义。

要打开批处理文件列表，从项目安装工作站上的视图菜单中选择批处理文件或测试批处理文件项目。


索引字段

为了使搜索和处理文档变得更容易，您可使用文档定义中任何字段的值为文档建立索引。在程序主窗口的文档列表中，除了基本信息，您还可输出每个文档索引字段的值，按这些值对文档进行排序，并轻易地查找必要的文档。

要按字段值建立索引，请为此字段启用索引字段选项（在文档定义编辑器中的常规选项卡中）。

要在文档列表中显示索引字段的值：

  • 在程序主窗口中，打开文档批处理文件，启用详细文档列表模式（工具栏上的 [image] 按钮）。
  • 右键单击表格标题区域（列名称），从下拉列表中选择自定义…。
  • 在选择列对话框中，单击新建…按钮。
  • 在编辑列对话框中，单击选择…右侧的IDD_SH_NEW_SUPER_GRID_COLUMN::IDC_INDEXED_FIELD_NEW_COLUMN选择...按钮。在打开的对话框中，选择启用了索引字段选项的其中一个字段。您也可输入任何列名称，并指定对齐方法。
  • 带有索引字段值的另一列将显示在表格中。在该列上单击，以便按索引字段的值为文档排序。


操作已配置项目

在操作员开始处理文档前，必须先由管理员配置项目。文档处理的配置方式，应保证图像扫描和导入、数据识别和导出等操作只要求最低程度的操作员干预。操作员工作的主要阶段是检查和纠正识别的数据 – 校验。

文档类型不影响操作员的工作。

文档处理分四个阶段，每个阶段在工具栏上有对应的按钮。

1. 添加图像

使用右侧的箭头选择图像导入选项：加载图像…、扫描图像…或选择已配置的导入配置文件导入图像。按钮名称根据选择的操作而变化。

2. 识别

运行文档识别进程。使用右侧的箭头也可以分析文档或应用某个文档定义。

3. 校验

运行校验进程。使用箭头运行规则校验进程。

4. 导出

根据文档定义中配置的设置开始导出数据。单击箭头指定是将数据导出至文件还是数据库，或者是否导出文档图像。


添加页面图像

文档处理以向项目添加文档页面图像 – 图像导入开始。要开始工作，请选择或创建一个新工作批处理文件用于添加图像（要创建批处理文件，在主程序窗口中单击右键并选择新建批处理文件…）。双击打开所需的批处理文件，或在列表中将其突出显示。

注意： 如果尝试在没有批处理文件的情况下向项目中添加图像，会自动创建一个文档批处理文件。

向批处理文件添加图像的方法有以下几种：

  1. 从文件中加载先前保存的图像；
  2. 扫描图像；
  3. 使用管理员先前配置的图像导入配置文件来导入图像（参阅图像导入配置文件。）

要选择添加图像的方法，请单击导入按钮右侧的箭头并从菜单项中选择。

从文件添加图像

要从文件加载图像，选择加载图像…菜单项或使用 Ctrl+O 快捷键。在打开的对话框中，选择所需的图像文件并配置图像导入选项：

  • 创建新文档 – 为添加的图像创建新文档
  • 添加至当前文档(A) – 将图像添加至当前突出显示的文档。
  • 您也可以选择图像预处理选项。单击图像处理设置…按钮，并在打开的对话框中选择所需的选项。详情请参阅图像预处理选项。

扫描图像

要从扫描仪添加图像，选择扫描图像…菜单项。选择扫描仪，配置扫描选项并扫描图像。

使用导入配置文件添加图像

如果管理员配置了导入配置文件，导入按钮的菜单中会显示导入配置文件的名称。要开始导入图像，只需选择一个有导入配置文件名称的项目即可。

选择导入图像…后，会打开选择导入配置文件对话框。从列表中选择导入配置文件并单击导入按钮开始导入图像。如果采用管理员模式，可从该对话框创建新导入配置文件或编辑现有配置文件。

后台图像导入

如果配置了相应的导入配置文件，可以采用后台模式执行图像导入。热文件夹的图像被自动导入系统。程序以设置中指定的时间间隔检查新图像的文件夹。

在启用了热文件夹检查时间间隔选项的情况下，程序会在用户开始导入图像时开始监控热文件夹。用户退出项目或停用配置文件属性中的热文件夹检查时间间隔选项时，程序停止监控热文件夹。详情请参阅图像导入配置文件。

注意：要从热文件夹添加图像，用户必须有对该文件夹的读写权限。


配置扫描选项

识别质量主要取决于扫描图像的质量。通过配置基本扫描选项，如图像类型、分辨率和亮度，可以调整图像质量。

通过 ABBYY FlexiCapture 扫描图像时，程序通过 TWAIN 或 ISIS 驱动程序和扫描仪交互的方式有以下两种：

  • 通过 ABBYY FlexiCapture 界面：
    对于这种情况，采用 ABBYY FlexiCapture 对话框扫描仪设置配置扫描选项；以指定的扫描仪：作为导入源创建导入配置文件时可以配置扫描选项。
  • 通过扫描仪的 TWAIN 或 ISIS 驱动程序：
    使用相关扫描仪驱动程序的对话框配置扫描选项。从导入按钮的下拉菜单选择扫描图像…自动打开该对话框。

基本扫描选项

  • 图像类型 – 灰度扫描（256 个灰度梯度）是识别系统的最佳模式。以灰度模式扫描时，程序自动选择亮度水平。

    黑白图像类型可以加快扫描速度，但有损某些文字信息，可能会影响中低印刷质量文档的识别质量。
    如果要在电子文档中保留文档的彩色元素（图片、彩色文字和彩色背景），需要选择彩色图像类型。其他情况可以使用灰度 图像类型。

  • 必须选择亮度和对比度值的理由有二，首先是保留定位点区域，其次是保证尽可能清晰确定地识别区域的图像。
    在大多数情况下，适合选择平均亮度值 50%。
    以黑白模式扫描某些文档时，可能需要另外配置亮度。
  • 分辨率 –对于手工填写的表单的处理，以黑白模式扫描的分辨率建议采用 300 dpi，以黑白模式扫描的分辨率建议采用 200 dpi。扫描表单的分辨率必须匹配模板图像的分辨率。

注意：

  1. 以 400-600 dpi 分辨率扫描比使用 300 dpi 分辨率扫描的时间长很多，以灰度或彩色模式扫描比使用黑白模式扫描的时间长很多。某些型号的扫描仪，以 600 dpi 分辨率扫描的时间更是达到 300 dpi 分辨率扫描时间的 4 倍。不推荐以 200 dpi 以下的分辨率扫描。
  2. 使用扫描仪驱动程序的对话框时，配置扫描设置的选项的名称依据扫描仪型号而定。例如，可能将亮度称作阈值，或者将亮度标记为太阳或黑白圆圈标记。选项的含义在扫描仪随附的文档中进行了说明。
扫描模式提示
  1. 使用黑白扫描仪扫描彩色背景的表单：要在扫描期间使背景消失，需要在扫描仪上安装一台适当的过滤灯：粉色表单 – 安装红灯，绿色表单 – 安装绿灯。
  2. 使用彩色扫描仪扫描彩色背景的表单：要在扫描期间使背景消失，需要在扫描仪设置中配置相关颜色的过滤模式。
  3. 扫描彩色背景较浅的表单：如果处理的是浅色的彩色表单，由于色彩强度低，即便不采用软件过滤颜色，使用白灯也可以使背景消失。扫描表单的方法通常在表单制作阶段选择。
亮度选择提示
  1. 扫描的图像必须可读（要查看已扫描的图像，请在文档窗口中打开该图像）。
  2. 如果扫描图像中的文字断开、较浅或暗淡：
    • 降低亮度，增大对比度（使图像变暗）或
    • 尝试以灰度模式扫描（此时会自动选择亮度）。
  3. 如果扫描的图像背景不鲜明；有变形、斑状或混合的字符；文字模糊、浓厚；
    • 增大亮度（使图像变亮）或
    • 尝试以灰度模式扫描（此时会自动选择亮度）。


识别

要激活识别，请单击识别按钮。程序使用定位点和标识符选择文档定义后应用文档定义，并在匹配选定文档定义中的字段区域的文档区域执行数据识别。

只要图像被添加至批处理文件，即可自动执行图像识别。该操作结束后，必须启用选项自动识别添加的图像（在主窗口工具菜单中，即选项…选项卡下面的文档处理项目）。

确定识别的字符与总字符数之比显示在置信水平列中。识别后，操作员可以运行文档校验。

如果需要，操作员在识别前可以执行图像和文档定义应用的初步分析。


图像和文档定义应用的初步分析

在运行识别前，可以分析或确定要对特定页面应用哪一种文档定义。然后选择主菜单项识别>分析，或单击识别按钮右侧的箭头并选择分析。如果可以应用某个文档定义，将对该页及该页所属的文档相应命名。如果任何项目文档定义均不匹配图像，将不会处理该页。

您也可以对某页或整个文档应用某个特定的文档定义。在大多数情况下，会对页面自动应用在程序中正确创建的文档定义，但有些情况可能必须手动应用文档定义。

要应用文档定义：

  1. 突出显示该文档；
  2. 选择文档上下文菜单中的匹配文档定义…或选择主菜单项识别>匹本文档定义…，或单击识别按钮右侧的箭头并选择匹配文档定义…；
  3. 在打开的选择文档定义对话框中，选择一个文档定义并单击确定。

如果选择的文档定义被成功应用，将为文档及其页面分配相关文档定义及其节段的名称。

要对一个页面应用文档定义：

  1. 突出显示该页面；
  2. 从该页的上下文菜单选择匹配文档定义…或选择主菜单项识别>匹本文档定义…；
  3. 在打开的选择要匹配的文档定义对话框中，选择一个文档定义并单击确定。

如果该文档定义被成功应用，会为选定页面分配相应的文档定义节段的名称。


检验识别的数据

校验或检查已识别数据是操作员工作中劳动量最大的一部分。由于此原因，对 ABBYY FlexiCapture 10 中的校验过程进行了安排，以尽可能为操作员操作便利，并最小化错误数量。

当程序对某些字符的识别精度没有绝对的把握时，其就将这些字符标识为不确定识别的字符。校验过程旨在校验该等字符，确保其被正确识别并在必要对其加以纠正。

规则校验是自动执行的。如果字段值符合规则条件，则这些字段可能被标记为已确定识别，并将其从校验过程中排除。如果字段值不符合规则条件，则将提交该等字段供校验。

对于多页文档，您必须首先确保已页面组装进文档中。

然后运行校验过程。校验过程分成两个阶段：组字段校验。如果文档定义没有包括在组校验或字段校验中的字段（参见字段校验属性），则将忽略相关的校验阶段。

组和字段校验之后是在文档窗口中的校验。在较早阶段中未得到确认的字符仍用红色突出显示。

可在主窗口工具栏中单击 [image] 和 [image] 按钮，以导航这些错误。程序导航所有错误，其中包括组装错误、不确定识别的字符和规则错误等。

将页面组装至文档
组校验
字段校验
在文档窗口中校验
规则校验


将页面组装至文档

页面自动地或按照显式的用户命令组装至文档。当为多页文档处理创建文档定义时，可描述组装原则。

组装细节：

  1. 运行：
    • 当选择命令时：工具>刷新组装
    • 分析/识别一组文档后；在这种情况下，组装仅包括分析/识别中涉及的文档
  2. 标准组装规则和组装脚本均适用。
  3. IsExcludedFromAutomaticAssembly 标志设置为 true 的文档排除在组装之外。在以下情况下，IsExcludedFromAutomaticAssembly 设置为 true：
    • 文档结构在导入阶段期间定义（通过 XML-描述，及按空白页面、补丁代码或多页面文件拆分文档时）
    • 匹本文档定义…应用于该文档
    • 该标志可从任何允许编辑文档的脚本中设置
  4. 对于用不同文档定义或相同文档定义的不同版本识别的文档，都不会执行组装。
  5. 如果文档定义不匹配，则不会执行组装。例如，如果批处理文件的所有页面均为附录页面，则不会执行组装。
  6. 页面顺序在组装期间无法更改。

操作员的任务是识别和更正可能的文档组装错误。

组装错误最方便在页面轮廓模式中进行更正，该模式让用户清楚地查看页面图像及它们所属的文档。通过单击 [image] 按钮，您可切换至该模式。

注：通过按住 Ctrl 键并旋转鼠标滚轮，您可更改页面轮廓的比例以查看详情。

注：如果在创建文档定义时，在组装选项卡上选择禁用节段次序检查选项，那么将不检查该节段的顺序。该程序仍将检查，以确保所有的节段都出现在文档中，但将忽略节段的顺序。

在创建文档定义时，您需要配置文档组装规则：重复文档节段的顺序和数目。您还可配置基于关键字段值的组装校验：在这种情况下，关键字段值在文档的所有页面中都必须相同。

组装错误的文档以该符号 [image] 标记。错误描述在文档定义名称下以红色字体提供。

如何更正组装错误

  1. 文档中的页面顺序不正确

    页面可能太少或太多，或页面文档未以正确的顺序排列。要阅读提示，请在用红色十字形标记的页面中放置您的指针：

    要更正此类错误，您可使用鼠标将页面在单个文档内移动，以及从一个文档移动至另一文档。

    多个文档页面可合并为单个文档，方法如下：

    • 突出显示将要合并的文档（使用 Ctrl 并单击选择多个文档）；
    • 右键单击并从快捷菜单中选择合并。

    要拆分文档中的页面及将它们其中一页放到单独的文档：

    • 突出显示您想要拆分页面的文档；
    • 从快捷菜单选择拆分。

  2. 如果文档定义要求校验关键字段以保证页面正确组装，则关键字段的值将在每个页面的图像下显示：

    • 以灰色突出显示 – 在匹配的情况下；
    • 以红色突出显示 – 在不匹配的情况下。

    如果错误地识别或填入关键字段，则可能无法匹配。检查关键字段的值。如果关键字段的值仍不匹配，很可能是此类页面不属于同一文档。如果页面顺序错误，则利用相同的关键字段找到页面并像项目 1 中所描述的那样将它们组装至文档。


组校验

组校验涉及按相同值进行识别的字符图像进行检查。它让操作员轻松地识别并更正不在该组的字符。

在组校验期间，通过从突出显示字符的快捷菜单中选择显示字符图像项或按 F2，操作员可查看要校验的字符的上下文。

您还可以激活某个模式，在该模式下，当您将指针指向要校验的字符时，将显示包含该字符的字段。为此，请选择校验程序窗口中的视图>字段图像>显示字段图像菜单项或使用 Ctrl+I 快捷键。

未正确识别的字符可以按如下方法进行更正：突出显示与组字符不匹配的字符，然后输入正确的值。以绿色突出显示的值将出现在字符图像的左上角。

如果无关的图像识别为字符，您可按删除按钮将其删除。

如果您对字符的含义仍有疑问，在查看其上下文后，请用鼠标左键单击该字符：它将以红色的问号突出显示。在字段校验期间，您可稍后对其进行确认和更正。

使用工具栏上的切换按钮，还可切换字符状态。

在更正或推迟所有未正确识别字符时，您可单击工具栏上的全部确认按钮，一次确认所有其它的字符。您还可从快捷菜单中选择确认，以逐一确认正确识别的字符。


字段校验

字段校验为一种校验模式，用于有效地更正“识别良好”字段（即其值范围已知或可轻松识别的字段）的错误。国家或城市名称即为此类字段的示例：我们知道该字段可拥有哪些值。

要决定如何更正字段值，用户仅需查看该字段并了解其值的范围。输入错误和字段格式错误均可更正。

要更正未正确识别的字符，可以使用文本编辑器的标准模式：即字符粘贴和替换模式。您可以通过按键盘上的 Insert 按钮在两种模式之间切换。

您可更改校验模式，例如，打开整个字段的选择方式，以便全部重新输入。您还可更改窗口的外观，以便查看更多信息，如字段图像、其它文档类似字段的图像等。

用户按顺序查看每个字段的识别结果，且在需要时对其进行更正，并通过单击确认字符按钮对其进行确认。

您需要在字段中更正值。如果无法更正它们，您可跳过该字段，或通过单击推迟按钮延期校验，以便在校验阶段对其进行更正。


在文档窗口中校验

文档窗口也可供您检查识别精度并纠正不正确识别的字符。文档窗口在您双击页面名称时打开。文档窗口包括数据区域、页面图像和错误区域（如果存在该等错误）。您可选择要显示的错误类型：组装错误、格式错误、规则错误或其任何组合。要显示某种类型的错误，请单击错误窗格右上角中的相应按扭。

单击布局按钮即可配置窗口布局。在文档窗口中，操作员不仅会看到字符组或独立字符，而且能看到整个文档。

显示文档窗口

在数据区域中，不确定识别的和值得怀疑的字符标有颜色，并将突出显示带有不正确数据类型或未履行规则的字段。

要确认带有不确定识别字符的字段，请将光标放在该字段中，按 Enter 键。

不仅可按顺序排列用于查看和编辑已识别数据的字段，而且可用任何便利于用户的其他方式排列这些字段。您可在文档定义编辑器中更改这些字段的排列，请参见配置文档窗口中显示的数据。

您可导航至文档窗口中的下一个错误，只需单击主窗口工具栏上的 [image] 和 [image] 按钮。程序导航所有错误，其中包括组装错误、不确定识别的字符、规则错误和关键字段误匹等。


规则校验

未履行的规则标有：黄色标记 [image] （警告）或红色标记 [image] （错误）。

规则错误显示在文档编辑器的独立窗口中，带有未履行规则的文档标有红色标志。

对于未履行的规则，操作员必须检查数据识别的质量。对于识别错误，操作必须予以纠正。对于无法纠正的格式填写错误，操作员不得导出文档。带有错误的文档可留在以后校验：将其与硬拷贝文档或其他可用来源进行对比。

要重新检查数据是否存在规则错误，请单击运行校验…按钮右侧的箭头，并选择重新检查规则菜单项。如果在纠正字段值后符合了规则，则将移除标志。


导出已识别数据

在校验已识别数据后，操作员通过单击导出按钮导出批处理文件。导出是根据文档定义设置执行的。

在不使用文档定义中配置的导出设置的情况下，您也可导出至文件或数据库。

注： 在导出至文件或数据库时，您可使用默认的设置或根据需要进行更改。默认导出设置在导出选项卡上的“项目属性”对话框（主菜单项项目>项目属性…）中配置。请参阅默认导出设置。

导出数据至文件

  1. 要导出数据至文件，单击导出按钮右侧的箭头并选择将数据导出至文件…菜单项
  2. 选择存储位置和文件名前缀（如果您作为独立的文件保存每个文档，完整名称将以此前缀开头，随后是文档定义名、批处理文件名和文档数（请参阅项目 3）)
  3. 启用选项：
    • 将文档导出为独立的文件 – 在单个文件中存储每个文档的数据；
    • 重写文件 – 覆盖导出的文件；
    • 保存文档图像 – 保存文档图像。
  4. 要更改其他导出设置，请单击设置…按钮。有关导出配置的详情，请参阅配置数据导出。
  5. 要保存已修改的导出设置，请在文件导出设置对话框中，单击保存至文档定义按钮并选择您想要保存当前设置的文档定义。

导出图像至文件

  1. 要导出数据至文件，单击导出按钮右侧的箭头并选择将图像导出至多个文件菜单项。
  2. 选择存储位置和文件格式（TIFF、JPEG、PDF、PDF/A、BMP、JPEG2000、PCX packbits 或 PNG）。
  3. 单击设置…按钮配置图像导出设置。

导出至数据库

  1. 要导出数据至数据库，单击导出按钮右侧的箭头并选择导出至数据库…菜单项。
  2. 建立数据库连接。详情请参阅导出至数据库。
  3. 转至图像选项卡并配置图像存储设置。

注：

  1. 数据已成功导出的文档可能从批处理文件中自动删除。如果在文档处理选项卡上的选项对话框中启用导出后删除文档选项，该情况将会发生。
  2. 如果您尝试导出带有规则错误的文档，程序将显示错误消息。规则警告不会阻止导出。


后台模式

只要不要求操作员控制，即可以后台模式导入、识别和导出文档。

要将任务传输到后台模式，请单击后台模式对话框（或正在添加图像…或正在识别…对话框）中的正在导出…按钮。

以下任务可以在后台模式中运行：

  • 采用相应的导入配置文件从热文件夹加载图像。
  • 文档识别，如果选择了自动识别添加的图像选项（工具>选项…，文档处理选项卡）。
  • 导出文档。

切换到后台模式时， [image] 图标会显示在任务栏上。单击该图标打开背景任务对话框，

  • 程序将根据选择任务的顺序或根据用户设置的优先级（设置优先级…按钮)执行这些任务。
  • 任务执行情况记录在用户可以自定义的日志文件中（工具>选项…，任务进度选项卡）。单击 查看日志 按钮查看日志。
  • 单击 结束任务 按钮可以中断任务。

程序也会在右下角显示的气球状弹出消息中通知您后台任务的进度。一旦启动任务、任务出错和完成任务，即会显示消息。详情请参阅其他选项。


ABBYY FlexiCapture 10 界面

本节概述了 ABBYY FlexiCapture 10 界面的关键元素：主窗口、菜单和工具栏。

程序主窗口
主窗口菜单
主窗口工具栏
文档定义编辑器
文档定义编辑器菜单
文档定义编辑器工具栏
组校验程序窗口
菜单
工具栏
字段校验程序窗口
菜单
工具栏


ABBYY FlexiCapture 10 主窗口

本程序的主窗口显示用户所处理的项目包含的文档批处理文件列表。

显示批处理文件列表的主窗口

通过双击可查看批处理文件的内容。您可以看到该批处理文件中的文档的列表。

要返回批处理文件列表，请单击项目>批处理文件（或测试批处理文件，如果使用的是测试批处理文件）。

显示打开的批处理文件的主窗口
主菜单（下方有工具栏）位于窗口上方。

主窗口的其余部分被批处理文件工作窗口（带有该批处理文件中的文档的列表）占据。

状态栏位于窗口下方。状态栏显示本程序的状态以及当前执行的操作。将指针放到菜单项目或按钮上时，状态栏将显示简要描述。

要检查识别的数据，打开文档窗口。双击文档或文档中某一页的的名称即可打开。文档窗口由三个部分组成：

  • 文档页面的图像；
  • 识别的数据；
  • 规则错误（只在存在规则错误时显示）。

更多信息请参阅 在文档窗口中校验

显示文档窗口
ABBYY FlexiCapture 10 主窗口菜单
ABBYY FlexiCapture 10 主窗口菜单


ABBYY FlexiCapture 10 主窗口菜单

文件
菜单 | 描述
新建项目… | 创建新项目
打开项目… | 打开现有项目
关闭项目 | 关闭当前项目
保存 | 保存更改
新建批处理文件… | 创建新的批处理文件
加载图像… | 从文件中加载图像
扫描图像… | 从扫描仪添加图像
导入图像… | 使用配置的导入配置文件导入图像
导出 | 使用文档定义的导出设置导出数据
导出至 |
将数据导出至文件… | 将数据导出至文件
将图像导出至文件… | 将图像导出至文件
数据库… | 将数据导出至数据库
最近打开的项目 | 打开一个最近打开过的项目
退出 | 关闭 ABBYY FlexiCapture 10
编辑
菜单 | 描述
撤销 | 取消上次操作
恢复 | 恢复所取消的操作
剪切 | 剪切选定对象
复制 | 将选定对象复制到剪贴板
粘贴 | 粘贴从剪贴板复制的对象
删除 | 删除选定对象
合并 | 将多个选定页面合并成一个文档
拆分 | 将一个选定的文档拆分成多个页面
全选 | 选择所有对象
查找… | 查找指定的文本
查找下一个 | 查找前面指定的文本的下一个文本
转至 |
下一个文档 | 转至批处理文件中的下一个文档
上一个文档 | 转至批处理文件中的上一个文档
图像 |
去斑 | 图像去斑
反转 | 反转图像
水平翻转 | （相对于垂直轴）水平翻转图像
垂直翻转 | （相对于水平轴）垂直翻转图像
顺时针旋转 90° | 将图像顺时针旋转 90°
逆时针旋转 90° | 将图像逆时针旋转 90°
旋转 180° | 将图像旋转 180°
更改分辨率… | 更改图像分辨率
另存为… | 以指定的名称保存图像
视图
菜单 | 描述
测试批处理文件 | 打开批处理文件的列表
批处理文件 | 打开队列的列表
详细信息 | 以详细的列表显示文档和文档页面
缩略图 | 以缩略图显示文档图像
选择列… | 允许配置以详细视图模式显示的列的列表
文档编辑器 |
图像模式 | 在文档窗口中显示页面图像
数据模式 | 在文档窗口中显示识别的数据
图像窗口 | 允许在文档窗口中定位图像
错误窗口 | 允许在文档窗口中定位错误窗口
图像比例 | 允许选择合适的字段图像比例
数据文本大小 | 允许在显示已识别数据时选择使用的字体大小
显示工具栏 | 在文档窗口中显示/隐藏工具栏。该工具栏允许纠正某些匹配错误，例如，可以添加未找到的字段，添加或删除表格分隔符。主要在使用 FlexiLayout 时使用该工具栏。
显示活动字段格式错误 | 允许指定格式错误显示模式
显示黑白图像 | 将彩色和灰色图像显示为黑白图像
缩略图大小 | 允许选择页面缩略图的大小
工具栏 | 显示/隐藏工具栏
状态栏 | 显示或隐藏状态栏
全屏 | 切换至全屏模式
刷新 | 刷新显示的信息
属性… | 打开“文档页面属性”对话框
识别
菜单 | 描述
分析 | 分析文档页面并查找合适的文档定义
匹本文档定义… | 对选定的文档或页面匹配选定的文档定义
识别 | 启动识别
校验
菜单 | 描述
运行校验… | 启动校验
下一个要校验的项目 | 转至下一个校验对象
上一个要校验的项目 | 转至上一个校验对象
下一带组装错误的文档 | 转至下一个组装错误
上一带组装错误的文档 | 转至上一个组装错误
下一个不确定字符 | 转至下一个不确定识别的字符
上一个不确定字符 | 转至上一个不确定识别的字符
下一条规则错误 | 转至下一个规则错误
上一条规则错误 | 转至上一个规则错误
项目
菜单 | 描述
文档定义… | 打开显示有“文档定义”列表的对话框，在该对话框中可创建、编辑、导入和删除文档定义（此菜单仅适用管理员）
批处理文件类型… | 打开显示有批处理文件类型列表的对话框，在该对话框中可创建、编辑、导入和删除批处理文件类型（此菜单仅适用管理员）
图像导入配置文件… | 打开显示有图像导入配置文件列表的对话框，在该对话框中可创建、复制、编辑和删除这些配置文件（此菜单仅适用管理员）
切换至管理模式… | 切换到管理员模式（此菜单仅适用操作员）
通过密码保护… | 允许用密码来保护当前项目（此菜单仅适用管理员）
未保护… | 允许对项目禁用密码保护（此菜单仅适用管理员）
导出项目… | 将项目导出至指定的文件夹。将从当前项目获取图像。
更新项目… | 配置更新的项目。导出期间显示的消息和错误可以保存至文件中（右键单击并选择“导出至文件”）。
项目属性… | 打开“项目属性”对话框
工具
菜单 | 描述
更新至最新版本 | 对当前处理的文档应用项目更改
重新分析 | 重新分析文档
重新识别 | 重新识别文档
刷新组装 | 将页面组装刷新到文档中
重新检查规则 | 重新核对规则
检查批处理文件完整性 | 检查批处理文件完整性
更改批处理文件类型… | 更改批处理文件类型
选项… | 打开选项对话框，在该对话框中可以配置后台任务处理、窗口视图等不同属性
帮助
菜单 | 描述
帮助主题 | 打开 ABBYY FlexiCapture 10 的帮助文件
技术支持 | 打开程序帮助中的技术支持部分
如何购买 ABBYY 产品 | 打开程序帮助中的购买 ABBYY FlexiCapture 10 部分
ABBYY 网站 | 打开 ABBYY 网站
发送反馈… | 允许发送反馈给 ABBYY：用户对本程序的看法、希望和评价
关于 ABBYY FlexiCapture | 打开关于 ABBYY FlexiCapture 10 对话框，该对话框中包含有对本程序的简要描述。


ABBYY FlexiCapture 10 主窗口工具栏

标准工具栏

工具 | 按钮 | 描述
打开项目 |  | 打开一个项目
保存更改 |  | 保存更改
剪切 |  | 在处理文档窗口中的数据时，剪切选定对象
复制 |  | 复制选定对象
粘贴 |  | 粘贴从剪贴板复制的对象
删除 |  | 删除选定对象
撤消 |  | 取消上次操作
恢复 |  | 恢复所取消的操作
文档视图

编辑... | 以详细的列表显示文档和文档页面
缩略图 | 显示文档图像的缩略图
测试批处理文件 | 显示测试批处理文件的列表
工作批处理文件 | 显示工作批处理文件的列表
刷新 | 刷新主窗口中的信息
导航

上一个要校验的项目 | 转至上一个校验对象。浏览包括组装错误、不确定识别的字符、规则错误、关键字段不匹配等在内的所有错误。
下一个要校验的项目 | 转至下一个校验对象。浏览包括组装错误、不确定识别的字符、规则错误、关键字段不匹配等在内的所有错误。
上一个文档 | 转至上一个文档。
下一个文档 | 转至下一个文档。
处理

此工具栏用于遍历整个文档处理。该工具栏上的按钮为多功能按钮，每个按钮有多种模式。

第一个按钮上的文本用于根据所选模式添加图像更改。在单击此按钮时，将执行该文本相应的操作。

要选择模式，请单击所需按钮右侧的三角形。

按钮 | 模式 | 描述
 | 加载图像… | 从文件加载图像并将图像添加至当前项目
 | 扫描图像… | 向批处理文件添加通过扫描获取的图像
 | 导入图像… | 使用配置的图像导入配置文件来导入图像
 | 现有导入配置文件... | 从列表中选择一个已配置的图像导入配置文件来开始导入图像。
 | 识别 | 启动识别过程
 | 分析 | 分析文档页面并查找合适的文档定义
 | 匹配文档定义… | 对选定的文档或页面匹配选定的文档定义
 | 运行校验… | 启动校验
 | 重新检查规则 | 重新核对规则
 | 导出 | 使用文档定义导出设置导出数据
 | 将数据导出至文件… | 将数据导出至文件
 | 将图像导出至多个文件 | 将图像导出至一个文件
 | 导出至数据库… | 将数据导出至数据库


文档定义编辑器窗口

文档定义是在文档定义编辑器窗口中创建和编辑的。此窗口仅在项目安装工作站上显示。

要打开文档定义编辑器，请从程序的主窗口中：

  1. 选择菜单项项目>文档定义…；
  2. 在打开的文档定义对话框中，突出显示文档定义名称，单击编辑…。

文档定义编辑器窗口也在完成文档定义向导时打开。

显示文档定义编辑器窗口

文档定义编辑器窗口由三个部分组成：

  1. 带有字段标记的页面图像及显示在左上角的静态元素。

    程序有两种处理字段和静态元素的模式：

    • 字段标记模式 – 通过单击 [image] 按钮启用；
    • 静态元素模式 – 通过单击 [image] 按钮启用。
  2. 配置已识别数据的显示编辑器位于左下角。
  3. 带有所有文档定义字段列表的文档结构（字段选项卡）显示在右侧。您也可切换至页面概述模式（页面选项卡）。

文档定义编辑器菜单
文档定义编辑器工具栏


“文档定义”编辑器菜单

文档定义
菜单项 | 描述
添加页面… | 将新页面图像添加至“文档定义”
添加文档节段… | 将新节段添加至批处理文件
导入文档节段… | 导入所选文档节段
脚本模块 |
规则脚本… | 打开脚本编辑器的规则全局脚本模块。 有关脚本模块的详情，请参阅在 FlexiCapture 10 中使用脚本。
导出脚本… | 打开脚本编辑器的导出全局脚本模块。 有关脚本模块的详情，请参阅在 FlexiCapture 10 中使用脚本。
导出设置… | 打开导出设置对话框，以配置数据导出选项
文档定义属性… | 打开对话框，以查看和编辑“文档定义”属性
保存 | 保存更改
关闭 | 关闭“文档定义”编辑器
编辑
菜单项 | 描述
撤销 | 撤消上一操作
恢复 | 恢复撤消的操作
剪切 | 剪切突出显示的对象
复制 | 将突出显示的对象复制到剪切板
粘贴 | 粘贴剪贴板内容
删除 | 删除突出显示的对象
删除区域 | 删除突出显示对象中的图像区域
全选 | 全选
按类型选择… | 删除特定类型的对象
创建字段 |
文本 | 将文本输入字段添加至文档结构（无需图像上的区域）
复选标记 | 将复选标记字段添加至文档结构（无需图像上的区域）
复选标记组 | 将复选标记组字段添加至文档结构（无需图像上的区域）
条形码 | 将条形码字段添加至文档结构（无需图像上的区域）
图片 | 将图片字段添加至文档结构（无需图像上的区域）
表格 | 将表格字段添加至文档结构（无需图像上的区域）
组 | 将一组字段添加至文档结构（无需图像上的区域）
组 | 对突出显示的对象进行分组
取消组 | 对突出显示的对象取消分组
从图像复制文本… | 从图像的任意区域获取文本，并存储至剪贴板。选择该命令后，突出显示所需文本所在的区域。
图像... |
去斑 | 消除图像噪声
反转 | 反转图像
顺时针旋转 90° | 将图像顺时针旋转 90°
逆时针旋转 90° | 将图像逆时针旋转 90°
旋转 180° | 将图像旋转 180°
更改分辨率… | 打开设置分辨率对话框，您可在此指定新的图像分辨率值
另存为… | 将模板页面的图像保存至指定文件
替换… | 替换模板页面的图像
视图
菜单项 | 描述
图像布局 |
静态元素 | 切换至静态元素模式
字段区域 | 切换至字段标记模式
文档结构 |
显示文档结构 | 显示/隐藏文档结构窗口
字段 | 将“文档结构”窗口切换为字段模式
页面 | 将“文档结构”窗口切换为页面模式
数据表单 | 显示/隐藏数据编辑器窗口
布局工具栏 |
水平 | 水平停靠图像布局窗口的工具栏
垂直 | 垂直停靠图像布局窗口的工具栏
状态栏 | 显示或隐藏状态栏
显示黑白图像 | 将彩色和灰度页面图像显示为黑白图像
图像比例 | 选择适当的图像比例
属性… | 打开对话框，以查看和编辑突出显示的对象属性
测试
菜单项 | 描述
运行测试 | 在文档图像上启动测试文档定义。
完成测试 | 停止测试“文档定义”。
图像模式 | 在文档窗口中显示页面图像。
数据模式 | 在文档窗口中显示识别的数据。
布局 |
图像窗口 | 在文档窗口中更改图像的位置。
顶部 | 将图像窗口置于屏幕顶部。
底部 | 将图像窗口置于屏幕底部。
左 | 将图像窗口置于左侧。
右 | 将图像窗口置于右侧。
错误窗口 | 在文档窗口中更改错误窗口的位置。
顶部 | 将错误窗口置于屏幕顶部。
底部 | 将错误窗口置于屏幕底部。
左 | 将错误窗口置于左侧。
右 | 将错误窗口置于右侧。
显示工具栏 | 显示/隐藏数据模式中的工具栏。在图像模式中，该工具栏将始终显示且无法隐藏。
校验 |
下一个要校验的项目 | 转至下一个要验证的项目。
上一个要校验的项目 | 转至上一个要验证的项目。
下一个不确定字符 | 转至下一个不确定字符。
上一个不确定字符 | 转至上一个不确定字符。
下一条规则错误 | 转至下一个错误规则。
上一条规则错误 | 转至上一个错误规则。
批处理文件
菜单项 | 描述
切换至测试批处理文件… | 允许使用测试批处理文件测试“文档定义”
关闭测试批处理文件… | 关闭测试批处理文件
视图 |
详细信息 | 切换至详细信息视图模式
缩略图 | 切换至缩略图视图模式
自定义文档表格… | 打开选择列对话框，您可在此选择想要显示的列并自定义其视图
加载图像… | 打开加载图像对话框，您可在此选择要加载的图像，并指定图像预处理选项
扫描图像… | 打开该对话框，您可在此扫描要添加至批处理文件的图像
识别 | 识别批处理文件
运行校验… | 对批处理文件运行校验
导出 | 导出至批处理文件
导出至 |
将数据导出至文件… | 打开您可指定数据保存选项的对话框
将图像导出至文件… | 打开您可指定图像保存选项的对话框
数据库… | 打开您可配置数据库连接设置的对话框
工具
菜单项 | 描述
自动检测对象… | 自动检测并突出显示特定类型的字段和静态元素（根据模式）
检查文档定义 | 检查“文档定义”
匹配选择 | 检查“文档定义”节段的匹配
更新弹性描述… | 允许更新使用的 FlexiLayouts
帮助
菜单项 | 描述
帮助主题 | 打开 ABBYY FlexiCapture 10 帮助主题
发送反馈 | 允许用户将意见和建议发送至 ABBYY。


“文档定义”编辑器工具栏

标准工具栏

名称 | 按钮 | 描述
保存更改 |  | 保存更改
剪切 |  | 在文档窗口中处理数据时剪切选定对象
复制 |  | 复制选定对象
粘贴 |  | 从剪贴板粘贴先前复制的对象
删除 |  | 删除突出显示的对象
撤消 |  | 撤消上一操作
恢复 |  | 重做上次撤消的操作
检查文档定义 |  | 检查“文档定义”。检查显示在“文档定义”编辑器窗口底部的结果
图像布局窗口中的工具栏

图像布局窗口中的工具栏可用于创建静态元素和“文档定义”字段。工具栏上的按钮集合将根据所选模式进行更改。

在静态元素模式中：

在字段标记模式中：

该工具栏可水平或垂直停靠。工具栏的方向可在视图>布局工具栏下更改。
名称 | 按钮 | 描述
常规
静态元素模式 |  | 切换至静态元素模式
字段区域模式 |  | 切换至字段区域模式
缩放 |  | 增大图像比例
自动检测对象 |  | 在图像上自动检测对象。选择该工具，然后左键单击对象区域。
选择区域 |  | 突出显示已在图像上标记的对象区域。要突出显示某一区域，请选择该工具，然后左键单击该对象区域。
在静态元素模式中
创建定位点 |  | 创建定位点。选择该工具，然后通过鼠标将定位点用矩形框住。
创建分隔符 |  | 创建分隔符。选择该工具，然后通过鼠标将分隔符用矩形框住。
创建定位点文本 |  | 创建定位点文本。选择该工具，然后通过鼠标将文本用矩形框住。
创建定位点条形码 |  | 创建定位点条形码。选择该工具，然后通过鼠标将条形码用矩形框住。
在字段标记模式中
创建文本 |  | 创建文本输入字段。选择该工具，然后通过鼠标将文本输入区域用矩形框住。
创建复选标记 |  | 创建复选标记字段。选择该工具，然后使用鼠标将复选标记区域用矩形框住。
创建复选标记组 |  | 创建复选标记组。选择该工具，然后使用鼠标将复选标记组用矩形框住。
创建条形码 |  | 创建条形码字段。选择该工具，然后通过鼠标将条形码用矩形框住。
创建图片 |  | 创建图片字段。选择该工具，然后通过鼠标将图片用矩形框住。
创建表格 |  | 创建表格字段。选择该工具，然后通过鼠标将表格用矩形框住。其他表格标记按钮将显示在工具栏上。
创建组 |  | 创建字段组。选择该工具，然后通过鼠标将字段组用矩形框住。
为没有区域的字段创建区域 |  | 为字段创建区域，该字段包含在文档结构中，但在图像上没有区域。选择该工具，然后通过鼠标将字段区域用矩形框住。从下拉列表中选择名称。（该列表显示图像上没有区域的字段）。
创建不可识别的区域 |  | 突出显示将从识别过程中排除的字段。
用于表格标记的按钮 显示是否在给定“文档定义”节段中至少创建了一个表格
删除分隔符 |  | 删除分隔符


组校验程序窗口

如果文档定义具有已启用发送字符至组校验选项的字段，则在从主窗口运行校验过程（通过选择校验>运行校验…）时，将打开组校验程序窗口。详情请参阅字段校验属性。

此窗口可供您对识别为相同的字符作出目测检查。请参阅组校检。

组校验程序窗口菜单
组校验程序窗工具栏


组校验程序窗口菜单

组校验窗口菜单

校验
菜单 | 描述
全部确认 | 确认所有字符是否正确识别，并进入下一阶段
全部推迟 | 推迟所有字符的校验，并为这些字符标上问号
切换 | 推迟选定字符的校验，并为这些字符标上问号
下一页 | 如果一个屏幕上无法显示所有字符，则转至下一页
上一页 | 如果一个屏幕上无法显示所有字符，则转至上一页
关闭 | 关闭校验窗口
编辑
菜单 | 描述
撤销 | 取消上次操作
恢复 | 恢复所取消的操作
全选 | 选择所有字符
视图
菜单 | 描述
字段图像 |
显示字段图像 | 显示/隐藏含当前字符的字段的图像
顶部 | 将字段图像定位在校验窗口上方
底部 | 将字段图像定位在校验窗口下方
图像比例 | 允许选择合适的字段图像比例
显示字段图像 | 显示/隐藏字符图像
工具栏 | 显示/隐藏工具栏
信息栏 | 显示或隐藏信息栏
状态栏 | 显示/隐藏状态栏
字符大小 | 允许选择合适的字符大小
全屏 | 切换至全屏模式
工具
菜单 | 描述
选项… | 允许设置字符临的区域
帮助
菜单 | 描述
帮助主题 | 打开 ABBYY FlexiCapture 10 的帮助文件
关于ABBYY FlexiCapture | 打开关于 ABBYY FlexiCapture 10 对话框，该对话框中包含有关本程序的简要信息。


组校验程序窗口工具栏

名称 | 按钮 | 描述
上一页 |  | 在单一屏幕无法容纳所有字符时引导您进入上一页
下一页 |  | 在单一屏幕无法容纳所有字符时引导您进入下一页
确认屏幕 |  | 确认所有字符的正确识别，引导您进入下一屏幕。
更改字符状态 |  | 将字符状态更改为被拒绝或已确认
撤消 |  | 撤消上一操作
恢复 |  | 恢复上次撤消的操作


字段校验程序窗口

如果“文档定义”包含有已启用发送到字段校验选项的字段，在完成组校验过程时将显示字段校验程序窗口。详情请参阅字段校验属性。

通过此窗口可以对整个字段上下文中不确定识别的字符进行目视检查。请参阅字段校验。

字段校验程序窗口工具栏
字段校验程序窗口工具栏


字段校验窗口菜单

校验
菜单 | 描述
确认字段 | 确认字段
推迟 | 推迟字段校验
下一个不确定字符 | 转至下一个不确定识别的字符
上一个不确定字符 | 转至上一个不确定识别的字符
下一个字段 | 转至下一字段
上一个字段 | 转至上一字段
关闭 | 关闭校验窗口
编辑
菜单 | 描述
撤销 | 取消上次操作
恢复 | 恢复所取消的操作
剪切 | 剪切选定对象
复制 | 将选定对象复制到剪贴板
粘贴 | 粘贴从剪贴板复制的对象
删除 | 删除选定对象
全部删除 | 删除所有对象
全选 | 选择所有对象
插入分行符 | 插入分行符
合并字符 | 如果某个字符在识别时被分割为多个字符，则合并选定的字符
视图
菜单 | 描述
字段数据 |
识别的文本 | 显示/隐藏识别的文本
字符较像剪切 | 切换至带有字符图像切割的字段视图
显示特殊符号 | 显示/隐藏特殊字符
字段图像 |
显示字段图像 | 显示/隐藏含当前字符的字段的图像
顶部 | 将字段图像定位在校验窗口上方
底部 | 将字段图像定位在校验窗口下方
图像比例 | 允许选择合适的字段图像比例
类似字段 | 显示/隐藏其他文档中的类似字段
显示字符图像 | 显示/隐藏字符图像
工具栏 | 显示/隐藏主窗口工具栏
信息栏 | 显示或隐藏信息栏
状态栏 | 显示或隐藏状态栏
字符大小 | 允许选择合适的字符大小
全屏 | 切换至全屏模式
工具
菜单 | 描述
选项… | 允许设置字符临的区域
帮助
菜单 | 描述
帮助主题 | 打开 ABBYY FlexiCapture 10 的帮助文件
关于ABBYY FlexiCapture | 打开关于 ABBYY FlexiCapture 10 对话框，该对话框中包含有关本程序的简要信息。


脚本编辑器窗口

该脚本编辑器允许您编写和编辑脚本。

您可为脚本选择所需的脚本语言：VBScript、JScript.Compact、JScript、C#.Net、VisualBasic.Net 或 JScript.Net。

要编辑脚本，请使用菜单命令或脚本编辑器工具栏中的按钮。

要检查脚本代码：

  • 单击工具栏上的检查按钮
  • 或从工具菜单中选择检查脚本
  • 或按 F9

如果您想要添加自定义函数，请从工具栏上的下拉列表中选择可用的全局模块：规则全局脚本模块、导出全局脚本模块、事件或 NonInteractiveProcessor。

要关闭脚本编辑器，请选择文件>退出或按窗口右上角的“关闭”按钮。

有关脚本详情，请参阅使用脚本部分。


附录

使用 ABBYY FlexiCapture 10 中的脚本
设计机器可读表单
热键
FormReader 6.5 和 FlexiCapture 10 规则对比
受支持的识别语言
字符正确宣染的字体
受支持的文本类型
受支持的条形码类型
受支持的图形格式
导出文件格式
用于正则表达式的符号集
专利
其他公司提供的技术


使用 ABBYY FlexiCapture 10 中的脚本

本节描述了如何将脚本用于自定义处理阶段及 ABBYY FlexiCapture 10 中的工作站界面。

受支持的脚本语言

ABBYY FlexiCapture 10 支持以下脚本语言：.Net 语言、JScript® 和 VBScript。

用 .Net 语言编写的脚本细节

用法细节

在 VBScript 中，当传递 NULL 值（JScript 中则为 "this"）时，必须使用“Me”关键字；当用 .Net 语言时，.Net 值作为普通参数传递

对于每个脚本，其所有参数的访问权限事先已知。访问权限决定脚本中可用方法的子集。当查找对象方法时，已返回对象的权限将始终从源对象中继承（该规则的例外情况已在相应方法的注释中描述）。

注：由于对象行为不确定，因此不能在脚本完成之后使用脚本对象。

自定义函数

该脚本编辑器允许用户创建其自己的函数和程序，然后从脚本代码中调用该函数和程序。

自定义函数和程序应写入全局模块中，它可从脚本编辑器中进行访问。为此，请从脚本编辑器工具栏的下拉列表中，选择可用的全局模块：规则全局脚本模块、导出全局脚本模块、事件或非交互式处理器。

一个模块中的所有函数必须以相同语言编写。脚本的核心代码可用不同于相应全局模块中使用的语言编写。

例如，从 VBScript 编写的规则代码中，您可以调用 JScript 编写的全局模块所包含的函数。

所有全局模块的所有函数均可除 .Net 语言编写的脚本之外的所有脚本中可用。

要从其全局模块中调用功能，必须使用相应的前缀（Rules、Export、Events 或 NonInteractiveProcessor）。例如，规则全局脚本模块模块中的 DoSomething 函数必须按如下方式调用：Rules.DoSomething ()。

注：对于 .Net 语言编写的脚本，全局模块中的功能将通过其名称调用，无需使用前缀。

脚本执行超时

用于导出的默认超时为 30 秒，其他脚本为 10 秒。

要更改默认超时，请更改注册中相应的值。

HKEY_CURRENT_USER\Software\ABBYY\FlexiCapture\10.0\Controller\ScriptSupport\DefaultScriptTimeout

注册中超时的值以毫秒指定。如果执行脚本的时间长于指定的超时时间，则该脚本将终止执行，并将返回“脚本执行超时”错误消息。如果该脚本是导入、识别或导出任务的一部分，则类似的错误消息将记录在日志中。

重要事项！脚本执行超时仅适用于 JScript 和 VBScript 编写的脚本。

重要事项！要更改在 NetworkService 下执行的脚本超时，您必须修改相应用户配置文件的注册表副本。

对象模型

对象模型与 ABBYY FlexiCapture 之前版本中创建的脚本兼容。

了解对象模型详情


用 .Net 语言编写的脚本细节

本节描述用 .Net 语言编写的脚本细节。

  • 传至其他带有关键字“this”的脚本的脚本参数将作为普通参数传至 .Net 脚本。例如，在用 .Net 语言编写的规则中，规则的上下文将作为参数传递，名为“Context”。
  • FlexiCapture 10 支持 Microsoft .Net Framework，最高可支持 V2.0。因此，该项目必须在 Microsoft .Net Framework 2.0 或先前版本中编译。Net Framework 框架的版本可在 Visual Studio 的项目设置中指定。
  • 也可添加可在脚本和全局模块中使用的外部组装。标准的和编译的用户组装均可使用。已添加组装的所有类将适用于脚本和全局模块。详情请参阅外部组装。
  • 脚本编译之后，已编译的脚本正文将存储在脚本定义所在的相同位置。因此，.Net 脚本将比其他脚本占用更多空间。
  • 所有 FlexiCapture 对象都定义为 COM 对象，因此，在频繁寻址对象字段时，将会由于受管/非受管切换导致 .Net 脚本的运行速度减慢。
  • 若要调试 .Net 脚本，可使用 System.Diagnostics.Debugger.Break 方法。有关该方法的详细说明，请参阅 MSDN 中的相应文章：http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx。
  • ControllerInterop 对象的接口存储在 ControllerInterop.dll 组装中，并属于 ABBYY.FlexiCapture 名称空间。
    ControllerInterop.dll 组装文件位于程序的根文件夹中。
  • .Net 脚本将可访问其自身名称下的所有 ABBYY FlexiCapture 类，因为该类来自 ABBYY.FlexiCapture 名称空间。例如：

    ABBYY.FlexiCapture.IDocument document = Batch.Documents[i];

  • 要连接至全局模块中的 ABBYY.FlexiCapture 名称空间，请使用“using”关键字。例如：

    using ABBYY.FlexiCapture;

  • 在 .Net 脚本中，在不使用全局模块名称的情况下，直接调用所有全局模块中的函数。
  • 如果您不想指定函数（对于带有可选参数的函数）可选参数的值，您必须传递 System.Type.Missing。

注：对于按非交互式执行的脚本（通过 FlexiEx.exe 进程，而非 FlexiCapture.exe 进程），在默认情况下调试按钮将不会显示在检查解决方案窗口的 FlexiEx.exe 进程中（对于包含断点的脚本）。对于要显示的按钮，请单击任务栏上的操作中心图标，然后选择更改操作中心设置>问题报告设置>从不检查解决方案。


外部组装

可在脚本和全局模块中使用外部组装。标准的和编译的用户装配均可使用。

添加外部组装

可在批处理文件类型属性、项目属性或“文档定义”属性的 .Net 参考选项卡上添加组装。已添加组装的所有类将适用于脚本和全局模块。以下是包含命名空间、类及此类方法的用户组装的样本代码：

namespace TestNameSpace

{

public class Test

{

public void Show(string text)

{

// will show text by standard FlexiCapture means – static method void ShowMessage(string text, bool IsError) from static class FCTools ABBYY.FlexiCapture.FCTools.ShowMessage(text, false);

}

}

}

对于可用于访问事件处理程序脚本的已添加组装的类和方法，必须在批处理文件类型属性（适用于特定批处理文件类型）或项目属性（适用于未知的批处理文件类型）的 .Net 参考选项卡上将其添加。

对于以下脚本，已在“文档定义”属性的 .Net 参考选项卡上添加外部组装：

  • 脚本规则
  • 自动校正脚本
  • 导出脚本
  • 用户脚本
  • 文档组装脚本
  • 自定义识别脚本

要添加组装，请单击添加…。在打开的对话框中，选择类型：标准组装名称或附加文件。根据所选类型，既可以输入标准组装名称，也可浏览组装文件。

使用外部组装中的类和方法的脚本必须包含以下代码：

TestNameSpace.Test test = new TestNameSpace.Test(); // creates an object of Test class

test.Show(“hello world”); // calls void Show() method from Test class

调试外部组装

当调试外部组装时，需要组装文件和带有符号信息的 .pdb 文件。仅可调试带有加载 .pdb 文件的组装。由于 pbd 文件相当大，因此最好是在工作项目中禁用加载符号信息。

用来控制符号信息加载的注册表键

您可使用以下注册表键（在 Controller\ScriptSupport 中）控制是否应该加载 .pdb 文件：

  • LoadSymbolsFromOriginalPath - 指定是否应从组装文件的原始文件夹中加载 pdb 文件（将键值设置为 True 以加载 .pdb 文件）；
  • PDBSearchLocations - 设置 .pdb 文件的搜索路径（路径必须以分号分隔列出；搜索结果将是带有符号信息的 .pdb 文件，其名称与组装名称一致）。

默认情况下，这些键将未在注册表中创建。若需要，管理员可将这些键添加至用户操作系统注册表中。

要使注册表中的更改生效，您必须重新启动程序。

要调试组装，必须连接至管理代码。


对象模型

使用的对象模型的细节描述如下。

使用集合

对象模型中的所有集合支持以下方法：

名称 | 类型 | 访问 | 描述
Count | int | 只读 | 集合中的项目数
Item( index : int ) ItemInterface 只读 通过给定索引检索集合项目。
枚举以“0”开头。

注：除了使用项目方法之外，您还可以根据所选语言，使用圆括号或方括号查找集合项目。在 JScript、VBScript 和 Visual Basic.Net 语言中，将使用圆括号。在 C#.Net 中，仅可使用方括号。在 JScript.Net 中，圆括号和方括号均可使用。

例如，Items( 1 ).Text = "Hello" 或 Items[ 1 ].Text = "Hello"。

所有集合均可在“for each”和类似结构中使用。

使用重复字段和表格

除表格之外的所有文档均可重复。

在文档结构中，重复字段将以带有非空项目集合的特殊原型字段表示。

原型字段不含子项目或值。仅用于存储字段循环设置。子字段和/或字段值仅可以是字段实例的属性，该实例通过使用 IField 对象的项目方法提供。

表格通常含有行集合（行是项目的同义词）。该行集合仅包含那些其单元可通过行的子级方法访问的表格行。

组成字段路径

IDocument 对象的字段、HasField 和 IndexedItemValue 方法使用表单中的字段路径作为其参数。表示带有 BNF (Backus-Naur Form) 的路径的正式方法如下：

<Path> ::= <Path_component> | <Path> "\" <Path_component>

<Path_component> ::= <Field_name> | <Field_name> "["<Field_iteration_number>"]"

Field_name 表明在“文档定义”中定义的文档字段名称，Field_iteration_number 是重复字段的循环数（表格的行数 ），从“0”开始。

该路径可以使完整路径或相对路径。完整路径的构建将以文档节段的名称开头，而相对路径的构建将以组中子项目的名称开头。

例如，要查找“Table”表格中“总计”列的第三行，它位于“Section”节段中，则您应写出以下信息：

"Section\Table[2]\Total"

此类完整名称可通过 IField 对象的 FullName 方法构建。


用于自定义处理阶段的脚本

本节描述了如何使用脚本创建自定义规则、运行导出并在 ABBYY FlexiCapture 10 中创建事件处理程序。

项目符号 脚本类型
项目符号 对象
项目符号 样本脚本


脚本类型

在 FlexiCapture 10 中，您可以创建以下类型的脚本：

项目符号 | 脚本规则
项目符号 | 自动校正脚本
项目符号 | 导出脚本
项目符号 | 用户脚本（自定义操作）
项目符号 | 文档组装脚本
项目符号 | 自定义识别脚本
项目符号 | 事件处理程序

要查看上述类型的样本脚本，请参阅样本脚本节段。


脚本规则

基于脚本的规则允许您创建用于文档校验和标准化的复杂自定义算法。

该脚本规则将在文档定义属性的规则选项卡上进行配置。

参数

名称 | 类型 | 访问 | 描述
Context | IRuleContext | 根据规则设置 | 规则的上下文

您想要在多个规则中使用的程序应写入全局导出模块中，可从脚本编辑器中对其进行访问。从脚本编辑器工具栏的下拉列表中，选择规则全局脚本模块。也可从“文档定义”编辑器（文档定义>脚本模块>规则脚本…）中访问该全局规则模块。

如果在脚本或全局模块中使用外部组装的类和方法，则必须在文档定义属性的 .Net 参考选项卡上附加组装文件。

另请参阅借助脚本的规则设置。


自动校正脚本

该脚本允许转换字段值并运行独立于上下文的格式进行检查。

该脚本将在字段属性对话框的数据类型选项卡上配置。

参数

名称 | 类型 | 访问 | 描述
Value | IValue | 读/写 | 字段值

注：如果选择了仅在识别后应用一次 AutoCorrect选项，则不会显示在 IValue.ErrorMessage 中指定的格式错误消息，其原因是此类错误无法修复。

如果在脚本中使用了外部组装的类和方法，则必须在文档定义属性的 .Net 参考选项卡上附加组装文件。

另请参阅处理已输入的值。


导出脚本

该脚本允许您自定义导出。

该脚本规则将在文档定义属性的导出目标选项卡上进行配置。

参数

名称 | 类型 | 访问 | 描述
Documents | IDocument | 只读 | 要导出的文档
Processing | IProcessingCallback | 只读 | 用于记录有关处理信息的对象

注：导出结果的信息必须写入 Document.Action 字段中。

您想要在多个导出脚本中使用的程序应写入全局导出模块，您可从脚本编辑器中访问。从脚本编辑器工具栏的下拉列表中，选择导出全局脚本模块。也可从文档定义编辑器（文档定义>脚本模块>导出脚本…）中访问全局导出模块。

如果在脚本或全局模块中使用外部组装的类和方法，则必须在文档定义属性的 .Net 参考选项卡上附加组装文件。

有关配置导出脚本的详情，请参阅用脚本描述的导出。


用户脚本（自定义操作）

这是在字段校验期间查看字段时或在文档编辑器中由用户触发的自定义脚本规则。

该脚本在字段属性对话框的自定义操作选项卡上配置。

参数

名称 | 类型 | 访问 | 描述
Context | IRuleContext | 根据规则设置 | 规则的上下文

如果在脚本中使用了外部组装的类和方法，则必须在文档定义属性的 .Net 参考选项卡上附加组装文件。

另请参阅用户脚本。


文档组装脚本

该脚本用于确定传至用户的文档阵列是否可以合并为一个文档。

为此，将生成结果文档的组装错误。成功组装的条件如下：如果结果文档包含的组装错误未超过任何源文档所包含的组装错误，则两个文档将合并为一个文档。

该脚本将在“文档定义”属性的组装选项卡上配置。要打开脚本编辑器窗口，单击使用自定义组装规则选项下的编辑组装脚本…按钮。

该脚本可在识别之后自动执行，也可手动运行以刷新组装来执行（为此，请选择工具>刷新组装命令）。
在第一种情况下，该脚本将包含标准检查期间生成的若干组装错误。

参数

名称 | 类型 | 访问 | 描述
Documents | IDocuments | 只读 | 一组其页面已合并的文档
AssemblingErrors | IAssemblingErrors | 完全控制 | 产生的组装错误

注：为了更好地优化组装过程，建议避免查找文档“内部”数据（仅可访问可缓冲数据的脚本中的数据不可用）。查找文档内部数据时，将会加载整个文档，从而导致组装过程的速度减慢。如果您需要查找文档字段，则在可能时，最好是使用索引字段。

注：脚本的 AssemblingErrors 参数可包含不同的组装错误，具体取决于获取该参数的方法：

  1. AssemblingErrors 可作为其中一个输入参数传至脚本。在此情况下，它将包含当前检查的错误。
  2. 该脚本的某一个输入参数是启动组装脚本的文档集合。每个文档都有自己的组装错误，可通过以下方式检索：document.AssemblingErrors。在此情况下，AssemblingErrors 参数将包含对给定文档进行最后检查的错误。

您想要在多个规则中使用的程序应写入全局导出模块中，可从脚本编辑器中对其进行访问。从脚本编辑器工具栏的下拉列表中，选择规则全局脚本模块。也可从“文档定义”编辑器（文档定义>脚本模块>规则脚本…）中访问该全局规则模块。

如果在脚本或全局模块中使用外部组装的类和方法，则必须在文档定义属性的 .Net 参考选项卡上附加组装文件。

另请参阅创建多页文档的文档定义。


自定义识别脚本

通过使用该脚本，您可以为具有区域的字段定义自定义识别（或初始化）算法。

自定义识别脚本将在字段属性对话框的识别选项卡上配置。

该脚本在字段值从识别人员结果中初始化时启动。图像区域已作为输入参数传递至脚本。文档布局未在此刻进行初始化，所以拒绝对文档字段的访问（但是，允许访问注册及其他参数）。

参数

名称 | 类型 | 访问 | 描述
Result IValue / ICheckmarkValue / ICheckmarkGroupValue 完全控制。
拒绝对 CharacterParams.NeedVerification 标志的访问。
CharacterParams.IsSuspicious 标志具有读/写权限。 		生成的已识别值。根据字段类型，收到的参数将为以下类型：
  • IValue - 适用于文本字段
  • ICheckmarkValue - 适用于复选标记
  • ICheckmarkGroupValue - 适用于复选标记组
FieldRegion | IFieldRegion | 只读，仅可缓冲数据（同样适用于所有父级） | 要识别的区域

如果在脚本中使用了外部组装的类和方法，则必须在文档定义属性的 .Net 参考选项卡上附加组装文件。

另请参阅文本字段识别选项。


事件处理程序

如果使用 FlexiCapture 10，您可为批处理文件、文档和字段事件创建事件处理程序。

事件处理程序将存储在批处理文件类型中。它们将在批处理文件类型属性（对于特定的批处理文件类型）或项目属性（对于未知的批处理文件类型）的事件处理器选项卡上进行配置。

您想要在多个事件处理程序中使用的程序应写入全局规则模块中，这样可从脚本编辑器中进行访问。从脚本编辑器工具栏的下拉列表中，选择事件。

如果在脚本和全局模块中使用外部组装的类别和方法，则必须在批处理文件类型属性（对于特定的批处理文件类型）或项目属性（对于未知的批处理文件类型）的 .Net 参考选项卡上附加组装文件。

批处理文件事件
项目符号 | 批处理文件创建后
项目符号 | 批处理文件删除前
项目符号 | 批处理文件参数更改前
项目符号 | 页面添加后
项目符号 | 页面删除前
项目符号 | 文档创建后
项目符号 | 文档删除前
项目符号 | 页面移动前
项目符号 | 批处理文件打开后
项目符号 | 批处理文件关闭前
项目符号 | 批处理文件完整性检查
文档事件
项目符号 | 文档参数更改前
项目符号 | 文档状态更改后
项目符号 | 导出完成后
项目符号 | 匹配前
字段事件
项目符号 字段校验请求


批处理文件已创建

功能

该事件的处理程序在您需要在批处理文件上执行某些操作（如，将数据保存至批处理文件注册参数）时使用。

何时启动

该脚本在将批处理文件添加至项目时启动。

参数

名称 | 类型 | 访问 | 描述
Batch | IBatch | 仅批处理文件的可缓冲字段可用。 对该文档的可缓冲数据的访问为只读。 | 新增的批处理文件


批处理文件已删除

功能

如果您需要清除与批处理文件有关的某些数据，则可使用该事件的处理程序。

何时启动

该脚本在删除批处理文件之前启动。

参数

名称 | 类型 | 访问 | 描述
Batch | IBatch | 仅批处理文件的可缓冲字段可用。 对该文档的可缓冲数据的访问为只读。 | 要删除的批处理文件


批处理文件参数更改

功能

该事件的处理程序可用于格式化批处理文件某些属性。

属性

  • 批处理文件类型（批处理文件类型的名称）
  • 批处理文件名称
  • 批处理文件描述
  • 注册参数的值
  • 批处理文件优先级（以字符串的形式）。有关容许值列表，请参阅 TProcessingPriority 对象的说明。

何时启动

该脚本在更改批处理文件属性之前启动。

注：该脚本不允许指定批处理文件类型的新值。

参数

名称 | 类型 | 访问 | 描述
Batch | IBatch | 仅批处理文件的可缓冲字段可用。 对文档的可缓冲数据的访问为只读。 | 其属性正被更改的批处理文件
PropertyModification | IPropertyModificationInfo | 完全控制 | 将信息存储在要更改的属性上。允许替换设置的值。


批处理文件结构更改（页面已添加/页面已删除）

批处理文件结构更改（页面已添加/页面删除/文档已添加/文档删除）

功能

如果您需要对依赖于新图像的批处理文件、文档或页面执行某些操作，则可使用该事件的句柄。例如，计算已添加至批处理文件的页面数，以确保未缺失任何页面。

何时启动

该脚本在添加页面（或文档）之后，或将其删除之前启动。

参数

名称 | 类型 | 访问 | 描述
Batch | IBatch | 仅批处理文件的可缓冲字段可用 | 要处理的批处理文件
Document（或 Page） | IDocument（或 IPage） | 可修改已更改文档的可缓冲数据。 对已删除的文档及批处理文件的其他文档的访问为只读。 | 要删除（或添加）的项目。


页面已移动

注：页面还可在文档组装期间移动。

功能

如果您需要基于源文档对新文档执行某些操作（例如，保存合并的注册参数），则可使用该事件的处理程序。

如果一个文档完全嵌入到另一文档中，则在页面阵列中，其页面将会连续排列，且与其在目标文档中的顺序一致。

注：页面合并之后，则可以更改目标文档的布局。

何时启动

该脚本在将页面从一个文档移至另一文档之前启动。

参数

名称 | 类型 | 访问 | 描述
Batch | IBatch | 仅限于可缓冲的数据 | 批处理文件
TargetDocument | IDocument | 完全控制 | 目标文档页面将移动至
InsertionPosition | int | 只读 | 文档中插入页面的位置
Pages | IPages | 只读 | 要移动的页面阵列


批处理文件已打开/已关闭

何时启动

该脚本在打开批处理文件之后，或关闭批处理文件之前启动。

参数

名称 | 类型 | 访问 | 描述
Batch | IBatch | 对批处理字段的访问为只读，且仅可访问可缓冲字段。 对该文档的可缓冲数据的访问为只读。 | 批处理文件


批处理文件完整性检查

功能

检查控制页面上指定的文档数是否与批处理文件中的库存及实际处理的文档数一致。如果数目不相符，将返回错误。

何时启动

该脚本在导出之前启动（如果包含在路由设定中）或通过显式的用户命令启动。

参数

名称 | 类型 | 访问 | 描述
CheckResults | IBatchCheckResults | 只读，仅限于可缓冲的数据 | 该对象提供对要检查的批处理文件的访问。同时用于设置检查结果。


文档参数已更改

功能

该事件的处理程序可用于格式化某些文档属性。

文档属性

  • 注释
  • 注册参数的值
  • ExternalID
  • 文档优先级（以字符串形式指定）。有关容许值列表，请参阅 TProcessingPriority 对象的说明。

何时启动

该脚本在更改文档属性之前启动。

参数

名称 | 类型 | 访问 | 描述
Document | IDocument | 仅限于可缓冲的数据 | 该文档
PropertyModification | IPropertyModificationInfo | 完全控制 | 将信息存储在要更改的属性上


文档状态已更改

功能

文档状态随时可以通过一些标志进行描述。该事件在每次状态更改时发生。一组用来描述文档状态中更改的标志将作为输入参数传至事件。

用于确定文档状态的标志

  • 已预处理
  • 已分析
  • 已识别
  • HasErrors
  • 已装配
  • 已校验
  • 已导出
  • HasLayout

何时启动

该脚本在文档导出时启动，前提是该文档状态自读取后已更改。

参数

名称 | 类型 | 访问 | 描述
Document | IDocument | 完全控制 | 该文档
ChangedStates | IScriptBinaryAttributes<TStateType> | 只读 | 存储有关文档状态的更改的信息


导出已完成

导出结果作为输入参数传递至此脚本。

何时启动

该脚本将在导出任务完成之后启动。如果导出阶段选择了处理整个批处理文件选项，则该任务将包含批处理文件的所有文档。如果取消选择了该选项，则任务中的文档数从一个文档到批处理文件的所有文档不等。该脚本将启动，而无论导出结果如果（不管是成功还是失败）。这是该脚本与“文档状态已更改”事件的主要差异。

如果某些导出目标已忽略（因为该文档曾导出至那些目标），则对于相应的导出结果，已应用标志的值将为 false。

参数

名称 | 类型 | 访问 | 描述
ExportResults | IDocumentsExportResults | 只读，仅限于可缓冲的数据 | 所有文档和所有导出目标的导出结果
Processing | IProcesingCallback | 完全控制 | 用于记录有关处理信息的对象


匹配前

功能

该事件的处理程序允许您控制将要在每个后续页面上匹配的节段或文档定义，并指定匹配顺序。

借助该脚本，您可在匹配文档定义之后，禁用文档识别。要完成该操作，请将 IMatchingInfo.NeedRecognition 参数设置为 false。如果假定手动输入字段值，则该操作将十分有用。

也可以将页面标记为无需识别的附加页面。要完成该操作，必须指定节段的空白列表，并将 IMatchingInfo.ForceMatch 参数设置为 true。

何时启动

该字段将在匹配每个后续页面上的节段之前启动。

参数

名称 | 类型 | 访问 | 描述
Document | IDocument | 只读，仅限于可缓冲的数据 | 其页面正在分析的文档
PageIndex | int | 只读，仅限于可缓冲的数据 | 要分析的文档页面的索引
Matching | IMatchingInfo | 完全控制 | 指定某些匹配参数的对象


字段校验请求

功能

该脚本允许您指定不会提交至上下文校验的字段。可用于校验不同处理阶段的不同字段。

该脚本的输入参数是字段和文档。

何时启动

在将字段提交至上下文校验之前，将为所有字段触发该脚本。对于跳过上下文校验的字段，将不执行该脚本。

参数

名称 | 类型 | 访问 | 描述
Field | IField | 只读 | 要检查的字段
Document | IDocument | 只读 | 包含字段的文档
NeedVerification | IBoxedBoolean | 完全控制 | 指定是否校验字段。如果将值设置为“false”，则不会校验该字段。


对象

本节包含在脚本、其属性和方法中使用的对象的描述。

注： 某些方法可扩展以前版本中可用方法的功能。然而，保留了旧方法以确保向后兼容。
此类方法的名称以方括号中的 [Obsolete] 单词开头。

项目符号 | IActionResult
项目符号 | IAssemblingError
项目符号 | IAssemblingErrors
项目符号 | IBatch
项目符号 | IBatchCheckResults
项目符号 | IBoxedBooleanValue
项目符号 | ICharacterParams
项目符号 | ICharactersParams
项目符号 | ICheckmarkGroupValue
项目符号 | ICheckmarkValue
项目符号 | IDocument
项目符号 | IDocumentDefinitionInfo
项目符号 | IDocumentExportResults
项目符号 | IDocuments
项目符号 | IDocumentsExportResults
项目符号 | IEditablePictureObject
项目符号 | IExportImageSavingOptions
项目符号 | IField
项目符号 | IFieldRegion
项目符号 | IFieldRegions
项目符号 | IFields
项目符号 | IFlexiCaptureTools
项目符号 | IMatchedSectionInfo
项目符号 | IMatchingInfo
项目符号 | IPage
项目符号 | IPages
项目符号 | IPictureObject
项目符号 | IPrincipal
项目符号 | IPrincipals
项目符号 | IProcessingCallback
项目符号 | IProject
项目符号 | IProperties
项目符号 | IProperty
项目符号 | IPropertyModificationInfo
项目符号 | IRect
项目符号 | IRects
项目符号 | IRuleContext
项目符号 | IScriptBinaryAttributes
项目符号 | IStageInfo
项目符号 | IValue
项目符号 | IVARIANTArray
项目符号 | TAssemlingErrorType
项目符号 | TExportFieldType
项目符号 | TExportType
项目符号 | TPrincipalType
项目符号 | TProcessingPriority
项目符号 | TPropertyType
项目符号 | TStateType


IActionResult

功能

它是用于描述某一特定文档的导出（或导出后事件）是否成功的特定对象。

属性

名称 | 类型 | 访问 | 描述
Succeeded | bool | 读/写，可变（即使在具有只读权限的脚本中也可修改） | 指定操作是否成功
ErrorMessage | string | 读/写，可变（即使在具有只读权限的脚本中也可修改） | 错误消息
Result | string | 读/写，可变（即使在具有只读权限的脚本中也可修改） | 操作结果的正式描述。在导出时，文档导出所在路径的描述（例如，文件路径）。
Name | string | 只读 | 导出配置文件的名称
Type | TExportType | 只读 | 导出配置文件的类型（适用于导出完成的脚本）
Applied bool 只读 指定在当前导出会话期间，文档是否已导出至目标。对于标志的 false 值：
  • 如果已成功标志值为 true，则表明该文档之前已导出至目标；
  • 如果已成功标志值为 false，则表示该文档不适合导出至该目标（例如，由于错误）。


IAssemblingError

功能

表示文档组装错误。

属性

名称 | 类型 | 访问 | 描述
Type | TAssemblingErrorType | 只读 | 组装错误类型
Description | string | 只读 | 描述
SectionName | string | 只读 | 缺失节段的名称（当出现 AET_ObligatoryItemOmitted 错误时）。 对于附录页面，节段名称为空。
Position | int | 只读 | 文档中的位置
Weight | string | 只读 | 错误的权重


IAssemblingErrors

功能

IAssemblingError 对象的集合。

仅可在文档组装脚本中修改。

方法

定义 | 描述
AddSectionOmittedError( int position, sectionName : string, [optional] description ) | 添加涉及缺失节段的错误。
AddRedundantPageError( int position, [optional] description ) | 添加涉及多余页面的错误。
AddCustomError( descriotion : string, [optional] weight : int ) | 添加自定义组装错误。

重要事项！应当小心使用 AddCustomError 方法，且仅在无其他适合的方法时使用。由于文档组装完全由错误数决定，因此在添加此类错误时，必须正确设置错误权重。同时，正确地设置权重也会带来困难。

建议不要在一个 CustomError（它会产生一个常见错误消息）中合并多个标准错误。


IBatch

功能

表示批处理文件

属性

名称 | 类型 | 访问 | 描述
BatchTypeName | 字符串 | 只读 | 批处理文件类型的名称
文档 | IDocuments | 只读 | 组成批处理文件的文档
ID | int | 只读 | 批处理文件标识符。参数在批处理文件中唯一。
名称 | 字符串 | 读/写 | 批处理文件的名称
属性 | IProperties | 只读 | 批处理文件的命名参数
注释 | 字符串 | 读/写 | 注释
项目 | IProject | 只读 | 包含批处理文件的项目
优先级 | TProcessingPriority | 读/写 | 批处理文件的优先级
[Obsolete] RegistrationProperties | IProperties | 读/写 | 批处理文件的注册参数。 保留以备向后兼容。


IBatchCheckResults

功能

表示“批处理文件完整性检查”的上下文。

属性

名称 | 类型 | 访问 | 描述
Batch | IBatch | 只读 | 批处理文件
CheckSucceeded | bool | 读/写，可变（即使在具有只读权限的脚本中也可修改） | 指定是否已成功检查
ErrorMessage | string | 读/写，可变（即使在具有只读权限的脚本中也可修改） | 错误消息


IBoxedBoolean

功能

将输入/输出布尔值传递至脚本。

属性

名称 | 类型 | 访问 | 描述
Value | bool | 读/写 | 值


ICharacterParams

功能

存储有关符号属性的信息。

方法

定义 | 描述
SetRect( newRect : string, [optional] pageId : int ) | 设置字符的新矩形。该 newRect 参数必须以字符串 "[left, top, right, bottom]" 的形式传递。 设置的矩形必须完全位于包含该符号的字段区域内。

属性

名称 | 类型 | 访问 | 描述
Symbol | string | 读/写 | 符号（一个符号组成的字符串）。
IsSuspicious | bool | 读/写 | 指定符号是否已明确识别。该标志仅在自定义识别脚本中有效。
NeedVerification | bool | 读/写 | 指定符号是否需要进行其他校验。该标志的值将决定是否突出显示该符号。
Rect | IRect | 只读 | 包含该符号的矩形。如果未指定该矩形，将返回 null。
PageId | int | 只读 | 标识符号的矩形所在的页面。多页字段的必需项。
Confidence | int | 只读 | 已识别符号的置信水平。仅在选择了“在批处理文件类型中存储置信水平”选项后，参数才会保留。该值介于 0 至 55 之间。


ICharactersParams

功能

一组 ICharacterParams 对象。


ICheckmarkGroupValue

功能

ICheckmarkValue 对象的集合。


ICheckmarkValue

功能

表示复选标记值。

属性

名称 | 类型 | 访问 | 描述
Name | string | 只读 | 复选标记名（文档定义中的字段名称）
Value | bool | 读/写 | 复选标记值
IsSuspicious | bool | 读/写 | 复选标记值是否已明确识别
Rect | IRect | 只读 | 复选标记的矩形


IDocument

功能

表示文档。

方法

定义 | 描述
Field( name : string ) : IField 按字段的完整路径访问文档字段。已使用完整路径。
在只能访问可缓冲数据的脚本中不可用。
不能在规则中使用。
HasField( name : string ) : bool 检查是否存在带指定路径的字段。已使用相对路径。
在只能访问可缓冲数据的脚本中不可用。
不能在规则中使用。
SaveAs( filename : string, [optional] options : IExportImageSavingOptions ) 保存文档图像。如果未指定选项，默认情况下图像将另存为 *.tif。
在只能访问可缓冲数据的脚本中不可用。
IndexedItemValues( name : string ) : IVARIANTArray | 按字段的名称或路径检索与文档定义中字段对应的一组索引值。如果字段在重复节段中标记为索引字段，则该方法将从所有节段中返回所有字段值。在可缓冲数据中可用。字段名称和字段的完整路径均可使用。不能在规则中使用。
IndexedItemValue( name : string ) : VARIANT | 按字段名称或路径检索字段值。在可缓冲数据中可用。字段名称和字段的完整路径均可使用。不能在规则中使用。
CheckRules( ) | 检查文档中的所有规则。需要文档的写权限。
Property( name : string ) : VARIANT 按其名称检索特定属性的值。可用字符串、数字或时间的形式返回值。

属性名称和返回的值：
  • 导出时间 - 文档何时导出
  • 导出者 - 导出文档的人员
  • 创建时间 - 文档何时创建
  • 创建者 - 创建文档的人员
  • 识别时间 - 文档何时识别
  • 识别者 - 识别文档的人员
  • 修改时间 - 文档上次修改时间
  • 修改者 - 修改文档的人员
  • TotalSymbolsCount - 符号总数
  • UncertainSymbolsCount - 不确定符号总数
  • RecognizedSymbolsCount - 已识别符号总数
  • 注释 - 文档上的注释
  • ProcessingErrors - 文档处理错误
  • ProcessingWarnings - 文档处理警告

重要事项！该属性方法不能与包含用户指定的文档属性的属性集合混淆。

属性

名称 | 类型 | 访问 | 描述
Pages | IPages | 只读 | 文档页面。
Children | IFields | 只读 | 子字段（文档节段）。与节段方法不同，节段顺序与其在文档定义中的顺序一致。重复节段已表示为一个项目，且通过该项目的项目方法提供了实例。 在只能访问可缓冲数据的脚本中不可用。
Sections | IFields | 只读 | 文档节段的二维列表。如果存在重复的节段，则该列表包含该节段的所有复制项。列表中的节段与文档节段首页的顺序相同。不带页面的节段位于该列表的结尾。 在只能访问可缓冲数据的脚本中不可用。
IsAssembled | bool | 只读 | 指定文档是否已组装。
IsVerified | bool | 只读 | 指定文档是否已校验。
IsExported | bool | 只读 | 指定文档是否已导出。
IsAnalyzed | bool | 只读 | 指定文档是否已分析。如果文档的所有页面已分析，则该文档将视为已分析。
IsRecognized | bool | 只读 | 指定文档是否已识别。如果文档的每个页面都已识别，或为附录页面，则该文档视为已识别。
HasUnpreparedImages | bool | 只读 | 指定文档是否包含未预处理的页面。
DefinitionName | string | 只读 | 文档定义的名称。
ProcessingErrors | string | 只读 | 处理按分行符划分的错误。
ProcessingWarnings | string | 只读 | 处理按分行符划分的警告。
TotalSymbolsCount | int | 只读 | 符号总数。
RecognizedSymbolsCount | int | 只读 | 已识别的符号数。
UncertainSymbolsCount | int | 只读 | 不确定的符号数。
SymbolsForVerificationCount | int | 只读 | 需要校验的符号数。
ID | string | 只读 | 文档标识符（外部 Id）
BatchName | string | 只读 | 批处理文件名。
Batch | IBatch | 只读 | 批处理文件。无论文档的脚本权限如何，对批处理文件的访问为只读，且仅可缓冲数据可用。
Properties | IProperties | 只读 | 文档的注册参数。
Action | IActionResult | 只读 | 仅在导出和导出后脚本中有效。
AssemblingErrors | IAssemblingErrors | 只读 | 组装错误的集合。对集合的访问始终为只读。
IsExcludedFromAutomaticAssembling | bool | 读/写 | 检查文档是否包含在自动组装内。
Comment | string | 读/写 | 文档的注释。
HasErrors | bool | 只读 | 指定文档是否具有规则或格式错误。
HasWarnings | bool | 只读 | 指定文档是否具有规则或格式警告。
StageInfo | IStageInfo | 只读 | 有关应用程序服务器上的处理阶段的信息。
Index | int | 只读 | 批处理文件中文档的索引。
Priority | TProcessingPriority | 只读 | 文档的优先级。
DocumentDefinition | IDocumentDefinitionInfo | 只读 | 有关在文档上匹配的文档定义的详细信息。 对于未处理且未识别的文档，属性将返回空字符串。
[Obsolete]TemplateName | string | 只读 | 文档定义的名称。 保留以备向后兼容。
[Obsolete]RegistrationProperty( name : string ) | string | 只读 | 按名称检索注册参数。 保留以备向后兼容。
[Obsolete]RegistrationProperties | IProperties | 只读 | 批处理文件的注册参数。 保留以备向后兼容。


IDocumentDefinitionInfo

功能

包含有关在文档上匹配的文档定义的详细信息。

属性

名称 | 类型 | 访问 | 描述
Name | string | 只读 | 文档定义的名称。
Version | int | 只读 | 文档定义的版本。


IDocumentExportResults

描述

该对象表示一组导出到不同目标中的文档导出结果。这是 IActionResult 对象的集合，包含有关特定目标导出的信息。

属性

名称 | 类型 | 访问 | 描述
Succeeded | bool | 只读 | 指定文档是否已成功导出。
ErrorMessage | string | 只读 | 描述导出失败原因的消息。
Document | IDocument | 只读 | 与给定结果一起导出的文档


IDocuments

功能

IDocument 对象的集合。


IDocumentsExportResults

功能

IDocumentExportResults 对象的集合。

该对象表示一组文档的导出结果。


IEditablePictureObject

功能

表示可在 ABBYY FlexiCapture 中编辑的图片。该对象是 IPictureObject 接口的扩展。

方法

定义 | 描述
Rotate( angle : int ) | 将图像顺时针旋转到给定的角度。
FlipHorizontal() | 水平翻转图像。
FlipVertical() | 垂直翻转图像。
Invert( [optional] rectString : string ) | 反转图像。您可以指定带有要反转的矩形坐标的字符串。
ConvertToBW( [optional] threshold : int ) | 将图像转换为黑白图像。您可以指定亮度阈值。阈值级别以上的值将视为白色，阈值级别以下的值将视为黑色。亮度阈值的范围为 0 至 255。
Deskew( [optional] byLines : bool, [optional] byBlackSquares : bool, [optional] byText : bool ) | 消除图像歪斜。可根据直线、黑色方块或文本消除图像歪斜。默认情况下，byText 参数将设置为 true。
Despeckle( [optional] garbageSize : int ) | 消除黑白图像中的噪声。大到指定大小的斑点将会删除。如果未指定 garbageSize 参数，将会自动检测大小。 重要事项！此方法仅适用于黑白图像。
Erase( rectangle : string, [optional] red : int, [optional] green : int, [optional] blue : int ) | 在图像上擦除区域。您可以指定擦除区域所要使用的颜色。默认情况下将使用黑色。
CutOut( rect : string ) : IEditablePictureObject | 从图像中剪切指定的矩形，并返回该矩形。
Crop( rect : string ) | 裁剪指定的矩形外的图像。
Scale( ratio : int ) | 按照 100% 的基本尺寸展开或压缩图像。 此方法仅适用于图像像素大小。图像实际尺寸保留不变。
FreeScale（newWidth：int，newHeight：int，newResolution：int） | 根据新值调整页面的大小。

注：传递至剪辑和剪切方法的 rect 参数是 «[left, top, right, bottom]» 形式的字符串。要获取该字符串，您可调用任何 IRect 类型对象的 ToString 方法，或使用 FCTools::Rect 方法。


IExportImageSavingOptions

功能

描述图片保存选项。

属性

名称 | 类型 | 访问 | 描述
Format | string | 读/写 | 图像保存格式。可用表达式：“tif”、“jpg”、“bmp”、“jpg2000”、“pcx”、“png”、“pdf”加上“-s”（对于可搜索的 PDF）和“-a”（对于 PDF/A）参数。字符串不区分大小写。参数以“-”开头。它们可使用空格、选项卡分隔，或不可使用分隔符。例如：“pdf -s”、“pdf-a-s”。
ColorType | string | 读/写 | 颜色方案。可容许值：“FullColor”、“GrayScale”、“BlackAndWhite”。字符串不区分大小写。
Resolution | int | 读/写 | 图像分辨率（以 DPI 计）。
ShouldOverwrite | bool | 读/写 | 指定是否可以覆盖现有文件。
Quality | int | 读/写 | JPEG 压缩的图像质量（以百分比计）。
AddProperFileExt | bool | 读/写 | 如果该值设置为“true”，扩展名将根据图像保存期间的图像格式进行设置。默认情况下，该值将设置为 "false"。
RecognitionLanguages | string | 读/写 | 可用于识别文档的语言列表将用于导出至可搜索的 PDF。由语言内部名称组成，以英语表示且以分号分隔，不含空格。如果该列表为空，则将使用适用于该文档的文档定义语言。 仅对附录页面有效；对于带有已匹配节段的页面，仅已识别的字段具有文本层。因为此类字段在识别阶段（而非导出期间）进行识别，所以指定属性并不会影响识别结果。


IField

功能

文档字段。可从类型属性中确定字段的类型。对于表格字段，行和单元对象方法可用。

方法

定义 | 描述
Suggest( VARIANT newSuggest ) | 将提示添加至字段。
Field( Path : string) : IField | 搜索与给定元素相关的子元素。已使用相对路径。仅在规则设置中定义的字段名称的同义词可在规则中使用。
HasField( parameter : string) : bool | 检查是否存在带有指定路径的字段。已使用相对路径。仅在规则设置中定义的字段名称的同义词可在规则中使用。
Cell( columnName : string, rowNum : int ) : IField | 按列名和行号检索表格单元。仅对表格可用。在脚本规则中不可用。
CheckRules( ) | 检查给定字段及其子字段的规则。不能在规则中使用。

属性

名称 | 类型 | 访问 | 描述
Type | TExportFieldType | 只读 | 字段类型。
Name | string | 只读 | 文档定义中的字段名称。
Items | IFields | 只读 | 字段实例（表格字段行）。
Value | string | 读/写 | “变体”类型的字段值。对于图片字段，在规则中返回的对象为空字符串，在其他脚本中返回的对象为 IPictureObject。 对于日期和数字类型的空白字段，将返回 DBNull。
Text | string | 读/写 | 字段值的文本表示。
Symbols | ICharactersParams | 只读 | 有关符号属性的详细信息。
IsVerified | bool | 读/写 | 指定字段是否已校验。规则中的字段值可设置为“true”，即使没有对该字段的“写”权限。要取消选择该标志，需要“写”权限。
NeedVerification | bool | 读/写 | 指定字段本身（而非其符号）是否需要校验。
IsMatched | bool | 只读 | 指定字段是否匹配。
IsValid | bool | 只读 | 指定字段值是否有效。
IsSuspicious | bool | 只读 | 指定字段值是否已明确识别。
Regions* | IFieldRegions | 只读 | 一组字段区域。溢出字段可具有多个区域。
ReadOnly | bool | 只读 | 指定字段是否具有“只读”权限（根据文档定义设置）。当在规则中使用时，请指出该规则具有字段的“写”权限。
IsExportable | bool | 只读 | 指定字段是否可用于导出（根据文档定义设置）。
IsIndexed | bool | 只读 | 指定字段是否可建立索引。如果可以，则文档定义的可缓冲数据中的该字段值可用。
IsVisible | bool | 只读 | 指定字段是否应在文档布局中显示（根据文档定义设置）。
Children | IFields | 只读 | 字段的子项目（表格单元）。在脚本规则中不可用。
FullName | string | 只读 | 与文档相关的完整字段名称。文档中字段的唯一标识符。可用于通过字段方法搜索文档字段。在脚本规则中，返回的值应与名称一致，且不唯一。
Rows | IFields | 只读 | 一组表格行。不可用于非表格字段。
[Obsolete]IsCertain | bool | 读/写 | 指定字段是否已校验（类似于 IsVerified 属性）。 该属性将保留以向后兼容。
[Obsolete]SuspiciousSymbols* | string | 只读 | 字符串“0”和“1”显示已明确识别的符号。 该属性将保留以向后兼容。

* - 如果取消选择许可证属性中的高级 Xml 导出选项，则该属性不可用。


IFieldRegion

功能

表示文档字段的区域。

属性

名称 | 类型 | 访问 | 描述
PageIndex | int | 读/写 | 该区域所在的页面数
Page | IPage | 只读 | 包含该区域的页面
Rects | IRects | 只读 | 区域组成的一组矩形
SurroundingRect | IRect | 只读 | 用来描述整个区域的矩形
Picture | IPictureObject | 只读 | 与区域对应的图片
IsMatched | bool | 只读 | 指定区域是否已匹配
Field | IField | 只读 | 与区域对应的文档字段。属性值可以为“0”。

注：在自定义识别脚本中，字段属性的值始终为“0”，因为在识别期间，该字段不存在。


IFieldRegions

功能

IFieldRegion 对象的集合。


IFields

功能

IField 对象的集合。


IFlexiCaptureTools

功能

IFlexiCaptureTools 接口通过脚本中可用的 FCTools 全局对象来实施。FCTools 全局对象的所有方法均都可作为静态方法调用，例如：FCTools.ShowMessage( “Test” );

方法

定义 | 描述
NewImageSavingOptions() : IExportImageSavingOptions | 创建 IExportImageSavingOptions 类的新对象。
Rect( left : int, right : int, top : int, bottom : int ) : string | 生成采用带指定坐标的矩形形式的字符串。
IsModuleAllowedByLicense( authorId : string, moduleName : string ) : bool | 检查许可证是否允许使用指定的模块。
LoagImage( filePath : string, [optional] pageNumber : int ) : IEditablePictureObject | 从文件中加载图像。已加载的图像将可用于编辑。
ShowMessage( text : string, [optional] isError : bool ) | 向用户显示消息。如果 isError 标志设置为 true，则该消息将是一个错误消息，否则是一个通知。如果该脚本在处理过程中执行，则该消息将写入处理日志中。


IMatchedSectionInfo

功能

包含有关在页面上匹配的“文档定义”节段的详细信息。

属性

名称 | 类型 | 访问 | 描述
Name | string | 只读 | 节段名称。
IsFlexible | bool | 只读 | 指定节段是否为弹性。
FlexibleInstanceId | int | 只读 | 弹性节段的索引。一组带有相同的弹性节段索引的页面形成了文档节段。 该字段仅对弹性节段有效。 对于其弹性节段的同一定义相匹配的两个页面，如果 FlexibleInstanceId 值不同，则表示这两个页面分别属于不同的文档节段。
FlexibleInstanceId | int | 只读 | 在页面上匹配的固定节段定义中的页号。 该字段仅对固定节段有效。
DocumentDefinition | IDocumentDefinitionInfo | 只读 | 有关节段所属的文档定义的信息。


IMatchingInfo

功能

在页面上存储匹配文档定义和节段的参数。

属性

名称 | 类型 | 访问 | 描述
DefinitionsList | string | 读/写 | 要在页面上匹配的节段和文档定义的列表以分号分隔。
ForceMatch | bool | 读/写 | 指定是否强制匹配节段。仅当设置的节段不超过一个时，才将该标志设置为“true”。如果节段列表为空，且标志设置为“true”，则页面将标记为无需识别的附录页面。
NeedRecognition | bool | 读/写 | 指定节段中的字段是否需要识别。如果标志设置为“false”，则字段将不会在匹配之后识别。

注：文档定义名称和节段名称可用 <DefinitionName>\<SectionName> 的形式进行指定。仅可使用现有的节段和文档定义。

例如，Banking_eng 样本的首个节段指定如下：Banking_eng\Page 1。

注：对于所有节段要识别的页面，请勿修改 DefinitionsList 属性。如果 DefinitionsList 属性为空，且未设置 ForceMatch 标志，则不会识别该页面，且将记录错误消息“无要匹配的文档定义”。如果 ForceMatch 标志设置为“true”，则该页面将标记为附录页面。


IPage

功能

表示页面。

方法

定义 | 描述
SaveAs( filename : string, [optional] options : IExportImageSavingOptions ) | 根据保存选项保存页面图像。如果未指定选项，则图像将另存为 *.tif。 在只能访问可缓冲数据的脚本中不可用。
ReplaceImage（newPicture：IPictureObject） | 将该图像页面替换为新的图像页面。 该新图像可通过修改现有图像进行创建，或可使用 FCTools.LoadImage 方法进行加载。

属性

名称 | 类型 | 访问 | 描述
Document | IDocument | 只读 | 包含页面的文档
Index | int | 只读 | 文档中的页面索引
ImageSourceType | string | 只读 | “文件”、“扫描仪”或“自定义”字符串取决于来源
ImageSource | string | 只读 | 在 ImageSourceDetails 中为其他来源指定的文件或来源的完整路径。
ImageSourcePageNumber | int | 只读 | 文件中的源页面数。
ImageSourceFileSubPath | string | 只读 | 与热文件夹根或源图像导入自的文件夹相关的源图像路径。
Rect | IRect | 只读 | 页面的矩形。 在只能访问可缓冲数据的脚本中不可用。
ExcludedFromDocumentImage | bool | 读/写，可变（即使在具有只读权限的脚本中也可修改） | 适用于文档图像导出期间。表明在导出整个文档时，不应导出当前页面图像。 在只能访问可缓冲数据的脚本中不可用。
SectionName | string | 只读 | 文档节段名称。
ID | string | 只读 | 页面标识符。
Picture | IPictureObject | 只读 | 页面图像。 在只能访问可缓冲数据的脚本中不可用。
IsAnalyzed | bool | 只读 | 指定页面是否已分析。
MatchedSection | IMatchedSectionInfo | 只读 | 有关在页面上匹配的节段的详细信息。如果页面上无匹配的节段，则此值为 null。
[Obsolete] TemplateName | string | 只读 | 文档节段名称（与 SectionName 相同）。 该属性将保留以向后兼容。


IPageClassificationResult

功能

存储有关页面分类结果的信息。

属性

名称 | 类型 | 访问 | 描述
PageType | TPageClassificationType | 只读 | 页面类型
MatchedSections | string | 只读 | 可匹配的节段列表。包含以分号分隔的 <Document Definition Name>\<Section Name> 形式的条目。未修改的列表可作为 DefinitionsList 参数 (IMatchingInfo::DefinitionsList) 传递至 IMatchingInfo 对象。 注：将分类结果传递至匹配前脚本时，请将 IMatchingInfo.ForceMatch 标志设置为 false，以便页面将不会通过脚本进行重复分类。


IPages

功能

IPage 对象的集合。


IPictureObject

功能

表示页面或区域的图像。

该对象实现 IPicture 接口，并通过 IDispatch 接口提供对其部分属性的访问。

有关 IPicture 接口的详情，请参阅 MSDN 中的相应文章。

方法

定义 | 描述
SaveAs( filename : string, [optional] options : IExportImageSavingOptions ) | 保存图像。如果未指定选项，则图像将另存为 *.tif。
CreateEditableCopy()：IEditablePictureObject | 创建图像的可编辑副本。

属性

名称 | 类型 | 访问 | 描述
Handle | OLE_HANDLE | 只读 | 图片的 Windows GDI 句柄。 在 .Net 中，该属性可在 System.Drawing.Image.FromHbitmap 方法中使用，用来检索图片对象。
hPal | OLE_HANDLE | 读/写，可变（即使在具有只读权限的脚本中也可修改） | 该图片使用的调色板 Windows 句柄。 该属性可作为第二个参数在 System.Drawing.Image.FromHbitmap 中使用。
Type | SHORT | 只读 | 图片类型。
Width | int | 只读 | 以点表示的图片宽度
Height | int | 只读 | 以点表示的图片高度
IsBlackWhite | bool | 只读 | 图片是否为黑白图片
XResolution | int | 只读 | 水平图像分辨率
YResolution | int | 只读 | 垂直图像分辨率


IPrincipal

功能

表示脚本中的用户或用户组。

属性

名称 | 类型 | 访问 | 描述
Name | string | 只读 | 用户或组名称
ID | int | 只读 | 唯一标识符
Type | TPrincipalType | 只读 | 主体类型


IPrincipals

功能

用户和用户组的一般集合（IPrincipal 对象的集合）。


IProcessingCallback

功能

传递有关处理进度的信息。

方法

定义 | 描述
ReportMessage( message : string ) | 将信息消息记录至日志。
ReportWarning( warning : string ) | 将警告消息记录至日志。
ReportError( error : string ) | 将错误消息记录至日志。包含错误消息的操作被认为失败。

属性

名称 | 类型 | 访问 | 描述
ShouldStop | bool | 只读 | 检查任务是否已取消（用户是否单击“取消”）。


IProject

功能

表示脚本中的项目。

属性

名称 | 类型 | 访问 | 描述
Name | string | 只读 | 项目名称
Principals | IPrincipals | 只读 | 一组用户或组
ExportRootPath | string | 只读 | 用于导出的根路径，已在项目设置中定义。可为空字符串。


IProperties

功能

IProperty 对象的集合。

方法

定义 | 描述
Get (name : string) : string | 按名称检索属性值。
Set (name : string, value : string) | 设置命名属性的值。如果属性不存在，请创建属性。
Has (name : string) : bool | 检查该设置是否包含带有指定名称的属性。
Delete (name : string) | 删除带有指定名称的属性。


IProperty

功能

表示文档或批处理文件的已命名属性。

属性

名称 | 类型 | 访问 | 描述
Name | string | 只读 | 属性名称
Value | string | 只读 | 属性值


IPropertyModificationInfo

功能

存储有关文档（或批处理文件）属性修改的信息。

可更正设置值。

属性

名称 | 类型 | 访问 | 描述
PropertyType | TPropertyType | 只读 | 要修改的属性类型
NewValue | string | 读/写 | 属性的新值。该脚本允许以不同的形式设置值，例如，将值标准化。
Name | string | 只读 | 命名参数的名称（仅适用于 PT_NamedPropertyValue 类型）


IRect

功能

表示矩形

方法

定义 | 描述
ToString() : string | 将矩形表示为“[左, 上, 右, 下]”格式的字符串。

属性

名称 | 类型 | 访问 | 描述
Left | int | 只读 | 左坐标
Right | int | 只读 | 右坐标
Top | int | 只读 | 上坐标
Bottom | int | 只读 | 下坐标


IRects

功能

IRect 对象的集合。


IRuleContext

功能

规则的上下文对象。表示创建规则所在的对象。

该对象实现 IField 接口（通过提供对规则上下文字段的访问），并同时具有附加法。

属性

名称 | 类型 | 访问 | 描述
Fields | IFields | 只读 | 规则中字段的集合。在规则设置中指定。
Document | IDocument | 只读 | 访问文档
CheckSucceeded | bool | 读/写，可变（即使在具有只读权限的脚本中也可修改） | 指定是否已成功检查
ErrorMessage | string | 读/写，可变（即使在具有只读权限的脚本中也可修改） | 有关规则错误的消息
FocusedField | IField | 读/写，可变（即使在具有只读权限的脚本中也可修改） | 单击规则错误时要突出的字段（即导致规则错误的字段）。
ParentWindow | int | 只读 | 父窗口的句柄。仅适用于“自定义操作”脚本。
FocusRect | IRect | 只读 | 屏幕坐标中的已执行操作所引用的矩形（窗口矩形）。仅适用于“自定义操作”脚本。
[Obsolete] FieldsObject | IFR65Fields | 只读 | 过时的属性。保留，以与 FormReader 6.5 中创建的脚本兼容。
[Obsolete] ErrorObjectObject | IFR65Errors | 只读 | 过时的属性。保留，以与 FormReader 6.5 中创建的脚本兼容。


IRuleError

功能

表示文档中的规则错误、格式错误或合并错误。

方法

定义 | 描述
GetFields()：IFields | 返回与给定字段错误相关的字段。

属性

名称 | 类型 | 访问 | 描述
Message | string | 只读 | 错误消息的文本。
IsWarning | bool | 只读 | 指定该消息是否为警告消息。
Type | TRuleErrorType | 只读 | 错误类型。
RuleName | string | 只读 | 导致错误的规则的名称。对于格式和合并错误，将返回空字符串。


IRuleErrors

功能

IRuleError 对象的集合。


IScriptBinaryAttributes

描述

布尔值标志集。

方法

定义 | 描述
Has( TStateType : int ) : bool | 检查是否设置了请求的标志


IStageInfo

功能

存储有关文档处理阶段的信息。

属性

名称 | 类型 | 访问 | 描述
StageID | int | 只读 | 当前处理阶段的标识符
StageName | string | 只读 | 当前处理阶段的名称
TaskId | int | 只读 | 任务的标识符。如果无任务，则其值为“0”。
PrincipalId | int | 只读 | 用户或组的标识符，该用户或组可接收带有给定文档的任务。 “0”表示该任务未分配至任何主体（用户或组）。详情请参阅IPrincipal。


IUserAttachment

功能

该接口用于处理用户附件的上下文。该对象表示一组字节。字节可作为集合中的对象进行访问。可更改任意位置的字节值。

方法

定义 | 描述
SetSize( newSize : int) : bool | 更改文件大小。将会增加其大小小于指定值的文件，并缩减较大的文件。
ToFile( fileName : string) | 将文件保存至硬盘上的指定路径。
FromFile( fileName : string) | 将附件内容替换为指定路径中的文件。
UploadAttachment( ) | 保存对附件所作的更改。

属性

名称 | 类型 | 访问 | 描述
Name | string | 只读 | 文件名。
AsString | string | 读/写 | 将文件表示为一个 Unicode 字符串。文件可作为 Unicode 字符串进行写和读。


IUserAttachments

功能

表示对象的用户附件集合。

方法

定义 | 描述
Has( name : string) : bool | 检查是否存在带有指定名称的附件文件。
Get( name : string) : IUserAttachment | 访问带有给定名称的附件文件。
AddNew( name : string) : IUserAttachment | 创建新的附件文件并开始编辑。 重要事项！要保存已创建的附件文件并使其可用于编辑，必须为该文件调用 UploadAttachment 方法。
Delete( name : string) | 删除带有给定名称的附件文件。

属性

名称 | 类型 | 访问 | 描述
Names | IVariantArray | 只读 | 带有附件文件名的数组。
IsEmpty | bool | 只读 | 检查数组是否包含任何附件文件。


IValue

功能

表示字段值。

属性

名称 | 类型 | 访问 | 描述
Text | string | 读/写 | 值的文本表示
ErrorMessage | string | 读/写 | 关于值格式错误的消息
Symbols | ICharactersParams | 只读 | 关于符号属性的详细信息
[Obsolete] SuspiciousSymbols | string | 读/写 | 描述识别人员怀疑的符号，由“0”和“1”组成。 保留以备向后兼容。


IVARIANTArray

功能

表示“变体”类型项目的集合。


TAssemlingErrorType

描述

组装错误的类型。

可容许值：

  • AET_ObligatoryItemOmitted = 0 - 缺失节段
  • AET_RubbishItem = 1 - 多余页面
  • AET_AssemblingRuleError = 2 - 自定义组装错误
  • AET_KeyValuesMismatch = 3 - 关键字段的值不匹配（文档内的此类错误不可超出一个）


TExportFieldType

功能

int 类型的枚举。定义文档字段类型。

可容许值：

  • EFT_TextField = 0 - 文本字段
  • EFT_DateTimeField = 1 - 日期字段
  • EFT_NumberField = 2 - 数字字段
  • EFT_PictureField = 3 - 图片字段
  • EFT_CurrencyField = 4 - 货币字段
  • EFT_Checkmark = 5 - 复选标记
  • EFT_CheckmarkGroup = 6 - 复选标记组
  • EFT_Group = 7 - 普通组
  • EFT_Table = 8 - 表格。您可通过 IField 对象的项目或行方法访问表格行。
  • EFT_Section = 9 - 文档节段
  • EFT_Document = 10 - 文档。此类字段仅可在为文档级别编写的规则中出现。此类字段的大多数参数不可用。
  • EFT_TableRow = 11 - 表格行。表格单元是行的子字段。它们通过子级方法提供。


TExportType

描述

导出目标的类型。

可容许值：

  • ET_File = 1 - 导出至文件
  • ET_Database = 2 - 导出至数据库
  • ET_Script = 3 - 脚本导出
  • ET_SharePoint = 4 - 导出至 SharePoint
  • ET_Unknown = 5 - 此类型未在未涉及任何特定导出程序的错误事件中指定


TPageClassificationType

描述

分类器定义的页面类型。适用于 IPageClassificationResult 接口。

类型：

  • PCT_Unknown = 0 - 未知页面类型。
  • PCT_Empty = 1 - 空白页面。
  • PCT_FixedForm = 2 - 带有固定布局的页面。
  • PCT_FlexibleMultiPageFormHeader = 3 - 多页弹性节段的标题。
  • PCT_FlexibleMultiPageFormNonHeader = 4 - 多页弹性节段中的页面（不是标题）。
  • PCT_FlexibleSinglePageForm = 5 - 一页弹性节段。


TPrincipalType

描述

主体类型。

可容许值：

  • PT_User = 0 - 普通用户
  • ST_Group = 1 - 用户组


TProcessingPriority

描述

文档或批处理文件的处理优先级。

注：该值以字符串的形式传递至“文档优先级更改”事件（或“批处理文件优先级更改”）。新值也必须以字符串的形式指定。

可容许值：

  • PP_Lowest = -2 - 最低优先级。以“lowest”字符串的形式传递。
  • PP_Low = -1 - 低优先级。以“low”字符串的形式传递。
  • PP_Normal = 0 - 中等优先级。以“normal”字符串的形式传递。
  • PP_High = 1 - 高优先级。以“high”字符串的形式传递。
  • PP_Highest = 2 - 最高优先级。以“highest”字符串的形式传递。


TPropertyType

描述

文档（或批处理文件）属性的类型。适用于 IPropertyModificationInfo 接口。

类型：

  • PT_Name = 0 - 名称。仅适用于批处理文件。
  • PT_Comment = 1 - 注释。
  • PT_BatchType = 2 - 批处理文件类型。仅适用于批处理文件。
  • PT_NamedPropertyValue = 3 - 命名属性（以前是注册参数）
  • PT_Id = 4 - 标识符（文档的外部 Id）。其值不定期地更改，仅适用于文档。该值大多数是在导入期间更改。


TRuleErrorType

描述

错误类型。适用于 IRuleError 接口。

类型：

  • ET_RuleError = 0 - 规则错误。
  • ET_FormatError = 1 - 格式错误。
  • ET_MergeVersionError = 2 - 合并不同版本文档所产生的错误。


TStateType

描述

文档状态类型。在“文档状态已更改”事件中使用。该事件的 ChangedState 参数可用于获取有关每个状态类型的可能更改的信息。

可容许值：

  • ST_Preprocessed = 0 - 文档是否已预处理。仅可将该值从“false”更改为“true”。
  • ST_Preprocessed = 1 - 文档是否已分析
  • ST_Recognized = 2 - 文档是否已识别（如果文档中至少存在一个已识别的节段，则该文档视为已识别）
  • ST_HasErrors = 3 - 文档是否具有错误（包括格式错误）
  • ST_Preprocessed = 4 - 文档是否已组装
  • ST_Verifyed = 5 - 文档是否已校验完成
  • ST_Preprocessed = 6 - 文档是否已导出
  • ST_HasLayout = 7 - 文档是否具有布局。（在已分析的文档中，也可缺少布局，例如，如果页面含有未知类型。）


样本脚本

本节包含以 JScript® 和 VBScript 脚本语言编写的样本脚本。

项目符号 | 用于创建自定义规则的样本脚本
项目符号 | 用于描述导出的样本脚本
项目符号 | 其他样本脚本


用于创建自定义规则的样本脚本

自动化规则

此示例演示表格数据检查。本规则检查表格数据是否匹配结果字段中的值。该表格的列具有特定商品的价格和数量。本规则在包含表格和结果字段的节段级别上编写。

[VBScript]

dim autoRule

set autoRule = CreateObject( "AutomationRule.CheckDoc" )

autoRule.CheckResult me.FIELD("cost"), me.FIELD("number"), _

me.FIELD("Result"), me

[JScript]

var autoRule = new ActiveXObject( "AutomationRule.CheckDoc" );

autoRule.CheckResult( Field("cost"), Field("number"),

Field("Result"), this );

ActiveX 组件的代码

此处提供的代码是 AutomationRule 项目中的 CheckDoc 类代码，在上述脚本中使用。

Option Explicit

' Checks whether table data matches the result

' column1 - price column

' column2 - quantity column

' resultField - resulting field (<Total> or equivalent )

' docObj - document node being checked

Public Sub CheckResult(ByRef column1 As Object, ByRef column2 As Object, _

ByRef resultField As Object, ByRef docObj As Object)

On Error GoTo err_h

Dim costItems As Object, numItems As Object

    Dim curCost As Double, curNum As Long, sum As Double

Dim result As Double

Dim i As Long

Set costItems = column1.Items

Set numItems = column2.Items

' summing up table data

sum = 0

For i = 0 To costItems.Count - 1

curCost = costItems.Item(i).Value

curNum = numItems.Item(i).Value

sum = sum + curNum * curCost

Next

' comparison accuracy – result rounded to the 2nd digit after the decimal point

result = resultField.Value

If (Round(result, 2) = Round(sum, 2)) Then

docObj.CheckSucceeded = True

Else

docObj.CheckSucceeded = False

docObj.ErrorMessage = "Table data does not match the resulting value"

resultField.Suggest sum

End If

Exit Sub

err_h:

docObj.ErrorMessage = Err.Description

docObj.CheckSucceeded = False

End Sub

在变体列表中搜索

以下提供的规则代码检查字段值是否与列表中的某一项值匹配。如果不匹配，将显示规则错误标志，且字段将收到建议值的列表。根据检查结果，该字段将标记为明确或未明确识别。

[VBScript]

'remember field value

Dim fieldValue

fieldValue = me.Field("Field6").Value

'create list of values for check

Dim list(5)

dim i

for i = 0 to 4

list(i) = "2" & i

next

dim success

success = false

'check whether field value matches values in the list

for i = 0 to 4

if list(i) = fieldValue Then

success = true

exit for

end if

next

'depending on the check result, set a corresponding certainty status for the field

me.Field("Field6").IsCertain = success

'fill the list of suggestions for the field – a suggestion can be any of the

'suitable values

if success = false then

for i = 0 to 4

me.Field("Field6").Suggest( list(i) )

next

end if

'place an error flag

me.CheckSucceeded = success

[JScript]

// remember field value

var fieldValue = Field("Field6").Value;

// create list of values for check

var list = new Array(5);

for( i = 0; i < 5; i++ ) {

list[i] = "2" + i

}

var success = false;

// match field value against values in the list

for( i = 0; i < 5; i++ ) {

if( list[i] == fieldValue ) {

success = true;

break;

}

}

// depending on the check result, set a corresponding certainty status for the field

Field("Field6").IsCertain = success;

// fill the list of suggestions for the field – a suggestion can be any of the

// suitable values

if( !success ) {

for( i = 0; i < 5; i++ ) {

Field("Field6").Suggest( list[i] );

}

}

// place error flag

CheckSucceeded = success;

字段匹配检查

以下提供的规则代码检查已选取的字段是否匹配。

[VBScript]

if me.Field("InvoiceNumber").IsMatched then

me.CheckSucceeded = true

else

me.CheckSucceeded = false

me.ErrorMessage = "Field InvoiceNumber is not matched"

end if

[JScript]

if( Field("InvoiceNumber ").IsMatched ) {

CheckSucceeded = true;

} else {

CheckSucceeded = false;

ErrorMessage = "Field InvoiceNumber is not matched";

}

复选标记检查

以下提供的规则代码检查是否选择了复选标记

[VBScript]

if me.Field("Page status").Value then

me.CheckSucceeded = true

else

me.CheckSucceeded = false

me.ErrorMessage = "Page status is not checked"

end if

[JScript]

if( Field("Page status").Value ) {

CheckSucceeded = true;

} else {

CheckSucceeded = false;

ErrorMessage = "Page status is not checked";

}

复选标记组检查

以下规则代码重复选择了组中的所有复选标记，且如果未选择任何复选标记，则请选择第一个复选标记。该规则专为复选标记组级别编写。组中的所有复选标记均已添加至规则包含的字段列表中。对于默认的复选标记（第一个），将禁用“只读”标志。如果组中无复选标记，将启用规则错误标志。

该样本代码将重复选择规则中包含的所有字段。 由于未在代码中指定字段名称，因此该代码可用于任何复选标记组。

[VBScript]

if me.Fields.Count = 0 then

me.CheckSucceeded = false

me.ErrorMessage = "No checkmarks in group"

else

dim isChosen, i

isChosen = false

for i = 0 to me.Fields.Count - 1

if me.Fields.Item( i ).Value then

isChosen = true

exit for

end if

next

if Not isChosen then

me.Fields.Item(0).Value = true

end if

me.CheckSucceeded = true

end if

[JScript]

if( Fields.Count == 0 ) {

CheckSucceeded = false;

ErrorMessage = "No checkmarks in group";

} else {

var isChosen = false;

var i;

for( i = 0; i < Fields.Count; i++ ) {

if( Fields.Item( i ).Value ) {

isChosen = true;

break;

}

}

if( !isChosen ) {

Fields.Item(0).Value = true;

}

CheckSucceeded = true;

}

字段可靠性检查
以下提供的规则检查字段中的不确定字符数，如果不确定字符数大于或等于 3，则将清除该字段。这是自动校正脚本。

[VBScript]

Dim totQty, suspQty

Dim i

totQty = me.Symbols.Count

suspQty = 0

for i = 0 to totQty - 1

if me.Symbols.Item(i).IsSuspicious = true then

suspQty = suspQty + 1

end if

next

if suspQty >= 3 then

me.Text = ""

end if

[JScript]

var susp, qty, strpos, i, SC, strposPrev

strposPrev = 1

qty = 0

SC = "1"

susp = SuspiciousSymbols

for ( i = 0; i < susp.length; i++) {

strpos = susp.indexOf (SC,i)

if ((strpos != strposPrev) && (strpos != -1)) {

qty = qty + 1

strposPrev = strpos

}

}

if (qty >= 3) {

text = ""

}

批处理文件完整性检查
检查控制页面上指定的文档数是否与批处理文件中的库存及实际处理的文档数一致。如果数目不相符，将返回错误。

[VBScript]

dim DQty

dim i

for i = 0 to me.Batch.Documents.Count - 1

if me.Batch.Documents.Item(i).TemplateName = "Inv" then

DQty = me.Batch.Documents.Item(i).IndexedItemValue("DocQty")

exit for

end if

next

dim AcQty

AcQty = me.Batch.Documents.Count

if acqty <> DQty then

me.CheckSucceeded = false

me.ErrorMessage = "Incorrect number of documents in the batch:" & " " & AcQty& "." & "Expected number:" & " " & DQty & "!"

end if

[JScript]

for ( i = 0; i < [Batch.Documents.Count - 1]; i++ ) {

var TemplName = Batch.Documents.Item(0).TemplateName;

if (TemplName = "Inv") {

var DQty = Batch.Documents.Item(i).IndexedItemValue("DocQty");

break ;

}

}

var AcQty = Batch.Documents.Count -1

if (AcQty != DQty) {

CheckSucceeded = false;

ErrorMessage = "Incorrect number of documents in the batch:" + " " + AcQty + "." + "Expected number:" + " " + DQty +"!" ;

}


用于描述导出的样本脚本

在导出期间获取字段值
显示您如何在导出期间获取字段值的样本代码。您可以使用该值命名图像或数据所导出至的文件。如果文档中无此类字段，将会发生错误。

要导出的文档的结构：

Section 1

Field1

…

Group1

Field2

…

…

FieldN

Section 2

Field1

…

FieldK

[VBScript]

Dim field1Value, field2Value

' Gets the value of Field1 in Section 1

if Not IsNull( me.Field( "Section 1\Field1" ).Value ) then

field1Value = me.Field( "Section 1\Field1" ).Value

end if

' Gets the value of Field2 in Group1 in Section 1

if Not IsNull( me.FIELD( "Section 1\Group1\Field2" ).Value ) then

field2Value = me.Field( "Section 1\Group1\Field2" ).Value

end if

' Gets the value of Field1 in Section 1 if the section has multiple instances

if Not me.Field( "Section 1" ).Items Is Nothing then

dim curPage

for each curPage in me.Field( "Section 1" ).Items

if Not curPage.Children Is Nothing then

dim curField

for each curField in curPage.Children

if curField.Name = "Field1" And Not IsNull( curField.Value ) then

field1Value = curField.Value

exit for

end if

next

end if

next

end if

[JScript]

// Gets the value of Field1 in Section 1

if( Field("Section 1\\Field1").Value != null ) {

var field1Value = Field("Section 1\\Field1").Value;

}

// Gets the value of Field2 in Group1 in Section 1

if( Field("Section 1\\Group1\\Field2").Value != null ) {

var field2Value = Field("Section 1\\Group1\\Field2").Value;

}

// Gets the value of Field1 in Section 1 if the section has multiple instances

if( Field( "Section 1" ).Items != null ) {

var i, j;

for( i = 0; i < Field( "Section 1" ).Items.Count; i++ ) {

var curPage = Field( "Section 1" ).Items.Item( i );

if( curPage.Children != null ) {

for( j = 0; j < curPage.Children.Count; j++ ) {

var curField = curPage.Children.Item( j );

if( curField.Name == "Field1" && curField.Value != null ) {

var field1Value = curField.Value;

break;

}

}

}

}

}

导出页面图像

本示例中的代码显示如何使用所需的文件格式、配色方案和分辨率导出所有文档页面的图像。图像将按页面保存，即，每页都在一个单独的文件中保存。

本示例中的文件命名为“page1.tif”、“page2.tif”等。如有需要，您可更改文件命名机制。例如，您可以根据字段值创建文件名。

[VBScript]

dim fso, folderName

set fso = CreateObject("Scripting.FileSystemObject")

folderName = "d:\ExportImages"

if Not fso.FolderExists( folderName ) then

fso.CreateFolder folderName

end if

dim imageOptions

set imageOptions = ExportTools.NewImageSavingOptions

imageOptions.Format = "tif"

imageOptions.ColorType = "BlackAndWhite"

imageOptions.Resolution = 600

dim i

for i = 0 to me.Pages.Count - 1

dim fileName

    ' Sets the desired name and extension for the file depending on the selected format

fileName = fso.BuildPath( folderName, "page" & (i+1) & ".tif" )

me.Pages.Item(i).SaveAs fileName, imageOptions

next

[JScript]

var fso = new ActiveXObject("Scripting.FileSystemObject");

var folderName = "d:\\ExportImages";

if( !fso.FolderExists( folderName ) ) {

fso.CreateFolder( folderName );

}

var imageOptions = ExportTools.NewImageSavingOptions();

imageOptions.Format = "tif";

imageOptions.ColorType = "BlackAndWhite";

imageOptions.Resolution = 600;

var i;

for( i = 0; i < Pages.Count; i++ ) {

    // Sets the desired name and extension for the file depending on the selected format

var fileName = fso.BuildPath( folderName, "page" + (i+1) + ".tif" );

Pages.Item(i).SaveAs( fileName, imageOptions );

}

导出表格

本示例显示如何将表格导出为 *.txt 文件。

[VBScript]

dim fso, txtFile, fileName

set fso = CreateObject("Scripting.FileSystemObject")

fileName = "d:\TestExportTable.txt"

set txtFile = fso.CreateTextFile( fileName, true )

txtFile.WriteLine "Table"

dim table, row, cell, rowNumber

set table = me.Field("Page 1\Table")

rowNumber = 1

for each row in table.Items

txtFile.WriteLine "RowNumber = " & rowNumber

for each cell in row.Children

txtFile.Write cell.Value & " "

next

txtFile.WriteBlankLines 1

rowNumber = rowNumber + 1

next

txtFile.Close

set txtFile = nothing

set fso = nothing

[JScript]

var fso, txtFile, fileName;

fso = new ActiveXObject("Scripting.FileSystemObject");

fileName = "d:\\TestExportTable1.txt";

txtFile = fso.CreateTextFile( fileName, true );

txtFile.WriteLine( "Table" );

var table, i, j;

table = Field("Page 1\\Table");

var rows = table.Items;

for( i = 0; i < rows.Count; i++ ) {

txtFile.WriteLine( "RowNumber = " + ( i+1 ) );

var cells = rows.Item(i).Children;

for( j = 0; j < cells.Count; j++ ) {

txtFile.Write( cells.Item(j).Value + " " );

}

txtFile.WriteBlankLines(1);

}

txtFile.Close();

导出任何嵌套级别的文档

本示例显示了如何使用全局导出模块中自定义创建的功能导出任何嵌套级别文档的文件。如果您需要导出变量嵌套的文档字段，则建议您使用外部 COM 组件（请参阅下一示例）

核心导出代码

[VBScript]

Export.ExportDocument me, ExportTools

[JScript]

Export.ExportDocument( this, ExportTools );

全局导出模块的函数代码

[VBScript]

' The procedure carries out the export: creates an export folder and

' saves in it page image files, the text file with the document fields,

' and information about the document

Sub ExportDocument(ByRef docObj, ByRef exportTools)

    Dim folderName

    Dim txtFile, fileName

    Dim fso

    On Error Resume Next

    set fso = CreateObject("Scripting.FileSystemObject")

    ' creating the export folder

    folderName = CreateExportFolder(docObj.TemplateName, fso)

    if Err.Number <> 0 then

        docObj.Action.Succeeded = false

        docObj.Action.ErrorMessage = "Error during create export folder: " + Err.Description

        Err.Clear

        Exit Sub

    End if

    ' exporting images

    ExportImages docObj, exportTools, folderName, fso

    if Err.Number <> 0 then

        docObj.Action.Succeeded = false

        docObj.Action.ErrorMessage = "Error during export images: " + Err.Description

        Err.Clear

        Exit Sub

    End if

    ' creating the text file

    fileName = fso.BuildPath(folderName, "doc.txt")

    Set txtFile = fso.CreateTextFile(fileName, True)

    ' exporting info about the document

    ExportDocInfo docObj, txtFile

    ' exporting fields

    txtFile.WriteLine "Fields:"

    ExportFields docObj.Children, txtFile, ""

    txtFile.Close

    if Err.Number <> 0 then

        docObj.Action.Succeeded = false

        docObj.Action.ErrorMessage = "Error during export data: " + Err.Description

        Err.Clear

        Exit Sub

    End if

    Set txtFile = Nothing

    Set fso = Nothing

End Sub

' Image export function.

Function ExportImages( ByRef docObj, ByRef exportTools, ByVal exportFolder, ByRef fso )

    Dim pages, page, imageOptions

    Dim fileName, pageNum

    ' specifying export settings

    Set imageOptions = exportTools.NewImageSavingOptions

    imageOptions.Format = "bmp"

    imageOptions.ColorType = "FullColor"

    imageOptions.Resolution = 100

    ' ' page-by-page export

    Set pages = docObj.Pages

    pageNum = 1

    For Each page In pages

        fileName = fso.BuildPath(exportFolder, "page" & pageNum & ".bmp")

        page.SaveAs fileName, imageOptions

        pageNum = pageNum + 1

    Next

End Function

' The procedure that exports info about the document

Sub ExportDocInfo(ByRef docObj, ByRef txtFile)

    txtFile.WriteLine "Doc info:"

    txtFile.WriteLine ("DocumentId " & docObj.Id)

    txtFile.WriteLine ("IsAssembled " & docObj.IsAssembled)

    txtFile.WriteLine ("IsVerified " & docObj.IsVerified)

    txtFile.WriteLine ("IsExported " & docObj.IsExported)

    txtFile.WriteLine ("ProcessingErrors " & docObj.ProcessingErrors)

    txtFile.WriteLine ("ProcessingWarnings " & docObj.ProcessingWarnings)

    txtFile.WriteLine ("TotalSymbolsCount " & docObj.TotalSymbolsCount)

    txtFile.WriteLine ("RecognizedSymbolsCount " & docObj.RecognizedSymbolsCount)

    txtFile.WriteLine ("UncertainSymbolsCount " & docObj.UncertainSymbolsCount)

    txtFile.WriteLine

End Sub

' The procedure that exports fields from the fields collection

Sub ExportFields(ByRef fields, ByRef txtFile, ByVal indent)

    Dim curField

    For Each curField In fields

        ExportField curField, txtFile, indent

    Next

End Sub

' Checks if the value of the field is null

' If the field value is invalid, any attempt to access this field (even

' to check if it is null) may cause an exception

Function IsNullFieldValue( ByRef field )

    on error resume next

    IsNullFieldValue = IsNull( field.Value )

    if Err.Number <> 0 then

        IsNullFieldValue = True

        Err.Clear

    End if

End Function

' Field export procedure

Sub ExportField(ByRef field, ByRef txtFile, ByVal indent)

    ' saving field name

    txtFile.Write (indent & field.Name)

    ' saving field value if it can be accessed

    If IsNullFieldValue(field) Then

        txtFile.WriteLine

    Else

        txtFile.WriteLine ("    " & field.Text)

    End If

    If Not field.Children Is Nothing Then

        ' exporting child fields

        ExportFields field.Children, txtFile, indent & "    "

    ElseIf Not field.Items Is Nothing Then

        ' exporting field instances

        ExportFields field.Items, txtFile, indent & "    "

    End If

End Sub

' The function creates an export folder and returns a full path to this folder

Function CreateExportFolder(ByVal templateName, ByRef fso)

    Dim docFolder, folderName

    ' main folder

    exportFolder = "d:\ScriptExport"

    If fso.FolderExists(exportFolder) = False Then

        fso.CreateFolder (exportFolder)

    End If

    ' the folder of the specified Document Definition

    docFolder = fso.BuildPath(exportFolder, templateName)

    If fso.FolderExists(docFolder) = False Then

        fso.CreateFolder (docFolder)

    End If

    ' the folder of the exported document

    Dim i

    i = 1

    folderName = fso.BuildPath(docFolder, i)

    While fso.FolderExists(folderName)

        i = i + 1

        folderName = fso.BuildPath(docFolder, i)

    Wend

    fso.CreateFolder (folderName)

    CreateExportFolder = folderName

End Function

[JScript]

// The function carries out the export: creates an export folder and

// saves in it page image files, the text file with the document fields,

// and information about the document

function ExportDocument(docObj, exportImageTools)

{

    var folderName

    var txtFile, fileName

    var fso

    fso = new ActiveXObject("Scripting.FileSystemObject");

    // creating export folders

    try {

        folderName = CreateExportFolder(docObj.TemplateName, fso);

    } catch( e ) {

        docObj.Action.Succeeded = false;

        docObj.Action.ErrorMessage = "Error during create export folder: " + e.description;

        return;

    }

    // exporting images

    try {

        ExportImages(docObj, exportImageTools, folderName, fso);

    } catch( e ) {

        docObj.Action.Succeeded = false;

        docObj.Action.ErrorMessage = "Error during export images: " + e.description;

        return;

    }

    // creating the text file

    fileName = fso.BuildPath(folderName, "doc.txt");

    txtFile = fso.CreateTextFile(fileName, true);

    // exporting info about the document

    ExportDocInfo( docObj, txtFile );

    // exporting fields

    txtFile.WriteLine( "Fields:" );

    try {

        ExportFields( docObj.Children, txtFile, "" );

    } catch( e ) {

        docObj.Action.Succeeded = false;

        docObj.Action.ErrorMessage = "Error during export data: " + e.description;

        txtFile.Close();

        return;

    }

    txtFile.Close();

    txtFile = 0;

    fso = 0;

}

// Image export function.

function ExportImages( docObj, exportImageTools, exportFolder, fso )

{

    // specifying export settings

    var imageOptions = exportImageTools.NewImageSavingOptions();

    imageOptions.Format = "bmp";

    imageOptions.ColorType = "FullColor";

    imageOptions.Resolution = 100;

    // page-by-page export

    var pages = docObj.Pages;

    var i i

    for( i = 0; i < pages.Count; i++ ) {

        var fileName = fso.BuildPath( exportFolder, "page" + (i+1) + ".bmp" );

        pages.Item(i).SaveAs( fileName, imageOptions );

    }

}

// The procedure that exports info about the document

function ExportDocInfo(docObj, txtFile)

{

    txtFile.WriteLine( "Doc info:" );

    txtFile.WriteLine("IsAssembled " + docObj.IsAssembled);

    txtFile.WriteLine("IsVerified " + docObj.IsVerified);

    txtFile.WriteLine("IsExported " + docObj.IsExported);

    txtFile.WriteLine("ProcessingErrors " + docObj.ProcessingErrors);

    txtFile.WriteLine("ProcessingWarnings " + docObj.ProcessingWarnings);

    txtFile.WriteLine("TotalSymbolsCount " + docObj.TotalSymbolsCount);

    txtFile.WriteLine("RecognizedSymbolsCount " + docObj.RecognizedSymbolsCount);

    txtFile.WriteLine("UncertainSymbolsCount " + docObj.UncertainSymbolsCount);

    txtFile.WriteLine();

}

// The procedure that exports fields from the fields collection

function ExportFields(fields, txtFile, indent)

{

    var i

    for( i = 0; i < fields.Count; i++ ) {

        ExportField( fields.Item(i), txtFile, indent );

    }

}

// Checks if the field value is null

// If the field value is invalid, any attempt to access this field (even

// to check if it is null) may cause an exception

function IsNullFieldValue( field )

{

    try {

        return ( field.Value == null );

    } catch( e ) {

        return true;

    }

}

// Field export procedure

function ExportField(field, txtFile, indent)

{

    // saving field name

    txtFile.Write(indent + field.Name);

    // saving field value, if it can be accessed

    if( IsNullFieldValue( field ) ) {

        txtFile.WriteLine();

    } else {

        txtFile.WriteLine("    " + field.Text);

    }

    if( field.Children != null ) {

        // exporting child fields

        ExportFields( field.Children, txtFile, indent + "    " );

    } else if( field.Items != null ) {

        // exporting field instances

        ExportFields( field.Items, txtFile, indent + "    " );

    }

}

// The function creates an export folder and returns a full path to this folder

function CreateExportFolder(templateName, fso)

{

    var docFolder, folderName

    // main folder

    var exportFolder = "d:\\ScriptExport";

    if( !fso.FolderExists(exportFolder) ) {

        fso.CreateFolder (exportFolder);

    }

    // the folder of the specified Document Definition

    docFolder = fso.BuildPath(exportFolder, templateName);

    if( !fso.FolderExists(docFolder) ) {

        fso.CreateFolder(docFolder);

    }

    // the folder of the exported document

    var i = 1;

    folderName = fso.BuildPath(docFolder, i);

    while( fso.FolderExists(folderName) ) {

        i++;

        folderName = fso.BuildPath(docFolder, i);

    }

    fso.CreateFolder(folderName);

    return folderName;

}

使用外部 COM 组件

[VBScript]

dim autoExport

set autoExport = CreateObject( "AutomationExport.Exporter" )

autoExport.Export me, ExportTools

[JScript]

var autoExport = new ActiveXObject("AutomationExport.Exporter");

autoExport.Export( this, ExportTools );

VisualBasic 中的 ActiveX 组件的代码

以下提供的是 AutomationExport project 中的 Exporter 类代码，可在上述脚本中使用。

Option Explicit

Dim mFso As New Scripting.FileSystemObject

' The procedure carries out document export: creates an export folder and

' saves in it page image files, the text file with document fields,

' and information about the document

Public Sub Export(ByRef docObj As Object, ByRef exportTools As Object)

On Error GoTo err_h

    Dim folderName As String

    Dim txtFile As TextStream, fileName As String

    Dim imageExportResult As String, errMessage As String

    ' creating export folder

    folderName = createExportFolder(docObj.templateName)

    If folderName = "" Then

        docObj.Action.Succeeded = False

        docObj.Action.ErrorMessage = "Cannot create export folder"

        Exit Sub

    End If

    ' exporting images

    imageExportResult = exportImages(docObj, exportTools, folderName)

    ' creating the text file

    fileName = mFso.BuildPath(folderName, "doc.txt")

    Set txtFile = mFso.CreateTextFile(fileName, True)

    ' saving info about image export problems

    If imageExportResult <> "" Then

        txtFile.WriteLine imageExportResult

        errMessage = errMessage & imageExportResult

    End If

    ' exporting info about document

    exportDocInfo docObj, txtFile

    ' exporting fields

    txtFile.WriteLine "Fields:"

    If Not exportFields(docObj.Children, txtFile, "") Then

       errMessage = errMessage & " Error during export data"

    End If

    txtFile.Close

    ' if errors occur during export, reset the

    ' export success flag to False

    If errMessage <> "" Then

        docObj.Action.Succeeded = False

        docObj.Action.ErrorMessage = errMessage

    End If

    Set txtFile = Nothing

    Set mFso = Nothing

Exit Sub

err_h:

    docObj.Action.Succeeded = False

    docObj.Action.ErrorMessage = Err.Description

    txtFile.Close

    Set mFso = Nothing

End Sub

' Image export function.If an error occurs when exporting images,

' it returns a message about the error, otherwise it returns an empty string

Private Function exportImages(ByRef docObj As Object, ByRef exportTools As Object, _

    ByVal exportFolder As String) As String

On Error GoTo err_h

    Dim pages As Object, page As Object, imageOptions As Object

    Dim fileName As String, pageNum As Long

    exportImages = ""

    ' specifying export settings

    Set imageOptions = exportTools.NewImageSavingOptions

    imageOptions.Format = "png"

    imageOptions.ColorType = "GrayScale"

    imageOptions.Resolution = 300

    ' page-by-page export

    Set pages = docObj.pages

    pageNum = 1

    For Each page In pages

        fileName = mFso.BuildPath(exportFolder, page.templateName + "_page" & pageNum & "." & imageOptions.Format)

        page.SaveAs fileName, imageOptions

        pageNum = pageNum + 1

    Next page

Exit Function

err_h:

    exportImages = Err.Description

End Function

' The procedure that exports info about the document

Private Sub exportDocInfo(ByRef docObj As Object, ByRef txtFile As TextStream)

On Error GoTo err_h

    txtFile.WriteLine "Doc info:"

    txtFile.WriteLine ("DocumentId " & docObj.Id)

    txtFile.WriteLine ("IsAssembled " & docObj.IsAssembled)

    txtFile.WriteLine ("IsVerified " & docObj.IsVerified)

    txtFile.WriteLine ("IsExported " & docObj.IsExported)

    txtFile.WriteLine ("ProcessingErrors " & docObj.ProcessingErrors)

    txtFile.WriteLine ("ProcessingWarnings " & docObj.ProcessingWarnings)

    txtFile.WriteLine ("TotalSymbolsCount " & docObj.TotalSymbolsCount)

    txtFile.WriteLine ("RecognizedSymbolsCount " & docObj.RecognizedSymbolsCount)

    txtFile.WriteLine ("UncertainSymbolsCount " & docObj.UncertainSymbolsCount)

    txtFile.WriteLine

Exit Sub

err_h:

    txtFile.WriteLine Err.Description

End Sub

' The procedure that exports fields from the fields collection

Private Function exportFields(ByRef fields As Object, ByRef txtFile As TextStream, ByVal indent As String) As Boolean

On Error GoTo err_h

    Dim curField As Object

    exportFields = True

    For Each curField In fields

        If Not exportField(curField, txtFile, indent) Then

            exportFields = False

        End If

    Next curField

Exit Function

err_h:

    txtFile.WriteLine Err.Description

    exportFields = False

End Function

' Checks if the field value is null

' If the value is invalid, any attempt to access this field (even

' to check if it is null) may cause an exception

Function IsNullFieldValue(ByRef field As Object) As Boolean

On Error GoTo err_h

    IsNullFieldValue = IsNull(field.Value)

Exit Function

err_h:

    IsNullFieldValue = True

End Function

' Field export function

Private Function exportField(ByRef field As Object, ByRef txtFile As TextStream, _

    ByVal indent As String) As Boolean

On Error GoTo err_h

    Dim result As Boolean

    result = True

    ' saving field name

    txtFile.Write (indent & field.Name)

    ' saving field value if it can be accessed

    If Not IsNullFieldValue(field) Then

        txtFile.WriteLine ("    " & field.Value)

    Else

        txtFile.WriteLine

    End If

    If Not field.Children Is Nothing Then

        ' exporting child fields

        result = result And exportFields(field.Children, txtFile, indent & "    ")

    ElseIf Not field.Items Is Nothing Then

        ' exporting field instances

        result = result And exportFields(field.Items, txtFile, indent & "    ")

    End If

    exportField = result

Exit Function

err_h:

    txtFile.WriteLine Err.Description

    exportField = False

End Function

' The function creates an export folder and returns a full path to this folder

Private Function createExportFolder(ByVal templateName As String) As String

On Error GoTo err_h

    Dim docFolder As String, folderName As String

    ' main folder

    Const exportFolder = "d:\AutomationExport"

    If mFso.FolderExists(exportFolder) = False Then

        mFso.CreateFolder (exportFolder)

    End If

    ' the folder of the specified Document Definition

    docFolder = mFso.BuildPath(exportFolder, templateName)

    If mFso.FolderExists(docFolder) = False Then

        mFso.CreateFolder (docFolder)

    End If

    ' the folder of the exported document

    Dim i As Long

    i = 1

    folderName = mFso.BuildPath(docFolder, i)

    While mFso.FolderExists(folderName)

        i = i + 1

        folderName = mFso.BuildPath(docFolder, i)

    Wend

    mFso.CreateFolder (folderName)

    createExportFolder = folderName

Exit Function

err_h:

    createExportFolder = ""

End Function

使用以 .Net( C# ) 编写的外部组件

要使用以 .Net 编写的外部组件，请执行以下操作：

  1. 创建 ClassLibrary 类型的项目
  2. 将 ControllerInterop.dll 添加至项目参考 – ABBYY.FlexiCapture 将会出现在参考列表中，且脚本对象的所有接口将在项目中可用。
  3. 定义 disp 接口及用来实现该接口的类，以及 ProgId （这将可以使用 .Net 组件，如同使用脚本代码中的 ActiveX 一样）。
  4. 创建项目之后，注册已生成的类型库（可以通过启用项目属性中的相应选项而自动完成）。
  5. 从导出代码中，以常用方式调用组件方法：

[VBScript]

dim autoExport

set autoExport = CreateObject( "ExportLibrary1.Export" )

autoExport.ExportDocument me, ExportTools

[JScript]

var autoExport = new ActiveXObject("ExportLibrary1.Export");

autoExport.ExportDocument( this, ExportTools );

以下列出的是此类组件的代码：

using System;

using System.Runtime.InteropServices;

using System.IO;

using FlexiCaptureScriptingObjects;

namespace ExportLibrary1

{

// The interface of the export component which can be accessed from the script

// When creating a new component, generate a new GUID

[Guid("32B10C3B-EEA3-4194-B0A0-E358C310225A")]

[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]

public interface _cExport

{

[DispId(1)]

void ExportDocument(ref IExportDocument DocRef, ref IExportTools Tools);

}

// The class that implements export component functionality

// When creating a new component, generate a new GUID

// and set your ProgId

[Guid("3BA19BD7-C6DC-4f63-BC08-0D95254DADC3")]

[ClassInterface(ClassInterfaceType.None)]

[ProgId("ExportLibrary1.Export")]

[ComVisible(true)]

public class Export : _cExport

{

public Export()

{

}

// The function carries out document export: creates an export folder and

// saves in it page image files,

// the text file with document fields, and information about the document

public void ExportDocument( ref IExportDocument docRef, ref IExportTools exportTools )

{

try

{

string exportFolder = createExportFolder( docRef.TemplateName );

exportImages( docRef, exportTools, exportFolder );

// creating the text file

string fileName = exportFolder + "//" + "doc.txt";

StreamWriter sw = File.CreateText( fileName );

// exporting info about document

exportDocInfo( docRef, sw );

// exporting fields

sw.WriteLine( "Fields:" );

exportFields( docRef.Children, sw, "" );

sw.Close();

}

catch( Exception e )

{

docRef.Action.Succeeded = false;

docRef.Action.ErrorMessage = e.ToString();

}

}

// The function creates an export folder and returns a full path to this folder

private string createExportFolder( string templateName )

{

string docFolder, folderName;

// main folder

string exportFolder = "d:\\DotNetExport";

if( !Directory.Exists(exportFolder) )

{

Directory.CreateDirectory(exportFolder);

}

// the folder of the specified Document Definition

docFolder = exportFolder + "\\" + templateName;

if( !Directory.Exists(docFolder) )

{

Directory.CreateDirectory( docFolder );

}

// the folder of the exported document

int i = 1;

folderName = docFolder + "\\" + i;

while( Directory.Exists(folderName) )

{

i++;

folderName = docFolder + "\\" + i;

}

Directory.CreateDirectory(folderName);

return folderName;

}

// Image export function.

private void exportImages( IExportDocument docRef, IExportTools exportTools, string exportFolder )

{

string baseFileName = exportFolder + "\\page_";

IExportImageSavingOptions imageOptions = exportTools.NewImageSavingOptions(); ;

imageOptions.Format = "bmp";

imageOptions.ColorType = "FullColor";

imageOptions.Resolution = 100;

int i = 1;

foreach( IExportPage curPage in docRef.Pages )

{

string fileName = baseFileName + i + ".bmp";

curPage.SaveAs( fileName, imageOptions );

i++;

}

}

// Exporting info about document

private void exportDocInfo( IExportDocument docRef, StreamWriter sw )

{

sw.WriteLine( "Doc info:" );

sw.WriteLine("DocumentId " + docRef.Id );

sw.WriteLine("IsAssembled " + docRef.IsAssembled);

sw.WriteLine("IsVerified " + docRef.IsVerified);

sw.WriteLine("IsExported " + docRef.IsExported);

sw.WriteLine("ProcessingErrors " + docRef.ProcessingErrors);

sw.WriteLine("ProcessingWarnings " + docRef.ProcessingWarnings);

sw.WriteLine("TotalSymbolsCount " + docRef.TotalSymbolsCount);

sw.WriteLine("RecognizedSymbolsCount " + docRef.RecognizedSymbolsCount);

sw.WriteLine("UncertainSymbolsCount " + docRef.UncertainSymbolsCount);

sw.WriteLine();

}

// Exporting field collection

private void exportFields( IExportFields fields, StreamWriter sw, string indent )

{

foreach( IExportField curField in fields )

{

exportField( curField, sw, indent );

}

}

// Checks if the field value is null

// If the field value is invalid, any attempt to access this field (even

// to check if it is null) may cause an exception

private bool IsNullFieldValue( IExportField field )

{

try

{

return ( field.Value == null );

}

catch( Exception e )

{

return true;

}

}

// Exporting the specified field

private void exportField( IExportField field, StreamWriter sw, string indent )

{

// saving the field name

sw.Write( indent + field.Name );

// saving the field value it can be accessed

if( IsNullFieldValue( field ) )

{

sw.WriteLine();

}

else

{

sw.WriteLine( " " + field.Text );

}

if( field.Children != null )

{

// exporting child fields

exportFields( field.Children, sw, indent + " " );

}

else if( field.Items != null )

{

// exporting field instances

exportFields( field.Items, sw, indent + " " );

}

}

}

}
导出处理程序
该样本代码演示保存有关已导出文档信息并将结果导出至文本文件的简单导出处理程序。在该示例中使用了两个文本文件：一个包含成功导出文档的列表，另一个包含导出期间返回错误的文档的列表。

[VBScript]

dim curDoc

dim fso, fileErrorName, txtErrorFile, fileSucceedName, txtSucceedFile

set fso = CreateObject("Scripting.FileSystemObject")

' creating the file with failed documents

fileErrorName = "d:\ExportResults\ErrorsDocuments.txt"

set txtErrorFile = fso.CreateTextFile( fileErrorName, true )

' creating the file with successfully exported documents

fileSucceedName = "d:\ExportResults\SucceedDocuments.txt"

set txtSucceedFile = fso.CreateTextFile( fileSucceedName, true )

Dim i, exprotResult, docInfo

' iterating the collection of exported documents

for i = 0 To me.Count - 1

    set exportResult = me.Item(i)

    docInfo = "DocumentId:" & exportResult.Document.Id

    if exportResult.Succeeded then

        docInfo = docInfo & " - Exported successfully."

        txtSucceedFile.WriteLine docInfo

    else

        docInfo = docInfo & " - Export error: " & exportResult.ErrorMessage

        txtErrorFile.WriteLine docInfo

    end if

next

txtErrorFile.Close

txtSucceedFile.Close

[JScript]

var fso = new ActiveXObject("Scripting.FileSystemObject");

// creating the files with failed documents

var fileErrorName = "d:\\ExportResults\\ErrorsDocuments.txt";

var txtErrorFile = fso.CreateTextFile( fileErrorName, true );

// creating the file with successfully exported documents

var fileSucceedName = "d:\\ExportResults\\SucceedDocuments.txt"

var txtSucceedFile = fso.CreateTextFile( fileSucceedName, true );

var i

// iterating the collection of exported documents

for( i = 0; i < Documents.Count; i++ ) {

    var curDoc = Documents.Item( i );

    var docInfo = "DocumentId: " + curDoc.Id;

   if( curDoc.Action.Succeeded ) {

        docInfo = docInfo + ". Exported successfully.Result:" + curDoc.Action.Result;

        txtSucceedFile.WriteLine( docInfo );

    } else {

        docInfo = docInfo + ".Export error: " + curDoc.Action.ErrorMessage + "  Result:" + curDoc.Action.Result;

        txtErrorFile.WriteLine( docInfo );

    }

}

txtErrorFile.Close();

txtSucceedFile.Close();


其他样本脚本

字段值组装

类型：文档组装脚本

该样本代码演示如何组装带有一页重复节段的文档（无附录页面）。页面将按照“PageIndex”字段值的升序合并为一个文档。

[VBScript]

dim lastValue, pageIndex, sections, field, validPages(), validPagesSize, pageIsValid

lastValue = ""

pageIndex = 0

for i = 0 to me.Count - 1

set sections = me.Item( i ).Sections

redim validPages( 0 )

validPagesSize = 0

' Check fields in sections

for j = 0 to sections.Count - 1

if sections.Item( j ).HasField( " PageIndex " ) then

set field = sections.Item( j ).Field( " PageIndex " )

if not( field.Text = "" ) then

if lastValue = "" or field.Text > lastValue then

' Valid page order

' Mark all pages of the section as valid

for k = 0 to sections.Item( j ).Regions.Count - 1

validPagesSize = validPagesSize + 1

redim preserve validPages( validPagesSize )

validPages(validPagesSize - 1) = sections.Item( j ).Regions.Item( k ).PageIndex

next

end if

lastValue = field.Text

end if

end if

next

' Now mark all invalid pages

for j = 0 to me.Item( i ).Pages.Count - 1

pageIsValid = false

' Check if this page is valid

for k = 0 to validPagesSize - 1

if validPages(k) = j then

pageIsValid = true

exit for

end if

next

if not pageIsValid then

AssemblingErrors.AddRedundantPageError( pageIndex )

end if

pageIndex = pageIndex + 1

next

next

[JScript]

var lastValue = "";

var pageIndex = 0;

for( i = 0; i < this.Count; i++ ) {

var sections = this.Item( i ).Sections;

var validPages = new Array();

// Check fields in sections

for( j = 0; j < sections.Count; j++ ) {

if( sections.Item( j ).HasField( "PageIndex" ) ) {

var field = sections.Item( j ).Field( " PageIndex " )

if( field.Text != "" ) {

if( lastValue == "" || field.Text > lastValue ) {

// Valid page order

// Mark all pages of the section as valid

for( k = 0; k < sections.Item( j ).Regions.Count; k++ ) {

validPages.push( sections.Item( j ).Regions.Item( k ).PageIndex );

}

}

lastValue = field.Text;

}

}

}

// Now mark all invalid pages

for( j = 0; j < this.Item( i ).Pages.Count; j ++ ) {

var pageIsValid = false;

// Check if this page is valid

for( k = 0; k < validPages.length; k++ ) {

if( validPages[k] == j ) {

pageIsValid = true;

break;

}

}

if( !pageIsValid ) {

AssemblingErrors.AddRedundantPageError( pageIndex );

}

pageIndex ++;

}

}

文档合并事件

类型：页面已移动事件的处理程序

该样本代码演示如何将“页面已移动”事件转换为“文档合并”事件。该脚本的逻辑如下：如果文档的所有页面均已移动，则该文档已完全嵌入到目标文档中。

该脚本将在页面已移动事件上启动。该 Events.OnDocumentsMerge 程序是用来处理“文档合并”事件的程序。

[VBScript]

dim currentDocument, currentDocumentPagesMoved

set currentDocument = Pages( 0 ).Document

currentDocumentPagesMoved = 0

for i = 0 to Pages.Count - 1

if Pages( i ).Document.Id <> currentDocument.Id then

' The next document

if currentDocument.Pages.Count = currentDocumentPagesMoved then

' All pages are moved from the previous document.The event is triggered.

Events.OnDocumentsMerge TargetDocument, currentDocument

end if

Set currentDocument = Pages( i ).Document

else

next

if currentDocument.Pages.Count = currentDocumentPagesMoved Then

' All pages are moved from the last document.The event is spawned.

Events.OnDocumentsMerge TargetDocument, currentDocument

end if

[JScript]

var currentDocument = Pages( 0 ).Document;

var currentDocumentPagesMoved = 0;

for( i = 0; i < Pages.Count - 1; i++ ) {

if( Pages( i ).Document.Id != currentDocument.Id ) {

// The next document

if( currentDocument.Pages.Count == currentDocumentPagesMoved ) {

// All pages are moved from the previous document.The event is spawned.

Events.OnDocumentsMerge( TargetDocument, currentDocument );

}

currentDocument = Pages( i ).Document;

} else {

currentDocumentPagesMoved = currentDocumentPagesMoved + 1;

}

}

if( currentDocument.Pages.Count == currentDocumentPagesMoved ) {

// All pages are moved from the last document.The event is spawned.

Events.OnDocumentsMerge( TargetDocument, currentDocument )

}

在文档合并上合并文档注册参数

类型：文档合并事件的处理程序

该样本代码演示在文档合并上合并文档注册参数的最简单方法。当将文档合并至目标文档时，仅那些新文档中的参数将添加至缺少该参数的文档中。

该代码应存储在共享模块中。该 OnDocumentsMerge 程序必须在合并文档之时调用。详情请参阅文档合并事件的描述。

[VBScript]

Sub MergeProperty(ByVal TargetDocument, ByVal propertyName, ByVal propertyValue)

If TargetDocument.Properties.Get(propertyName) = "" Then

' There is no such a paremeter in the document.

TargetDocument.Properties.Set(propertyName, propertyValue)

End If

End Sub

Sub OnDocumentsMerge(ByVal Target, ByVal Document)

' Merging registration parameters.

For i = 0 To Document.Properties.Count - 1

MergeProperty(Target, Document.Properties(i).Name,

Document.Properties(i).Value)

Next

End Sub

[JScript]

function MergeProperty( TargetDocument, propertyName, propertyValue )

{

if( TargetDocument.Properties.Get( propertyName ) == "" ) {

// There is no such a paremeter in the document.

TargetDocument.Properties.Set( propertyName, propertyValue );

}

}

function OnDocumentsMerge( Target, Document )

{

// Merging registration parameters.

for( i = 0; i < Document.Properties.Count - 1; i++ ) {

MergeProperty( Target, Document.Properties(i).Name, Document.Properties(i).Value );

}

}


从 FormReader 6.5 规则中迁移并导出至 FlexiCapture 10 脚本

从 FormReader 规则迁移至 FlexiCapture 脚本规则

If-Then 规则

函数和方法中的更改：

  1. Error(field, message).使用以下要检查的单元属性的组合来代替该函数：CheckSucceeded、ErrorMessage 和 FocusedField。

    例如，该 FormReader 6.5 代码

    if [City].IsEmpty() then Error( [City] , "the city name should be filled")

    应更改为

    [VBScript]

    if me.Field("City").Text = "" then

    me.CheckSucceeded = false

    me.ErrorMessage = "the city name should be filled"

    me.FocusedField = me.Field("City")

    else

    me.CheckSucceeded = true

    end if

    [JScript]

    if( Field("City").Text == "" ) {

    CheckSucceeded = false;

    ErrorMessage = "the city name should be filled";

    FocusedField = Field("City");

    } else {

    CheckSucceeded = true;

    }

  2. 字符串操作。以下列出的是在 FlexiCapture 10 中实现 If-Then 规则中可用的字符串运算的说明。

    [VBScript]

    .Length() – 使用类似函数 Len(string)

    .CmpNoCase(str) – 要进行不区分大小写的字符串比较，请使用 LCase(string) 或 UCase(string) 函数

    .Mid(position, count) – 使用类似函数 Mid(string, pos, count)

    [JScript]

    .Length() – 使用字符串变量的类似长度属性

    .CmpNoCase(str) – 要进行不区分大小写的字符串比较，请使用字符串变量的 toLowerCase() 或 toUpperCase() 方法

    .Mid(position, count) – 使用字符串变量的类似 substr(start, [length]) 方法

  3. 实数运算。

    [VBScript]

    Floor(d), Ceil(d) – VBScript 中无现有等价值，需要时可创建自己的实现

    Round(d),Round(d, i) – 使用类似函数 Round(d, [i])

    [JScript]

    Floor(d), Ceil(d) – 使用 Math 对象的 floor(d) 和 ceil(d) 方法

    Round(d) – 使用 Math 对象的 round(d) 方法

    Round(d, i) – JScript 中无现有等价值，需要时可创建自己的实现。

  4. 文本字段运算

    IsEmpty() – 比较 Field("fieldName") 字段的文本值。具有空字符串的文本

    Text() – 使用 Field("fieldName").Text

    Length() – 获取字段文本值，然后确定上述 2 中描述的已生成字符串值的长度。

    SetText(text) – Use Field("fieldName").Text = text

  5. 复选标记运算

    IsValid() – 您可以使用 IsVerified 属性

    Value() – Field("fieldName").Value 现在将返回布尔值，且不是 FormReader 6.5 中的 0 或 1

    SetValue(newValue) – Use Field("fieldName").Value = newValue

  6. 复选标记组运算

    IsValid() – 您可以使用 IsVerified 属性确定组中字段的确定性。要计算已选择多少复选框，请重复选择组中的复选标记，如“复选标记组复选”示例中所示。（请参阅 创建自定义规则的样本脚本）。

    Value() – 要获取已选复选标记数，您可使用以下两种方法之一：

    1. 对组中的复选标记指定数字名：0、1 等。然后，Field("groupName").Value 将包含已选复选标记数或一组数字（选择了多个复选标记），或空字符串（未选择任何复选标记）。
    2. 仅将给定组中的复选标记添加到规则中，其顺序与复选标记在组中相互顺序相同。然后在组中重复选择复选框（如“复选标记组选择”示例中所示）。

    Text() - Use Field("groupName").Value

    SetValue(newValue) – 要更改复选标记组的值，您必须设置/重置该组中所需的复选标记。该复选标记必须包含在规则中，且必须为这些复选标记启用 ReadOnly 标志。

自动化规则

要在 FormReader 6.5 中创建的 FlexiCapture 10 自动化组件中进行使用，您必须在自动化组件中作出如下更改：

  1. 用来实现规则逻辑的外部组件的方法应从脚本规则中调用（如示例中所示）。该方法的签名无特定要求。但请注意，从脚本规则中传递至外部组件方法的参数必须与该方法所选择的签名一致，如下所示：

    Public Sub Check(ByRef docObj As Object)

    2. docObj – 这是要选取的文档单元的引用。

  2. 在 FormReader 6.5 中使用的 fieldsObj 对象的方法应替换为 FlexiCapture 10 中受支持的方法。下表列出了 fieldsObj 对象的旧方法和新方法的对应关系。
fieldsObj 方法 | VisualBasic 中可替换旧方法的样本代码
GetFieldsCount As Integer Dim count as Long

count = docObj.Fields.Count()
GetFieldsNames(Names As Variant) Dim i As Long, count As Long

Dim Names() As String

count = docObj.Fields.count

ReDim Names(count - 1)

For i = 0 To count - 1

Names(i) = docObj.Fields.Item(i).Name

Next
GetFieldsTypes(FieldTypes As Variant) | 不受支持
GetFieldByIndex(Index As Integer, FieldValue As Variant) Dim fieldValue

fieldValue = docObj.Fields.Item(index).Value
GetFieldByName(Name As String, FieldValue As Variant) Dim fieldValue

fieldValue = docObj.Field(Name).Value
GetTableColumnsList(FieldIndex As Integer, TableColumns As Variant) 为了使用表格列，请将列字段添加至规则。检查已成功匹配的列是否与任何其他字段的列相同：

Dim isMatched isMatched = docObj.Field("ColumnName").IsMatched

SetFieldByIndex(Index As Integer, FieldValue As Variant) | docObj.Fields.Item(index).Value = newValue
SetFieldByName(Name As String, FieldValue As Variant) | docObj.Field(Name).Value = newValue
SetTableCellValue(Index As Integer, Row As Integer, Column As Integer, FieldValue As String) 为了使用表格单元，请将列字段添加至规则。

这些字段的运算取决于规则级别。如果为列级别或表级别创建了规则，则该规则将应用至各行，并使用要选取的行中的列值（即，对单元进行运算）：

Dim cell As Object
Set cell = docObj.Field("ColumnName")
Dim cellValue as String
cellValue = cell.Value

因此，您可创建规则，例如，在表格的开头两列中使用数据，以完成第三列：

Dim cellResult As Object
Set cellResult = docObj.Field("ColumnResult")
cellResult.Value = docObj.Field("Column1").Value + docObj.Field("Column2").Value

如果为包含表格（组、节段、文档）的单元级别创建了规则，在您必须重复选择列（如“自动化规则”示例中所述），以访问其单元。

SetSuggestByIndex(Index As Integer, Suggests As String)

Dim suggests() As Variant

' suggestions for the field

' ...

Dim field As Object

Set field = docObj.Fields.Item(index)

For i = LBound(suggests) To UBound(suggests)

field.Suggest suggests(i)

Next
SetSuggestByName(FieldName As String, Suggests As String)

Dim suggests() As Variant

' suggestions for the field

' ...

Dim field As Object

Set field = docObj.Field(Name)

For i = LBound(suggests) To UBound(suggests)

field.Suggest suggests(i)

Next
SetTableCellSuggest(Index As Integer, Row As Integer, Column As Integer, Suggests As String) 可按照对 SetTableCellValue 方法描述的相同方法访问单元字段。

然后，您可以使用已访问的单元，如同使用其他任何字段一样。设置建议将如下所示：

cell.Suggest cellSuggest

  3. 在 FormReader 6.5 中使用的 errorsObj 对象的方法应替换为 FlexiCapture 10 中受支持的方法。下表列出了 errorsObj 对象的旧方法和新方法的对应关系。
errorsObj 方法 | VisualBasic 中可替换旧方法的样本代码
SendFieldError( ErrMsg As String, Index As Integer) | docObj.ErrorMessage = ErrMsg docObj.CheckSucceeded = false docObj.FocusedField = docObj.Fields.Item(index)
SendTableError( ErrMsg As String, FieldIndex As Integer, ErrorCells As Variant ) | docObj.ErrorMessage = ErrMsg docObj.CheckSucceeded = false 如果为表格或列级别创建了规则，则该程序会将已选取行中的所有单元（其字段（列）已添加至规则）标记为错误。要在特定单元上移动焦点，请写下以下代码： docObj.FocusedField = docObj.Field("ColumnName") 如果创建了更高级别的规则，则该程序将不会标记任何单元或将焦点移至任何单元。

从 FormReader 自动化导出中迁移至 FlexiCapture 脚本导出

用来实现规则逻辑的外部组件的方法应从脚本规则中调用（如示例中所示）。该方法的签名无特定要求。但请注意，从脚本规则中传递至外部组件方法的参数必须与该方法所选择的签名一致，如下所示：

Public Sub Check(ByRef docObj As Object, ByRef exportTools As Object)

docObj – 这是对要导出的文档的引用。

exportTools – 这是对 ExportTools 对象的引用

在 FormReader 6.5 中使用的 fieldsObj 对象的方法应替换为应用程序当前版本所支持的方法。下表列出了 fieldsObj 对象的方法之间的对应关系，以及使用要导出的文档的新方式：

fieldsObj 对象的方法 | 新对象模型中的可能实现
GetFieldsCount As
Integer 		要获取要导出的文档中的字段数，请重复选择字段树（如“使用外部 COM 组件”示例中所示），并进行计算。
GetFieldsNames(Names As Variant) | 要获取要导出的文档中的字段名称，请重复选择字段树（如“使用外部 COM 组件”示例中所示），并使用字段名称填写阵列。
GetFieldsTypes(FieldTypes As Variant) | 不受支持。
GetFieldByIndex(Index As Integer, FieldValue As Variant) 通过索引访问将不起作用，因为新文档模型具有分层结构。
可以轻松重复选择字段树（如“使用外部 COM 组件”示例中所示），并使用字段名称填写阵列。
GetFieldByName(Name As String, FieldValue As Variant) Dim fieldValue
fieldValue = docObj.Field(Name).Value


用于处理接口事件的脚本

在 ABBYY FlexiCapture 10 中，您可使用脚本处理接口事件。它允许您配置工作站操作、自定义其接口、在特定条件下更改工作站行为、实施用户命令等。

所有脚本对象均可读写，且未缓存。

对脚本中使用的 ControllerInterop 对象的访问权限取决于对象状态。当前文档状态由 ITaskWindow 接口的 DocumentState() 方法返回。如果文档状态为 DS_Opened，则文档的 ControllerInterop 对象将可读写。对于其他状态，ControllerInterop 对象将为只读。

可使用脚本处理的事件及其参数描述如下。

事件
对象

注：关闭工作站时，将不会保存脚本中的接口更改。在脚本中指定的所有设置将重置为默认值。


事件处理程序

可使用脚本处理的程序 shell 事件列示如下：

在激活文档时
在关闭文档时
在关闭项目时
在文档关闭时
在字段控制激活时
在字段控制取消激活时
在打开文档时
在项目关闭时
在区域更改时
在区域控制绘制时
在从任务返回时
在任务窗口创建时
在任务窗口模式更改时
在文本字段校验时
在用户要求时


在激活文档时

何时启动

该脚本在激活任务窗口中的文档之前启动（通过双击、使用菜单命令等）。

如果将 CanOpen 参数设置为 true，则该文档将在脚本执行之后，在文档编辑器中打开。如果将 CanOpen 参数设置为 false，则该文档将不会打开。

默认情况下，CanOpen 参数的值为 true。

参数

名称 | 类型 | 访问 | 描述
上下文 | ITaskWindow | 读/写 | 任务窗口
DocumentItem | IDocumentItem | 读/写 | 要处理的文档
CanOpen | IBoolean | 读/写 | 指定是否打开文档

注：如果该文档已折叠，则 DocumentItem.PageItems.Count 和 TaskWindow.MainWindow.Selection 属性将返回“0”。


在关闭文档时

何时启动

该脚本将在关闭文档编辑器中的文档（当转至新文档或关闭文档编辑器时）之时，且确认更改之前启动。

如果将 CanClose 参数设置为 false，则该文档将保持打开。如果将 CanClose 参数设置为 true，则该文档将在脚本执行之后关闭。

默认情况下，CanClose 参数的值为 true。

参数

名称 | 类型 | 访问 | 描述
上下文 | IDocumentEditor | 读/写 | 文档编辑器
CanClose | IBoolean | 读/写 | 指定是否关闭文档


在关闭项目时

何时启动

该脚本将在项目关闭时，且显示查询对话框之前启动。如果用户必须在处理之前确认操作，则将会显示查询对话框。

如果将 CanClose 参数设置为 false，则主窗口将保留打开。如果将 CanClose 参数设置为 true，则主窗口将保留关闭。

默认情况下，CanClose 参数的值为 true。

参数

名称 | 类型 | 访问 | 描述
上下文 | IMainWindow | 读/写 | 主窗口
CanClose | IBoolean | 读/写 | 指定是否关闭主窗口


在文档关闭时

何时启动

该脚本在关闭文档编辑器中的文档时并确认该更改之后启动。

参数

名称 | 类型 | 访问 | 描述
上下文 | IDocumentEditor | 读/写 | 文档编辑器


在字段控制激活时

何时启动

该脚本将在激活字段之际启动。

参数

名称 | 类型 | 访问 | 描述
上下文 | IFieldControl | 读/写 | 已激活的字段

注：您不能通过该脚本激活另一字段。


在字段控制激活时

在字段控制取消激活时

何时启动

该脚本将在停止激活字段之前启动。

即将激活的字段已作为输入参数传递至该脚本。该参数可以更改。

参数

名称 | 类型 | 访问 | 描述
上下文 | IFieldControl | 读/写 | 要取消激活的字段
WasModified | bool | 读/写 | 指定该字段是否已修改
NewActiveControl | IBoxedFieldControl | 读/写 | 要激活的字段。 注：如果即将激活的字段属于另一文档，则该属性将具有 null 值。


在打开文档时

何时启动

该脚本在打开文档编辑器中的文档之时（打开新文档窗口或转至新文档时）启动。

当脚本启动时，文档编辑器中的所有窗口均已创建。

参数

名称 | 类型 | 访问 | 描述
上下文 | IDocumentEditor | 读/写 | 文档编辑器

注：不允许从该脚本中关闭文档。使用 DocumentEditor.TaskWindow.CloseEditorWindow(); 命令将会出现错误消息：“System.Runtime.InteropServices.COMException (0x80004005)：文档编辑器无法关闭。”


在项目关闭时

何时启动

该脚本在用户确认了查询对话框中的操作之后，完成关闭项目之际（若是这样）启动。

参数

名称 | 类型 | 访问 | 描述
上下文 | IMainWindow | 读/写 | 主窗口


在区域更改时

何时启动

该脚本将在修改图像窗口中的区域之前启动。

如果将 AllowChangeRegion 参数设置为 true，则该区域将在脚本执行之后更改。如果将 AllowChangeRegion 参数设置为 false，则该区域将不会更改。

默认情况下，AllowChangeRegion 参数的值将为 true。

参数

名称 | 类型 | 访问 | 描述
上下文 | IFieldRegionControl | 读/写 | 该区域
NewRegionParam | IShellRects | 读/写 | 该区域的矩形。对于表格，已传递整个表格区域。 注：更改区域的容器，将返回该容器的新区域，但不返回其子元素的新区域。更改子元素的区域时，将仅返回该子元素的新区域。对于表格，将始终返回表格区域，在更改列或行区域时亦如此。
AllowChangeRegion | IBoolean | 读/写 | 指定是否更改区域。


在区域控制绘制时

何时启动

该脚本将在重新绘制区域之前启动。

如果将 DrawDefault 参数设置为 true，则会取消绘制区域。如果将 DrawDefault 参数设置为 false，则会重新绘制区域。

默认情况下，DrawDefault 参数的值将设置为 false。

参数

名称 | 类型 | 访问 | 描述
上下文 | IFieldRegionControl | 读/写 | 该区域
DrawContext | IDrawContext | 读/写 | 绘制上下文
DrawDefault | IBoolean | 读/写 | 指定是否继续绘制区域


在从任务返回时

何时启动

该脚本将在处理当前任务完成（确认更改之后）之时启动。

参数

名称 | 类型 | 访问 | 描述
上下文 | ITaskWindow | 读/写 | 任务窗口


在任务窗口创建时

何时启动

该脚本将在创建任务窗口之时启动。

参数

名称 | 类型 | 访问 | 描述
上下文 | ITaskWindow | 读/写 | 任务窗口


在任务窗口模式更改时

何时启动

该脚本将在更改任务窗口的视图时（当用户切换至其他视图模式时）启动。

参数

名称 | 类型 | 访问 | 描述
上下文 | ITaskWindow | 读/写 | 任务窗口


在文本字段校验时

何时启动

该脚本将在控件校验文本字段的用户编辑时启动，例如，当尝试从建议中选择值或当控件失去焦点时。

如果将 CanApply 参数设置为 true，则将在脚本执行之后校验用户输入。如果将 CanApply 参数设置为 false，则将撤销用户编辑。

默认情况下，CanApply 参数的值为 true。

参数

名称 | 类型 | 访问 | 描述
上下文 | ITextEditor | 读/写 | 文档字段编辑器
CanApply | IBoolean | 读/写 | 指定是否保存更改


在用户要求时

何时启动

该事件在调用用户命令时发生（提供添加至主菜单或工具栏上的相应项目）。

用户命令标识符可以 CI_UserCommand + <nonnegative integer> 形式表示。

参数

名称 | 类型 | 访问 | 描述
上下文 | IMainWindow | 读/写 | 应用程序的主窗口
CommandId | TCommandID | 读/写 | 用户命令的标识符

注：要将用户命令添加至主菜单或工具栏上，您必须分别使用 IMenu 接口和 IToolbar 接口的 AppendItem/InsertItem 和 AppendButton/InsertButton 方法。必须使用 CI_UserCommand 或 CI_UserCommand + <nonnegative integer> 命令标识符。

以下样本代码演示了如何为带有 CI_UserCommand + 1 命令标识符的用户命令添加菜单项

ABBYY.FlexiCapture.ClientUI.TCommandID userCommand = ABBYY.FlexiCapture.ClientUI.TCommandID.CI_UserCommand;

ABBYY.FlexiCapture.ClientUI.TCommandID userCommand1 = (ABBYY.FlexiCapture.ClientUI.TCommandID) ((int)userCommand + 1);

IMenu menu = MainWindow.MainMenu[0].Submenu;

menu.AppendItem( userCommand1, “User command” );

将禁用为用户命令添加的工具栏按钮或菜单项，除非已添加 On User Command 事件的处理程序。

以下样本代码演示了对 On User Command 事件的处理。

ABBYY.FlexiCapture.ClientUI.TCommandID commandID = ( ABBYY.FlexiCapture.ClientUI.TCommandID )( CommandId );

ABBYY.FlexiCapture.ClientUI.TCommandID userCommand = ABBYY.FlexiCapture.ClientUI.TCommandID.CI_UserCommand;

ABBYY.FlexiCapture.ClientUI.TCommandID userCommand1 = (ABBYY.FlexiCapture.ClientUI.TCommandID) ((int)userCommand + 1);

if( commandID == userCommand1 ) {

<… call necessary methods here …>


对象

本节包含在脚本中使用的对象、其属性和方法的描述。

项目符号 | IBoolean
项目符号 | IBoxedFieldControl
项目符号 | IDocumentEditor
项目符号 | IDocumentItem
项目符号 | IDocumentItems
项目符号 | IDocumentsCollection
项目符号 | IDocumentsWindow
项目符号 | IDrawContext
项目符号 | IErrorControl
项目符号 | IErrorControls
项目符号 | IErrorsWindow
项目符号 | IFieldControl
项目符号 | IFieldRegionControl
项目符号 | IFieldRegionControls
项目符号 | IFormWindow
项目符号 | IImageWindow
项目符号 | IMainMenu
项目符号 | IMainWindow
项目符号 | IMenu
项目符号 | IMenuItem
项目符号 | IPageControl
项目符号 | IPageItem
项目符号 | IPageItems
项目符号 | IPagesCollection
项目符号 | IPoint
项目符号 | ISelection
项目符号 | IShellRational
项目符号 | IShellRect
项目符号 | IShellRects
项目符号 | ITaskWindow
项目符号 | ITextEditor
项目符号 | IToolbar
项目符号 | IToolbarButton
项目符号 | IToolbars
项目符号 | TCommandBarType
项目符号 | TCommandID
项目符号 | TDockingType
项目符号 | TErrorType
项目符号 | TSelectionType
项目符号 | TTaskWindowMode
项目符号 | TTextSize
项目符号 | TUserRole
项目符号 | TWorkWindowType


IBoolean

功能

将输入/输出布尔值传递至脚本。

属性

名称 | 类型 | 访问 | 描述
值 | bool | 读/写 | 值

注：要对 IBoolean 类型的对象指定一个值，您必须使用值属性。例如，要对 IBoolean 类型的 A 对象指定 true 值，您必须写下 A.Value = true，而不是 A = true。


IBoxedFieldControl

功能

存储文档字段控件。

属性

名称 | 类型 | 访问 | 描述
值 | IFieldControl | 读/写 | 字段


IDocumentEditor

功能

表示文档编辑器。

方法

定义 | 描述
Save() : bool | 保存文档

属性

名称 | 类型 | 访问 | 描述
句柄 | int | 只读 | 窗口句柄
文档 | IDocument | 只读 | 要编辑的文档
已修改 | bool | 只读 | 指定文档是否已修改
TaskWindow | ITaskWindow | 只读 | 任务窗口
ImageWindow | IImageWindow | 只读 | 图像窗口
FormWindow | IFormWindow | 只读 | 表格窗口
ErrorsWindow | IErrorsWindow | 只读 | 错误窗口
FormMode | bool | 读/写 | 指定数据显示模式是否已启用


IDocumentItem

功能

表示文档窗口中的文档。

属性

名称 | 类型 | 访问 | 描述
TaskWindow | ITaskWindow | 只读 | 任务窗口
TaskDocument | bool | 只读 | 指定该文档是否属于当前任务
Rect | IShellRect | 只读 | IDocumentsWindow 中的文档矩形
已选择 | bool | 读/写 | 指定文档是否已选择
已展开 | bool | 读/写 | 指定文档是否已展开
集合 | IDocumentItems | 只读 | 包含该文档的集合
文档 | IDocument | 只读 | 该文档
PageItems | IPageItems | 只读 | 包含在文档中的页面集合

注：对于缩略图视图模式，已展开属性值始终为 true。将属性设置为 false 将不会产生错误，但值将保留为 true。


IDocumentItems

功能

IDocumentItem 对象的集合。表示文档窗口中的文档。


IDocumentsCollection

功能

IDocument 对象的集合。


IDocumentsWindow

功能

用于显示缩略图视图或详细信息视图中文档的窗口。

方法

定义 | 描述
EnsureRectVisible( imageRect : IShellRect ) | 移动滚动框，使指定的矩形可见
FindDocumentItem( document : IDocument ) : IDocumentItem | 按 IDocument object of ControllerInterop 检索 IDocumentItem
FindPageItem( page : IPage ) : IPageItem | 按 IPage object of ControllerInterop 检索 IPageItem

属性

名称 | 类型 | 访问 | 描述
句柄 | int | 只读 | 窗口句柄
ClientRect | IShellRect | 只读 | 客户端区域的矩形（在窗口坐标中）。 主窗口左上角的坐标是 (0, 0)。
TotalRect | IShellRect | 只读 | 整个窗口的矩形
ScrollPos | IPoint | 读/写 | 滚动框的位置
定位 | TDockingType | 读/写 | 文档编辑器中 IDocumentsWindow 的位置
比率 | IShellRational | 读/写 | 窗口大小与父级窗口大小的比率
TaskWindow | ITaskWindow | 只读 | 任务窗口
项目 | IDocumentItems | 只读 | 文档集合
SelectedItems | IDocumentItems | 只读 | 所选文档
FocusedItem | IDocumentItem | 只读 | 突出的文档


IDrawContext

功能

表示绘图的上下文。允许您使用脚本绘制基本的几何对象。颜色按照四字节的顺序指定：0x00BBGGRR，即“BB”字节表示蓝色，“GG”字节表示绿色，“RR”字节表示红色。

方法

定义 | 描述
GetPixel( x : int, y : int ) : int | 按其坐标检索像素颜色（以 RGB 表示）。
SetPixel( x : int, y : int, rgbColor : int ) : int | 使用指定的坐标设置像素的颜色（以 RGB 表示）。返回像素的先前颜色（以 RGB 表示）。
Line( start : IPoint, end : IPoint, rgbColor : int ) | 绘制用来连接至“开始”和“结束”点的指定颜色的行。
Rect( rect : IShellRect, rgbColor : int ) | 框绘带有指定颜色框的矩形。
FillRect( rect : IShellRect, rgbColor : int ) | 绘制指定颜色的填充矩形。
FillAlphaRect( rect : IShellRect, rgbColor : int, alpha : int ) | 绘制带有指定的透明度级别的填充矩形。

属性

名称 | 类型 | 访问 | 描述
句柄 | int | 只读 | 上下文的句柄 (HDC)


IErrorControl

功能

表示 IErrorsWindow 列表中的项目。

方法

定义 | 描述
Field( index : int ) : IField | 按照错误的索引检索与错误相关的字段

属性

名称 | 类型 | 访问 | 描述
类型 | TErrorType | 只读 | 错误类型
错误 | 字符串 | 只读 | 错误文本
IsWarning | bool | 只读 | 指定该错误是否为警告消息
FieldsCount | int | 只读 | 与错误相关的字段数
索引 | int | 只读 | 错误窗口中的错误索引


IErrorControls

功能

IErrorControl 对象的集合。


IErrorsWindow

功能

表示错误窗口。

属性

名称 | 类型 | 访问 | 描述
句柄 | int | 只读 | 窗口句柄
DocumentWindow | IDocumentEditor | 只读 | 文档编辑器
控件 | IErrorControls | 只读 | 控件集合
FocusedControl | IErrorControl | 读/写 | 此刻突出的错误
定位 | TDockingType | 读/写 | 在文档编辑器中与 IFormWindow 相关的 IErrorsWindow 位置。
比率 | IShellRational | 读/写 | IErrorsWindow 大小（分子）与 IFromWindow 加上 IErrorsWindow 窗口的总大小（分母）的比率。
ShowAssemblingErrors | bool | 读/写 | 指定是否显示组装错误
ShowRuleErrors | bool | 读/写 | 指定是否显示规则错误
ShowFormatErrors | bool | 读/写 | 指定是否显示格式错误


IFieldControl

功能

表示文档字段的控件。

属性

名称 | 类型 | 访问 | 描述
字段 | IField | 只读 | 文档字段
FormWindow | IFormWindow | 只读 | 表格窗口
TextEditor | ITextEditor | 只读 | 字段编辑器。对于不活动字段，将返回 null。
IsExpandable | bool | 只读 | 指定字段是否可展开。如果将属性设置为 true，则该字段可在表格中展开和折叠。
IsExpanded | bool | 读/写 | 指定字段是否可展开。
IsUserReadOnly | bool | 读/写 | 指定字段是否可编辑。 如果将属性设置为 true，则不允许编辑该字段。 如果将属性设置为 false，则是否编辑该字段取决于“文档定义”设置。
DeviceRect | IShellRect | 只读 | 控件的矩形
FieldFullName | 字符串 | 只读 | 字段的完整名称
FieldRegionControls | IFieldRegionControls | 只读 | 文档字段区域的集合。 对于不带区域的字段，将返回 null。
父级 | IFieldControl | 只读 | 父控件
第一个 | IFieldControl | 只读 | 第一个子级控件
最后一个 | IFieldControl | 只读 | 最后一个子级控件
上一个 | IFieldControl | 只读 | 上一个控件
下一个 | IFieldControl | 只读 | 下一个控件


IFieldRegionControl

功能

表示文档字段的区域。

属性

名称 | 类型 | 访问 | 描述
FieldRegion | IFieldRegion | 只读 | 文档字段的区域
页面 | IPageControl | 只读 | 包含该区域的页面
窗口 | IImageWindow | 只读 | 图像窗口
DeviceRect | IShellRect | 只读 | 窗口矩形
可见 | bool | 读/写 | 指定区域是否可见
FieldControl | IFieldControl | 只读 | 与区域相关的文档字段控件
父级 | IFieldRegionControl | 只读 | 父级区域
第一个 | IFieldRegionControl | 只读 | 第一个子级区域
最后一个 | IFieldRegionControl | 只读 | 最后一个子级区域
上一个 | IFieldRegionControl | 只读 | 上一区域
下一个 | IFieldRegionControl | 只读 | 下一区域


IFieldRegionControls

功能

IFieldRegionControl 对象的集合。


IFormWindow

功能

表示表格窗口。

方法

定义 | 描述
EnsureRectVisible( imageRect : IShellRect ) | 移动滚动框，使指定的矩形可见
FindControl( field : IField ) : IFieldControl | 使用 ControllerInterop 的字段区域值搜索字段控件

属性

名称 | 类型 | 访问 | 描述
句柄 | int | 只读 | 窗口句柄
DocumentWindow | IDocumentEditor | 只读 | 文档编辑器
控件 | IFieldControl | 只读 | 表格的主控件
ClientRect | IShellRect | 只读 | 客户端区域的矩形（在窗口坐标中）。 主窗口左上角的坐标是 (0, 0)。
TotalRect | IShellRect | 只读 | 整个表格的矩形。 如果客户端区域大小小于表格大小，则表格窗口将具有滚动条
ScrollPos | int | 读/写 | 滚动框的位置
ActiveControl | IFieldControl | 读/写 | 表格的活动控件。无法从 On Field Control Activate 和 On Field Control Deactivate 事件中修改该属性的值。
TextSize | TTextSize | 读/写 | 文本大小
定位 | TDockingType | 读/写 | 在文档编辑器中与 IImageWindow 相关的 IFormWindow 位置。
比率 | IShellRational | 读/写 | IFormWindow 加上 IErrorsWindow 窗口的总大小（分子）与 IDocumentEditor 大小（分母）的比率。 如果定位属性值为 DT_Top 或 DT_Bottom，则将测量 y 轴间的比率。 否则，将测量 x 轴间的比率。


IImageWindow

功能

表示图像窗口。

方法

定义 | 描述
EnsureRectVisible( imageRect : IShellRect ) | 移动滚动框，使指定的矩形可见

属性

名称 | 类型 | 访问 | 描述
句柄 | int | 只读 | 窗口句柄
DocumentEditor | IDocuementEditor | 只读 | 文档编辑器
第一页 | IPageControl | 只读 | 第一页
最后一页 | IPageControl | 只读 | 最后一页
ClientRect | IShellRect | 只读 | 客户端区域的矩形（在窗口坐标中）。 主窗口左上角的坐标是 (0, 0)。 如果客户端区域大小小于 TotalRect 大小，则图像窗口将具有滚动条。
TotalRect | IShellRect | 只读 | 所有页面图像占据的区域矩形
ScrollPos | IPoint | 读/写 | 滚动框的位置
定位 | TDockingType | 读/写 | 在文档编辑器中与 IFormWindow 相关的 IImageWindow 位置
比率 | IShellRational | 读/写 | IImageWindow 大小（分子）与 IDocumentEditor 大小（分母）的比率。 如果定位属性值为 DT_Top 或 DT_Bottom，则将测量 y 轴间的比率。 否则，将测量 x 轴间的比率。
ShowBWImages | bool | 读/写 | 指定是否显示黑白图像
ImageScale | IShellRational | 读/写 | 图像比例。可容许值的范围介于 1/8 至 8 之间。
ShowToolbar | IShellRational | 读/写 | 指定是否显示工具栏


IMainMenu

功能

IMenuItem 对象的集合。表示主窗口菜单。

对于该菜单的所有项目，TCommandID 属性将返回 CI_SubMenu。

方法

定义 | 描述
Reset() | 重置菜单（恢复原始视图）。

重要事项！应用重置方法之后，IMainMenu 类型的当前对象将毁坏，并将生成新的对象。因此，当前对象的所有引用都将无效。若尝试使用，将出现异常。您必须定义新对象或重新初始化现有对象。

以下样本代码演示将重置方法应用至对象中。因此，该菜单对象将无效，且无法引用。

// Define a new IMainMenu object and initialize it

IMainMenu menu = TaskWindow.MainWindow.MainMenu;

// Call the Reset method

menu.Reset();


IMainWindow

功能

表示主窗口。

属性

名称 | 类型 | 访问 | 描述
句柄 | int | 只读 | 窗口句柄
MainMenu | IMainMenu | 只读 | 主菜单
工具栏 | IToolbars | 只读 | 工具栏集合
WorkWindowType | TWorkWindowType | 只读 | 工作窗口的类型
TaskWindow | ITaskWindow | 只读 | 任务窗口
UserRole | TUserRole | 只读 | 用户角色
选项 | ISelection | 只读 | 选项


IMenu

功能

IMenuItem 对象的集合。表示菜单或子菜单。

方法

定义 | 描述
Find( commandId : TCommandID ) : int | 搜索集合中首个带有指定命令标识符的项目的索引。
Delete( index : int ) | 按其集合中的索引删除项目。
InsertItem( index : int, commandId : TCommandID, text : string ) | 插入带有指定命令标识符 commandId 的项目及索引位置的文本菜单项的文本。 可使用任何标识符（包括 CI_SubMenu 和 CI_Separator），CI_Undefined 除外。 对于 CI_Separator 标识符，将忽略 Text 参数。
AppendItem( commandId : TCommandID, text : string ) | 附加带有指定命令标识符 commandId 的项目及菜单结尾的文本菜单项的文本。 可使用任何标识符（包括 CI_SubMenu 和 CI_Separator），CI_Undefined 除外。 对于 CI_Separator 标识符，将忽略 Text 参数。


IMenuItem

功能

表示菜单项。

属性

名称 | 类型 | 访问 | 描述
命令 | TCommandID | 只读 | 该命令标识符。对于子菜单标题，将返回 CI_SubMenu。对于分隔符，将返回 CI_Separator。 如果 TCommandID 值之间无命令的标识符，将返回 CI_Undefined。
启用 | bool | 读/写 | 指定是否启用菜单项。 如果将属性设置为 false，则将禁用所有带有指定标识符（命令属性）的菜单项。 如果将属性设置为 true，则请根据程序的内部逻辑启用菜单项。 对于分隔符和子菜单标题，该属性将始终为 true。
文本 | 字符串 | 读/写 | 菜单项的文本。 注：该属性不允许更改菜单栏项的文本：文件、编辑、视图等。
子菜单 | IMenu | 只读 | 子菜单。如果缺少子菜单，将返回 null。


IPageControl

功能

表示图像窗口中的页面。

方法

定义 | 描述
ImageToDevice( imageRect : IShellRect ) : IShellRect | 将图像坐标转换为窗口坐标

属性

名称 | 类型 | 访问 | 描述
页面 | IPage | 只读 | 页面
ImageWindow | IImageWindow | 只读 | 图像窗口
DeviceRect | IShellRect | 只读 | 页面矩形
第一个 | IFieldRegionControl | 只读 | 第一个子级区域
最后一个 | IFieldRegionControl | 只读 | 最后一个子级区域
上一页 | IPageControl | 只读 | 上一页
下一页 | IPageControl | 只读 | 下一页


IPageItem

功能

表示文档窗口中的页面。

属性

名称 | 类型 | 访问 | 描述
TaskWindow | ITaskWindow | 只读 | 任务窗口
DeviceRect | IShellRect | 只读 | IDocumentsWindow 中页面占据的矩形
已选择 | bool | 读/写 | 指定该页面是否已选择
DocumentItem | IDocumentItem | 只读 | 包含页面的文档
页面 | IPage | 只读 | 页面


IPageItems

功能

IPageItem 对象的集合。


IPagesCollection

功能

IPage 对象的集合。


IPoint

功能

表示某点。

属性

名称 | 类型 | 访问 | 描述
X | int | 读/写 | X 坐标
Y | int | 读/写 | Y 坐标


ISelection

功能

表示文档或页面的选项。

属性

名称 | 类型 | 访问 | 描述
类型 | TSelectionType | 只读 | 选项类型
DocumentItems | IDocumentItems | 只读 | 所选文档
文档 | IDocumentsCollection | 只读 | 与所选文档对应的 IDocument 类型的对象
PageItems | IPageItems | 只读 | 所选页面
文档结构 | IPagesCollection | 只读 | 与所选页面对应的 IPage 类型的对象

注：如果该文档已折叠，则 DocumentItem.PageItems.Count 和 TaskWindow.MainWindow.Selection 属性将返回“0”。


IShellRational

功能

表示分数。

属性

名称 | 类型 | 访问 | 描述
分子 | int | 读/写 | 分子
分母 | int | 读/写 | 分母


IShellRect

功能

表示矩形。

方法

定义 | 描述
ToString() : string | 表示“[左, 上, 右, 下]”字符串形式的矩形

属性

名称 | 类型 | 访问 | 描述
左 | int | 读/写 | 左坐标
右 | int | 读/写 | 右坐标
顶部 | int | 读/写 | 上坐标
底部 | int | 读/写 | 下坐标


IShellRects

功能

IShellRect 对象的集合。


ITaskWindow

功能

表示任务窗口。

方法

定义 | 描述
DocumentState( document : IDocument ) : TDocumentState | 在任务窗口中检索文档状态。 注：无法从辅助线程中调用该方法。
OpenDocument( document : IDocument ) | 将文档状态从 DS_Closed 更改为 DS_Opened。
CloseDocument( document : IDocument ) | 将文档状态从 DS_Opened 更改为 DS_Closed。
EditDocument( document : IDocument, page : IPage ) : IDocumentEditor | 在文档编辑器中打开该文档以进行编辑。该文档状态将从 DS_Closed 更改为 DS_Edited。 注：如果该文档已成功打开，则将返回 IDocumentEditor 类型的对象。否则将返回 null。
CloseEditorWindow() | 关闭已打开的文档编辑器。将文档状态更改为 DS_Closed。 重要事项！关闭文档编辑器时，所有未保存的更改将丢失。

属性

名称 | 类型 | 访问 | 描述
句柄 | int | 只读 | 窗口句柄
MainWindow | IMainWindow | 只读 | 主窗口
批处理文件 | IBatch | 只读 | 批处理文件
模式 | TTaskWindowMode | 读/写 | 视图模式
DocumentsWindow | IDocumentsWindow | 只读 | 文档窗口
EditorWindow | IDocumentEditor | 只读 | 文档编辑器


ITextEditor

功能

表示文档字段编辑器。

方法

定义 | 描述
GetSelection( startPos : int, endPos : int ) | 获取选项的开头和结尾。如果未选择字段，则将对 startPos 和 endPos 参数指定“0”。
SetSelection( startPos : int, endPos : int ) | 设置新选项。
ApplyChanges() : bool | 应用所作更改。
ResetChanges() | 重置所作更改。
ShowSuggestList() | 显示建议列表（若存在）。否则，将不显示任何内容。

属性

名称 | 类型 | 访问 | 描述
控件 | IFieldControl | 只读 | 字段控件
已修改 | bool | 只读 | 指定该字段是否已修改
文本 | 字符串 | 只读 | 字段中的文本
FormWindow | IFormWindow | 只读 | 表格窗口


IToolbar

功能

IToolbarButton 对象的集合。表示工具栏。

方法

定义 | 描述
Reset() | 重置所有更改并恢复工具栏的原始视图。
Find( commandId : TCommandID ) : int | 搜索集合中带有指定标识符的按钮索引。
Delete( Index : int ) | 按其集合中的索引删除项目。
InsertButton( index : int, commandId : TCommandID, text : string ) | 插入带有 commandId 命令标识符的工具栏项及工具栏索引位置的文本文本。 可使用任何命令标识符（包括 CI_Separator），CI_SubMenu 和 CI_Undefined 除外。对于 CI_Separator，将忽略 Text 参数。
AppendButton( commandId : TCommandID, text : string ) | 附加带有 commandId 命令标识符的工具栏项及菜单末端的文本文本。 可使用任何命令标识符（包括 CI_Separator），CI_SubMenu 和 CI_Undefined 除外。对于 CI_Separator，将忽略 Text 参数。

属性

名称 | 类型 | 访问 | 描述
类型 | TCommandBarType | 只读 | 工具栏类型
名称 | 字符串 | 只读 | 工具栏名称
可见 | bool | 读/写 | 指定工具栏是否可见


IToolbarButton

功能

表示工具栏按钮。

属性

名称 | 类型 | 访问 | 描述
命令 | TCommandID | 只读 | 该命令标识符。返回的值不能为 CI_SubMenu。 如果 TCommandID 值间无命令的标识符，将返回 CI_Undefined
启用 | bool | 读/写 | 指定是否启用工具栏按钮。 如果将值设置为 false，则将禁用所有带有指定标识符的工具栏按钮（命令属性）。 如果将值设置为 true，则将根据程序的内部逻辑启用工具栏按钮。
可见 | bool | 读/写 | 指定工具栏按钮或分隔符是否可见
文本 | 字符串 | 读/写 | 工具栏按钮上的文本


IToolbars

功能

IToolbar 对象的集合。


TCommandBarType

描述

工具栏类型。适用于 IToolbar 接口。

类型：

  • CBT_Undefined = 0 - 未定义的工具栏。
  • CBT_GroupVerification = 1 - 带有组校验命令的工具栏。
  • CBT_FieldVerification = 2 - 带有字段校验命令的工具栏。
  • CBT_Standard = 3 - 标准工具栏。
  • CBT_Navigation = 4 - 导航工具栏。包含如上一个文档、下一个文档、上一个要校验的项目等之类的按钮。
  • CBT_Views = 5 - 用于在详细信息视图和缩略图视图之间进行切换的工具栏。
  • CBT_Tasks = 6 - 带有任务操作工具的工具栏。
  • CBT_Setup = 7 - 带有用于管理项目的基本工具的工具栏。包含如文档定义…、批处理文件类型…、项目属性…等之类的按钮。
  • CBT_ScanAndRead = 8 - 带有图像操作工具的工具栏（对图像进行的导入、识别和其他操作）。
  • CBT_UserToolbar = 9 - 指定阶段的外观设置时，由用户添加的工具栏。


TCommandID

描述

命令标识符。

可容许值：

常规
  • CI_SubMenu - 子菜单标题
  • CI_Separator - 分隔符
  • CI_Undefined - 未定义的命令标识符
文件菜单命令
  • CI_NewProject - 新建项目…
  • CI_BrowseProject - 打开项目…
  • CI_BrowseWebProject - 从服务器打开项目…
  • CI_CloseProject - 关闭项目
  • CI_UploadProject - 将项目上传至服务器…
  • CI_Save - 保存
  • CI_NewBatch - 新建批处理文件…
  • CI_LoadImage - 加载图像…
  • CI_ScanImages - 扫描图像…
  • CI_ImportImage - 导入图像…
  • CI_Export - 导出
  • CI_ExportToFile - 将数据导出至文件
  • CI_ExportImages - 将图像导出至多个文件
  • CI_ExportToDB - 导出至数据库
  • CI_RecentFiles - 打开最近项目
  • CI_Exit - 退出 ABBYY FlexiCapture 10
编辑菜单命令
  • CI_EditUndo - 撤消
  • CI_EditRedo - 恢复
  • CI_EditCut - 剪切
  • CI_EditCopy - 复制
  • CI_EditPaste - 粘贴
  • CI_EditClear - 删除
  • CI_MergeDocuments - 合并文档
  • CI_SplitDocuments - 分割文档
  • CI_EditSelectAll - 全选
  • CI_EditFind - 查找…
  • CI_EditFindNext - 查找下一个
  • CI_MoveToNextItem - 下一个文档
  • CI_MoveToPreviousItem - 上一个文档
  • CI_ImageClean - 图像去斑
  • CI_ImageInvert - 反转图像
  • CI_ImageMirrorHorizontal - 水平翻转
  • CI_ImageMirrorVertical - 垂直翻转
  • CI_ImageRotate90 - 顺时针旋转 90°
  • CI_ImageRotate270 - 逆时针旋转 90°
  • CI_ImageRotate180 - 旋转 180°
  • CI_ImageChangeResolution - 更改分辨率
  • CI_ExportImage - 保存图像

远程校验工作站的其他命令（字段校验）：

  • CI_EditDeleteAll - 删除所有字符
  • CI_EditInsertLineBreak - 插入分行符
  • CI_VerificationMergeSymbols - 合并字符
查看菜单命令
  • CI_ShowTestBatches - 显示测试批处理文件
  • CI_ShowWorkBatches - 显示批处理文件
  • CI_ShowQueues - 显示队列
  • CI_ShowDetails - 显示详细信息
  • CI_ShowThumbnails - 显示缩略图
  • CI_SetupDetailsView - 选择要查看的详细信息
  • CI_DocModeImage - 图像模式中的文档编辑器
  • CI_DocModeForm - 数据模式中的文档编辑器
  • CI_DockImageOnTop - 文档编辑器顶部的图像
  • CI_DockImageOnBottom - 文档编辑器底部的图像
  • CI_DocImageOnLeft - 文档编辑器左侧的图像
  • CI_DocImageOnRight - 文档编辑器右侧的图像
  • CI_DocImageUndocked - 已解锁
  • CI_DocErrorsOnTop - 文档编辑器顶部的错误
  • CI_DocErrorsOnBottom - 文档编辑器底部的错误
  • CI_DocErrorsOnLeft - 文档编辑器左侧的错误
  • CI_DocErrorsOnRight - 文档编辑器右侧的错误
  • CI_ImageScalePageWidth - 使图像适合宽度
  • CI_ImageScalePageHeight - 使图像适合高度
  • CI_ImageScaleWholePage - 最佳适合图像
  • CI_ImageScale400 - 将图像比例调整为 400%
  • CI_ImageScale200 - 将图像比例调整为 200%
  • CI_ImageScale100 - 将图像比例调整为 100%
  • CI_ImageScale75 - 将图像比例调整为 75%
  • CI_ImageScale50 - 将图像比例调整为 50%
  • CI_ImageScale25 - 将图像比例调整为 25%
  • CI_ImageScaleCustom - 自定义图像比例
  • CI_ImageScaleZoomIn - 放大图像
  • CI_ImageScaleZoomOut - 缩小图像
  • CI_TextSizeLargest - 最大的数据文本
  • CI_TextSizeLarger - 较大的数据文本
  • CI_TextSizeMedium - 中等大小的数据文本
  • CI_TextSizeSmaller - 较小的数据文本
  • CI_TextSizeSmallest - 最小的数据文本
  • CI_ViewToolbarsLayout - 在文档编辑器中显示工具栏
  • CI_ShowFormatErrorInBallon - 在气球中显示格式错误
  • CI_ShowFormatErrorInErrorView - 在顶部显示格式错误
  • CI_ShowFormatErrorInFormView - 在底部显示格式错误
  • CI_BWImageMode - 以黑白显示图像
  • CI_ThumbnailSizeSmallest - 最小的缩略图大小
  • CI_ThumbnailSizeDefault - 默认缩略图大小
  • CI_ThumbnailSizeLargest - 最大的缩略图大小
  • CI_ThumbnailSizeIncrease - 增大缩略图大小
  • CI_ThumbnailSizeDecrease - 减小缩略图大小
  • CI_ViewToolbarsStandard - 显示/隐藏标准工具栏
  • CI_ViewToolbarsDocuments - 显示/隐藏视图工具栏
  • CI_ViewToolbarsNavigation - 显示/隐藏导航工具栏
  • CI_ViewToolbarsScanAndRead - 显示/隐藏项目扫描工具栏
  • CI_ViewToolbarsProjectSetup - 显示/隐藏项目安装工具栏
  • CI_ViewToolbarsTasks - 显示/隐藏队列与任务工具栏
  • CI_ShowToolbar1 - 显示工具栏
  • CI_ViewStatusbar - 显示/隐藏状态栏
  • CI_ViewFullScreen - 切换为全屏/窗口
  • CI_Refresh - 刷新
  • CI_ViewProperties - 显示属性

远程校验工作站的其他命令（组校验）：

  • CI_ShowFieldImage - 显示/隐藏字段图像
  • CI_ShowFieldImageOnTop - 在顶部显示字段图像
  • CI_ShowFieldImageOnBottom - 在底部显示字段图像
  • CI_ShrinkToFit - 将字段图像缩小以适合
  • CI_ContextImageScale400 - 将字段图像比例调整为 400%
  • CI_ContextImageScale200 - 将字段图像比例调整为 200%
  • CI_ContextImageScale150 - 将字段图像比例调整为 150%
  • CI_ContextImageScale100 - 将字段图像比例调整为 100%
  • CI_ContextImageScale75 - 将字段图像比例调整为 75%
  • CI_ContextImageScale50 - 将字段图像比例调整为 50%
  • CI_ShowCharacterImage - 显示字符图像
  • CI_ShowActionsToolBar - 显示/隐藏操作工具栏
  • CI_ShowVerInfoBar - 显示/隐藏校验信息栏
  • CI_VerificationOptions - 显示校验首选项

远程校验工作站的其他命令（字段校验）：

  • CI_ShowRecognizedText - 显示已识别文本
  • CI_ShowSymbolImagesCutting - 显示/隐藏字符图像切割
  • CI_ShowSpecialSymbols - 显示/隐藏特殊字符
  • CI_ShowAnalogousFields - 显示/隐藏类似字段
任务菜单命令
  • CI_GetTask - 获取任务
  • CI_ReturnTask - 关闭任务
  • CI_ShowTaskComment - 显示任务注释
  • CI_CancelTask - 拒绝任务
  • CI_DeferTask - 推迟任务
  • CI_SendTaskToException - 将任务发送至异常
  • CI_SendTaskToRescan - 将任务发送至扫描
  • CI_SendTaskToStage - 将任务发送至阶段
  • CI_AutoTaskReceive - 自动任务接收开/关
  • CI_AddDocsToMarked - 将文档添加为已标记
  • CI_UnmarksDocs - 取消标记文档
  • CI_MarkDocsToException - 将文档标记为异常
  • CI_MarkDocsToRescan - 将文档标记为重新扫描
  • CI_MarkDocsToStage - 将文档标记为阶段
  • CI_ViewMarkedGroupList - 查看已标记的组列表
识别菜单命令
  • CI_ApplyTemplate - 分析
  • CI_SetDocTemplate - 匹配文档定义
  • CI_ReadActive - 识别
校验菜单命令
  • CI_VerifyAll - 运行校验
  • CI_GotoNextError - 下一个要校验的项目
  • CI_GotoPrevError - 上一个要校验的项目
  • CI_GotoNextAssembleError - 下一带组装错误的文档
  • CI_GotoPrevAssembleError - 上一带组装错误的文档
  • CI_GotoNextUnkCharacher - 下一个不确定字符
  • CI_GotoPrevUnkCharacher - 上一个不确定字符
  • CI_GotoNextRuleError - 下一个规则错误
  • CI_GotoPrevRuleError - 上一个规则错误

远程校验工作站的其他命令（组校验）：

  • CI_VerificationConfirmAll - 全部确认
  • CI_VerificationPostponeAll - 全部推迟
  • CI_VerificationToggleSelected - 切换所选项目
  • CI_VerificationNextPage - 下一个校验页面
  • CI_VerificationPrevPage - 上一个校验页面
  • CI_VerificationClose - 关闭校验

远程校验工作站的其他命令（字段校验）：

  • CI_VerificationConfirmField - 确认字段
  • CI_VerificationNextUncertain - 下一个不确定字符
  • CI_VerificationPrevUncertain - 上一个不确定字符
  • CI_VerificationNextField - 下一字段
  • CI_VerificationPrevField - 上一字段
项目菜单命令
  • CI_ShowTemplatesList - 显示文档定义列表
  • CI_ShowBatchTypes - 显示批处理文件类型列表
  • CI_ShowImportProfiles - 显示导入配置文件列表
  • CI_SwitchToAdminMode - 切换至管理模式
  • CI_ProtectProject - 通过密码保护项目
  • CI_UnprotectProject - 取消保护项目
  • CI_ExportProject - 导出项目
  • CI_ImportProject - 更新项目
  • CI_ViewProjectProperties - 显示项目属性
  • CI_CreateTestCopy - 创建测试副本
  • CI_CommitTestCopy - 提交测试副本
  • CI_DeleteTestCopy - 删除测试副本
工具菜单命令
  • CI_DocPriorityLowest - 设置文档最低优先级
  • CI_DocPriorityLow - 设置文档低优先级
  • CI_DocPriorityNormal - 设置文档中等优先级
  • CI_DocPriorityHigh - 设置文档高优先级
  • CI_DocPriorityHighest - 设置文档最高优先级
  • CI_UpdateDocToLatestVersion - 将文档更新为最新版本的项目
  • CI_Reanalize - 重新分析
  • CI_Reread - 重新识别
  • CI_AssembleDocuments - 刷新文档组装
  • CI_RecheckRules - 重新核对规则
  • CI_CheckBatchIntegrity - 检查批处理文件完整性
  • CI_BatchPriorityLowest - 设置批处理文件最低优先级
  • CI_BatchPriorityLow - 设置批处理文件低优先级
  • CI_BatchPriorityNormal - 设置批处理文件中等优先级
  • CI_BatchPriorityHigh - 设置批处理文件高优先级
  • CI_BatchPriorityHighest - 设置批处理文件最高优先级
  • CI_ChangeBatchType - 更改批处理文件类型
  • CI_ViewOptions - 显示选项
字段本地菜单的命令
  • CI_ExecuteCustomAction - 执行自定义操作
用户命令
  • CI_UserCommand - 用户命令
帮助菜单命令
  • CI_HelpAbbyyWebSite - ABBYY 网站
  • CI_HelpAbout - 关于 ABBYY FlexiCapture
  • CI_HelpContent - 帮助主题
  • CI_HelpPurchaseInfo - 如何购买 ABBYY 产品
  • CI_HelpSendFeedback - 发送反馈…
  • CI_HelpTechSupport - 技术支持


TDockingType

描述

该主窗口的一侧与指定窗口相邻。

可容许值：

  • DT_Undefined = 0 - 该侧未定义或窗口不相邻。
  • DT_Left = 1 - 左侧。
  • DT_Right = 2 - 右侧。
  • DT_Top = 3 - 上侧。
  • DT_Bottom = 4 - 下侧。


TDocumentState

描述

任务窗口中的文档状态。适用于 ITaskWindow 接口。

可容许值：

  • DS_Locked = 0 - 文档已锁定。不允许在文档上执行任何操作。
  • DS_Edited =1 - 该文档正在文档编辑器中编辑。
  • DS_Closed = 2 - 文档已关闭。可打开并编辑。
  • DS_Opened = 3 - 文档已打开。可使用脚本进行编辑。


TErrorType

描述

错误类型。适用于 IErrorControl 接口。

可容许值：

  • ET_Assembling = 0 - 组装错误
  • ET_Rule =1 - 规则错误
  • ET_Format = 2 - 格式错误


TSelectionType

描述

选项类型。适用于 ISelection 接口。

可容许值：

  • ST_Undefined = 0 - 未定义选项
  • ST_Documents = 1 - 所选文档
  • ST_Pages = 2 - 所选页面


TTaskWindowMode

描述

视图模式。适用于 ITaskWindow 接口。

可容许值：

  • TWM_Undefinied = 0 - 未定义视图。
  • TWM_ListView = 1 - 详细信息视图。
  • TWM_ThumbnailView = 2 - 缩略图视图。


TTextSize

描述

文本大小。适用于 IFormWindow 接口。

可容许值：

  • TS_Undefined = 0 - 未定义文本大小。
  • TS_Smallest = 1 - 最小文本。
  • TS_Smaller = 2 - 小文本。
  • TS_Medium = 3 - 中等文本。
  • TS_Larger = 4 - 大文本。
  • TS_Largest = 5 - 最大文本。


TUserRole

描述

用户角色。适用于 IMainWindow 接口。

可容许值：

  • UR_Undefined = 0 - 未定义角色
  • UR_VerificationOperator =1 - 校验操作员
  • UR_SeniorVerificationOperator =2 - 高级校验操作员


TWorkWindowType

描述

工作窗口类型。

类型：

  • WWT_Undefined = 0 - 未定义窗口类型。
  • WWT_Task = 1 - 任务窗口。


创建机器可读表单

调查问卷、社保表单、选票和保修卡是用于收集不同类型信息的所有不同类型的表单。

表单与其他类型的文档有何不同？

  1. 表单始终包含一组字段。
  2. 每个字段均可能只包含一种类型的信息，例如，“姓”字段仅包含姓（如填写正确），“日期”字段只包含日期。

在需要从大量调查对象收集信息时将会使用表单。手动收集信息是一种耗时且令人厌倦的过程，且几乎不可避免地出现打印错误和其他错误。机器可读表单用于自动化此过程。

自动化表单处理包括以下阶段：

  1. 设置表单处理应用程序（创建文档定义并指定要识别的字段）。
  2. 采集表单图像（扫描）。
  3. 处理表单图像（识别图像并校验提取的数据）。
  4. 将提取的数据导出至外部信息系统。

表单自动化处理对于符合此章节中讨论的要求的表单最为有效。

机器可读表单
机器可读表单的元素
表单完成方法
机器可读表单的类型
选择表单权利类型
机器可读表单的常规要求


机器可读表单

要阅读表单信息，表单处理应用程序应：

  1. 确定表单元素的位置。
  2. 分隔字段内容与字段边界、文本标记、背景和说明性文本等。

机器可读表单可使程序执行这些任务。

对于第一个要成功执行的任务，表单必须与表单模式或文档定义相对应，即所有表单元素的位置在所有同类型表单上必须相同。

对于第二要成功执行的任务，表单的设计必须能体现自动化输入，即程序可轻易地区分要捕获的数据及诸如字段边界、文本标记、背景或说明性文本之类的该等不可识别的表单元素。


机器可读表单的元素

表单上可能显示以下元素：

项目符号 | 文本
项目符号 | 输入字段
项目符号 | 复选标记字段
项目符号 | 复选标记组
项目符号 | 定位点
项目符号 | 行分隔符
项目符号 | 表单标识符
项目符号 | 图片
项目符号 | 表格
项目符号 | 元素组


创建机器可读表单/文本

文本

文本是包含描述性文本的机器可读表单的元素：表单标题、字段名称和说明等。


创建机器可读表单/输入字段

输入字段

输入字段是机器可读表单的一种元素，供表单完成人员输入文本。为了便于文本输入，输入字段可能包含特定文本标记。输入字段通常附有描述或说明要输入数据的性质的文本。

向我显示输入字段

下表列出了可能的文本标志类型。

文本位于线上 | 在线上输入文本。
字母位于框中 | 在组合的框中输入字母。
字母位于独立框中 | 在独立的框中输入字母。
字母位于梳形中 | 在梳形上输入字母。
文字位于框中 | 在框中输入文本。
文字位于梳形框中 | 在梳形框中输入文本。


创建机器可读表单/复选标记字段

复选标记字段

复选标记字段是机器可读表单的元素（通常是称为“复选框”的方块形），完成表单的人员应在其中作以标记。

复选标记字段通常附有说明了复选标记用途的文本。

向我显示复选标记字段

下表显示了可能的复选标记字段形状

方块形
圆圈
下划线

也可能呈现其他形状，例如，多边形和椭圆形等。


创建机器可读表单/复选标记组

复选标记组

复选标记组是将多个复选标记字段（只能勾选一个）联合在一起的机器可读表单元素。复选标记组通常附有用来说明所选类型的说明性文本。

向我显示复选标记组


定位点

定位点是用于协助将表单图像与文档定义匹配且用于自动化处理期间确定表单的方向的机器可读表单元素。

程序只有将表单与其文档定义相匹配，才能开始识别表单的内容。所有同类型的机器可读表单必须与一个文档定义相符，即，所有表单元素的位置在所有表单上必须完全相同。程序将尝试根据表单上定位点的数量和位置将表单与其文档定义相匹配。如果程序设法将表单上的定位点与文档定义上的定位点相匹配，则其将确切地知道在哪些位置可找到包含要识别数据的字段。

下表列出了标准定位点。

黑方块形
直角形
十字形
计时标记
为了获取可能最佳的识别结果，建议在表单上设置标准定位点，但在某些情况下，行分隔符、说明性文本或条形码也可用作定位点。但是，标准定位点更为可靠，始终是首选定位点。


创建机器可读表单/行分隔符

行分隔符

行分隔符是机器可读表单的一种元素，其形状为一条垂直或水平的黑线。

行分隔符用于将表单分成多个逻辑节段。


创建机器可读表单/复选标标识符

表单标识符

表单标识符是用于选择正确的文档定义（如果多个文档定义的定位点排列相同）的机器可读表单元素。

建议使用条形码作为标识符。

条形码是一组用于编码信息宽度各异的垂直黑白线条。

向我显示条形码

表单上其他元素也可用作表单标识符。


创建机器可读表单/图片

图片

图片是不应对其进行识别且不应将其作为图像文件导出的机器可读表单元素。

例如，表单中应放置邮戳或签名的部分就是图片。


表格

表格包含带同类型元素的各列。

表格列可能包含以下类型的元素：

  • 文本
  • 输入字段
  • 日期
  • 数字
  • 复选标记

表格可能包含带列标题的行。


元素组

元素组 – 用于将组中多个逻辑链接的元素组合在一起的机器可读表单元素。


表单完成方法

可用以下任一种方法完成表单：

  • 手写

  • 使用点矩阵打印机

  • 使用打字机

  • 在印刷厂（这包括使用分辨率不小于 300 dpi 的喷墨或激光打印机打印的表单）

  • 使用上述组合


机器可读表单的类型

机器可读表单专为自动化数据输入设计，即，程序应能轻易地区分要捕获的数据及不可识别的表单元素（例如，字段边界、文本标记、背景或说明性文本）。

可采用以下两种方法之一实现此目的：

  1. 表单的设计必须确保字段边界、背景和文本标记在扫描后消失，或

  2. 表单的设计必须确保字段边界、背景和文本标记在扫描后明显不同。

如果采用第一种方法，则在扫描后只保留定位点、说明性文本和输入的数据。因此，程序将不必分隔数据与表单元素，使识别变得更为轻易和可靠。

在此情况下，可使用以下类型的表单：彩色 dropout 表单、带光栅背景的黑白表单、带光栅边界的黑白表单及黑白线性表单。

如果采用第二种方法，则定位点、说明性文本、输入的数据及文本标记和字段边界在扫描后仍保留在表单上。程序将查找由字段边界和文本标记包围的信息。如果这些表单元素缺失，识别质量将会大大下降。
在此情况下，将使用黑白线性表单。


Dropout 表单

Dropout 表单呈现浅色背景，带有用作字符单元格的白色矩形和复选标记字符等。

灰色 dropout 表单是其中一个示例，其背景为灰色。

彩色 dropout 表单包括的表单只有元素边界是彩色的。

字符单元格是只能在其中输入一个字符（例如，字母或数字）的小矩形。背景颜色极为重要，因为其必须在扫描期间消失。背景通常为浅红色、橙色或绿色。有关建议的颜色列表，请参见建议的 Dropout 表单颜色。

向我显示 dropout 表单

最为理想的是，所有表单元素（定位点除外）应在扫描期间消失，表单图像上只留下要识别的字段内容。

说明性文本可能被保留（如果用黑色打印）或随背景一起过滤掉。对于在扫描期间消失的说明性文本，其打印颜色必须与表单的背景相同，但饱和度较高。

决定是用黑色还是背景色打印说明性文本时，应考虑以下因素：

  • 如果说明性文本已保留，则图像文件将变得较大。

  • 用黑色打印的说明性文本与表单上其他元素之间的间隔至少为 1.5-2 mm。说明性文本与相应复选标记字段之间的间隔不得小于复选标记字段大小的 2/3。如果用背景色打印说明性文本，则文本与其他表单元素之间的空格并不如此重要。

用黑色打印的带说明性文本的表单清晰度更强。我们建议用黑色打印说明性文本，特别是当表单上没有定位点时。

提示
为带有用背景色打印的说明性文本的表单创建文档定义时，务必在彩色或灰色模式中扫描表单，以使表单上的说明性文本和元素更为清晰可见。

必须使用彩灯或滤色器扫描 Dropout 表单。选定的灯颜色取决于背景颜色。

必须在以下位置扫描带红色或绿色背景的表单：

  • 彩色扫描仪，使用滤色软件
  • 非彩色扫描仪，使用红色或绿色灯（硬件滤色）
  • 非彩色扫描，使用白灯和红色或绿色滤色器（此情况下，过滤质量要低得多，因为背景可能不会完全消失，或可能意外删除字段内容），或
  • 非彩色扫描仪，使用不带滤色器的白灯
    使用白灯扫描时，可能在不过滤的情况下删除某些较浅的背景：背景的弱饱和度将确保其在扫描期间消失。在此情况下，必须为每个特殊扫描仪反复尝试选择背景的颜色和饱和度。

注：许多彩色扫描仪也有用于过滤蓝色的软件滤色器。但是，我们建议不要在表单上使用蓝色阴影，因为表单有可能是同时使用黑色和蓝色墨水填写的。用蓝色墨水书写的字段内容将消失。

选择合适的颜色

红色 - 橙色优于绿色，因为他们表示的与蓝色对比度可能是最大的，这样就可提高扫描和识别质量（如果表单是用蓝色墨水填写的）。

在建议和 Dropout 菜单颜色中，您将找到用于表单处理的建议颜色，即，在使用任何扫描仪进行的扫描期间，这些颜色最有可能消失。特定扫描仪的“dropout”彩色列表（Pantone 或任何其他格式）也可从扫描仪制造商/经销商获取。


带光栅背景的黑白表单

该等表单上的字段在光栅背景中仅呈现为白色空格（通常为矩形）。背景由各个点组成。建议的点大小不得超过 0.1 mm，每个点之间的间隔大约为 1 mm。点大小及其之间的距离至关重要，因为光栅背景是在去斑期间而不是扫描期间删除的：程序会将这些点当作垃圾清除掉。因此，在已扫描图像上，这些点不应粘合在一起。


带光栅边界的黑白表单

这些表单没有背景。所有字段边界（字符单元格边界，复选标记字段和其他表单元素）由光栅线组成，即，一系列小黑点。光栅点大小通常为 0.39-0.5 pt。建议的大小为 0.39 pt，光栅点之间的距离至少要比点大小大五倍。点大小及其之间的距离至关重要，因为光栅背景是在去斑期间而不是扫描期间删除的：程序会将这些点当作垃圾清除掉。因此，在已扫描图像上，这些点不应粘合在一起。


黑白线性表单

这些表单通常没有背景。所有字段边界（字符单元格、复选标记字段和其他表单元素）由实心的黑色线条组成。字段边界不因扫描或去斑而消失。

注：填写此类型表单时必须确保极高的整洁性。如果填写表单时很粗心，字母可能与字段边界重叠，从而降低识别质量。这是因为只要字段内容与字段边界重叠，应用程序就极难将边界与文本分开。最理想的是，输入的文本不应接触字段边界。


选择表单权利类型

除了每种类型表单的设计和处理要求，选择表单类型时也需要考虑其他标准。这些包括打印成本和方法、必要的副本数量、生成的图像大小、扫描模式、必要的识别精度、表单处理速度、表单整体外观及已完成表单的整洁性等。下表概述了每种表单类型的优点和缺点。

标准 | Dropout 表单 |  | 黑白光栅表单 |  | 黑白线性表单
 | 缺点 | 优点 | 缺点 | 优点 | 缺点 | 优点
设计复杂性 |  | 易于使用任何图形编辑器进行设计。 | 文本编辑器提供了有限的用于设计此类型表单的工具。光栅点的大小至关重要。 |  |  | 易于使用任何图形编辑器进行设计
打印 | 难以在内部打印大量优质表单。 |  |  | 易于进行内部打印。 |  | 易于进行内部打印。
打印成本 | 如果使用了专业打印服务，则打印成本高于黑白表单。 |  |  | 如果使用了专业打印服务，则打印成本低于 dropout 表单。 |  | 如果使用了专业打印服务，则打印成本低于 dropout 表单。
图像大小 |  | 图像文件较小。 | 图像文件较大。 |  | 图像文件较大。 |
扫描模式 | 只能使用特殊的扫描模式（滤色）。 |  | 有限范围的亮度和对比度设置。 |  | 有限范围的亮度和对比度设置。 |
处理速度 |  | 较高的平均处理速度。 | 平均处理时间较长，因为图像需要去斑。 |  | 如果字符粘合在一起或覆盖了字段边界，则更有可能出现错误。 |
识别质量 |  | 极高识别质量。 |  | 高识别质量。 | 识别质量主要取决于填写表单的简洁性。 | 如果表单填写正确，则识别质量较高。
说明性文件的位置 |  | 说明性文件可放在任何位置，包括字段内部（只要其打印颜色与表单背景相同）。 | 将说明性文本和其他表单元素排列在表单上时必须小心。 |  | 将说明性文本和其他表单元素排列在表单上时必须小心。 |
表单外观和可读性 | 背景和说明性文本的低对比度设置可能会给表单可读性带来不利影响。 | 赏心悦目 | 设计不抢眼。可读性较低。 |  | 设计不抢眼。 | 可读性良好。
完成的简洁性 |  | 对文本重叠字段边界的不敏感。 | 书写小字符时要特别小心，不能太小，否则被当作垃圾字符删除。 | 对文本重叠字段边界的不敏感。 | 对文本重叠字段边界的极敏感。 |


机器可读表单的常规要求

现在，我们来了解一下机器可读表单的常规要求。

项目符号 | 表单背景要求
项目符号 | 定位点要求
项目符号 | 复选标记字段要求
项目符号 | 文本标记要求
项目符号 | 元素定位要求
项目符号 | 打印质量要求
项目符号 | 表单完成要求


表单背景要求

  1. 如有可能，使用 dropout 表单或带光栅字段边界的表单。
  2. 创始 dropout 表单时使用在扫描期间将消失的颜色。有关建议的颜色列表，请参见建议的 Dropout 表单颜色。
  3. 始终确保说明性文本与字段内容之间有空格。对于 dropout 表单，我们建议用与表单背景相同的颜色打印任何信息（除非说明性文本用作定位点而不是与黑色方块形组合）。用与背景相同的颜色打印信息后，您就可自由地将其放在表单上的任何位置，包括表单字段之内。
  4. 对于要用手完成的表单，不要使用蓝色。蓝色背景可与有可能用于完成表单的蓝色墨水合并。这将对识别质量带来不利影响。


定位点要求

  1. 建议将标准定位点用于机器可读表单（即，黑色方块形、直角形和十字形）。建议的定位点数量为 5：表单的每个角落均有一个定位点（如果用虚条将这些定位点连接在一起，则应形成一个矩形），虚线矩形的各侧有一个方块形。
  2. 如果由于某些原因，标准定位点无法使用，则建议使用以下元素组合作为定位点：
    a) 至少两条垂直的行分隔符或两条水平行分隔符
    b) 至少四个文本元素和一个表单标识符元素
    c) 也可能使用其他组合
  3. 定位点边缘与最近表单元素之间的距离不得小于 3 mm。
  4. 定位点与页面边缘之间的距离不得小于 8 mm。
  5. 应用深色打印定位点（建议用黑色），以便其在扫描期间不会消失。

除了上述常规要求，每个定位点类型均有其自己的特定要求：

黑色方块形要求

同一类型表单上的黑色方块形应大小相同，即介于 4х4 mm 和 8х8 mm 之间。建议的大小为 5х5 mm。不允许使用矩形。

十字形和直角形要求

  1. 可能围绕此类型定位点绘制的虚线方块形的大小必须介于 4x4 和 8x8 mm。建议的大小为 5х5 mm。
  2. 某类型字位点的大小必须在一个表单中保持一致。
  3. 所有定位点的各侧必须大小相等。
  4. 同一表单上定位点的线条厚度必须与相同，介于 0.3 至 1 mm 的范围。建议的厚度为 0.5 mm。

文本要求（如果用作定位点）

字体应小于 7 pt（标题 – 不小于 14 pt）。

行分隔符要求（如果用作定位点）

线条厚度不得小于 1 pt。建议的厚度为 1-1.5 pt。

条形码要求（如果用作定位点）

  1. 条形码宽度（最左条与最右条之间的距离）不得小于 47-50 mm。
  2. 条形码高度不得小于 12-15 mm（不包括数字）。
  3. 条形码方向（条的方向）应与页面方向相同（建议按条的方向扫描页面）。
  4. 建议使用 EAN 13 条形码格式。
  5. 建议条形码与任何其他表单元素之间的距离不得小于 10 mm。


复选标记字段要求

  1. 建议的字段大小为 3.5x3.5 mm、4x4 mm、4.5x4.5 mm 或 5x5 mm（如已使用圆形复选标记，其必须与建议大小的方块形相符）。
  2. 建议的复选标记字段边界的线宽为 0.4 mm（不管字段大小如何）。


文本标记要求

光栅点大小：

  1. 如果字段边界为光栅点，则光栅线厚度（即，光栅大小）必须为 0.39 pt。

  2. 光栅点之间的最佳距离为其大小的五倍。

    重要事项！字符单元格直角形中的点最有可能粘合在一起。

提示
如果您的软件不允许您指定每个光栅点之间的距离，则必须确保所选择的线条样式各点之间的距离足以防止其在扫描图像上粘合在一起，并可防止其在执行图像去斑后仍残存。这是 OCR 系统将大点当作垃圾读取，在去斑期间不会将其从图像中清除。

字符单元格大小：

  1. 建议的字符单元格大小为 4х5 mm；使用较小的尺寸需要表单填写人采用更高的精度，这点很难做到。建议也不要使用大字符单元格，因为这需要采用异常大的字母。字符单元格大小最好应能反映平均字母大小。
  2. 字段行之间的距离不得小于 2.5 – 3 mm，同一行中两个相邻字符单元格之间的距离不得小于 1-1.2 mm。
向我显示字符单元格

线条厚度：

  1. 如果边界为黑色线条（“文本在框中”、“字母在独立框中”或“字母在框中”），则线条厚度应为 1 pt。
向我显示黑色线条边界

梳形：

  1. 建议的梳形中各凹口之间的距离为 5 mm。
  2. 两个梳形水平线条（一条在另一条之上）之间的距离，不得小于 7.5 – 8 mm。
  3. 凹口高度必须大约为 0.9 – 1.2 mm。
  4. 凹口和水平线条的厚度应为 1 pt。
  5. 如果使用了带梳形的框，则框之间的最小距离应为 2.5 – 3 mm。
向我显示梳形


元素定位要求

  1. 务必确保表单有足够的边距，否则离表单边缘太近的表单元素在扫描时可能消失，从而导致数据丢失。
  2. 相邻表单元素之间的间隔不得小于 2 mm。
  3. 复选标记字段与说明性文本之间的间隔不得小于复选标记字段大小的 2/3。
  4. 确保说明性文本不与输入字段边界重叠。
  5. 如果说明性文本用黑色墨水打印的，请确保说明性文本与其他元素至小查隔 1.5-2 mm。对于用背景相同的墨水打印的说明性文本，此距离并不重要。


打印质量要求

打印空白表单时，请记住以下要求：

  1. 必须以专业方式或使用打印机打印表单。建议以专业方式打印彩色表单。如果无法做到这点，开始打印之前，请在扫描仪上测试表单颜色。
  2. 所有表单副本必须使用相同的来源文档打印，因为每个表单上的字段位置必须相同。
  3. 最小边距大小（即页面边缘与最近表单元素之就的距离）至少为 8 mm（建议使用 12 mm 边距）。
  4. 表单元素线性偏离不得超过 0.15%（对于 A4 页面，则为 0.5 mm ）。
  5. 使用打印机打印表单时所用的分辨率不得小于 600 dpi。
  6. 我们建议借助于同一扫描仪或同型号的不同扫描仪打印表单。

提示：我们建议不要使用复制设置复制机器可读表单。使用该等设备可能会稍微改变表单上元素的尺寸或其排列，例如，表格或输入字段边界可能会变厚或色深可能发生变化，从而降低识别质量。


表单完成要求

钢笔和墨水

填写表单时要确保整洁性，要用大写字母，使用黑色圆珠笔、中性笔或毛管绘图笔（深蓝色和紫罗兰色也可接受）填写。建议不要使用水彩笔/毯头笔，因为这样的笔所写出的字符可能太粗，妨碍识别。使用铅笔或浅色墨水填写的表单最难识别。

字母大小和样式

为了获取最佳识别结果，应用正楷大写字母填写表单。字母必须填满所有字符单元格，但不得覆盖单元格边缘。

如果表单上的字符单元格很明显（即使用了以下文本标记类型：字母位于框中和字母位于独立框中），则表单填写人员将字母连在一起的可能性很小。

以下文本标记类型增加了识别难度：文字位于梳形框中，字母位于梳形中。以下是预定义的字符单元格宽度，由于没有边界，更易于连接字母。对于不带框的梳形，可能会将字母写入大小或太大。

如果使用了位于框中的文本或位于线上的文本，则对字符单元格的宽度没有明显的限制。字母连接在一起可能对识别质量带来不利影响。对于位于线上的文本，则对字符高度没有限制。因此，建议不要将此标记类型用于需要高识别精度的表单。

另一个重要的要求是，字母不能与字段边界重叠。对于 dropout 表单或黑白光栅表单，此要求不怎么严格，因为字段边界将在扫描和去斑期间消失。如果黑白线性表单上的字母与字段边界重叠，则可能会降低识别质量。

样本

为了正确地填写表单，建议在表单上附上类似以下的备注。


建议的 Dropout 表单颜色

下表包含 dropout 颜色样本及其相应的色卡编号。扫描表单后，这些背景色将消失：

  • 使用任何扫描仪
    向我显示白灯表格
  • 使用带有软件红色滤色功能的彩色扫描仪或使用带有红灯/红色滤色器的非彩色扫描仪
    • 向我显示白灯表格


热键

键盘快捷键

本部分列示该程序的不同窗口中所使用的键盘快捷键。使用快捷键将不仅节省时间，而且方便工作。

ABBYY FlexiCapture 10 主窗口键盘快捷键
文档定义编辑器的键盘快捷键
组校验窗口键盘快捷键
字段校验窗口键盘快捷键


主窗口中的热键

ABBYY FlexiCapture 10 主窗口键盘快捷键

菜单 | 命令 | 快捷键
文件 | 新建项目… | Ctrl+Shift+N
 | 打开项目… | Ctrl+Shift+O
 | 保存 | Ctrl+S
 | 新建批处理文件… | Ctrl+N
 | 加载图像… | Ctrl+O
 | 扫描图像… | Ctrl+K
 | 导入图像… | Ctrl+I
 | 导出 | Ctrl+U
 | 导出至将数据导出至文件… | Alt+Shift+S
 | 导出至数据库… | Alt+Shift+D
 | 退出 | Alt+F4
编辑 | 撤销 | Ctrl+Z
 | 恢复 | Ctrl+Y
 | 剪切 | Ctrl+X
 | 复制 | Ctrl+C
 | 粘贴 | Ctrl+V
 | 删除 | Del
 | 全选 | Ctrl+A
 | 查找… | Ctrl+F
 | 查找下一个 | F3
 | 转至> 下一个文档 | Ctrl+D
 | 转至> 上一个文档 | Ctrl+Shift+D
 | 图像 > 去斑 | Ctrl+Alt+K
 | 图像 > 反转 | Ctrl+Alt+V
 | 图像 > 顺时针旋转 90° | Ctrl+W
 | 图像 > 逆时针旋转 90° | Ctrl+Shift+W
视图 | 测试批处理文件 | Ctrl+Shift+B
 | 批处理文件 | Ctrl+B
 | 详细信息 | Alt+1
 | 缩略图 | Alt+2
 | 图像模式 | Ctrl+1
 | 数据模式 | Ctrl+2
 | 放大 | Ctrl+Num+
 | 缩小 | Ctrl+Num-
 | 缩略图大小：增大 | Ctrl+Shift+Num+
 | 缩略图大小：缩小 | Ctrl+Shift+Num-
 | 全屏 | F11
 | 刷新 | F5
 | 对象属性 | Alt+Enter
识别 | 分析 | Ctrl+E
 | 匹本文档定义… | Alt+Shift+E
 | 识别 | Ctrl+R
校验 | 运行校验… | F7
 | 下一个要校验的项目 | F4
 | 上一个要校验的项目 | Shift+F4
 | 下一带组装错误的文档 | F9
 | 上一带组装错误的文档 | Shift+F9
 | 下一个不确定字符 | F8
 | 上一个不确定字符 | Shift+F8
 | 下一条规则错误 | F6
 | 上一条规则错误 | Shift+F6
项目 | 文档定义… | Ctrl+T
 | 批处理文件类型… | Ctrl+Shift+T
 | 图像导入配置文件… | Ctrl+Shift+I
工具 | 更新至最新版本 | Alt+Shift+U
 | 重新分析 | Ctrl+Alt+E
 | 重新识别 | Ctrl+Alt+R
 | 重新检查规则 | Ctrl+F6
 | 检查批处理文件完整性 | Ctrl+Shift+E
帮助 | 帮助主题 | F1
常用命令 | 打开文档窗口（如果已选择文档或页面） | Enter
 | 注册参数 | Ctrl+P


文档定义编辑器中的热键

文档定义编辑器的键盘快捷键

菜单 | 命令 | 快捷键
文档定义 | 添加页面… | Ctrl+P
 | 添加文档节段… | Ctrl+Alt+S
 | 文档定义属性… | Ctrl+T
 | 保存 | Ctrl+S
 | 关闭 | Alt+F4
编辑 | 撤销 | Ctrl+Z
 | 恢复 | Ctrl+Y
 | 剪切 | Ctrl+X
 | 复制 | Ctrl+C
 | 粘贴 | Ctrl+V
 | 删除 | Del
 | 删除区域 | Shift+Del
 | 全选 | Ctrl+A
 | 按类型选择… | Ctrl+Shift+A
 | 创建字段 - 文本 | Alt+Shift+T
 | 创建字段 - 复选标记 | Alt+Shift+C
 | 创建字段 - 复选标记组 | Alt+Shift+M
 | 创建字段 - 条形码 | Alt+Shift+B
 | 创建字段 - 图片 | Alt+Shift+P
 | 创建字段 - 表格 | Alt+Shift+L
 | 创建字段 - 组 | Alt+Shift+G
 | 组 | Ctrl+G
 | 取消组 | Ctrl+Shift+G
 | 从图像复制文本… | Ctrl+Alt+C
 | 图像 > 去斑 | Ctrl+Alt+K
 | 图像 > 反转 | Ctrl+Alt+V
 | 图像 > 顺时针旋转 90° | Ctrl+W
 | 图像 > 逆时针旋转 90° | Ctrl+Shift+W
视图 | 静态元素 | Ctrl+1
 | 字段区域 | Ctrl+2
 | 显示文档结构 | Alt+F1
 | 文档结构 - 字段 | Alt+1
 | 文档结构 - 页面 | Alt+2
 | 数据表单 | Alt+F2
 | 图像缩放 - 放大 | Ctrl+Num+
 | 图像缩放 - 缩小 | Ctrl+Num-
 | 属性 | Alt+Enter
文档 | 运行测试 | Ctrl+R
工具 | 自动检测对象… | Ctrl+D
 | 检查文档定义 | F9
 | 匹配选择 | Ctrl+E
帮助 | 帮助主题 | F1

图像窗口

命令 | 快捷键
选择区域 | Esc
自动检测对象 | Ctrl+Shift+D
创建定位点 | A
创建分隔符 | S
创建定位点文本 | X
创建定位点条形码 | D
创建文本 | T
创建复选标记 | C
创建复选标记组 | M
创建条形码 | B
创建图像 | P
创建表格 | L
创建组 | G
为没有区域的字段创建区域 | R
创建未识别区域 | O
创建字段列 | U
将分隔符添加至表格 | F
从表格中删除分隔符 | E
调整区域 | Ctrl+Alt+A
建议名称 | Ctrl+Alt+N
从图像获取名称… | Ctrl+Alt+I
检测标记类型 | Ctrl+Alt+D

文档结构窗口

命令 | 快捷键
显示字段图像 | Enter
重命名字段 | F2
在选定一个字段时： |
添加带文本的列 | Alt+Shift+T
添加带复选标记的列 | Alt+Shift+C
添加带条形码的列 | Alt+Shift+B
添加带图像的列 | Alt+Shift+P
在选定一个复选标记组时： |
添加复选标记 | Alt+Shift+C


组校验程序窗口中的热键

组校验窗口键盘快捷键

菜单 | 命令 | 热键
校验 | 全部确认 | Enter
 | 全部推迟 | Ctrl+Enter
 | 切换 | Space
 | 下一页 | Page Down
 | 上一页 | Page Up
 | 关闭 | Alt+F4
编辑 | 撤销 | Ctrl+Z
 | 恢复 | Ctrl+Y
 | 全选 | Ctrl+A
视图 | 字段图像 > 显示字段图像 | Ctrl+I
 | 字段图像 > 顶部 | Alt+1
 | 字段图像 > 底部 | Alt+2
 | 字段图像 > 图像比例 > 放大 | Ctrl+Num+
 | 字段图像 > 图像比例 > 缩小 | Ctrl+Num-
 | 显示字符图像 | F2
 | 全屏 | F11
帮助 | 帮助主题 | F1
本地符号菜单 | 显示字符图像 | F2
 | 确认 | Ctrl+E
 | 推迟 | Ctrl+R
 | 重置 | Esc


字段校验程序窗口中的热键

菜单 | 命令 | 热键
校验 | 确认字段 | Enter
 | 推迟 | Ctrl+Enter
 | 下一个不确定字符 | F4
 | 上一个不确定字符 | Shift+F4
 | 下一个字段 | Page Down
 | 上一个字段 | Page Up
 | 关闭 | Alt+F4
编辑 | 撤销 | Ctrl+Z
 | 恢复 | Ctrl+Y
 | 剪切 | Ctrl+X
 | 复制 | Ctrl+C
 | 粘贴 | Ctrl+V
 | 删除 | Del
 | 全选 | Ctrl+A
 | 插入分行符 | Shift+Enter
 | 合并字符 | Ctrl+M
视图 | 字段数据 > 识别的文本 | Alt+F1
 | 字段数据 > 字符较像剪切 | Alt+F2
 | 字段图像 > 显示字段图像 | Ctrl+I
 | 字段图像 > 顶部 | Alt+1
 | 字段图像 > 底部 | Alt+2
 | 字段图像 > 图像比例 >放大 | Ctrl+Num+
 | 字段图像 > 图像比例 >缩小 | Ctrl+Num-
 | 显示字符图像 | F2
 | 全屏 | F11
帮助 | 显示帮助 | F1


快捷键

您可以自定义热键，以访问常用命令。在主菜单中，选择工具>选项…，然后打开键盘快捷键选项卡。

要配置键盘快捷键，处理步骤如下：

  1. 在类别：下拉列表中选择一种类别。如果您不确定所需要的类别，请选择所有命令。
  2. 在命令：列表中选择命令。该当前快捷键列表包含所选命令的快捷键。
  3. 要指定新的热键，请单击按新快捷键字段，然后按按键组合。它将显示在字段中。按指定按钮以保存新快捷键。 如果该快捷键用于访问其他命令，将会显示信息消息。按是按钮更改命令，或按否按钮放弃更改。
  4. 要删除命令的现有快捷键，请在当前快捷键列表中选择该快捷键，然后按删除快捷键按钮。
  5. 要将所选命令的快捷键恢复为默认设置，请按重置按钮。如果您想要恢复所有命令的快捷键，请按全部重置按钮。


FormReader 6.5 和 FlexiCapture 10 规则对比

FormReader 6.5 | FlexiCapture 10 中的等价功能 | 自动转换
根据数据库检查 | 数据库检查规则 | 否
检查总和 | 新建总和规则 | 否
合并区域 | 合并字段规则 | 是
VBScript 规则 | 脚本规则 | 否
在建议列表中搜索 | 字段属性，数据类型选项卡在限制字段中列出变量。除开日期和编号的所有类型工作。参阅文本输入字段数据类型。 | 是
匹配区域 | 可通过脚本规则实现 | 否
假设规则 | 脚本规则 | 否
替换列表中的值 | 字段属性，数据类型选项卡文本类型，处理字段。参阅文本输入字段数据类型。 | 是
替换列表中的字符 | 字段属性，数据类型选项卡文本类型，处理字段。参阅文本输入字段数据类型。 | 是
标准化和检查日期 | 字段属性，数据类型选项卡在类别列表中，选择日期在“格式”列表中，选择必要的格式；在限制字段中，输入必要的限制。参阅文本输入字段数据类型。 | 否
正则表达式 | 字段属性，数据类型选项卡在限制字段中输入必要的正则表达式。除开日期和编号的所有类型工作。参阅文本输入字段数据类型。 | 是
自动化检查 | 在上一版本的应用程序中，使用了在目标计算机上注册组件所需的自动化对象，这样就难以在计算机之间传输批处理文件。在新版本中，可通过脚本最佳地实现大多数该等规则的逻辑。 如果规则逻辑太复杂且需要使用外部组件，则应从脚本规则的代码中调用组件。然后，应将已检查文档上的对象的引用传递至组件。 | 否
标准化价格 | 可通过从脚本规则调用的外部 COM 组件实现 | 否
校验护照系列和编号 | 可通过从脚本规则调用的外部 COM 组件实现 | 否
用数字表示的总和 - 书写中的总和 | 图数中的总和 - 单词规则中的总和 | 否
用数字表示的价格 - 书写中的价格 | 可通过从脚本规则调用的外部 COM 组件实现 | 否


其他选项

您可以设置文档处理和程序界面，以符合您的需求。在项目安装工作站主窗口，选择工具>选项…，包含 5 个选项卡的对话框将打开：

  • 任务进度

    在后台模式中执行任务时，您可以通过读取日志文件和弹出提示以监控进度。在该选项卡上，您可以选择要输入至日志文件的信息以及在何种情况下应显示气球消息。

  • 颜色

    如果界面元素（例如，包含“文档定义”编辑器中所选字段的框架，或带错误和警告的字段的框架和填充颜色），则您可更改颜色。选择所需字段，然后单击彩色按钮。

  • 文档处理

    如果您选择了自动识别添加的图像选项，则在图像添加至批处理文件之后，将可以立即进行自动图像识别。

    识别可以在后台模式中运行（选择在后台模式中运行识别进程）。

    如果选择了导出时跳过有错误的文档，则将会导出已成功处理的文档以及错误文档。

    如果检测到脚本错误，将会启动 Visual Studio 调试器。对于 Active Scripting 脚本，如果您不希望启动调试器，您可以选择禁用外部脚本调试。仅会显示错误消息。

  • 对话框

    默认情况下，当您启动程序时，打开项目对话框将会显示，您可以在此选择其中一个现有项目。您可以通过清除对话框选项卡上的在启动时显示“打开项目…”对话框（另外，您可以通过清除对话框本身的相同选项以禁用该对话框）。

    当您关闭文档定义列表时，该程序会向您提醒所有未发布的文档定义。如果您不希望显示该警告消息，请清除当存在未发布文档定义时显示警告选项（另外，您可以通过清除对话框本身中的相同选项以禁用该对话框）。

    如果您希望在报告错误文档时显示通知，请选择在错误文档导出时显示警告。

    在文档之间进行切换时，选择在文档之间切换时提示进行保存和更改将不会丢失任何更改。

  • 键盘快捷键

    您可以在选项卡上自定义键盘快捷键。


ABBYY FlexiCapture 示例项目

要查看 ABBYY FlexiCapture 10 如何工作，并更好地了解其功能，您可以使用该程序附带的示例项目。这些现有的项目包含设置文档定义及要处理的文档图像。

您可以在 %allusersprofile%\Application Data\ABBYY\FlexiCapture\10.0\Samples 中找到示例项目。

注：在 Microsoft Windows Vista、Windows 7、Windows Server 2008 和 Windows Server 2008 R2 下，可在 %public%\ABBYY\FlexiCapture\10.0\Samples 中找到示例项目。

该 Samples 文件夹包含以下文件夹：

  1. FlexiCapture - 该文件夹包含 FlexiCapture 示例项目。
  2. FlexiLayoutStudio - 该文件夹包含 FlexiLayout Studio 示例项目。以下示例项目演示了半结构化文档的处理流程，且应以 ABBYY FlexiLayout Studio 9.0 打开。关于某些项目的详细说明可在 FlexiLayout Studio 帮助文件中找到（ 请参阅教程及提示和技巧部分）。
  3. FormDesigner - 该文件夹包含 ABBYY FormDesigner 中开发的固定格式。*.fdd 应以 ABBYY FormDesigner 10 打开。这些格式将用于以下 FlexiCapture 示例项目：银行卡应用程序、调查问卷。
  4. Images - 该文件夹包含 FlexiCapture 示例项目的已扫描文档图像。

以下是 FlexiCapture 示例项目的列表及其简要描述。

含有不同类型文档的示例项目

该项目文件夹包含 FlexiCapture 示例项目。

  1. 单一入口点

    该项目显示不同类型文档的处理方式。无需进行初步的文档整理，可同时处理固定格式及弹性文档。在该项目中使用的文档定义也可用于以下描述的项目。

    该项目包含所有类型的文档（银行卡应用程序、发票、合同、信函、报价）。

固定格式的示例样本

该项目文件夹包含在 ABBYY FormDesigner 和 FlexiCapture 项目中创建的格式。

  2. 银行卡应用程序

    该样本示例演示了以下功能：

    • 固定格式上的字段自动检测（要查看自动检测的工作方式，请删除文档定义中的所有字段，然后选择工具>自动检测对象…）
    • 支持复杂版面的文档：
      1. 多页文档（在示例项目中使用的三页应用程序）
      2. 处理文档节段（在示例项目中，每个页面是一个单独节段）
      3. 文档组装规则
      4. 附录处理
    • 支持复杂字段：
      1. 处理固定格式的表格（已开设的帐户表格）
      2. 重复字段组（地址和请求的帐户组）
    • 数据格式检查（已指定所有数字字段和数据字段的格式）
    • 自定义数据表单。
    • 导出至多个目标。
    • 编辑机密信息（编辑）。

  3. 调查问卷

    可在用户指南中找到该示例项目的详细说明。该项目显示如何逐步设置文档定义。用于演示基本 ABBYY FlexiCapture 功能的若干简单格式。您可在该示例项目中完成问卷调查，在 ABBYY FlexiCapture 中进行处理，然后将导出的数据发送至 ABBYY。

多样化格式的示例样本

该项目文件夹包含 FlexiLayout Studio 项目和 FlexiCapture 项目。

  4. 发票

    该示例项目演示了半结构化文档的处理流程，并演示了以下功能：

    • 文档中可变的页数（从 1 至 3）
    • 跨越多个页面的表格
    • 外部关键字词典的使用（文本文件）
    • JScript 规则用于将“总计”字段的总和与通过从所有表格行中添加全部值而获取的总和进行比较。

  5. 价格

    该示例项目演示了半结构化文档的处理流程，并演示了以下功能：

    • 支持重复组。该示例项目显示重复组用于描述嵌套表格的方式（带有副标题的表格）

  6. 信函及合同

    该示例项目演示了非结构化文档（从该文档中捕获了 2 或 3 个字段）的处理流程。该项目演示了以下功能：

    • 文档中可变的页数（从 1 至 4）
    • 设置导出至可搜索的 PDF。


受支持的识别语言

ABBYY FlexiCapture 10 支持以下带词典支持的识别语言：

语言 | OCR* | ICR**
亚美尼亚语（东部、西部、格拉巴） | ü |
巴什基尔语 | ü |
保加利亚语 | ü | ü
加泰隆语 | ü |
克罗地亚语 | ü | ü
捷克语 | ü | ü
丹麦语 | ü |
荷兰语（荷兰和比利时） | ü | ü
英语 | ü | ü
爱沙尼亚语 | ü | ü
芬兰语 | ü | ü
法语 | ü | ü
德语（新式、旧式拼写） | ü | ü
希腊语 | ü | ü
希伯来语 | ü |
匈牙利语 | ü | ü
印度尼西亚语 | ü | ü
意大利语 | ü | ü
拉脱维亚语 | ü | ü
立陶宛语 | ü | ü
挪威语（尼诺斯克和博克马尔） | ü |
旧式英语 | ü |
旧式法语 | ü | ü
旧式德语 | ü | ü
旧式意大利语 | ü | ü
旧式西班牙语 | ü | ü
波兰语 | ü | ü
葡萄牙语（葡萄牙和巴西） | ü |
罗马尼亚语 | ü | ü
俄语 | ü | ü
斯洛伐克语 | ü | ü
斯洛文尼亚语 | ü | ü
西班牙语 | ü | ü
瑞典语 | ü |
鞑靼语 | ü |
泰国语 | ü |
土耳其语 | ü | ü
乌克兰语 | ü | ü

要了解受支持语言的字体的更多信息，请查看“在 ABBYY FlexiCapture 编辑器中正确渲染受支持收据类型的字符所需的字体”部分。

可在 http://www.abbyy.com 中找到受支持数据类型的完整更新列表及其详细信息。

* - OCR - 光学字符识别。打印文本的光学识别。

** - ICR - 智能字符识别。手印文本的识别。


在 FormReader 编辑器中正确宣染受支持数据类型字符所需的字体

在 ABBYY FlexiCapture 编辑器中正确宣染受支持语言字符所需的字体

语言 | 字体
通过词典支持 |
亚美尼亚语（东部、西部、格拉巴） | Arial Unicode MS(2)
鞑靼语 | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
不通过词典支持 |
阿布哈西亚语 | Arial Unicode MS(2)
阿迪格语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
阿古尔语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
阿尔泰语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
阿瓦尔语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
阿塞拜疆语（西里尔文），阿塞拜疆语（拉丁文） | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
巴什基尔语 | Arial Unicode MS(2)，Palatino Linotype(2)
布里亚特语 | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
车臣语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
楚克其语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
楚瓦什语 | Arial Unicode MS(2)
达尔金语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
东干语 | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
加告兹语 | Arial Unicode MS(2)
豪萨语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
印古什语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
卡巴尔达语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
卡尔梅克语 | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
卡拉卡尔帕克语 | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
哈萨克语 | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
哈卡斯语 | Arial Unicode MS(2)
汉特语 | Arial Unicode MS(2)
科尔雅克语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
吉尔吉斯语 | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
拉克语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
莱兹金语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
曼西语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
马里语 | Arial Unicode MS(2)
蒙古语 | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
勒勒茨语 | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
奥塞特语 | Arial Unicode MS(2)
俄语（旧式拼写） | Arial Unicode MS(2)，Palatino Linotype(2)
塔巴萨兰语 | Arial Unicode MS(2), Lucida Sans Unicode(3)
塔吉克语 | Arial Unicode MS(2)，Palatino Linotype(2)
土库曼语 | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
塔巴萨兰语 | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
乌德穆尔特语 | Arial Unicode MS(2)
乌兹别克语（西里尔） | MS Core Fonts 2.82(1)（Arial、Courier New 和 Times New Roman）
雅库特语 | Arial Unicode MS(2)
祖鲁语 | Arial Unicode MS,(2)，Lucida Sans Unicode(3)

(1) http://www.microsoft.com/

(2) MS Office 2000

(3) Windows NT 4.0


受支持的文本类型

ABBYY FlexiCapture 10 支持以下文本类型：

文本类型 | 描述
点阵、激光或喷墨打印机 | 在打印店、激光打印机或喷墨打印机上打印的文本。
打字机 | 打印的文本。
点矩阵打印机 | 在点矩阵打印机上打印的文本。
索引（Index） | 一组只包括以 ZIP 代码样式书写的数字的字符。其类似如下：
OCR-A | 用于光学字符识别的等宽字体。主要供银行、信用卡公司和相似公司使用。其可能类似：
OCR-B | 用于光学字符识别的字体。其可能类似：
MICR E-138 | 一组通过磁性墨水的打印的特殊数字字符。可在各种位置找到 MICR（磁性墨水字符识别）字符，包括个人支票。其可能类似：
MICR CMC-7 | 一种特殊的 MICR 条形码字体 (CMC-7)。其可能类似：


受支持的条形码类型

ABBYY FlexiCapture 10 支持以下条形码格式：

  • EAN 13
  • EAN 8
  • Code 39
  • 检查 Code 39
  • 交叉 25 码
  • 检查交叉 25 码
  • Code 128
  • Codabar
  • UPC-A
  • UPC-E
  • Code 93
  • UCC-128
  • PDF-417
  • IATA 25
  • Matrix 25
  • Industrial 25
  • PostNet
  • Patch code
  • 检查 CodaBar
  • Aztec
  • Datamatrix
  • QR code

注：ABBYY FlexiCapture 10 可读取 Aztec, Datamatrix 和 QR code 条形码，但其无法将这些条形码检测到图像中。因此，您可在文档定义中使用这些条形码类型，但不能将其用于 FlexiLayout 或用作文档分隔符。


受支持的图形格式

类型 | 彩色
BMP | 黑白、灰度、彩色
PCX、DCX | 黑白、灰度
PNG | 黑白、灰度、彩色
JPEG | 灰度、彩色
JPEG-2000 | 灰度、彩色
TIFF | 黑白 – 未压缩、CCITT3、CCITT4、Packbits、ZIP； 灰度 – 未压缩、Packbits、JPEG、ZIP；颜色 – 未压缩、JPEG、ZIP。
JBIG2 | 黑白
GIF | 彩色
PDF、PDF/A |
PDF、PDF/A 可搜索 |
DjVu | 黑白、灰度、彩色


导出文件格式

ABBYY FlexiCapture 10 从文档中导出数据的文件格式

  • Microsoft Office Excel Workbook (*.XLS)
  • DBase 文件 (*.DBF)
  • 逗号分隔值文件 (*.CSV)。ABBYY FlexiCapture 支持各种代码页 (Windows,DOS)
  • Unicode 格式 (UTF-8,UTF-16) 的逗号分隔值文件 (*.CSV)
  • 简单文本 (*.TXT)。ABBYY FlexiCapture 支持各种代码页 (Windows,DOS)
  • Unicode 格式 (UTF-8,UTF-16) 的简单文本 (*.TXT)
  • XML 文档 (*.XML)


用于正则表达式的符号集

名称 | 传统格式 | 用法示例
任意字符 | * | "c"*"t" – 允许 cat、cot 之类的单词。
字母 | C | C"ot" – 允许 Rot、pot、cot、Dot、mot 之类的单词。
大写字母 | A | A"ot" – 允许 Rot、Cot、Mot、Dot 之类的单词。
小写字母 | a | a"ot" – 允许 rot、cot、mot、dot 之类的单词。
字母或数字 | X | X – 允许任意单独的数字或字母。
编号 | N | N"th" 允许 5th、4th、6th 之类的单词。
字符串 | " " | "cot"
或 | | | "pl"("o"|"a")"t" – 允许单词 "plot" 和 "plat"。
组中的字符 | [] | [tm]"ot" – 允许单词 "tot" 和 "mot"。
不属于组中的字符 | [^] | [^t]"ot" – 允许单词 "cot"、"lot" 等，但不允许单词 "tot"。
空格（组内） | \s | [A\s] 仅允许字母 A 或空格。
任意重复的数字 （适用于左侧的表达式或子表达式） | {-} | [AB74]{-} – 允许任何长度的字符 A、B、7、4 组合。
重复数 n | {n} | N{2}"th" 允许 25th、84th、11th 之类的单词。
从 n 至 m 重复 | {n-m} | N{1-3}"th" 允许 5th、84th、111th 之类的单词。
从 0 到 n 重复 | {-n} | N{-2}"th" 允许 84th、5th 之类的单词。
从 n 重复及更多 | {n-} | N{2-}"th" 允许 25th、834th、311th、34576th 之类的单词。
子表达式 | () |
连字符符号 | [\-] |
斜线符号 | [\\] |

正则表达式示例

  1. 邮政编码：[0-9]{6}
    样本值："142172"

  2. 邮编（美国）：[0-9]{5}("-"[0-9]{4}){-1}
    样本值："55416"、"33701-4313"

  3. 收入：N{4-8}[,]N{2}
    样本值："15000,00"、"4499,00"

  4. 用数字格式表示的月份：((|"0")[1-9])|("10")|("11")|("12")
    样本值："4"、"05"、"12"

  5. 小数：("-"|)([0-9]{1-})(|(("."|",")([0-9]{1-})))
    样本值："1234,567"、"0.99"、"100,0"、"-345.6788903"

  6. 电子邮件：[A-Za-z0-9_]{1-}(("."|"-")[A-Za-z0-9_]{1-}){-3}"@"[A-Za-z0-9_]{1-}(("."|"-")[A-Za-z0-9_]{1-}){-4}"."([A-Za-z]{2-4}|"asia"|"museum"|"travel"|"example"|"localhost")
    样本值："support@abbyy.com"、"my-name@company.org.ru"、"info@gallery.museum"


专利

美国专利号 5,490,216、5,625,465、5,768,416 和 6,094,505


第三方技术

JasPer License Version 2.0

版权所有 (c) 2001-2006 Michael David Adams
版权所有 (c) 1999-2000 Image Power, Inc.
版权所有 (c) 1999-2000 The University of British Columbia

保留所有权利。

更多

特此无偿授予获取该软件及相关文档的任何人（“用户”）无限制使用本软件的权利，包括使用、复制、修改、合并、发布、分发和/或出售本软件和相关文档文件（“软件”）副本的无限制权利，并允许本软件所提供给的任何人进行上述操作，前提是满足以下许可条件。

  1. 上述版权声明和该许可声明（包括下面的免责声明）将包括在本软件的所有副本或重要部分中。

  2. 未经事先书面同意，版权所有者的名称不得用于支持或促销从该软件衍生的产品。

该保证的免责声明是本许可证的关键部分。

只有在认可该免责声明的前提下对本软件的使用才能得到授权。本软件由版权所有者按“现状”提供，不做出任何明示或暗示的保证，包括但不限于表明本软件适销性和适合特定用途以及不侵犯第三方权利的保证。在任何情况下，对于因使用本软件或本软件性能导致的或与此有关的任何权利主张，任何直接、间接的或特殊性的损害，或任何因使用、数据或利润的损失而导致的损害，无论是否涉及合同、疏忽或其他侵权行为，版权所有者概不负责。版权所有者不作任何有关本软件不侵犯任何其他实体的专利或其他知识产权的保证。每个版权所有者不对用户承担其他实体基于侵犯知识产权或其他权利而提出的权利主张承担责任。作为行使下面授予的权利的一个条件，每个用户要承担遵守其他任何知识产权的全部责任。本软件不具有容错性，并且其并非旨在用于关键任务系统（如核设施、飞机导航或通讯系统、空中交通管制、直接生命维持系统或武器系统），在此类环境中本软件或系统如果出现故障，将直接导致死亡、人身伤害或严重的物理或环境损害（“高风险活动”）。版权所有者不对适合高风险活动做出任何明示或暗示的保证，并对此做出免责声明。

商标

QuickScan 是商标，Captiva 是 Captiva Software Corporation 的注册商标。

KODAK 是 Eastman Kodak Company 的商标。

TWAIN Toolkit

TWAIN Toolkit 按原样分销。TWAIN Toolkit 的开发者和分销商明确拒绝作出所有默示的、明示的或法定保证，包括但不限于针对适销性、不侵犯第三方权利和适用于某特定目的作出的默示保证。对于因复制、修改、发布或以其他方式使用 TWAIN Toolkit 而造成的任何损害，无论是直接的、间接的、特殊的、附带的还是后果性的，开发者和分销商均不负责。


技术支持

如有任何关于使用 ABBYY FlexiCapture 10 疑问，请查阅其随附的帮助主题和用户指南中的详细功能描述。也可浏览我们网站 www.abbyy.com 上的技术支持部分，在其中您可找到相应的答案。

为了为您提供专业建议，我们的技术支持服务中心要求您提供以下信息：

  • 姓、名和父名
  • 组织名称
  • 电话（传真、电子邮件地址）
  • 安装包的序列号
  • Build 号（请参阅帮助>关于 ABBYY FlexiCapture）
  • 带有完整错误消息文本的常见问题描述（如有）
  • PC 和处理器类型
  • Windows 操作系统版本
  • 您认为重要的其他信息。
ABBYY 办公室地址和联系详细信息


如何购买 ABBYY FlexiCapture 10

要提交 ABBYY FlexiCapture 订购单或询问任何相关的问题，请联系 ABBYY 区域办公室。


ABBYY 办事处

美国、墨西哥和中美洲 | ABBYY USA 电话：+1 408-457-9777 传真：+1 408-457-9778 地址：880 North McCarthy Blvd., Suite #220 Milpitas, CA 95035, USA 电子邮件：sales@abbyyusa.com 技术支持：support@abbyyusa.com 网站：http://www.abbyy.com
加拿大 | ABBYY Canada 电话：+1 408 457 9777 传真：+1 408 457 9778 地址：555 Legget Dr., Suite 304 Kanata, Ontario K2k 2X3, Canada 销售电子邮件：info_canada@abbyyusa.com 支持电子邮件：support_canada@abbyyusa.com 网址： http://www.abbyy.com
东欧和地中海地区 | ABBYY Ukraine 电话：+380 44 490 9999 传真：+380 44 490 9461 地址：P.O.Box 23, 02002 Kiev, Ukraine 电子邮件： forms@abbyy.ua 支持电话：+380 44 490 9463 支持电子邮件： formsupport@abbyy.ua 网站： http://www.abbyy.ua
非洲、亚洲、南美洲、希腊和波罗的海国家/地区 | ABBYY 3A 电话：+7 495 783 3700 传真：+7 495 783 2663 地址：P.O.Box 32, Moscow 127273, Russia 销售电子邮件：sales_3A@abbyy.com 支持电子邮件：support@abbyy.com 网址：http://www.abbyy.cn http://www.abbyy.com.br http://latam.abbyy.com
西欧 | ABBYY Europe GmbH 电话：+49 (0)89 511 159 0 传真：+49 89 (0)511 159 59 地址：Elsenheimerstraße 49, 80687 Munich, Germany 电子邮件： sales_eu@abbyy.com 支持电子邮件： support_eu@abbyy.com 网站： http://www.abbyy.com http://www.abbyy.de http://www.france.abbyy.com
大不列颠 | ABBYY UK Ltd. 电话：+0870 600 0231 传真：+01344 392 611 地址：Abbey House, Grenville Place, Bracknell RG12 1BP, United Kingdom 电子邮件： sales_UK@abbyy.com 支持电子邮件： support_eu@abbyy.com 网站： http://www.abbyy.co.uk
日本 | ABBYY Japan 电话：+81-42-795-1901 传真：+81-42-795-1901 地址：658-1 Tsuruma, Machida-shi, Tokyo 194-8510 电子邮件： sales@abbyyusa.com 支持电子邮件： support@abbyyusa.com 网站： http://www.abbyy.com
中国台湾 | ABBYY Taiwan 电话：+886-2-2655-0556 传真：+886-2-2655-2339 地址：Room #524, 5Fl, Building E, No.19-11, Sanchong road, Nangang District, Taipei 115, Taiwan, R.O.C. 电子邮件： sales@abbyyusa.com 支持电子邮件： support@abbyyusa.com 网站： http://www.abbyy.com
澳大利亚和新西兰 | ABBYY Australia 地址：Citigroup Building, level 39, 2 Park Street, Sydney, NSW, 2000, Australia 销售电子邮件：sales_au@abbyy.com 支持电子邮件：support@abbyy.com 网址： http://www.abbyy.com
其他地区 | ABBYY Russia 电话： +7 495 783 3700 传真：+7 495 783 2663 邮寄地址：Russia, 127273, Moscow, P.O.box 32, ABBYY 营业地址：Moscow, ul.Otradnaya 2B, str.6, Otradny Business Centre 电子邮件：sales@abbyy.ru 技术支持：support@abbyy.ru 网站：http://www.abbyy.ru 地图


最终用户许可协议

ABBYY FlexiCapture 10

重要事项！在安装、复制和/或使用 FlexiCapture 10（以下简称“软件”）之前，请仔细阅读以下条款。安装、复制或使用该软件，即表明您接受这些条款。

本 ABBYY 最终用户许可协议（以下简称“ EULA”）是您（附有本 EULA 的上述确定的 ABBYY 软件产品[包括任何和所有相关介质、打印材料和“在线”或电子文档]（统称为“软件”）的最终用户）与 ABBYY 之间签订的一份法律协议。

通过安装、复制或以其他方式使用该软件，即表明您确认您已阅读并理解本 EULA，并同意受其条款约束。

该软件受版权法和国际公约条款保护。您同意本 EULA 与您签署的任何书面协议一样均可执行。

本 EULA 在您选择该软件安装程序中“我接受许可协议条款”选项并单击“下一步”以接受本协议所有条款的日期，或您以任何方式开始使用该软件的日期生效。此事件日期即为生效日期。

如果该软件随附了由双方签署的许可协议原件的硬拷贝，那么在本 EULA 的文本与许可协议硬拷贝中的文本出现内容不一致的情况时，以许可协议硬拷贝中的文本为准。

如果您不同意本 EULA 的条款，不要安装和使用该软件，请选择该软件安装程序中“我不接受该许可协议的条款”选项并单击“取消”。

定义：

“软件”应指 ABBYY FlexiCapture 10 软件，它包括一组受版权法保护的计算机程序、数据库和文档（可能以书面或电子形式提供）。

“软件组件”应指软件的任何组成部分，包括但不限于软件所含的任何计算机程序。

“计算机”应指带有一个或多个 CPU 内核的电子设备，可接受数字或相似形式的信息，并根据一系列指令操纵该等信息以获取特定结果。

“虚拟机”指虚拟（或其他仿真的）硬件系统。

“许可证”应指 ABBYY 授予您的非专属权利，以允许您根据本 EULA 条款安装和使用该软件的功能。

“序列号”指的是向最终用户提供的具有类似参数的许可证或许可证组的唯一标识符。

“软件激活”应指根据该软件文档和您的许可范围使所安装的软件完全可正常运行的程序。

“ABBYY”应指

本 EULA 第 17.1 条适用时，指 ABBYY USA Software House Inc.（注册地址为：880 North McCarthy Boulevard, Suite 220, Milpitas, California 95035, USA）；

本 EULA 的第 17.2 条适用时，指 ABBYY Europe GmbH（注册地址为：Elsenheimerstr. 49 80687 Munich）；

本 EULA 的第 17.3 条适用时，指 ABBYY UK Ltd.（注册地址为：Heathrow Business Centre, 65 High Street, Egham, Surrey TW20 9EY, United Kingdom）；

本 EULA 的第 17.4 条适用时，指 ABBYY LLC（注册地址为：ul. Perovskaya dom 22, korpus 1, 111398, Moscow, Russia），

本 EULA 的第 17.5 条适用时，指 ABBYY Software House Ukraine（注册地址为：31, Degtyarevskaya st., Kiev, Ukraine 03680）；

在其他所有情况下，则指 ABBYY Solutions Ltd.（注册地址为：Michail Karaoli 2, Egkomi, CY 2404, Nicosia, Cyprus）。

“您”、“您的”和“最终用户”意指并包括获取并以自身名义使用该软件的任何个人（包括个体经营户）和/或任何法人实体。

“ABBYY 合作伙伴”应指经 ABBYY 协议授权向您提供该软件及该软件使用权利的法人实体或个体经营户。

1. 许可证授权

1.1. 在您遵守本 EULA 条款的前提下，ABBYY 授予您非专属的有限权利（“许可”）以安装和使用该软件的功能，包括该软件中所含全部图像、照片、动画、音频/视频组件、音乐、文本和 Applet，以及如下所述随附的打印材料和该软件的所有副本。下述所有条款同时适用于该软件整体及其所有组件。

1.2. 如果第 17.4 条适用且您是自然人，则您可在全球范围内使用该软件。如果第 17.4 条适用，且您是法人实体或者其分支机构和/或代表办事处，则您仅可在该法人实体（其分支机构和/或代表办事处）注册的国家/地区使用该软件，除非您与 ABBYY 之间另行签订的协议中有其他规定。

2. 许可证

2.1. ABBYY 作出以下陈述、保证和担保：ABBYY 有充分的权利、职权、法定资格、能力和权限许可并分发该软件，包括该软件中所含全部图像、照片、动画、音频/视频组件、音乐、文本和小程序，以及随附的印刷材料和该软件的所有副本。

2.2. 该软件中未包含但可能通过使用该软件而访问的内容所有权和知识产权，均是各内容所有者的财产，可能受适用的版权法或其他知识产权法和国际公约保护。本 EULA 并非意欲转让该等知识产权的所有权。

2.3. 该软件包含属于 ABBYY 和第三方的有价值的商业秘密和机密信息，这些信息受版权保护，包括但不限于美国版权法、俄罗斯联邦法律、国际公约条款以及使用该软件所在国家或地区适用的法律。

2.4.超出或违反本 EULA 的条款对该软件作出的任何使用，均应构成违反 ABBYY 和/或第三方知识产权，应将因此可撤销根据本 EULA 授予您的使用该软件的所有权利。

2.5. 您确定，该软件经过保护可防止未授权的复制和无限制的使用，其可能包括提供了该等保护的软件或硬件保护密钥（以下称为“许可密钥”）。您所接受的该软件受到所有该等保护。

2.6. 许可范围可能取决于在订购该软件期间指定的多种因素：可用功能的设置、允许在网络中运行软件组件的数量和类型、该软件所用的 CPU 数量、可处理的最多页数及到期日期等。所有此信息和其他信息均编码在许可密钥中。许可密钥技术限制了对该软件的使用，反映了您所订购的许可的范围。

2.7. 您可以永久转让该软件，但仅限一次，并且只能直接转让给另一最终用户。如果您是法人实体，则此类转让需要 ABBYY 的书面批准。该转让必须包含该软件所有部分（包括所有软件组件、介质和打印材料、任何升级和本 EULA）。这种转让不能通过托人代售的方式或任何其他间接的转让方式进行。该等一次性转让的受让人必须同意遵守本 EULA 的条款，包括不得进一步转让该软件的义务。如果转让了该软件，则必须从所有安装了该软件的计算机卸载该软件。

2.8. 除了第 2.7 条中的规定，您不得向任何他人转让、分发或再许可该软件，包括根据本协议向您授予的任何权利和/或与该软件有关的任何其他权利。在出现该等转让或分发时，ABBYY 有权终止本 EULA。

2.9. 本 EULA 并未向您授予与 ABBYY 的任何商标有关的任何权利。

2.10. ABBYY 保留未明确授予的所有权利。

3. 对该软件的使用

3.1. 您可根据您的许可范围使用该软件。

3.2. 您可在任意数量的计算机上或虚拟机上安装该软件。

3.3. 软件功能和您可同时运行该软件的计算机或虚拟机（如果您的许可证允许您使用虚拟机）数量由随该软件提供的序列号定义。

3.4. 如果在虚拟（如 VMware、Citrix 或 克隆）软件环境中部署该软件或任何软件组件，则多台机器无法同时使用同一许可证。您同意在任何时候，该软件使用的页面总数都不会超过许可证允许的页面总数。

3.5. 如果您通过使用终端服务（可使您通过网络访问远程计算机上的该软件）访问该软件，则在您的许可所允许的及本 EULA 所规定的范围内，可同时运行尽量多的该软件的副本。

3.6. 如果您通过使用 Web 浏览器（可使您通过因特网访问远程计算机上的该软件）访问该软件，则在您的许可所允许的及本 EULA 所规定的范围内，可同时运行尽量多的该软件的副本。

3.7. 只有您的许可密钥已启用“BPO 服务”参数时，您才能使用该软件向任何第三方提供识别和转换服务且/或提供通过使用该软件所获取的结果。

3.8. 仅当您与 ABBYY 签署了单独的书面协议之后，您才可以使用该软件向任何第三方提供付费或免费识别及转换服务，以及/或提供通过使用该软件（作为拥有识别和转换功能的另一服务的一部分，即作为其组件）获得的结果或提供此等结果的访问权。

3.9. 如果该软件标有“试用”或“不供转售”，则无论本 EULA 其他部分如何规定，您都只能将该软件用于评估或演示。您确认该软件的功能有限，且/或使用期限有限。如果该软件为超时版本，则在过了您的许可范围所允许的指定期限后，将禁用其功能。

3.10.您不得执行或为他人提供机会执行以下列表中列出的任何活动：

3.10.1.对程序、数据库和该软件的其他软件组件作出倒序制作、反向汇编和/或反向编译（获取目标代表的源代表），除非适用法律明确允许作出该等活动（尽管有此限制）。如果适用的法律允许这类活动，由此发现的任何信息不得向第三方公开（除非法律规定需要进行公开，且这类信息必须立即报告给 ABBYY）。所有这类信息应视为 ABBYY 的机密和专属信息。

3.10.2.修改、改编（更改软件以使其适用于最终用户硬件）或转换该软件，包括更改该软件中包含的应用程序和数据库目标代码，但该软件提供并在文档中描述的更改之外。

3.10.3.未经 ABBYY 的事先书面同意而更正错误。

3.10.4.向任何他人租赁、出租、再许可、分配或转让本协议授予您的任何权利和与该软件相关的其他权利，或者授权将该软件的全部或任何部分复制到任何其他计算机上，除非与 ABBYY 单独签署的协议中另有规定。

3.10.5.使无权使用该软件且与您共用多用户系统的任何人能够使用该软件。

3.10.6.删除、更改或掩盖该软件上按交付给您时的原样显示的任何版权、商标或专公告。

4. 双介质软件

4.1. 您可以通过多种介质接收该软件，包括通过因特网下载。不管您收到的介质数量如何，均会根据本 FULA 许可您使用该软件。

5. 限制

5.1. 您只有激活该软件才能行使本 EULA 授予您的对该软件的使用权。

5.2. 控制该软件的使用、支持和维护的所有使用条款和限制都在该 EULA 中表述，除非与 ABBYY 或 ABBYY 合作伙伴单独签署的协议中另有规定。

6. 最终用户数据库

6.1. 您可为该软件中包含的程序创建您自己的数据库，前提是该软件提供了该等功能且其文档也描述了该功能。

7. 该软件的重新发布

7.1. 除第 2.6 条中规定的之外，严禁对该软件作出任何重新发布。重新发布包括但不限于，向第三方授予访问权、出租、租赁或出借该软件。

8. 维护和技术支持

8.1. ABBYY 或其合作伙伴可根据本 EULA 附录 A 中条款的规定为您提供维护和技术支持服务，除非您与 ABBYY 之间或您与 ABBYY 合作伙伴之间在单独协议中另有协定。

9. 有限保证

9.1. ABBYY 保证在您购买该软件所在国家或地区的法定最短保证期内（从购买日起），在正常使用下，承载该软件的介质（如有）无材质和工艺方面的缺陷。如果该软件是根据第 17.4 条购买的，该期限为从购买日起的三十（30）天。

9.2. 该软件及其任何更新或升级按“原样”交付给您，ABBYY 不作出任何类型的保证。ABBYY 不保证也无法保证您使用该软件可能获得的性能或结果。除您所在司法区域对您适用的法律要求不能免除或限制的任何保证、条件、陈述或条款之外，ABBYY 及其合作伙伴不针对任何事项（包括但不限于不侵权第三方权利、适销性、完整性、质量满意度或符合某特定用途，或该软件无错误、符合您的要求或该软件兼容于其他任何软件或硬件）作出任何保证、条件、陈述或条款（无论是根据成文法、普通法、惯例、习俗或其他法规作出的明示或默示保证）。有关该软件质量和性能的所有风险应由您承担。

9.3. ABBYY 不针对该软件可能嵌有的任何第三方软件产品作出任何保证。

10. 责任限制

10.1. 在任何情况下，对于因使用该软件引起的和/或与之相关的任何损害、业务中断，任何类型（商业或其他性质）的数据或信息丢失、索赔或任何开支或任何后果性的、间接的或附带的损害或任何利润损失或可节省费用的损失，或由该软件中可能存在的错误或排版错误所引起的损害，ABBYY 概不负责，即使 ABBYY 代表已被告知有可能遭受该等损失、损害、索赔或开销或任何第三方提出的任何权利主张。在您所在管辖区适用法律允许的范围内，前述限制和免除事项仍适用。ABBYY 在本 EULA 项下或与之相关的唯一全部赔偿责任不得超过已支付的该软件初始购买价（如有）。

10.2. 对居住在德国或奥地利用户的责任限制
如果您在德国或奥地利获得该软件的副本，并且您在该等国家长期居住，则：

10.2.1. 在任何情况下，对于因使用该软件引起的和/或与之相关的任何损害、业务中断，任何类型（商业或其他性质）的数据或信息丢失、索赔或任何开支或任何后果性的、间接的或附带的损害或任何利润损失或可节省费用的损失，或由该软件中可能存在的错误或排版错误所引起的损害，ABBYY 概不负责，即使 ABBYY 代表已被告知有可能遭受该等损失、损害、索赔或开销或任何第三方提出的任何权利主张。

10.2.2. 第 10.2.1 条中规定的责任限制不得适用于任何强制性法定责任，特别是德国产品责任法规定的责任、承担特定担保的责任或对刑事犯罪所导致的人身伤害所负有的责任。

10.2.3. 您应采取一切合理措施来避免和减少损害，特别是您应根据本 EULA 规定备份该软件的副本和您的计算机数据。

11. 嵌入式字体

11.1.字体程序受版权保护，版权所有者可能会规定限制字体程序使用的条件。其中一个条件可能是，您需要字体程序的许可副本才能将字体嵌入到 PDF 文件中。在任何情况下，ABBYY 均不对您使用嵌入式字体所引起或与之相关的任何损害负有责任。

12. Adobe® PDF Library

12.1.“Adobe 软件”应指 Adobe® PDF Library for Windows 2000, XP 和相关文档及其任何升级、修改版本、更新、补充和副本。该软件使用 Adobe 软件将 PDF 文件转换为图像文件。

12.2.许可授予和限制。ABBYY 授予您非专属的权利根据本 EULA 条款使用该软件中所含 Adobe 软件。您可以制作该软件中所含 Adobe 软件的一个备份副本，前提是该备份副本不在任何计算机上安装或使用。

12.3.知识产权。该软件中含有的 Adobe 软件归 Adobe 及其供应商所有，其结构、组织和代码是 Adobe 及其供应商的有价值的商业秘密。Adobe 软件还受美国版权法和国际公约条款的保护。您不得复制该软件中所含的 Adobe 软件，除非本 EULA 中另有规定。本 EULA 允许您制作的任何副本都必须包含该软件外部或内部显示的相同版权和其他所有权公告。您同意不对该软件中所含 Adobe 软件进行修改、改编、转换、倒序制作、反向编译、反向汇解或以其他方式尝试发现其源代码。除了上述规定，本 EULA 不授予您对 Adobe 软件的任何知识产权。

12.4.字体许可。如果该软件或其中嵌有的 Adobe 软件包括字体软件，则您可以将字体软件或其轮廓嵌入到电子文档中，前提是字体供应商版权所有者允许这类嵌入操作。该软件包中所含字体可以包括 Adobe 和非 Adobe 拥有的字体。您可以完全对 Adobe 拥有的任何字体执行嵌入操作。

12.5.保证。ABBYY 并不且无法保证您通过使用该软件中嵌有的 ADOBE 软件所能获取的性能和结果。

12.6.出口规定。您同意不将该软件中嵌有的 Adobe 软件运输、传输或出口到美国出口管理法或任何其他出口法律、限制或法规（统称为“出口法律”）所禁止的任何国家或地区，也不以该等出口法律所禁止的任何方式对其进行使用。此外，如果该软件中嵌有的 Adobe 软件根据出口法律被确定为出口受控项，您陈述并保证您不是禁止通商国的公民，也不在禁止通商国境内，并且出口法律未禁止您接收该软件中嵌有的 Adobe 软件。授予使用该软件中嵌有的 Adobe 软件的所有权利时基于以下条件：如果您未能遵守本 EULA 条款，您将丧失该等权利。

12.7.商标。Adobe 和 Adobe PDF Library 是 Adobe Systems Incorporated 在美国和/或其他国家或地区的注册商标或商标。

13. PixTools® Scan 运行时库。

13.1.“EMC 软件”应指定 PixTools Scan 运行时库、第 1 级 ISIS 驱动程序、第 2 级 ISIS 驱动程序和第 3 级 ISIS 驱动程序。该软件可能使用 EMC 软件通过 ISIS 接口在扫描仪和软件之间进行通信。

13.2.许可授予和限制。ABBYY 授予您非专属的权利根据本 EULA 条款使用该软件中嵌有的 EMC 软件。

13.3.知识产权。该软件中嵌有的 EMCe 软件归 EMC Corporation 及其供应商所有，其结构、组织和代码均是 EMC Corporation 及其供应商的有价值的商业秘密。EMC 软件还受美国版权法和国际公约条款的保护。您不得复制该软件中嵌有的 EMC 软件。您同意不对该软件中所含 EMC 软件进行修改、改编、转换、倒序制作、反向编译、反向汇解或以其他方式尝试发现其源代码。除了上述规定，本 EULA 不授予您对 EMC 软件的任何知识产权。

13.4.保证。
ABBYY 并不且无法保证您通过使用该软件中嵌有的 EMC 软件所能获取的性能和结果。
在任何情况下，对于任何后果性、间接的、或特殊性的损害，包括任何利润损失或可节省的开支损失或第三方提出的任何权利主张，EMC CORPORATION 或其供应商概不负责。
某些州或管辖区不允许排除或限制附带的、后果性的或特殊的损害，因此上述限制可能不适用于您。您可拥有其他权利，该等其他权利可能因州或管辖区而异。

13.5.商标。
ISIS 和 PixTools 是 EMC Corporation 在美国和/或其他国家或地区的注册商标或商标。

14. LIZARDTECH SOFTWARE

14.1.“LIZARDTECH SOFTWARE”指包括 LIZARDTECH 源代码、任何相关介质、印刷材料和“在线”或电子文档的 DjVu Decoder 软件开发包。您已从 LIZARDTECH, INC. 处获得包含由 ABBYY 许可的 LIZARDTECH SOFTWARE 的软件。该软件使用 LIZARDTECH SOFTWARE，以将 DjVu 文件转换为图像文件。

14.2.LIZARDTECH SOFTWARE 受版权法、国际版权公约以及其他其他知识产权法和公约保护。LIZARDTECH SOFTWARE 已获得许可，但不得用于销售。

14.3.许可证授权。已向您授权个人、不可再许可、不可转让且非独家的许可，以使用该软件中集成的 LIZARDTECH SOFTWARE（以及任何关联的文档）。不得租赁、出售、出租或分发 LIZARDTECH SOFTWARE 或其任何部分。

14.4.对 LIZARDTECH SOFTWARE 未做任何保证 LIZARDTECH SOFTWARE 按“原样”提供且带有所有缺陷。与满意的质量、性能、准确性及努力（包括疏忽过失）相关的所有风险由您自负。另外，我们不保证在您使用 LIZARDTECH SOFTWARE 时，不会出现任何干扰或侵权行为。如果您获得关于该软件或 LIZARDTECH SOFTWARE 的任何保证，那些保证并非源自 LIZARDTECH，且对 LIZARDTECH 无任何约束力。

14.5.对某些损害不负任何责任。除了法律禁止之外，LIZARDTECH 对 LIZARDTECH SOFTWARE 的使用或性能导致或有关的任何间接、特殊、必然或偶然损害不负任何责任。即使任何补救措施未实现其主要目的，本限制也适用。

14.6.对反向工程、反编译和反汇编的限制。不得对 LIZARDTECH SOFTWARE 进行反向工程、反编译或反汇编，除以下情况之外且仅限于以下情况：适用的法律超越此限制而明确允许这类活动。

14.7.出口限制。您认可 LIZARDTECH SOFTWARE 或其任何部分，或者任何程序或服务是源自美国的 LIZARDTECH SOFTWARE 的直接产品（上述统称为“限制组件）。您同意遵守适用于这些产品的所有适用国际和国家法律，包括美国出口管理法规，以及美国及其他政府颁布的最终用户、最终用途和目的地限制。

15. 其他许可的技术

15.1.该软件将在以下美国专利号许可下使用：5,490,216、5,625,465、5,768,416 和 6,094,505。

16. 出口规定

16.1.不得违反获取该软件或以其他方式获得该软件所在国家或地区的法律中任何出口条款而出口或再出口该软件。此外，您陈述并保证适用的法律未禁止您接收该软件。

17. 适用法律

17.1.如果在美国、加拿大、墨西哥、中美洲（伯利兹、哥斯达黎加、萨尔瓦多、危地马拉、洪都拉斯、蒙塞拉特岛、尼加拉瓜、巴拿马、特克斯和凯克斯群岛、美属维尔京群岛）、日本或台湾地区获得该软件，则本 EULA 应受美国加里福尼亚州的法律管辖并据其进行解释。对于因本 EULA 和/或该软件可能引起的任何纠纷，您同意将其提交在加里福尼亚州圣塔克拉拉郡的联邦和/或州法庭进行审判。如果该软件是在美国获得，为免产生疑义，均指从 ABBYY USA Software House Inc. 购买了该软件。

17.2. 如果在奥地利、比利时、丹麦、芬兰、法国、德国、意大利、卢森堡、荷兰、葡萄牙、西班牙、瑞典或本 EULA 第 17.3 - 17.5 条中未提到的其他任何欧盟成员国（希腊、塞浦路斯和马耳他除外），或在海峡群岛、冰岛、列支敦士登、挪威或瑞士获得该软件，则本 EULA 应受在德意志联邦共和国慕尼黑生效的实体法管辖并据其进行解释，并且德意志联邦共和国慕尼黑的管辖法庭应对与本 EULA 相关的所有纠纷具备司法权。

17.3. 如果在大不列颠及北爱尔兰联合王国、爱尔兰共和国获得该软件，则本 EULA 应受英格兰和威尔士的法律管辖并依其解释，并且各相关方接受英格兰和威尔士法庭的审判。

17.4. 如果在俄罗斯、白俄罗斯、哈萨克斯坦或其他任何独联体国家（乌克兰和摩尔多瓦除外）获得该软件，或在格鲁吉亚、拉脱维亚、立陶宛或爱沙尼亚购买该软件，则本 EULA 应受俄罗斯联邦的实体法管辖并据其进行解释。

17.5. 如果在阿尔巴尼亚、波斯尼亚、黑塞哥维那、保加利亚、克罗地亚、捷克共和国、匈牙利、以色列、马其顿、波兰、罗马尼亚、斯洛伐克、斯洛文尼亚、土耳其、塞尔维亚、黑山、乌克兰或摩尔多瓦获得该软件，由本 EULA 应受乌克兰法律管辖并据其进行解释。

17.6. 如果第 17.4 条适用，并且您是法人实体或个体经营户，与本 EULA 相关的所有纠纷应由俄罗斯联邦莫斯科仲裁法庭进行审判。如果第 17.4 条适用，并且您是个人，与本 EULA 相关的所有纠纷应由俄罗斯联邦莫斯科彼得罗夫斯基区域法庭进行审判。

17.7. 如果第 17.5 条适用，并且您是法人实体或个体经营户，所有一切因该协议引起或与之相关的纠纷、争议或意见分歧均应根据乌克兰工商会的国际商业仲裁的仲裁规则和程序进行仲裁而加以最终解决。该法院的裁决是终局的，对双方均有约束力。如果第 17.5 条适用，并且您是个人，与本 EULA 相关的所有纠纷应提交乌克兰基辅市的舍甫琴科夫斯基区域法庭进行审判。

17.8. 本 EULA 不受任何管辖区的法律冲突规则或《联合国国际货物销售合同公约》管辖（明确排除适用上述公约）。

17.9. 如果在第 17.1 － 17.5 条中未指定的国家或地区购得该软件，本 EULA 应受您购买该软件所在国家或地区的实体法管辖并依其解释。

18. 条款

18.1.本 EULA 在生效日期生效。除非您与 ABBYY 之间另有协定或本 EULA 另有规定，本 EULA 将在该软件整个版权期限内有效。

18.2.您可以通过销毁该软件及随附的文档和所有相关副本来终止本 EULA。

18.3.如果您未能遵守本 EULA 的条款，在不损害您的任何其他权利的前提下，ABBYY 可以终止本 EULA。如果出现该等事件，您必须销毁该软件的所有副本及其所有组件。该等终止并不免除您为该软件和/或维护付款的义务。

18.4. 无仍因任何原因终止了本 EULA，条款 2.3、2.8、2.9、3.9、7、9.2、9.3、10、17、20.2 和 20.3 仍然有效，但这并不暗示或造成在终止本 EULA 之后继续使用该软件的任何权利。

19. 政府使用

19.1.如果该软件由美国政府或美国政府的任何部门使用，以下额外条款适用：(1) 美国联邦采购法的“数据权利－常规”条文 52.227-14 中定义的受限计算机软件；以及 (2) 政府的任何使用、复制或公开行为受到 DFARS 252.227-7013 的“技术数据和计算机软件权利”条文的子段落 (c)(1)(ii) 中规定的限制。

20. 一般规定

20.1.如果本 EULA 的任何部分被视为无效且不可执行，则其并不影响本 EULA 其余部分的有效性，其余部分根据其条款仍然有效。

20.2.您同意向 ABBYY 提供您在激活、注册和操作该软件的过程中的个人详细信息。您同意 ABBYY 可以根据适用法律收集、处理和使用您的个人详细信息，前提是保持这些数据的机密性。您提供给 ABBYY 的任何个人详细信息将完全限于 ABBYY 及其附属公司内部存储和使用，不会向任何第三方公开（除适用法律要求公开的情况之外）。

20.3.ABBYY 可能向您发送包含产品和公司新闻、特价信息、产品用法建议以及其他产品和公司相关信息的电子邮件（如果您明确同意从 ABBYY 接收该信息）。您可以随时从 ABBYY 邮件列表中删除您的电子邮件地址。

20.4.ABBYY 可能向您提供印刷材料，包括用户指南。

20.5.本 EULA 项下的酬金是 ABBYY 或 ABBYY 合作伙伴拟定的该软件（或许可证）价格（应根据 ABBYY 或 ABBYY 合作伙伴拟定的付款程序进行付款），或纳入您的硬件购买价格中，或是您因使用完整版本的该软件而应支付的酬金的一部分。对于自然人，本 EULA 可能是免费的。

20.6.如果您因使用该软件而遭受任何索赔或法律诉讼，则应在获悉该等情况后的 3 天通知 ABBYY。您应在收到 ABBYY 的查询后的七天内采取所有必要的措施为 ABBYY 提供机会参与上述索赔或法律诉讼的听证，并为解决相关的索赔或法律诉令提供所需的信息。

附录 A

维护协议

本附录 A 应是 EULA 的重要组成部分，除非您与 ABBYY 单独签订的书面协议中另有规定，或是您与 ABBYY 合作伙伴之间单独签订的协议中另有规定。

1. 定义

1.1. “更新”应指该软件当前版本的增强功能，通常包括错误修正。

1.2. “升级”应指用于替代 EULA 下目前许可给您的主要或次要版本的该软件的下一版本（例如，1.5 将替代 1.0，2.0 将替代 1.x）。

1.3. “错误”应指根据文档列出的规格使用该软件时出现的性能故障。应识别以下三种类型的错误：

1.3.1. 优先级 1 错误应指没有解决方案的问题，您所在场地的生产将停止，包括显示“内部程序错误”、“内存不够”、“违反访问权”、“常见保护故障”、 “常见保护错误”的错误及“除以零”消息；

1.3.2. 优先级 2 错误应指可为其提供解决方案的故障；

1.3.3. 优先级 3 错误应指不妨碍您所在场地的生产的小问题。

1.4. “支持服务”指

(i) 在出错时 ABBYY 向您提供的服务，试图按照规范恢复该软件的操作。这些服务可能包括向您提供所报告错误的解决方案，或是向您提供该错误已消除的软件更新；

(ii) ABBYY 提供给您的信息将回答您关于该软件功能、安装、激活和操作的问题。

1.5. “升级保证”应指向您授予接收升级权的维护部分。

2. 维护

2.1. 维护可能包括发送更新、升级保证和支持服务或其任何组合。

2.2. 维护期限是十二 (12) 个月的初始期限，从发运该软件之日起。

2.3. 如需延长维修期限，则需要从 ABBYY 或其合作伙伴获取该等延期。如果第 17.2 条或第 17.3 条适用，当您在维护期限终止之前的 45 天内未取消维护时，无需作出进一步声明，维护期限将会延长 12 个月的期限。必须针对该等取消作出书面声明。

2.4. ABBYY 或其合作伙伴可能另行向您提供特定维护条款。

2.5. ABBYY 保留不时自行决定更改维护的格式和内容的权利。

2.6. 作为维护的一部分向您提供的该软件的任何补充代码应视为该软件的一部分，并受该 EULA 条款约束。

3. 更亲和升级保证

3.1. 升级和更新就通过光盘和/或电子方式（通过 FTP）交付。运输费用（如有）应由您支付。

3.2. 如果您购买了维护的“更新”部分，则您有权从 ABBYY 或其合作伙伴收到更新。ABBYY 或其合作伙伴将尽快向您提供该软件的更新。

3.3. 如果您购买了维护的“升级保证”部分，则您有权从 ABBYY 或其合作伙伴收到升级。ABBYY 或其合作伙伴将尽快向您提供该软件的升级。

3.4. 如果您开发了包含该软件或其一部分或与该软件相集成的任何应用程序，则此应用程序的任何新的大型发行应包括在该等发行之前的三 (3) 个月内 ABBYY 向您提供的该软件的最新更新（或最新更新，如果该等更新是在该等发行的三 (3) 个月以后发行的）。

4. 支持服务

4.1. 如果您购买了维护的“支持服务”部分，则 ABBYY 或其合作伙伴应按照在 ABBYY 网站 http://www.abbyy.com/support/policy 上发布的当前 ABBYY 支持政策向您提供支持服务。ABBYY 保留随时更改其支持政策而无需事先通知的权利。

4.2. ABBYY 或其合作伙伴应提供支持服务以解决优先级 1 错误。

4.3. 如果您购买了维护的“支持服务”部分，则 ABBYY 或其合作伙伴应在十二 (12) 个月的期限内针对多达八 (8) 次涉及优先级 2 和优先级 3 错误的请求提供支持服务。在此期限内，对于涉及优先级 2 和优先级 3 错误的任何附加请求所提供的支持服务应另行收取费用。

4.4. ABBYY 或其合作伙伴将在正常工作时间内通过电话或电子邮件提供与该软件相关的支持服务。

4.5. ABBYY 或其合作伙伴同意作出商业上合理的努力在正常发行时间表之外发行该软件的紧急更新，以解决向其报告的任何优先级 1 错误。在事件的正常过程中，可能在后续的发行中修复优先级 2 和 3 错误。紧急更新将仅针对该软件的当前版本发行，以解决优先级 1 错误。

4.6. 报告错误时，您同意向 ABBYY 或其合作伙伴提供查找错误并提供其修复和解决方案所需的支持数据。支持数据应包括问题描述、出现问题的平台和操作系统的标识、引起待发现错误的输入的副本、发现错误时所使用的格式文件的副本及错误所造成的任何机器转储。ABBYY 或其合作伙伴可以将上述信息用于商业用途，包括但不限于产品支持和开发，前提是 ABBYY 或其合作伙伴不以可表明您的个人身份的任何形式利用这类信息。


基本字段属性

可在常规选项卡配置基本字段属性。

在此选项卡上，字段类型显示为名称右侧的图标。

  • 名称： – 字段名称。名称在创建字段时自动分配，并与最接近字段的说明性文本相对应。编辑属性时，可更改默认分配的名称。另请参见如何更改字段名称。
  • 标题： – 将显示在数据表单中的字段的名称。
  • 导出字段值 – 如果想要导出字段值，必须启用此选项（默认启用）。您可能需要禁用此选项，例如，如果此字段的值用于获取已计算字段的值（参见规则校验），且只需导出最终结果。
  • 显示在数据表单中 – 如果必须在数据表单中显示字段，则必须启用此选项（默认启用）。
  • 不得为空 – 如果想要使其成为必填字段，请启用此选项。
  • 只读 – 如果字段仅供查看时访问，请启用此选项，即，操作员无法修改其值。对于必须使用规则自动计算其值的字段，您可启用此选项，例如，对于您计划在其中保存总和或组合其他字段的字段（参见规则校验）。
  • 索引字段 – 如果您期望使用此字段建立文档索引，请启用此选项。处理文档时，您将可为每个文档显示此字段的值，并根据字段值排序和搜索文档。
  • 注释： – 您可输入任何注释。

项目符号 字段属性


术语表

A

ABBYY FlexiCapture

各种文档类型单流数据输入的软件解决方案 - 结构化（固定表单）、半结构化（弹性表单和文档）和非结构化（自由格式文档）。

ABBYY FlexiLayout Studio

可用于为文档结构创建弹性描述并进而用于自动文档识别的一种程序。

ABBYY FormDesigner

ABBYY FormDesigner 用于设计机器可读表单的布局。复制并填好这些表单后，可就通过 ABBYY FlexiCapture 自动表单输入系统对其进行处理。表单布局设计是一个重要的阶段，因为所设计的布局的质量（其机器可读性）决定了所有后续处理阶段的效率：扫描、识别、校验和导出。

ADF

自动文档送纸机。一种自动文档送纸设备，可用于扫描任何数量的文档，无需执行附加的手动操作。

B

半结构化文档

包含一组信息字段的文档，这些字段的设计、编号和布局可能因不同的文档实例而相差很大。参见通过 ABBYY FlexiCapture 10 处理的文档类型。

标识符

用于从具备相同定位点位置的多个文档定义中选择某种文档定义的静态元素。必须在该等静态元素的属性中启用 用于文档定义标识 启用此选项。

表单

由一页或多页组成的文档，需要用手或通过任何其他打印技巧填充。

表单输入

从表单中信息字段进行的数据捕获。

表格

用不一定可见的二维网格排列的数据。此程序处理由带有同类型数据的各列和重复行组成的表格。

表格字段

包含表格的文档定义字段。它是一种复杂字段，每一表格列均表示同一类型的一组字段：文本、复选标记、条形码或图片。

不可识别的区域

从识别中排除的图像区域。排除带有说明性文本或使字段识别变得复杂的图片的区域时，需要不可识别的区域。参见从识别中排除区域。

C

彩色背景表单

一种以彩色背景显示所有白色矩形信息字段的表单，在扫描期间该彩色背景将消失。

操作员

肩负有文档输入任务的 ABBYY FlexiCapture 用户：添加图像、执行识别和校验并导出识别的数据。参见管理员和操作员模式。

测试批处理文件

用于文档定义测试和配置的文档批处理文件。文档批处理文件的本地副本用于处理测试批处理文件。参见文档批处理文件。

词典

用于确定特定数据类型的单词列表。详细信息...

词典在创建数据类型时指定。因此，某字段所附数据类型可确定在识别和校验期间所用的词典。除了通过现成的词典预定义的现有数据类型，程序还允许您附加根据自定义词典创建的数据类型。您可手动键入词典数据，也可从文件中加载。

错误识别的字符

在识别进程中自动分配给字符的状态（如果识别的字符具有相当大的不确定性）

D

dpi

每英寸点数。每英寸点数，一种图像分辨率测量单位。

打字机

一种可识别的文本，表示通过打字机打印的文本。

带下划线的文本

用下划线分隔文本的一种文本标记。显示...

单流数据输入

从类似（打印的）和数字（扫描图像）文档中自动执行的数据提取。

单流文档输入

将硬拷贝文档自动转换为电子表单。

弹性描述

文档结构的正式描述，用于帮助检测字段。通过 ABBYY FlexiLayout Studio 创建的。文件格式 – *.afl.参见 FlexiLayout。

弹性文档定义

用于处理弹性文档的文档或其节段的定义。通过附加弹性描述而创建。该等文档定义中的字段没有固定位置。其借肋于弹性描述而得以检测。参见创建用于处理弹性文档的文档定义。

导出

一种将已处理数据传输至外部信息系统或文件的过程。

导入配置文件

用于将图像添加至批处理文件的设置组合：导入源、图像处理选项、热文件夹清理选项等。参见图像导入配置文件。

等宽文本

用同一高度和宽度的框框住每个字母的一种文本标记，但框边界在在扫描时将消失。

点矩阵打印机

一种可识别的文本，表示通过点矩阵打印机打印的文本。

定位点

用于文档定义匹配的静态元素，其形式包括：黑方块形、矩形、十字形或直角形。详细信息...

定位点是表单设计的特殊元素，可供系统用于在扫描后执行匹配（消除歪斜、补偿线性和非线性扫描缺陷并计算区域位置）。最可靠的定位点是黑方块形，其通常位于表单的角落。如果图像上没有特殊定位点，则可使用其他静态元素匹配文档定义：分隔符，即垂直或水平线条，例如，表格线条和框等，或清除静态文本，即表单标题、字段签名和说明性信息等。用于文档定义匹配必须为用于文档定义匹配的静态元素启用此选项。

定位点条形码

表示不用于数据提取的条形码的静态元素。定位点条形码可用于文档定义匹配或标识。

定位点文本

表示出现在空白表单上且不用于数据提取的文本的静态元素。这可能是任何说明性文本或标题。定位点文本可用于文档定义匹配或标识。

对比度

图像上最亮区域与最暗区域的比率。

多页文档

由多页组成的文档。

F

FlexiLayout

对 flexible document 结构的描述。此描述是通过 ABBYY FlexiLayout Studio 设计的，可导出至 ABBYY FlexiCapture。FlexiLayout 是一种可用于检测和识别弹性表单中字段的结构。

反转的图像

带有深色背景和浅色文本的图像。

非结构化文档

包含自由表单中显示的信息的文档。该等文档的示例包括：合同、信函、订单和图形。参见处理非结构化文档。

分辨率

图像参数。分辨率单位是每英寸点数 (dpi)。

分隔符

呈垂直或水平线条形状的一种机器可读表单元素

分类器

FlexiLayout Studio 中的一种项目，用于在应用文档定义之前标识页面，且用于选择合适的 FlexiLayout 或布局备选项。

符号集

所描述语言中使用的一组字符。

附录

文档程序集中不包含字段的页面。不从这些页面提取数据，但可将其另存为图像或 PDF 可搜索文件。参见为带附录的文档创建文档定义

复选标记

一种带有填表人所填标记（勾号、十字线、点或涂有墨水等）的机器可读表单元素。

复选标记字段

包含复选标记的文档定义字段。

复选标记组

将多个相互邻近的复选标记组合在一起的机器可读表单元素。可在复选标记组中选择一个或多个复选标记。

复选标记组字段

包含复选标记组的文档定义字段。

G

工作批处理文件

用于数据输入的文档批处理文件。只有发布的文档定义才用于处理工作批处理文件。参见文档批处理文件。

固定表单

带有固定信息字段的文档，这些字段的格式、编号和布局已严格定义，不因文档实例而异。

固定文档定义

用于处理固定表单的文档或其节段的定义。固定文档定义中的字段有固定的位置。

关键字段

可用于自动将页面程序集导入文档的字段。同一文档中所有页面上的关键字段值必须相同。

管理员

被授权配置文档输入程序的 ABBYY FlexiCapture 用户：创建和编辑文档定义并导入配置文件。参见管理员和操作员模式。

光学标记识别 (OMR)。

一种确定表单的标记字段中是否存在标记的过程。

光栅表单

信息字段显示为灰色背景中白色矩形的表单，由光栅线条或由光栅线条分隔的矩形组成。

光栅线条

由均匀隔开的点组成的线条。

规则

对程序自动检查的字段数据作出的某些限制条件。参见规则校验

规则校验

根据预设规则自动检查识别的数据。参见规则校验。

H

黑白线表条单

一种表单，其信息字段边界由扫描时不显示的普通线条形成。

黑方块形

呈黑方块形的定位点。

忽略的字符

出现在单词中间的字段（例如，项目符号）或软连接字符（制表符等），其存在不会妨碍程序将该单词归类为可识别的数据类型。详细信息...

这些字符从单词中排除，即，没有这些字符的单词归类为特殊数据类型。

灰色背景表单

一种以灰色背景显示所有白色矩形信息字段的表单，在扫描期间该灰色背景将消失。

I

ICR

智能字符识别。用于批量处理填充有手印字母和数字的文档的技术或系统，即，识别手印字符。

J

机器打印的文本

一种使用分辨率至少为 300 dpi 的印制设备或激光或喷墨打印机打印的可识别文本。

机器可读表单

专用于自动输入的表单。它包含成功处理其本身所需的工作元素（定位点、条形码和线条等）。

简单文本

不使用任何分隔符将文本插入区域中的一种文本标记。

角度

呈角形的定位点。

校验

一种由操作员检查已识别数据的过程。将识别结果与任何文档部分的原始图像进行对比，即可执行校验。在 ABBYY 产品中，鉴于人类的以下基本身心特性，已实施了校验技术：习惯的形成、技能发挥、正直性和感知目的。参见校验识别的数据。

禁用字符

您确定将不出现于正在识别的数据中的字符。详细信息...

指定该等字符可大大提升识别速度和质量。例如，当识别纯大写字母文本，可将所有小写字母指定为禁用字符。

静态元素

用于文档定义匹配和标识的不可识别元素。该等元素包括：定位点、定位点文本、分隔符和定位点条形码。

纠正的复选标记

误选中后用墨水涂去的复选标记。如果为复选标记字段启用了允许纠正选项，程序则将用墨水涂掉的复选标记识别为未选定。

K

框式文本

用框分隔文本的一种文本标记。显示...

L

亮度

一种光敏感性阈值，超过该阈值时扫描仪就会将灰度中间色检测为白色。

M

没有区域的字段

在文档定义中检测到的但没有图像中区域的字段。参见没有区域的字段。

描述文件

一种辅助文件，可定义在从热文件夹添加图像时形式批处理文件的方式。有关详细信息，请参见描述文件。

O

OCR

光学字符识别。打印文本的光学识别。

OMR

光学标记识别。标记的光学识别。借助于此技术，ABBYY FlexiCapture 可识别高确定性表单上的普通标记（勾号和十字线等），并可正确地标识错误作出但用墨水涂掉的标记。

P

批处理文件类型

定义如何处理批处理文件文档的批处理文件属性。参见批处理文件类型。

R

热文件夹

本地或远程计算机硬盘上的文件夹，用于导入图像。它通常用于定期执行的、无需用户干预的图像上传。参见图像导入配置文件。

S

扫描

一种使用扫描仪获取纸张表单电子图像的过程。

十字形

呈十字形的定位点。

识别

一种将图像元素与特定字符匹配的过程。

手动输入字段

包含必须从键盘输入的不可识别文本的文档定义字段（例如，由混淆性字母组成的文本）。

手印文本

表示用手书写的特定类型文本的一种可识别文本。

书写风格

因特定组而异的一种书写方式。例如，美国的数字书写方式。详细信息...

此选项用于配置表单中手印字母的书写风格。书写风格的选择取决于执行表单处理的位置（俄国、德国、捷克共和国和美国等）。

梳形上的框式文本

用带有梳形底部边界的框分隔文本的一种文本标记。显示...

数据类型

一种描述可能字段值的已知限制的字段属性。在字段识别期间它用于减少可能出现的识别变量的数量。详细信息...

字段的特性之一是数据类型：数字、日期、文本、姓、名和地址等。数据类型定义一组可在指定字段中出现的单词。

数据类型是一种影响识别质量的重要识别参数。如果正确指定数据类型，则可大大减少错误识别的字符的数量。

说明性文本

一种机器可读表单元素，表示扫描性文本（表单名称、字段名称和字段说明等）。

索引字段

用于在排序和搜索时为文档建立索引的值所属的字段。参见建立字段索引。

T

条形码

一种机器可读表单元素，由一定长度的多个黑白交替和条形组成，可编码数字信息。文档条形码可用于提取信息（条形码字段）或匹配和标识文档定义（定位点条形码）。

条形码识别

将图形条形码图像转换为数字或文本。

条形码字段

包含识别条形的文档定义字段。

图片

机器可读表单的一种元素，将不对其进行识别，用于以图形对象形式进行的导出（例如，文件）。

图片字段

包含图片的文档定义字段。

图像

硬拷贝文档扫描页的电子图像。

图像导入

一种将图像添加至批处理文件以供处理的过程。从文件和扫描仪添加图像或使用导入配置文件即可执行导入。参见添加页面图像。

图像去斑

移除图像杂讯。杂讯可能出现在扫描期间，建议移除杂讯以更好地识别数据。去斑期间，程序也将移除光栅表单的背景点或边界线。

图像替换

编辑文档定义时用一幅图像替换另一幅图像。

图像旋转

转绕图像中心旋转图像。

W

文本标志

用于文本输入的页面区域的设计。参见输入字段主题中的文本格式化样本。

文本方向

字段中相对于页面的文本方向。

文本识别（OCR，ICR）

将图形图像转换为文本。

文本样本

包含符号集中所有字符样本的文件。

文本字段

用于在填写表单进行文本输入的一种机器可读表单元素。

文本字段标记

分隔文本字段的图形元素：框、梳形和线条。

文档

一个或多个页面图像及从其中提取的数据的组合。

文档错误

如果在文档处理期间发现文档数据与文档结构和指定的字段值限制或控制规则不完全匹配，则所有误匹均将记录在该文档的错误和警告列表中。

文档定义

文档定义定义了标识和处理此类型文档的原则，包括：

  • 文档结构，即对组成此类型文档的各页面的允许顺序的描述。文档结构定义了文档程序集的规则。
  • 文档节段的定义。
  • 字段数据必须符合的规则的列表。
  • 各字段及其签名在数据窗口（数据表单视图）中的位置。
  • 此类型文档的导出设置。
  • 此类型文档的处理设置。

文档定义标识

一种借助于标识符选择必要文档定义的过程。

文档定义发布

允许访问已编辑的新文档定义版本。发布的版本参与从工作批处理文件处理文档，而未发布的本地版本只能参与从测试批处理文件处理文档定义。参见编辑和发布文档定义。

文档定义节段

一种文档定义组件。与包含一组逻辑上完整的字段的一个或多个页面相对应。节段中的字段可跨越相邻的两页（例如，多页表格），而各个节段中的字段集则不跨页。
节段定义可能是弹性或固定的。

文档定义匹配

一种选择文档定义并根据图像匹配其字段的过程。

文档批处理文件

用户组合在一起的一组文档。批处理文件通常包含在单程中扫描的或从特殊文件夹中导入的一堆文档。参见文档批处理文件。

文档数据

处理（识别、校验和编辑识别结果）文档页面图像后捕获的数据。

X

XFD

XML Form Definition (*.xfd) – 通过 ABBYY FormDesigner 设计的一种表单特定文件格式。XML Form Definition 格式文件用于在 ABBYY FlexiCapture 中创建文档定义。

项目

项目是将文档批处理文件及处理这些文档批处理文件所需的设置组合在一起的单一环境，例如，文档定义、导入配置文件等。参见创建项目。

选择文档节段

一组页面（或单一页面）及其字段，与文档的逻辑完整部分相对应。可使用固定或弹性文档定义描述文档节段。参见为多页文档创建文档定义。

Y

页面

纸张文档页面的图像及其处理结果。

页面布局

一种显示图像上各字段位置的方案。

页面方位

相对于标准对齐的页面位置：从上至下，从左到右。可在页面图像识别期间自动确定页面方向；在此方面，ABBYY FlexiCapture 10 允许您指定可能的方向。

有多个区域的字段

图像上由多个区域组成的字段。该等区域可能互相相隔一定的距离，甚至处于不同的页面上。同一字段中所有区域的值可组合一起，并可作为一个字段一起导出。通常用于跨页的对象，例如，较大的表格。参见有多个区域的字段。

有多个实例的字段

用于描述同一类型的多个对象的字段（循环性对象）。基本而言，这些对象处于同一字段，拥有相同的属性。带有多个实例的字段用于避免创建多个相同字段。带有多个实例的字段可导出至独立文件或数据库表格。参见有多个实例的字段。

语言（本地）

确定书写语言及相关的各组区域参数（例如日期或地址书写风格）的字段属性。

允许字符集

正在识别的数据中出现的一组字符。详细信息...

此集由数据类型确定。即，某字段附加的数据类型确定在识别期间所用的字符集。

除了选择此集中包括的字符，您还可配置此集的附加限制参数。例如，您可指定：

  • 您知道将在识别指定字段时不出现的字符 - 禁用字符（例如，您可为可能只出现大写字符的字段将所有小写字母指定为禁用字符）。
  • 可出现在单词中但不影响单词校验的字符 - 忽略的字符（例如，连字符和重音符号等）。

Z

正则表达式

使用一种特殊语言对单词或任何输入的值的结构作出的描述。借助于此程序，您不但可指定一组允许的字符，而且可指定字段内容的结构。在设置文本字段限制或创建自定义数据类型时，您可使用正则表达式描述此结构。参见用于正则表达式的符号集。

字段

一种用于数据提取的文档元素。字段可能是简单的（没有内部结构），也可能是复杂的，例如，每个单元格可视为表格的独立附属字段的表格字段。参见为文档定义创建字段。

字段区域

文档定义中用于数据提取的突出显示的图像区域。

字段校验

一种可用于在字段上下文范围内将识别的字符提交供样验的校验模式。详细信息...

在字段校验模式中，将勾选整个字段上下文范围内的不确定字符。

带选项的字段发送到字段校验将提交启用了此选项的字段以对其执行字段校验。我们建议将值范围已知或可轻易确定的字段提交供校验。国家/地区或城市名称即是该等字段的示例：我们知道此字段可能拥有的值。

字母位于独立框中

由互为独立的多个框分隔每个字符的文本标记类型。显示...

字母位于框中

由互为相连的多个框分隔每个字符的文本标记类型。显示...

字母位于梳形中

用“梳形”分隔文本的一种文本标记。显示...

自定义数据类型

用户定义的数据类型。参见创建自定义数据类型。

组校验

一种用于将组中标识相同的字符提交供校验的校验模式。详细信息...

将提交启用了 发送字符至组校验 选项的字段以对其进行组校验。

我们建议将数字字段及复选标记中的字符提交以对其进行组校验。


术语表

A B C D F G H I J K L M O P R S T W X Y Z


从 FormReader 6.5 规则迁移并导出至 FlexiCapture 9.0 脚本

从 FormReader 规则迁移至 FlexiCapture 脚本规则

假设规则

函数和方法的变更：

  1. 错误（字段，消息）。使用以下要检查单元属性的组合替代此函数：CheckSucceeded、ErrorMessage 和 FocusedField。

    例如，此 FormReader 6.5 代码

    对于 [City].IsEmpty() then Error( [City]，“应填写城市名称”）

    应更改为

    [VBScript]

    if me.Field("City").Text = "" then

    me.CheckSucceeded = false

    me.ErrorMessage = "the city name should be filled"

    me.FocusedField = me.Field("City")

    else

    me.CheckSucceeded = true

    end if

    [JScript]

    if( Field("City").Text == "" ) {

    CheckSucceeded = false;

    ErrorMessage = "the city name should be filled";

    FocusedField = Field("City");

    } else {

    CheckSucceeded = true;

    }

  2. 字符串运算。以下列出了如何在 FlexiCapture 9.0 中实现可用于“假设”规则的字符串运算的说明。

    [VBScript]

    .Length() – 使用类似函数 Len（字符串）

    .CmpNoCase(str) – 对于不区分大小写的字符串对比，请使用 LCase（字符串）或 UCase（字符串）函数。

    .Mid(position, count) – 使用类似函数（字符串、位置、计数）

    [JScript]

    .Length() – 使用字符串变量的类似长度属性

    .CmpNoCase(str) – 对于不区分大小写的字符串对比，请使用字符串变量的 toLowerCase() 或 toUpperCase() 方法

    .Mid(position, count) – 使用字符串变量的类拟子字符串（开始，[length]）方法

  3. 实时数字运算。

    [VBScript]

    Floor(d), Ceil(d) – VBScript 中没有现成的等量，您可创建自己的实现（如有必要）

    Round(d),Round(d, i) – 使用类拟的函数 Round(d, [i])

    [JScript]

    Floor(d), Ceil(d) – 使用 Math 对象的 floor(d) 和 ceil(d) 方法

    Round(d) – 使用 Math 对象的 round(d) 方法

    Round(d, i) – JScript 中没有现成的等量，您可创建自己的实现（如有必要）。

  4. 文本字段运算

    IsEmpty() – 将 Field("fieldName").Text 字段的文本值与空字符串对比。

    Text() – 使用 Field("fieldName").Text

    Length() – 获取字段的文本值，然后按以上 2 中所述确定所生成字符串值的长度。

    SetText(text) – 使用 Field("fieldName").Text = text

  5. 复选标记运算

    IsValid() – 您可使用 IsVerified 属性

    Value() – Field("fieldName").Value 在 FormReader 6.5 中现返回一个布尔值但不是 0 或 1。

    SetValue(newValue) – 使用 Field("fieldName").Value = newValue

  6. 复选标记组运算

    IsValid() – 您可使用 IsVerified 属性确定组中字段的不确定性。要弄清已选定的复选框数，按示例“复选标记组检查”中所示迭代组中的复选标记。（参见 用于创建自定义规则的样本脚本规则）。

    Value() – 要获取选定复选标记的数量，可使用以下两种方法之一：

    1. 将数字名称分配给组中的复选标记：0、1 等。Then Field("groupName").Value 将包含选定复选标记的数量或数字列表（已选定多个）或空字符串（未选择）。
    2. 向规则中仅添加指定组中的复选标记（按其在组中的依次出现顺序）。然后，按示例“复选标记组检查”中所示，迭代组中的复选标记。

    Text() - 使用 Field("groupName").Value

    SetValue(newValue) – 要更改复选标记组的值，则需要设置/重置此组中的必要复选标记。必须将复选标记纳入规则中，且必须为其启用 ReadOnly 标志。

自动化规则

要在 FlexiCapture 9.0 Automation 中使用在 FormReader 6.5 中创建的组件，您需要对自动化组件作出以下更改。

  1. 应从示例中所示脚本规则调用实现规则逻辑的外部组件的方法。对于此方法的签名，没有特定要求。但是，请注意，从脚本规则传递至外部组件方法的参数必须与选定的方法签名相对应，其可能类似如下：

    Public Sub Check(ByRef docObj As Object)

    2. docObj – 这是要检查的文档单元的引用。

  2. 应用受 FlexiCapture 9.0 支持的方法替代用于 FormReader 6.5 的 fieldsObj 对象的方法。以下表格列出了 fieldsObj 对象的新旧方法的对应。
fieldsObj 方法 | 可替代旧方法的 VisualBasic 中的样本代码
GetFieldsCount As Integer Dim count as Long

count = docObj.Fields.Count()
GetFieldsNames(Names As Variant) Dim i As Long, count As Long

Dim Names() As String

count = docObj.Fields.count

ReDim Names(count - 1)

For i = 0 To count - 1

Names(i) = docObj.Fields.Item(i).Name

Next
GetFieldsTypes(FieldTypes As Variant) | 不受支持
GetFieldByIndex(Index As Integer, FieldValue As Variant) Dim fieldValue

fieldValue = docObj.Fields.Item(index).Value
GetFieldByName(Name As String, FieldValue As Variant) Dim fieldValue

fieldValue = docObj.Field(Name).Value
GetTableColumnsList(FieldIndex As Integer, TableColumns As Variant) 要处理表格列，请将列字段添加至规则中。对于任何其他字段，检查是否已成功匹配列的方法均相同：

Dim isMatched isMatched = docObj.Field("ColumnName").IsMatched

SetFieldByIndex(Index As Integer, FieldValue As Variant) | docObj.Fields.Item(index).Value = newValue
SetFieldByName(Name As String, FieldValue As Variant) | docObj.Field(Name).Value = newValue
SetTableCellValue(Index As Integer, Row As Integer, Column As Integer, FieldValue As String) 要处理表格单元格，请将列字段添加至规则中。

这些字段的操作取决于规则的级别。如果已为列级别或表格级别创建规则，则其将适用于每行并使用正被检查的行中各列的值（即，单元格操作）：

Dim cell As Object
Set cell = docObj.Field("ColumnName")
Dim cellValue as String
cellValue = cell.Value

因此，您可创建使用表格中前两列中数据的规则，以完成第三列：

Dim cellResult As Object
Set cellResult = docObj.Field("ColumnResult")
cellResult.Value = docObj.Field("Column1").Value + docObj.Field("Column2").Value

如果已为包含表格的单元级别创建规则（组、节段和文档），则您需要按示例“自动化规则”中所述迭代列以访问其单元格。

SetSuggestByIndex(Index As Integer, Suggests As String)

Dim suggests() As Variant

' suggestions for the field

' ...

Dim field As Object

Set field = docObj.Fields.Item(index)

For i = LBound(suggests) To UBound(suggests)

field.Suggest suggests(i)

Next
SetSuggestByName(FieldName As String, Suggests As String)

Dim suggests() As Variant

' suggestions for the field

' ...

Dim field As Object

Set field = docObj.Field(Name)

For i = LBound(suggests) To UBound(suggests)

field.Suggest suggests(i)

Next
SetTableCellSuggest(Index As Integer, Row As Integer, Column As Integer, Suggests As String) 可用访问 SetTableCellValue 方法的相同方式访问单元格字段。

然后，您将可如同处理任何其他字段一样处理已访问的单元格。设置建议将类似如下：

cell.Suggest cellSuggest

  3. 应用受 FlexiCapture 9.0 支持的方法替代用于 FormReader 6.5 的 errorsObj 对象的方法。以下表格列出了 errorsObj 对象的新旧方法的对应。
errorsObj 方法 | 可替代旧方法的 VisualBasic 中的样本代码
SendFieldError( ErrMsg As String, Index As Integer) | docObj.ErrorMessage = ErrMsg docObj.CheckSucceeded = false docObj.FocusedField = docObj.Fields.Item(index)
SendTableError( ErrMsg As String, FieldIndex As Integer, ErrorCells As Variant ) | docObj.ErrorMessage = ErrMsg docObj.CheckSucceeded = false 如果为表格或列级别创建了规则，程序则将已添加至规则中的字段（列）所属的已检查行中的所有单元格标记为错误。要将焦点移至特定单元格，请写入以下代码： docObj.FocusedField = docObj.Field("ColumnName") 如果为较高级别创建了规则，程序将不标记任何单元格，也不将焦点移至任何单元格上。

从 FormReader Automation 导出迁移至 FlexiCapture 脚本导出

应从示例中所示脚本规则调用实现规则逻辑的外部组件的方法。对于此方法的签名，没有特定要求。但是，请注意，从脚本规则传递至外部组件方法的参数必须与选定的方法签名相对应，其可能类似如下：

Public Sub Check(ByRef docObj As Object, ByRef exportTools As Object)

docObj – 这是要导出的文档的引用。

exportTools – 这是 ExportTools 对象的引用

应用受 当前版本应用程序支持的方法替代用于 FormReader 6.5 的 f ieldsObj 对象的方法。以下表格列出了 fieldsObj 对象方法与处理要导出文档的新方式之间的对应：

fieldsObj 对象的方法 | 新对象模型中的可能实现
GetFieldsCount As
Integer 		要获取正被导出的文档中字数的数量，请按示例“使用外部 COM 组件”中所示迭代字段树状图，并进行计算。
GetFieldsNames(Names As Variant) | 要获取正被导出的文档中字数的名称，请按示例“使用外部 COM 组件”中所示迭代字段树状图，并用字段的名称填充数组。
GetFieldsTypes(FieldTypes As Variant) | 不受支持。
GetFieldByIndex(Index As Integer, FieldValue As Variant) 通过索引进行访问没有任何意义，因为新文档模型的结构是分层的。
按示例“使用外部 COM 组件”中所示，可轻易地迭代字段树状图，并用字段的名称填充数组。
GetFieldByName(Name As String, FieldValue As Variant) Dim fieldValue
fieldValue = docObj.Field(Name).Value


描述了导出的样本脚本

导出期间获取字段值
此样本代码显示如何在导出期间获取字段值。可使用此值为要将图像或日期导出到的文件命名。如果文档中没有该等字段，则将出现错误。

要导出的文档的结构：

Section 1

Field1

…

Group1

Field2

…

…

FieldN

Section 2

Field1

…

FieldK

[VBScript]

Dim field1Value, field2Value

' Gets the value of Field1 in Section 1

if Not IsNull( me.Field( "Section 1\Field1" ).Value ) then

field1Value = me.Field( "Section 1\Field1" ).Value

end if

' Gets the value of Field2 in Group1 in Section 1

if Not IsNull( me.FIELD( "Section 1\Group1\Field2" ).Value ) then

field2Value = me.Field( "Section 1\Group1\Field2" ).Value

end if

' Gets the value of Field1 in Section 1 if the section has multiple instances

if Not me.Field( "Section 1" ).Items Is Nothing then

dim curPage

for each curPage in me.Field( "Section 1" ).Items

if Not curPage.Children Is Nothing then

dim curField

for each curField in curPage.Children

if curField.Name = "Field1" And Not IsNull( curField.Value ) then

field1Value = curField.Value

exit for

end if

next

end if

next

end if

[JScript]

// Gets the value of Field1 in Section 1

if( Field("Section 1\\Field1").Value != null ) {

var field1Value = Field("Section 1\\Field1").Value;

}

// Gets the value of Field2 in Group1 in Section 1

if( Field("Section 1\\Group1\\Field2").Value != null ) {

var field2Value = Field("Section 1\\Group1\\Field2").Value;

}

// Gets the value of Field1 in Section 1 if the section has multiple instances

if( Field( "Section 1" ).Items != null ) {

var i, j;

for( i = 0; i < Field( "Section 1" ).Items.Count; i++ ) {

var curPage = Field( "Section 1" ).Items.Item( i );

if( curPage.Children != null ) {

for( j = 0; j < curPage.Children.Count; j++ ) {

var curField = curPage.Children.Item( j );

if( curField.Name == "Field1" && curField.Value != null ) {

var field1Value = curField.Value;

break;

}

}

}

}

}

导出页面图像

此示例中代码显示了如何使用必要的文件格式、颜色方案和分辨率导出所有文档页面的图像。图像按页面保存，即独立文件中的每个页面。

此标例中的文件分别命名为“page1.tif”、“page2.tif”等。如有必要，您可更改文件命名机制。例如，您可根据字段值创建文件名。

[VBScript]

dim fso, folderName

set fso = CreateObject("Scripting.FileSystemObject")

folderName = "d:\ExportImages"

if Not fso.FolderExists( folderName ) then

fso.CreateFolder folderName

end if

dim imageOptions

set imageOptions = ExportTools.NewImageSavingOptions

imageOptions.Format = "tif"

imageOptions.ColorType = "BlackAndWhite"

imageOptions.Resolution = 600

dim i

for i = 0 to me.Pages.Count - 1

dim fileName

    ' Sets the desired name and extension for the file depending on the selected format

fileName = fso.BuildPath( folderName, "page" & (i+1) & ".tif" )

me.Pages.Item(i).SaveAs fileName, imageOptions

next

[JScript]

var fso = new ActiveXObject("Scripting.FileSystemObject");

var folderName = "d:\\ExportImages";

if( !fso.FolderExists( folderName ) ) {

fso.CreateFolder( folderName );

}

var imageOptions = ExportTools.NewImageSavingOptions();

imageOptions.Format = "tif";

imageOptions.ColorType = "BlackAndWhite";

imageOptions.Resolution = 600;

var i;

for( i = 0; i < Pages.Count; i++ ) {

    // Sets the desired name and extension for the file depending on the selected format

var fileName = fso.BuildPath( folderName, "page" + (i+1) + ".tif" );

Pages.Item(i).SaveAs( fileName, imageOptions );

}

导出表格

此示例显示了如何将表格导出至 *.txt 文件。

[VBScript]

dim fso, txtFile, fileName

set fso = CreateObject("Scripting.FileSystemObject")

fileName = "d:\TestExportTable.txt"

set txtFile = fso.CreateTextFile( fileName, true )

txtFile.WriteLine "Table"

dim table, row, cell, rowNumber

set table = me.Field("Page 1\Table")

rowNumber = 1

for each row in table.Items

txtFile.WriteLine "RowNumber = " & rowNumber

for each cell in row.Children

txtFile.Write cell.Value & " "

next

txtFile.WriteBlankLines 1

rowNumber = rowNumber + 1

next

txtFile.Close

set txtFile = nothing

set fso = nothing

[JScript]

var fso, txtFile, fileName;

fso = new ActiveXObject("Scripting.FileSystemObject");

fileName = "d:\\TestExportTable1.txt";

txtFile = fso.CreateTextFile( fileName, true );

txtFile.WriteLine( "Table" );

var table, i, j;

table = Field("Page 1\\Table");

var rows = table.Items;

for( i = 0; i < rows.Count; i++ ) {

txtFile.WriteLine( "RowNumber = " + ( i+1 ) );

var cells = rows.Item(i).Children;

for( j = 0; j < cells.Count; j++ ) {

txtFile.Write( cells.Item(j).Value + " " );

}

txtFile.WriteBlankLines(1);

}

txtFile.Close();

导出任何嵌套级别的文档

此示例显示了如何使用定制功能从全局导出模块导出任何嵌套级别文档的字段。如果您需要导出可变嵌套的文档字段，则建议使用外部 COM 组件（参见下一个示例）

内核导出代码

[VBScript]

Export.ExportDocument me, ExportTools

[JScript]

Export.ExportDocument( this, ExportTools );

全局导出模块功能的代码

[VBScript]

' The procedure carries out the export: creates an export folder and

' saves in it page image files, the text file with the document fields,

' and information about the document

Sub ExportDocument(ByRef docObj, ByRef exportTools)

    Dim folderName

    Dim txtFile, fileName

    Dim fso

    On Error Resume Next

    set fso = CreateObject("Scripting.FileSystemObject")

    ' creating the export folder

    folderName = CreateExportFolder(docObj.TemplateName, fso)

    if Err.Number <> 0 then

        docObj.Action.Succeeded = false

        docObj.Action.ErrorMessage = "Error during create export folder: " + Err.Description

        Err.Clear

        Exit Sub

    End if

    ' exporting images

    ExportImages docObj, exportTools, folderName, fso

    if Err.Number <> 0 then

        docObj.Action.Succeeded = false

        docObj.Action.ErrorMessage = "Error during export images: " + Err.Description

        Err.Clear

        Exit Sub

    End if

    ' creating the text file

    fileName = fso.BuildPath(folderName, "doc.txt")

    Set txtFile = fso.CreateTextFile(fileName, True)

    ' exporting info about the document

    ExportDocInfo docObj, txtFile

    ' exporting fields

    txtFile.WriteLine "Fields:"

    ExportFields docObj.Children, txtFile, ""

    txtFile.Close

    if Err.Number <> 0 then

        docObj.Action.Succeeded = false

        docObj.Action.ErrorMessage = "Error during export data: " + Err.Description

        Err.Clear

        Exit Sub

    End if

    Set txtFile = Nothing

    Set fso = Nothing

End Sub

' Image export function.

Function ExportImages( ByRef docObj, ByRef exportTools, ByVal exportFolder, ByRef fso )

    Dim pages, page, imageOptions

    Dim fileName, pageNum

    ' specifying export settings

    Set imageOptions = exportTools.NewImageSavingOptions

    imageOptions.Format = "bmp"

    imageOptions.ColorType = "FullColor"

    imageOptions.Resolution = 100

    ' ' page-by-page export

    Set pages = docObj.Pages

    pageNum = 1

    For Each page In pages

        fileName = fso.BuildPath(exportFolder, "page" & pageNum & ".bmp")

        page.SaveAs fileName, imageOptions

        pageNum = pageNum + 1

    Next

End Function

' The procedure that exports info about the document

Sub ExportDocInfo(ByRef docObj, ByRef txtFile)

    txtFile.WriteLine "Doc info:"

    txtFile.WriteLine ("DocumentId " & docObj.Id)

    txtFile.WriteLine ("IsAssembled " & docObj.IsAssembled)

    txtFile.WriteLine ("IsVerified " & docObj.IsVerified)

    txtFile.WriteLine ("IsExported " & docObj.IsExported)

    txtFile.WriteLine ("ProcessingErrors " & docObj.ProcessingErrors)

    txtFile.WriteLine ("ProcessingWarnings " & docObj.ProcessingWarnings)

    txtFile.WriteLine ("TotalSymbolsCount " & docObj.TotalSymbolsCount)

    txtFile.WriteLine ("RecognizedSymbolsCount " & docObj.RecognizedSymbolsCount)

    txtFile.WriteLine ("UncertainSymbolsCount " & docObj.UncertainSymbolsCount)

    txtFile.WriteLine

End Sub

' The procedure that exports fields from the fields collection

Sub ExportFields(ByRef fields, ByRef txtFile, ByVal indent)

    Dim curField

    For Each curField In fields

        ExportField curField, txtFile, indent

    Next

End Sub

' Checks if the value of the field is null

' If the field value is invalid, any attempt to access this field (even

' to check if it is null) may cause an exception

Function IsNullFieldValue( ByRef field )

    on error resume next

    IsNullFieldValue = IsNull( field.Value )

    if Err.Number <> 0 then

        IsNullFieldValue = True

        Err.Clear

    End if

End Function

' Field export procedure

Sub ExportField(ByRef field, ByRef txtFile, ByVal indent)

    ' saving field name

    txtFile.Write (indent & field.Name)

    ' saving field value if it can be accessed

    If IsNullFieldValue(field) Then

        txtFile.WriteLine

    Else

        txtFile.WriteLine ("    " & field.Text)

    End If

    If Not field.Children Is Nothing Then

        ' exporting child fields

        ExportFields field.Children, txtFile, indent & "    "

    ElseIf Not field.Items Is Nothing Then

        ' exporting field instances

        ExportFields field.Items, txtFile, indent & "    "

    End If

End Sub

' The function creates an export folder and returns a full path to this folder

Function CreateExportFolder(ByVal templateName, ByRef fso)

    Dim docFolder, folderName

    ' main folder

    exportFolder = "d:\ScriptExport"

    If fso.FolderExists(exportFolder) = False Then

        fso.CreateFolder (exportFolder)

    End If

    ' the folder of the specified Document Definition

    docFolder = fso.BuildPath(exportFolder, templateName)

    If fso.FolderExists(docFolder) = False Then

        fso.CreateFolder (docFolder)

    End If

    ' the folder of the exported document

    Dim i

    i = 1

    folderName = fso.BuildPath(docFolder, i)

    While fso.FolderExists(folderName)

        i = i + 1

        folderName = fso.BuildPath(docFolder, i)

    Wend

    fso.CreateFolder (folderName)

    CreateExportFolder = folderName

End Function

[JScript]

// The function carries out the export: creates an export folder and

// saves in it page image files, the text file with the document fields,

// and information about the document

function ExportDocument(docObj, exportImageTools)

{

    var folderName

    var txtFile, fileName

    var fso

    fso = new ActiveXObject("Scripting.FileSystemObject");

    // creating export folders

    try {

        folderName = CreateExportFolder(docObj.TemplateName, fso);

    } catch( e ) {

        docObj.Action.Succeeded = false;

        docObj.Action.ErrorMessage = "Error during create export folder: " + e.description;

        return;

    }

    // exporting images

    try {

        ExportImages(docObj, exportImageTools, folderName, fso);

    } catch( e ) {

        docObj.Action.Succeeded = false;

        docObj.Action.ErrorMessage = "Error during export images: " + e.description;

        return;

    }

    // creating the text file

    fileName = fso.BuildPath(folderName, "doc.txt");

    txtFile = fso.CreateTextFile(fileName, true);

    // exporting info about the document

    ExportDocInfo( docObj, txtFile );

    // exporting fields

    txtFile.WriteLine( "Fields:" );

    try {

        ExportFields( docObj.Children, txtFile, "" );

    } catch( e ) {

        docObj.Action.Succeeded = false;

        docObj.Action.ErrorMessage = "Error during export data: " + e.description;

        txtFile.Close();

        return;

    }

    txtFile.Close();

    txtFile = 0;

    fso = 0;

}

// Image export function.

function ExportImages( docObj, exportImageTools, exportFolder, fso )

{

    // specifying export settings

    var imageOptions = exportImageTools.NewImageSavingOptions();

    imageOptions.Format = "bmp";

    imageOptions.ColorType = "FullColor";

    imageOptions.Resolution = 100;

    // page-by-page export

    var pages = docObj.Pages;

    var i

    for( i = 0; i < pages.Count; i++ ) {

        var fileName = fso.BuildPath( exportFolder, "page" + (i+1) + ".bmp" );

        pages.Item(i).SaveAs( fileName, imageOptions );

    }

}

// The procedure that exports info about the document

function ExportDocInfo(docObj, txtFile)

{

    txtFile.WriteLine( "Doc info:" );

    txtFile.WriteLine("IsAssembled " + docObj.IsAssembled);

    txtFile.WriteLine("IsVerified " + docObj.IsVerified);

    txtFile.WriteLine("IsExported " + docObj.IsExported);

    txtFile.WriteLine("ProcessingErrors " + docObj.ProcessingErrors);

    txtFile.WriteLine("ProcessingWarnings " + docObj.ProcessingWarnings);

    txtFile.WriteLine("TotalSymbolsCount " + docObj.TotalSymbolsCount);

    txtFile.WriteLine("RecognizedSymbolsCount " + docObj.RecognizedSymbolsCount);

    txtFile.WriteLine("UncertainSymbolsCount " + docObj.UncertainSymbolsCount);

    txtFile.WriteLine();

}

// The procedure that exports fields from the fields collection

function ExportFields(fields, txtFile, indent)

{

    var i

    for( i = 0; i < fields.Count; i++ ) {

        ExportField( fields.Item(i), txtFile, indent );

    }

}

// Checks if the field value is null

// If the field value is invalid, any attempt to access this field (even

// to check if it is null) may cause an exception

function IsNullFieldValue( field )

{

    try {

        return ( field.Value == null );

    } catch( e ) {

        return true;

    }

}

// Field export procedure

function ExportField(field, txtFile, indent)

{

    // saving field name

    txtFile.Write(indent + field.Name);

    // saving field value, if it can be accessed

    if( IsNullFieldValue( field ) ) {

        txtFile.WriteLine();

    } else {

        txtFile.WriteLine("    " + field.Text);

    }

    if( field.Children != null ) {

        // exporting child fields

        ExportFields( field.Children, txtFile, indent + "    " );

    } else if( field.Items != null ) {

        // exporting field instances

        ExportFields( field.Items, txtFile, indent + "    " );

    }

}

// The function creates an export folder and returns a full path to this folder

function CreateExportFolder(templateName, fso)

{

    var docFolder, folderName

    // main folder

    var exportFolder = "d:\\ScriptExport";

    if( !fso.FolderExists(exportFolder) ) {

        fso.CreateFolder (exportFolder);

    }

    // the folder of the specified Document Definition

    docFolder = fso.BuildPath(exportFolder, templateName);

    if( !fso.FolderExists(docFolder) ) {

        fso.CreateFolder(docFolder);

    }

    // the folder of the exported document

    var i = 1;

    folderName = fso.BuildPath(docFolder, i);

    while( fso.FolderExists(folderName) ) {

        i++;

        folderName = fso.BuildPath(docFolder, i);

    }

    fso.CreateFolder(folderName);

    return folderName;

}

使用外部 COM 组件

[VBScript]

dim autoExport

set autoExport = CreateObject( "AutomationExport.Exporter" )

autoExport.Export me, ExportTools

[JScript]

var autoExport = new ActiveXObject("AutomationExport.Exporter");

autoExport.Export( this, ExportTools );

VisualBasic 中 ActiveX 组件的代码

以下提供了源自 AutomationExport 项目的导出程序类代码，用于上述脚本。

Option Explicit

Dim mFso As New Scripting.FileSystemObject

' The procedure carries out document export: creates an export folder and

' saves in it page image files, the text file with document fields,

' and information about the document

Public Sub Export(ByRef docObj As Object, ByRef exportTools As Object)

On Error GoTo err_h

    Dim folderName As String

    Dim txtFile As TextStream, fileName As String

    Dim imageExportResult As String, errMessage As String

    ' creating export folder

    folderName = createExportFolder(docObj.templateName)

    If folderName = "" Then

        docObj.Action.Succeeded = False

        docObj.Action.ErrorMessage = "Cannot create export folder"

        Exit Sub

    End If

    ' exporting images

    imageExportResult = exportImages(docObj, exportTools, folderName)

    ' creating the text file

    fileName = mFso.BuildPath(folderName, "doc.txt")

    Set txtFile = mFso.CreateTextFile(fileName, True)

    ' saving info about image export problems

    If imageExportResult <> "" Then

        txtFile.WriteLine imageExportResult

        errMessage = errMessage & imageExportResult

    End If

    ' exporting info about document

    exportDocInfo docObj, txtFile

    ' exporting fields

    txtFile.WriteLine "Fields:"

    If Not exportFields(docObj.Children, txtFile, "") Then

       errMessage = errMessage & " Error during export data"

    End If

    txtFile.Close

    ' if errors occur during export, reset the

    ' export success flag to False

    If errMessage <> "" Then

        docObj.Action.Succeeded = False

        docObj.Action.ErrorMessage = errMessage

    End If

    Set txtFile = Nothing

    Set mFso = Nothing

Exit Sub

err_h:

    docObj.Action.Succeeded = False

    docObj.Action.ErrorMessage = Err.Description

    txtFile.Close

    Set mFso = Nothing

End Sub

' Image export function. If an error occurs when exporting images,

' it returns a message about the error, otherwise it returns an empty string

Private Function exportImages(ByRef docObj As Object, ByRef exportTools As Object, _

    ByVal exportFolder As String) As String

On Error GoTo err_h

    Dim pages As Object, page As Object, imageOptions As Object

    Dim fileName As String, pageNum As Long

    exportImages = ""

    ' specifying export settings

    Set imageOptions = exportTools.NewImageSavingOptions

    imageOptions.Format = "png"

    imageOptions.ColorType = "GrayScale"

    imageOptions.Resolution = 300

    ' page-by-page export

    Set pages = docObj.pages

    pageNum = 1

    For Each page In pages

        fileName = mFso.BuildPath(exportFolder, page.templateName + "_page" & pageNum & "." & imageOptions.Format)

        page.SaveAs fileName, imageOptions

        pageNum = pageNum + 1

    Next page

Exit Function

err_h:

    exportImages = Err.Description

End Function

' The procedure that exports info about the document

Private Sub exportDocInfo(ByRef docObj As Object, ByRef txtFile As TextStream)

On Error GoTo err_h

    txtFile.WriteLine "Doc info:"

    txtFile.WriteLine ("DocumentId " & docObj.Id)

    txtFile.WriteLine ("IsAssembled " & docObj.IsAssembled)

    txtFile.WriteLine ("IsVerified " & docObj.IsVerified)

    txtFile.WriteLine ("IsExported " & docObj.IsExported)

    txtFile.WriteLine ("ProcessingErrors " & docObj.ProcessingErrors)

    txtFile.WriteLine ("ProcessingWarnings " & docObj.ProcessingWarnings)

    txtFile.WriteLine ("TotalSymbolsCount " & docObj.TotalSymbolsCount)

    txtFile.WriteLine ("RecognizedSymbolsCount " & docObj.RecognizedSymbolsCount)

    txtFile.WriteLine ("UncertainSymbolsCount " & docObj.UncertainSymbolsCount)

    txtFile.WriteLine

Exit Sub

err_h:

    txtFile.WriteLine Err.Description

End Sub

' The procedure that exports fields from the fields collection

Private Function exportFields(ByRef fields As Object, ByRef txtFile As TextStream, ByVal indent As String) As Boolean

On Error GoTo err_h

    Dim curField As Object

    exportFields = True

    For Each curField In fields

        If Not exportField(curField, txtFile, indent) Then

            exportFields = False

        End If

    Next curField

Exit Function

err_h:

    txtFile.WriteLine Err.Description

    exportFields = False

End Function

' Checks if the field value is null

' If the value is invalid, any attempt to access this field (even

' to check if it is null) may cause an exception

Function IsNullFieldValue(ByRef field As Object) As Boolean

On Error GoTo err_h

    IsNullFieldValue = IsNull(field.Value)

Exit Function

err_h:

    IsNullFieldValue = True

End Function

' Field export function

Private Function exportField(ByRef field As Object, ByRef txtFile As TextStream, _

    ByVal indent As String) As Boolean

On Error GoTo err_h

    Dim result As Boolean

    result = True

    ' saving field name

    txtFile.Write (indent & field.Name)

    ' saving field value if it can be accessed

    If Not IsNullFieldValue(field) Then

        txtFile.WriteLine ("    " & field.Value)

    Else

        txtFile.WriteLine

    End If

    If Not field.Children Is Nothing Then

        ' exporting child fields

        result = result And exportFields(field.Children, txtFile, indent & "    ")

    ElseIf Not field.Items Is Nothing Then

        ' exporting field instances

        result = result And exportFields(field.Items, txtFile, indent & "    ")

    End If

    exportField = result

Exit Function

err_h:

    txtFile.WriteLine Err.Description

    exportField = False

End Function

' The function creates an export folder and returns a full path to this folder

Private Function createExportFolder(ByVal templateName As String) As String

On Error GoTo err_h

    Dim docFolder As String, folderName As String

    ' main folder

    Const exportFolder = "d:\AutomationExport"

    If mFso.FolderExists(exportFolder) = False Then

        mFso.CreateFolder (exportFolder)

    End If

    ' the folder of the specified Document Definition

    docFolder = mFso.BuildPath(exportFolder, templateName)

    If mFso.FolderExists(docFolder) = False Then

        mFso.CreateFolder (docFolder)

    End If

    ' the folder of the exported document

    Dim i As Long

    i = 1

    folderName = mFso.BuildPath(docFolder, i)

    While mFso.FolderExists(folderName)

        i = i + 1

        folderName = mFso.BuildPath(docFolder, i)

    Wend

    mFso.CreateFolder (folderName)

    createExportFolder = folderName

Exit Function

err_h:

    createExportFolder = ""

End Function

使用在 .Net( C# ) 中编写的外部组件

要使用在 .Net 中编写的外部组件，请执行以下操作：

  1. 为类型 ClassLibrary 创建项目
  2. 将 Controller.dll 添加至项目引用 - 引用列表中将出现 FlexiCaptureScriptingObjects，脚本对象的所有接口均将可用于项目中。
  3. 定义 disp 接口及实现此接口的类，以及 ProgId（这样，就可如同使用源自于脚本代码的 ActiveX 一样使用 .Net 组件）。
  4. 构建项目后，注册所生成的类型库（通过在项目属性中启用相应的选项即可自动完成此操作）。
  5. 从导出代码中，用常规方式调用组件的方法：

[VBScript]

dim autoExport

set autoExport = CreateObject( "ExportLibrary1.Export" )

autoExport.ExportDocument me, ExportTools

[JScript]

var autoExport = new ActiveXObject("ExportLibrary1.Export");

autoExport.ExportDocument( this, ExportTools );

以下是该等组件的代码：

using System;

using System.Runtime.InteropServices;

using System.IO;

using FlexiCaptureScriptingObjects;

namespace ExportLibrary1

{

// The interface of the export component which can be accessed from the script

// When creating a new component, generate a new GUID

[Guid("32B10C3B-EEA3-4194-B0A0-E358C310225A")]

[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]

public interface _cExport

{

[DispId(1)]

void ExportDocument(ref IExportDocument DocRef, ref IExportTools Tools);

}

// The class that implements export component functionality

// When creating a new component, generate a new GUID

// and set your ProgId

[Guid("3BA19BD7-C6DC-4f63-BC08-0D95254DADC3")]

[ClassInterface(ClassInterfaceType.None)]

[ProgId("ExportLibrary1.Export")]

[ComVisible(true)]

public class Export : _cExport

{

public Export()

{

}

// The function carries out document export: creates an export folder and

// saves in it page image files,

// the text file with document fields, and information about the document

public void ExportDocument( ref IExportDocument docRef, ref IExportTools exportTools )

{

try

{

string exportFolder = createExportFolder( docRef.TemplateName );

exportImages( docRef, exportTools, exportFolder );

// creating the text file

string fileName = exportFolder + "//" + "doc.txt";

StreamWriter sw = File.CreateText( fileName );

// exporting info about document

exportDocInfo( docRef, sw );

// exporting fields

sw.WriteLine( "Fields:" );

exportFields( docRef.Children, sw, "" );

sw.Close();

}

catch( Exception e )

{

docRef.Action.Succeeded = false;

docRef.Action.ErrorMessage = e.ToString();

}

}

// The function creates an export folder and returns a full path to this folder

private string createExportFolder( string templateName )

{

string docFolder, folderName;

// main folder

string exportFolder = "d:\\DotNetExport";

if( !Directory.Exists(exportFolder) )

{

Directory.CreateDirectory(exportFolder);

}

// the folder of the specified Document Definition

docFolder = exportFolder + "\\" + templateName;

if( !Directory.Exists(docFolder) )

{

Directory.CreateDirectory( docFolder );

}

// the folder of the exported document

int i = 1;

folderName = docFolder + "\\" + i;

while( Directory.Exists(folderName) )

{

i++;

folderName = docFolder + "\\" + i;

}

Directory.CreateDirectory(folderName);

return folderName;

}

// Image export function.

private void exportImages( IExportDocument docRef, IExportTools exportTools, string exportFolder )

{

string baseFileName = exportFolder + "\\page_";

IExportImageSavingOptions imageOptions = exportTools.NewImageSavingOptions(); ;

imageOptions.Format = "bmp";

imageOptions.ColorType = "FullColor";

imageOptions.Resolution = 100;

int i = 1;

foreach( IExportPage curPage in docRef.Pages )

{

string fileName = baseFileName + i + ".bmp";

curPage.SaveAs( fileName, imageOptions );

i++;

}

}

// Exporting info about document

private void exportDocInfo( IExportDocument docRef, StreamWriter sw )

{

sw.WriteLine( "Doc info:" );

sw.WriteLine("DocumentId " + docRef.Id );

sw.WriteLine("IsAssembled " + docRef.IsAssembled);

sw.WriteLine("IsVerified " + docRef.IsVerified);

sw.WriteLine("IsExported " + docRef.IsExported);

sw.WriteLine("ProcessingErrors " + docRef.ProcessingErrors);

sw.WriteLine("ProcessingWarnings " + docRef.ProcessingWarnings);

sw.WriteLine("TotalSymbolsCount " + docRef.TotalSymbolsCount);

sw.WriteLine("RecognizedSymbolsCount " + docRef.RecognizedSymbolsCount);

sw.WriteLine("UncertainSymbolsCount " + docRef.UncertainSymbolsCount);

sw.WriteLine();

}

// Exporting field collection

private void exportFields( IExportFields fields, StreamWriter sw, string indent )

{

foreach( IExportField curField in fields )

{

exportField( curField, sw, indent );

}

}

// Checks if the field value is null

// If the field value is invalid, any attempt to access this field (even

// to check if it is null) may cause an exception

private bool IsNullFieldValue( IExportField field )

{

try

{

return ( field.Value == null );

}

catch( Exception e )

{

return true;

}

}

// Exporting the specified field

private void exportField( IExportField field, StreamWriter sw, string indent )

{

// saving the field name

sw.Write( indent + field.Name );

// saving the field value it can be accessed

if( IsNullFieldValue( field ) )

{

sw.WriteLine();

}

else

{

sw.WriteLine( " " + field.Text );

}

if( field.Children != null )

{

// exporting child fields

exportFields( field.Children, sw, indent + " " );

}

else if( field.Items != null )

{

// exporting field instances

exportFields( field.Items, sw, indent + " " );

}

}

}

}
导出处理程序
此样本代码演示了一种简单的导出处理程序，该程序保存有关已导出文档的信息，并将结果导出至文本文件。此实例使用了两种文本文件：一个包含成功导出文档的列表，另一个包含在导出期间返回错误的文档的列表。

[VBScript]

dim curDoc

dim fso, fileErrorName, txtErrorFile, fileSucceedName, txtSucceedFile

set fso = CreateObject("Scripting.FileSystemObject")

' creating the file with failed documents

fileErrorName = "d:\ExportResults\ErrorsDocuments.txt"

set txtErrorFile = fso.CreateTextFile( fileErrorName, true )

' creating the file with successfully exported documents

fileSucceedName = "d:\ExportResults\SucceedDocuments.txt"

set txtSucceedFile = fso.CreateTextFile( fileSucceedName, true )

Dim docInfo

' iterating the collection of exported documents

for each curDoc in me.Documents

    docInfo = "DocumentId:" & curDoc.Id

    if curDoc.Action.Succeeded then

        docInfo = docInfo & ". Exported successfully.  Result:" & curDoc.Action.Result

        txtSucceedFile.WriteLine docInfo

    else

        docInfo = docInfo & ". Export error: " & curDoc.Action.ErrorMessage & "  Result:" & curDoc.Action.Result

        txtErrorFile.WriteLine docInfo

    end if

next

txtErrorFile.Close

txtSucceedFile.Close

[JScript]

var fso = new ActiveXObject("Scripting.FileSystemObject");

// creating the files with failed documents

var fileErrorName = "d:\\ExportResults\\ErrorsDocuments.txt";

var txtErrorFile = fso.CreateTextFile( fileErrorName, true );

// creating the file with successfully exported documents

var fileSucceedName = "d:\\ExportResults\\SucceedDocuments.txt"

var txtSucceedFile = fso.CreateTextFile( fileSucceedName, true );

var i

// iterating the collection of exported documents

for( i = 0; i < Documents.Count; i++ ) {

    var curDoc = Documents.Item( i );

    var docInfo = "DocumentId: " + curDoc.Id;

   if( curDoc.Action.Succeeded ) {

        docInfo = docInfo + ". Exported successfully.  Result:" + curDoc.Action.Result;

        txtSucceedFile.WriteLine( docInfo );

    } else {

        docInfo = docInfo + ". Export error: " + curDoc.Action.ErrorMessage + "  Result:" + curDoc.Action.Result;

        txtErrorFile.WriteLine( docInfo );

    }

}

txtErrorFile.Close();

txtSucceedFile.Close();


用于创建自定义规则的样本脚本

自动化规则

此示例演示了表格数据检查。检查表格数据是否与生成字段中值相匹配的规则检查。此表格含有表示某些货物价格和数量的列。规则是在包含表格和生成字段的节段级别编写。

[VBScript]

dim autoRule

set autoRule = CreateObject( "AutomationRule.CheckDoc" )

autoRule.CheckResult me.FIELD("cost"), me.FIELD("number"), _

me.FIELD("Result"), me

[JScript]

var autoRule = new ActiveXObject( "AutomationRule.CheckDoc" );

autoRule.CheckResult( Field("cost"), Field("number"),

Field("Result"), this );

ActiveX 组件代码

此处提供的代码是源自 AutomationRule 项目的 CheckDoc 类代码，用于上述提到的脚本。

Option Explicit

' Checks whether table data matches the result

' column1 - price column

' column2 - quantity column

' resultField - resulting field (<Total> or equivalent )

' docObj - document node being checked

Public Sub CheckResult(ByRef column1 As Object, ByRef column2 As Object, _

ByRef resultField As Object, ByRef docObj As Object)

On Error GoTo err_h

Dim costItems As Object, numItems As Object

    Dim curCost As Double, curNum As Long, sum As Double

Dim result As Double

Dim i As Long

Set costItems = column1.Items

Set numItems = column2.Items

' summing up table data

sum = 0

For i = 0 To costItems.Count - 1

curCost = costItems.Item(i).Value

curNum = numItems.Item(i).Value

sum = sum + curNum * curCost

Next

' comparison accuracy – result rounded to the 2nd digit after the decimal point

result = resultField.Value

If (Round(result, 2) = Round(sum, 2)) Then

docObj.CheckSucceeded = True

Else

docObj.CheckSucceeded = False

docObj.ErrorMessage = "Table data does not match the resulting value"

resultField.Suggest sum

End If

Exit Sub

err_h:

docObj.ErrorMessage = Err.Description

docObj.CheckSucceeded = False

End Sub

搜索变量列表

以下提供的规则代码检查字段值是否与列表中的任一值相匹配。如不匹配，则将出现规则错误标记，字段将收到建议的值列表。根据检查结果，将字段标记为确定或不确定识别。

[VBScript]

'remember field value

Dim fieldValue

fieldValue = me.Field("Field6").Value

'create list of values for check

Dim list(5)

dim i

for i = 0 to 4

list(i) = "2" & i

next

dim success

success = false

'check whether field value matches values in the list

for i = 0 to 4

if list(i) = fieldValue Then

success = true

exit for

end if

next

'depending on the check result, set a corresponding certainty status for the field

me.Field("Field6").IsCertain = success

'fill the list of suggestions for the field – a suggestion can be any of the

'suitable values

if success = false then

for i = 0 to 4

me.Field("Field6").Suggest( list(i) )

next

end if

'place an error flag

me.CheckSucceeded = success

[JScript]

// remember field value

var fieldValue = Field("Field6").Value;

// create list of values for check

var list = new Array(5);

for( i = 0; i < 5; i++ ) {

list[i] = "2" + i

}

var success = false;

// match field value against values in the list

for( i = 0; i < 5; i++ ) {

if( list[i] == fieldValue ) {

success = true;

break;

}

}

// depending on the check result, set a corresponding certainty status for the field

Field("Field6").IsCertain = success;

// fill the list of suggestions for the field – a suggestion can be any of the

// suitable values

if( !success ) {

for( i = 0; i < 5; i++ ) {

Field("Field6").Suggest( list[i] );

}

}

// place error flag

CheckSucceeded = success;

字段匹配检查

以下提供的规则代码检查已检查的字段是否已匹配。

[VBScript]

if me.Field("InvoiceNumber").IsMatched then

me.CheckSucceeded = true

else

me.CheckSucceeded = false

me.ErrorMessage = "Field InvoiceNumber is not matched"

end if

[JScript]

if( Field("InvoiceNumber ").IsMatched ) {

CheckSucceeded = true;

} else {

CheckSucceeded = false;

ErrorMessage = "Field InvoiceNumber is not matched";

}

复选标记检查

以下提供的规则代码检查是否已选择复选标记

[VBScript]

if me.Field("Page status").Value then

me.CheckSucceeded = true

else

me.CheckSucceeded = false

me.ErrorMessage = "Page status is not checked"

end if

[JScript]

if( Field("Page status").Value ) {

CheckSucceeded = true;

} else {

CheckSucceeded = false;

ErrorMessage = "Page status is not checked";

}

复选标记组检查

以下提供的规则代码迭代了组中的所有复选标记，如果未选择任何复选标记，则将选择第一个复选标记。此规则是针对复选标记组级别书写的。组中的所有复选标记均已添加至纳入规则中的字段列表。对于默认的复选标记（第一个），则已禁用只读标志。如果组中没有复选标记，则将启用规则错误标志。

此样本代码迭代了纳入规则中的所有字段。 因为未在代码中指定字段名称，所以，此代码可用于任何复选标记组。

[VBScript]

if me.Fields.Count = 0 then

me.CheckSucceeded = false

me.ErrorMessage = "No checkmarks in group"

else

dim isChosen, i

isChosen = false

for i = 0 to me.Fields.Count - 1

if me.Fields.Item( i ).Value then

isChosen = true

exit for

end if

next

if Not isChosen then

me.Fields.Item(0).Value = true

end if

me.CheckSucceeded = true

end if

[JScript]

if( Fields.Count == 0 ) {

CheckSucceeded = false;

ErrorMessage = "No checkmarks in group";

} else {

var isChosen = false;

var i;

for( i = 0; i < Fields.Count; i++ ) {

if( Fields.Item( i ).Value ) {

isChosen = true;

break;

}

}

if( !isChosen ) {

Fields.Item(0).Value = true;

}

CheckSucceeded = true;

}

字段可靠性检查
以下提供的规则代码检查字段中不确定字符的数量，并在不确定字符数量超过或等于三时清除字段。这是自动纠正脚本。

[VBScript]

dim susp, qty, strpos, i, SC, strposPrev

strposPrev = 0

qty = 0

SC = "1"

susp = me.SuspiciousSymbols

for i = 1 to len (susp)

strpos = InStr (i, susp, SC,1)

if strpos <> strposPrev and strpos <> 0 then

qty = qty + 1

strposPrev = strpos

end if

next

if qty >= 3 then

me.text = ""

end if

批处理文件完整性检查
检查在控制页面上指定的文档数量是否与批处理文件中库存及与实际处理的文档8数量相符。如果数量不匹配。则将返回错误。

[VBScript]

dim DQty

dim i

for i = 0 to me.Batch.Documents.Count - 1

if me.Batch.Documents.Item(i).TemplateName = "Inv" then

DQty = me.Batch.Documents.Item(i).IndexedItemValue("DocQty")

exit for

end if

next

dim AcQty

AcQty = me.Batch.Documents.Count

if acqty <> DQty then

me.CheckSucceeded = false

me.ErrorMessage = "Incorrect number of documents in the batch:" & " " & AcQty& ". " & "Expected number:" & " " & DQty & "!"

end if


识别语言的内部名称

功能

识别语言的内部名称将在 IExportImageSavingOptions 对象的 RecognitionLanguages 属性中使用。

符合其内部名称的识别语言：

阿布哈兹语->Abkhaz
阿迪格语->Adyghe
南非荷兰语->Afrikaans
阿古尔语->Agul
阿尔巴尼亚语->Albanian
阿尔泰语->Altaic
阿拉伯语（沙特阿拉伯）->Arabic
亚美尼亚语（东部）->ArmenianEastern
亚美尼亚语（格拉巴）->ArmenianGrabar
亚美尼亚语（西部）->ArmenianWestern
阿瓦尔语->Awar
艾玛拉语->Aymara
阿塞拜疆语（西里尔）->AzeriCyrillic
阿塞拜疆语（拉丁）->AzeriLatin
巴什基尔语->Bashkir
巴斯克语->Basque
本巴语->Bemba
布莱克福特语->Blackfoot
葡萄牙语（巴西）->PortugueseBrazilian
布列塔尼语->Breton
布哥图语->Bugotu
保加利亚语->Bulgarian
布里亚特语->Buryat
白俄罗斯语->Belarusian
加泰隆语->Catalan
查莫罗语->Chamorro
车臣语->Chechen
简体中文->ChinesePRC
繁体中文->ChineseTaiwan
楚克其语->Chukcha
楚瓦什语->Chuvash
科西嘉语->Corsican
克里米亚鞑靼语->CrimeanTatar
克罗地亚语->Croatian
克罗语->Crow
捷克语->Czech
丹麦语->Danish
达尔格瓦语->Dargwa
东干语->Dungan
荷兰语->Dutch
英语->English
爱斯基摩语（西里尔）->EskimoCyrillic
爱斯基摩语（拉丁）->EskimoLatin
世界语->Esperanto
爱沙尼亚语->Estonian
鄂温语->Even
鄂温克语->Evenki
法罗语->Faeroese
斐济语->Fijian
芬兰语->Finnish
荷兰语（比利时）->DutchBelgian
法语->French
弗里西亚语->Frisian
弗留利语->Friulian
苏格兰盖尔语->GaelicScottish
加告兹语->Gagauz
加利西亚语->Galician
干达语->Ganda
德语->German
德语（新式拼写）->GermanNewSpelling
德语（卢森堡）->GermanLuxembourg
希腊语->Greek
瓜拉尼语->Guarani
哈尼语->Hani
豪萨语->Hausa
夏威夷语->Hawaiian
希伯来语->Hebrew
匈牙利语->Hungarian
冰岛语->Icelandic
伊多语->Ido
印度尼西亚语->Indonesian
印古什语->Ingush
国际语->Interlingua
爱尔兰语->Irish
意大利语->Italian
日语->Japanese
卡巴尔达语->Kabardian
卡尔梅克语->Kalmyk
恰伊-巴尔卡尔语->KarachayBalkar
卡拉卡尔帕克语->Karakalpak
卡舒比语->Kasub
卡瓦语->Kawa
哈萨克语->Kazakh
哈卡斯语->Khakas
汉特语->Khanty
吉库犹语->Kikuyu
吉尔吉斯语->Kirgiz
刚果语->Kongo
朝鲜语->Korean
科尔雅克语->Koryak
克佩勒语->Kpelle
库梅克语->Kumyk
库尔德语->Kurdish
拉克语->Lak
萨米语（拉皮什）->Lappish
拉丁语->Latin
拉脱维亚语->Latvian
拉脱维亚哥特语->LatvianGothic
莱兹吉语->Lezgin
立陶宛语->Lithuanian
卢巴语->Luba
马其顿语->Macedonian
马达加斯加语->Malagasy
马来语（马来西亚）->Malay
马林凯语->Malinke
马耳他语->Maltese
曼西语->Mansi
毛利语->Maori
马里语->Mari
玛雅语->Maya
苗语->Miao
米南卡堡语->Minankabaw
莫霍克语->Mohawk
摩尔达维亚语->RomanianMoldavia
蒙古语->Mongol
摩尔多瓦语->Mordvin
那瓦特语->Nahuatl
勒勒茨语->Nenets
尼夫赫语->Nivkh
诺盖语->Nogay
挪威语（博克马尔）->NorwegianBokmal
挪威语（尼诺斯克）->NorwegianNynorsk
尼昂加语->Nyanja
西方语->Occidental
奥杰布瓦语->Ojibway
旧式英语->OldEnglish
旧式法语->OldFrench
旧式德语->OldGerman
旧式意大利语->OldItalian
旧式西班牙语->OldSpanish
奥塞梯语->Ossetic
帕皮阿门托语->Papiamento
托克皮辛语->PidginEnglish
拼音->Pinyin
波兰语->Polish
葡萄牙语->PortugueseStandard
奥克语->Provencal
凯楚阿语->Quechua
利托-罗曼诸语->RhaetoRomanic
罗马尼亚语->Romanian
吉普赛语->Romany
卢旺达语->Ruanda
隆迪语->Rundi
俄语（旧式拼写）->RussianOldSpelling
俄语->Russian
萨摩亚语->Samoan
塞尔库普语->Selkup
塞尔维亚语（西里尔）->SerbianCyrillic
塞尔维亚语（拉丁）->SerbianLatin
修纳语->Shona
达科他语->Sioux
斯洛伐克语->Slovak
斯洛文尼亚语->Slovenian
索马里语->Somali
索布语->Sorbian
科萨语->Sotho
西班牙语->Spanish
巽他語->Sunda
斯瓦希利语->Swahili
斯瓦齐语->Swazi
瑞典语->Swedish
塔巴萨兰语->Tabassaran
塔加洛语->Tagalog
塔希提语->Tahitian
塔吉克语->Tajik
鞑靼语->Tatar
泰国语->Thai
景颇语->Tinpo
汤加语->Tongan
茨瓦纳语->Tswana
Tun->Tun
土耳其语->Turkish
土库曼语->Turkmen
图瓦语->Tuvin
乌德穆尔特语->Udmurt
维吾尔语（西里尔）->UighurCyrillic
维吾尔语（拉丁）->UighurLatin
乌克兰语->Ukrainian
乌兹别克语（西里尔）->UzbekCyrillic
乌兹别克语（拉丁）->UzbekLatin
宿务语->Visayan
越南语->Vietnamese
威尔士语->Welsh
沃洛夫语->Wolof
科萨语->Xhosa
雅库特语->Yakut
依地语->Yiddish
萨巴特克语->Zapotec
祖鲁语->Zulu
韩国语（韩文字母）->KoreanHangul
英俄语->Mixed
挪威语->Norwegian
简体中文和英语->ChinesePRC+English
繁体中文和英语->ChineseTaiwan+English
日语和英语->Japanese+English


On Task Window Page Activate

在任务窗口页面激活时

何时启动

该脚本将在激活任务窗口中的页面之前启动（通过双击或从菜单中启动）。

如果将 DoDefaultAction 参数的值设置为 true，则包含该页面的文档将在脚本执行之后，在文档编辑器中打开。如果将 DoDefaultAction 参数设置为 false，则该文档将不会打开。

默认情况下，DoDefaultAction 参数的值将设置为 true。

参数

名称 | 类型 | 访问 | 描述
上下文 | ITaskWindow | 读/写 | 任务窗口
PageItem | IPageItem | 读/写 | 要处理的页面
DoDefaultAction | IBoolean | 读/写 | 指定是否在文档编辑器中打开该文档


On Open Project

在打开项目时

何时启动

该脚本将在打开新项目之时启动。

参数

名称 | 类型 | 访问 | 描述
上下文 | IMainWindow | 读/写 | 主窗口


在任务关闭时

何时启动

该脚本将在关闭当前任务之前启动。

如果将 CanClose 参数设置为 true，则将在脚本执行之后关闭该任务。如果将 CanClose 参数设置为 false，该任务将保留打开。

默认情况下，CanClose 参数的值为 true。

参数

名称 | 类型 | 访问 | 描述
上下文 | ITaskWindow | 读/写 | 任务窗口
CanClose | IBoolean | 读/写 | 指定是否关闭该任务


在任务拒绝时

何时启动

该脚本将在拒绝任务之前启动。

如果将 CanReject 参数设置为 true，则将在脚本执行之后拒绝该任务。如果将 CanReject 参数设置为 false，将不会拒绝该任务。

默认情况下，CanReject 参数的值为 true。

注：该事件仅在使用拒绝任务命令时发生。关闭工作站时，将不发生该事件。

参数

名称 | 类型 | 访问 | 描述
上下文 | ITaskWindow | 读/写 | 任务窗口
CanReject | IBoolean | 读/写 | 指定是否拒绝该任务


在将任务发送至阶段时

何时启动

该脚本在将任务发送至异常之前启动。

如果将 CanSend 参数的值设置为 true，则该任务将在脚本执行之后发送至异常。如果将 CanSend 参数的值设置为 false，则不会将任务发送至异常。

默认情况下，CanSend 参数的值将设置为 true。

参数

名称 | 类型 | 访问 | 描述
上下文 | ITaskWindow | 读/写 | 任务窗口
CanSend | IBoolean | 读/写 | 指定是否将任务发送至异常


保护类型

使用 ABBYY FlexiCapture 9.0 要求提供有效的保护密钥。

ABBYY FlexiCapture 9.0 可能包含以下类型的保护密钥之一：

  • 硬件保护密钥
  • 软件保护密钥

硬件保护密钥

硬件保护密钥就是插入计算机 USB 端口上的 dongle (USB dongle)。

要使 ABBYY FlexiCapture 9.0 运行硬件保护密钥，您需要安装从安装程序安装相应的驱动程序。使用本程序时必须始终插入硬件保护密钥。

硬件保护密钥存储许可证参数。

使用许可证序列号可以远程激活空的硬件保护密钥。这个过程由 License Manager 实用程序完成，该实用程序通过因特网连接激活服务器，请求序列号的参数并将参数保存在密钥中。

重要事项！必须运行 SmartCard 服务才能使用硬件保护密钥。

软件保护密钥

这就是软件许可证文件。

必须在 ABBYY 激活服务器上激活许可证文件，方可对 ABBYY FlexiCapture 9.0 运行软件保护密钥。可从 License Manager 实用程序激活许可证文件。

激活许可证文件所需的信息以代码（产品 ID）的形式发送给 ABBYY，该代码根据安装了 ABBYY FlexiCapture 9.0 的计算机的信息生成。不使用个人信息生成产品 ID，该代码也不能用于识别用户身份。

激活方法：

  • 通过因特网
    激活通过因特网自动进行，只需数秒即可完成。该方法要求有效的因特网连接。
  • 通过电子邮件
    如果选择这种激活法，会自动生成一个电子邮件激活请求。将该电子邮件消息发送到指定的地址。为了确保从邮件机器人回复提示，请不要更改电子邮件的主题或正文。

对于通过因特网激活的情况，不要求执行其他任何步骤。如果通过电子邮件激活，您将从激活机器人收到一份激活的文件。将此文件保存到硬盘，运行 License Manager 实用程序，并提供用于在激活向导中保存文件的路径。

重复激活

您可以在激活了 ABBYY FlexiCapture 9.0 的计算机上重新安装该程序，次数不限。但是，如果进行重大升级、格式化硬盘或重新安装操作系统，可能要重新激活本产品。

激活服务器保存每个序列号激活次数的日志。一旦超过该序列号的特定阈值，序列号会被冻结，无法再进行激活。

您可以禁用激活过的许可证，在另一台计算机上使用。禁用许可证时，激活服务器会将该序列号的激活计数器之值减 1。

重要事项！只能在生成该产品 ID 的计算机上使用激活程序。要将程序迁移到另一台计算机，首先要禁用许可证。


字段校验程序窗口工具栏

名称 | 按钮 | 描述
上一字段 |  | 返回上一个字段
下一字段 |  | 转至下一字段
确认/跳过字段 |  | 确认字段中所有字符的正确识别，引导您进入下一字段。如果字段值与字段格式不相符，则按钮名称更改为跳过字段。如果字段值无法纠正，则其校验无法延期或跳过。
延期 |  | 当字段校验值无法纠正时，延期字段校验
上一个不确定字符 |  | 转至上一个不确定识别的字符
下一个不确定字符 |  | 转至下一个不确定识别的字符
撤消 |  | 撤消上一操作
恢复 |  | 恢复上次撤消的操作


文档定义节段的属性

您可在属性对话框中查看和更改文档定义节段的属性，当您从快捷方式菜单中选择属性…时将打开该对话框。

此对话框包含三个选项卡。

常规选项卡

在此选项卡，您可更改文档节段的名称、输入或编辑描述、在文档中输入或修改节段的最小和最大重复次数。已启用：选项包括文档定义节段及将其从文档处理中排除。有关多面文档及处理节段的详细信息，请参见为多页文档创建文档定义。

FlexiLayout选项卡

如果已将弹性描述附加至节段中，此选项卡将显示其名称：、版本：和注释：。您可附加弹性描述，只需单击加载…按钮，并通过单击上传按钮将其断开。

有关详细信息，请参见创建用于处理弹性文档的文档定义。

图像选项卡
此选项卡列出了节段页面图像的显示参数。以下参数可用：大小、分辨率、打印尺寸和颜色模式。

规则选项卡

此选项卡用于执行带有文档定义规则的操作。您可删除、编辑或创建新规则。

有关详细信息，请参见规则校验。