Document AI Workbench - 自定义文档提取器

1. 简介

Document AI 是一种文档理解解决方案,可接受文档、电子邮件等非结构化数据,使数据更易于理解、分析和使用。

借助 Document AI Workbench,您可以使用自己的训练数据创建完全自定义的模型,从而提高文档处理准确率。

在本实验中,您将创建自定义文档提取处理器、导入数据集、为示例文档加标签并训练该处理器。

本实验中使用的文档数据集来自 Kaggle 上的假 W-2(美国纳税表单)数据集,且具有“CC0:公共领域许可证”。

前提条件

此 Codelab 以其他 Document AI Codelab 中展示的内容为基础。

建议您先完成以下 Codelab,然后再继续。

学习内容

  • 创建自定义文档提取器处理器。
  • 使用注解工具为 Document AI 训练数据添加标签。
  • 训练新的模型版本。
  • 评估新模型版本的准确性。

所需条件

  • Google Cloud 项目
  • 一个浏览器,例如 ChromeFirefox

2. 准备工作

此 Codelab 假定您已完成入门 Codelab 中列出的 Document AI 设置步骤。

请先完成以下步骤,然后再继续:

3. 创建处理器

您必须先创建一个自定义文档提取器处理器,以用于本实验。

  1. 在控制台中,前往 Document AI 概览页面。

DocAIOverviewConsole

  1. 点击创建自定义处理器,然后选择自定义文档提取器

docai-custom-codelab-02

  1. 将其命名为 codelab-custom-extractor(或您能记住的其他名称)并从列表中选择距离最近的区域。

docai-custom-codelab-03

  1. 点击 Create 以创建处理器。然后,您应该会看到“Processor Overview”页面。

docai-custom-codelab-04

4. 创建数据集

为了训练处理方,我们需要创建一个包含训练数据和测试数据的数据集,以帮助处理方识别我们想要提取的实体。

  1. 在“处理器概览”页面上,点击配置数据集

docai-custom-codelab-04

  1. 您现在应进入配置数据集页面。如果要指定自己的存储分区来存储训练文档和标签,请点击显示高级选项。否则,请点击继续

docai-custom-codelab-05

  1. 等待数据集创建完毕,系统应该会将您转到训练页面。

docai-custom-codelab-07

5. 导入测试文档

现在,我们将一个示例 W2 PDF 文件导入我们的数据集。

  1. 点击 Import Documents(导入文件)

docai-custom-codelab-08

  1. 我们提供了一个示例 PDF 文件,供您在此实验中使用。复制以下链接并将其粘贴到源路径框中。退出“数据拆分”显示为“未分配”请勿选中其他所有复选框。点击导入
cloud-samples-data/documentai/codelabs/custom/extractor/pdfs

docai-custom-codelab-09

  1. 等待文档导入。此过程应该不会超过 1 分钟。
  2. 导入完成后,您应该会在训练页面中看到该文档。

docai-custom-codelab-10

6. 创建标签

由于我们要创建新的处理器类型,因此需要创建自定义标签,以告知 Document AI 我们要提取哪些字段。

  1. 点击左下角的修改架构

docai-custom-codelab-11

  1. 您现在应该位于架构管理控制台中。

docai-custom-codelab-12

  1. 使用创建标签按钮创建以下标签。

名称

数据类型

出现

CONTROL_NUMBER

数字

必需,数量不限

EMPL_SSN

纯文本

必需,数量不限

EMPLR_ID_NUMBER

纯文本

必需,数量不限

EMPLR_NAME_ADDRESS

地址

必需,数量不限

FEDERAL_INCOME_TAX_WH

金额

必需,数量不限

SS_TAX_WH

金额

必需,数量不限

SS_WAGES

金额

必需,数量不限

WAGES_TIPS_OTHER_COMP

金额

必需,数量不限

  1. 完成后,控制台应如下所示。完成后,请点击保存

docai-custom-codelab-13

  1. 点击返回箭头以返回到训练页面。请注意,我们创建的标签显示在左下角。

docai-custom-codelab-14

7. 为测试文档添加标签

接下来,我们将确定要提取的实体的文本元素和标签。这些标签将用于训练我们的模型以解析此特定文档结构并确定正确的类型。

  1. 双击我们之前导入的文档,进入标签控制台。看上去应该类似这样

docai-custom-codelab-15

  1. 点击“边界框”然后突出显示“1173038”并为其分配标签 CONTROL_NUMBER。您可以使用文本过滤条件来搜索标签名称。

docai-custom-codelab-16

  1. 对于 CONTROL_NUMBER 的另一个实例,完成标记后,代码应如下所示。

docai-custom-codelab-17

  1. 突出显示以下文本值的所有实例,并分配适当的标签。

标签名称

文本

EMPLR_ID_NUMBER

24-3188810

FEDERAL_INCOME_TAX_WH

19127.2

SS_TAX_WH

5093.71

SS_WAGES

66584.46

WAGES_TIPS_OTHER_COMP

56081.18

EMPL_SSN

714-32-2105

EMPLR_NAME_ADDRESS

Adams, Chase and Gilbert Inc 972 Gonzalez Dam South Katherine NC 95869-5178

  1. 完成后,加标签的文档应如下所示。请注意,您可以通过点击文档中的边界框或左侧菜单中的标签名称/值来调整这些标签。完成加标签操作后,点击标记为已加标签,然后返回数据集管理控制台。

docai-custom-codelab-20

8. 将文档分配到训练集

您现在应返回到数据集管理控制台。请注意,已加标签和未加标签的文档数以及每个标签的实例数都已更改。

docai-custom-codelab-21

  1. 我们需要将此文档分配给“训练”或“测试”。点击文档,再点击分配给集合,然后点击训练

docai-custom-codelab-22

  1. 请注意,数据拆分数值已更改。

docai-custom-codelab-23

9. 导入预先加标签的数据

Document AI 自定义处理器要求在训练集和测试集中都至少有 10 个文档,并且每个数据集中的每个标签都至少有 10 个实例。

为了获得最佳性能,我们建议您在每个数据集中至少有 50 个文档,每个标签至少有 50 个实例。通常,训练数据越多,准确性就越高。

手动为所有文档添加标签需要很长时间,因此我们提供了一些预先添加标签的文档,您可以在本实验中导入这些文档。

您可以导入 Document.json 格式的已预先添加标签的文档文件。这些文件可能是调用处理器并使用人机协同 (HITL) 验证准确性的结果。

aside negative

注意:导入预先添加了标签的数据时,强烈建议在训练模型之前手动查看注释。

  1. 点击导入文件

docai-custom-codelab-24

  1. 复制/粘贴以下 Cloud Storage 路径并将其分配给训练集。
cloud-samples-data/documentai/codelabs/custom/extractor/training
  1. 点击添加其他文件夹。然后,复制/粘贴以下 Cloud Storage 路径并将其分配给测试集。
cloud-samples-data/documentai/codelabs/custom/extractor/test

docai-custom-codelab-25

  1. 点击导入,然后等待文档导入。这将比上次花费更长的时间,因为要处理的文档更多。此过程大约需要 6 分钟,您可以离开此页面,稍后再返回来查看。

docai-custom-codelab-26

  1. 完成后,您应该会在训练页面中看到相关文档。

docai-custom-codelab-27

10. 训练模型

现在,我们可以开始训练自定义文档提取器了。

  1. 点击训练新版本

docai-custom-codelab-28

  1. 为您的版本指定一个容易记住的名称,例如 codelab-custom-1。对于“训练方法”,请选择“从头开始训练”。

docai-custom-codelab-29

  1. (可选)您还可以选择查看标签统计信息,以查看关于数据集中标签的指标。

docai-custom-codelab-30

  1. 点击开始训练以开始执行训练流程。系统应该会将您重定向至“数据集管理”页面。您可以在右侧查看训练状态。训练将需要几个小时才能完成。您可以离开此页面,稍后再返回来查看。

docai-custom-codelab-31

  1. 如果您点击版本名称,则会转到管理版本页面,其中会显示训练作业的版本 ID 和当前状态。

docai-custom-codelab-32

11. 测试新模型版本

训练作业完成后(在我的测试中,此过程大约为 1 小时),您现在可以测试新的模型版本并开始将其用于预测。

  1. 转到管理版本页面。您可以在此处查看当前状态和 F1 得分。

docai-custom-codelab-33

  1. 我们需要先部署此模型版本,然后才能使用它。点击右侧的垂直点,然后选择部署版本

docai-custom-codelab-34

  1. 在等待版本部署时,从弹出式窗口中选择部署。这需要几分钟才能完成。部署此版本后,您还可以将此版本设置为默认版本。

docai-custom-codelab-35

  1. 完成部署后,转到评估标签页。在此页面上,您可以查看完整文档以及各个标签的各项评估指标,包括 F1 得分、精确率和召回率。 您可以在 AutoML 文档中详细了解这些指标。

docai-custom-codelab-36

  1. 下载下方链接的 PDF 文件。这是未包含在训练集或测试集中的示例 W2。

  1. 点击 Upload Test Document,然后选择 PDF 文件。
  2. 提取的实体应如下所示。

docai-custom-codelab-37

12. 可选:为新导入的文档自动添加标签

部署经过训练的处理器版本后,您可以在导入新文档时使用自动加标签功能来节省加标签的时间。

  1. 训练页面上,点击导入文档
  2. 复制并粘贴以下 路径。该目录包含 5 个没有加标签的 W2 PDF 文件。从数据拆分下拉列表中选择训练
    cloud-samples-data/documentai/Custom/W2/AutoLabel
    
  3. 自动加标签部分,选中使用自动添加标签功能导入复选框。
  4. 选择现有处理器版本,以便为文档添加标签。
  • 例如:2af620b2fd4d1fcf
  1. 点击导入,然后等待文档导入。您可以离开此页面,稍后再返回来查看。
  • 完成后,文档会显示在训练页面的已自动加标签部分中。
  1. 您不能使用自动加标签的文档进行训练或测试,除非将其标记为已加标签。找到已自动加标签部分以查看自动加标签的文档。
  2. 选择第一个文档以进入标签控制台。
  3. 验证标签、边界框和值,确保其正确无误。标记任何被省略的值。
  4. 完成后,选择标记为已加标签
  5. 为每个自动加标签的文档重复标签验证,然后返回训练页面以使用数据进行训练。

13. 总结

恭喜,您已成功使用 Document AI 训练了自定义文档提取器处理器。现在,您可以像使用任何特殊处理器一样,使用此处理器解析此格式的文档。

您可以参阅特殊处理器 Codelab,了解如何对处理响应进行处理。

清理

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请执行以下操作:

  • 在 Cloud Console 中,转到管理资源页面。
  • 在项目列表中,选择您的项目,然后点击“删除”。
  • 在对话框中输入项目 ID,然后点击“关停”以删除项目。

资源

许可

此作品已获得 Creative Commons Attribution 2.0 通用许可授权。