1. 简介
Document AI 是一种文档理解解决方案,可以提取文档、电子邮件等非结构化数据,从而让用户更容易理解、分析和使用这些数据。
借助 Document AI Workbench,您可以使用自己的训练数据创建完全自定义的模型,从而提高文档处理准确率。
在本实验中,您将创建自定义文档提取处理器、导入数据集、为示例文档添加标签,并训练该处理器。
本实验中使用的文档数据集来自 Kaggle 上具有 CC0(公共领域许可)的虚假 W-2(美国纳税表单)数据集。
前提条件
此 Codelab 基于其他 Document AI Codelab 中介绍的内容。
建议您先完成以下 Codelab,然后再继续。
- 使用 Document AI 进行光学字符识别 (OCR) (Python)
- 使用 Document AI 解析表单 (Python)
- 使用 Document AI 专用处理器 (Python)
- 使用 Python 管理 Document AI 处理器
- Document AI:人机协同
- Document AI:追加训练
学习内容
- 创建自定义文档提取器处理器。
- 使用注释工具为 Document AI 训练数据添加标签。
- 训练新模型版本。
- 评估新模型版本的准确率。
所需条件
2. 准备工作
本 Codelab 假定您已完成入门 Codelab 中列出的 Document AI 设置步骤。
请先完成以下步骤,然后再继续操作:
3. 创建处理器
您需要先创建一个自定义文档提取器处理器,以便在本实验中使用。
- 在控制台中,前往 Document AI 概览页面。

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

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

- 点击创建以创建处理器。然后,您应该会看到“处理器概览”页面。

4. 创建数据集
如需训练处理器,我们必须创建一个包含训练和测试数据的数据集,以帮助处理器识别我们想要提取的实体。
- 在“处理器概览”页面上,点击配置数据集。

- 您现在看到的应该是配置数据集页面。如果您想指定自己的存储分区来存储训练文档和标签,请点击显示高级选项。否则,只需点击继续即可。

- 等待系统创建数据集,然后系统应会将您定向到训练页面。

5. 导入测试文档
现在,我们将一个示例 W2 PDF 文件导入我们的数据集。
- 点击导入文档

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

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

6. 创建标签
由于我们要创建新的处理器类型,因此需要创建自定义标签来告知 Document AI 我们要提取哪些字段。
- 点击左下角的修改架构。

- 您现在应该位于“架构管理”控制台中。

- 使用创建标签按钮创建以下标签。
名称 | 数据类型 | 出现 |
| 数字 | 必需,数量不限 |
| 纯文本 | 必需,数量不限 |
| 纯文本 | 必需,数量不限 |
| 地址 | 必需,数量不限 |
| 金额 | 必需,数量不限 |
| 金额 | 必需,数量不限 |
| 金额 | 必需,数量不限 |
| 金额 | 必需,数量不限 |
- 完成后,控制台应如下所示。完成后,请点击保存。

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

7. 为测试文档添加标签
接下来,我们将为要提取的实体确定文本元素和标签。这些标签将用于训练我们的模型以解析此特定文档结构并确定正确的类型。
- 双击之前导入的文档,进入标签控制台。看上去应该类似这样

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

- 为
CONTROL_NUMBER的另一个实例完成此操作。添加标签后,它应如下所示。

- 突出显示以下文本值的所有实例,并分配相应的标签。
标签名称 | 文本 |
| 24-3188810 |
| 19127.2 |
| 5093.71 |
| 66584.46 |
| 56081.18 |
| 714-32-2105 |
| Adams, Chase and Gilbert Inc 972 Gonzalez Dam South Katherine NC 95869-5178 |
- 添加标签后的文档应如下所示。请注意,您可以通过点击文档中的边界框或左侧菜单中的标签名称/值来调整这些标签。标签添加完毕后,点击标记为已加标签,然后返回数据集管理控制台。

8. 将文档分配给训练集
您现在应该会返回到数据集管理控制台。请注意,已加标签和未加标签的文档数量以及每个标签的实例数量已发生变化。

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

- 请注意,数据拆分数量已发生变化。

9. 导入预先添加标签的数据
Document AI 自定义处理器要求在训练集和测试集中都至少有 10 个文档,并且每个数据集中的每个标签都至少有 10 个实例。
为了获得最佳性能,我们建议您在每个数据集中至少有 50 个文档,每个标签至少有 50 个实例。通常,训练数据越多,准确性就越高。
手动为所有文档添加标签需要很长时间,因此我们提供了一些预先添加标签的文档,您可以在本实验中导入这些文档。
您可以导入 Document.json 格式的预先添加标签的文档文件。这些文件可能是调用处理器并使用人机协同 (HITL) 验证准确性的结果。
aside negative
注意:导入预先标记的数据时,强烈建议在训练模型之前手动检查注释。
- 点击导入文档。

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

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

- 完成后,您应该会在训练页面中看到这些文档。

10. 训练模型
现在,我们已准备好开始训练自定义文档提取器。
- 点击训练新版本

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

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

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

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

11. 测试新模型版本
训练作业完成后(在我的测试中,此过程大约为 1 小时),您现在可以测试新的模型版本并开始将其用于预测。
- 前往管理版本页面。您可以在此处查看当前状态和 F1 分数。

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

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

- 部署完成后,前往评估标签页。在此页面上,您可以查看完整文档以及各个标签的各项评估指标,包括 F1 得分、精确率和召回率。 如需详细了解这些指标,请参阅 AutoML 文档。

- 下载下方链接的 PDF 文件。这是一个未包含在训练集或测试集中的 W2 样本。
- 点击上传测试文档,然后选择 PDF 文件。
- 提取的实体应如下所示。

12. 可选:为新导入的文档自动添加标签
部署经过训练的处理器版本后,您可以在导入新文档时使用自动加标签功能来节省加标签的时间。
- 在训练页面上,点击导入文档。
- 复制并粘贴以下 路径。该目录包含 5 个没有加标签的 W2 PDF 文件。在数据拆分下拉列表中,选择训练。
cloud-samples-data/documentai/Custom/W2/AutoLabel - 在自动加标签部分,选中使用自动添加标签功能导入复选框。
- 选择现有处理器版本,以便为文档添加标签。
- 例如:
2af620b2fd4d1fcf
- 点击导入,然后等待文档导入。您可以离开此页面,稍后再返回来查看。
- 完成后,文档会显示在训练页面的已自动加标签部分中。
- 您不能使用自动加标签的文档进行训练或测试,除非将其标记为已加标签。找到已自动加标签部分以查看自动加标签的文档。
- 选择第一个文档以进入标签控制台。
- 验证标签、边界框和值,确保其正确无误。标记任何被省略的值。
- 完成后,选择标记为已加标签。
- 为每个自动加标签的文档重复标签验证,然后返回训练页面以使用数据进行训练。
13. 总结
恭喜!您已成功使用 Document AI 训练了自定义文档提取器处理器。现在,您可以像使用任何特殊处理器一样,使用此处理器解析此格式的文档。
您可以参阅特殊处理器 Codelab,了解如何对处理响应进行处理。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请执行以下操作:
- 在 Cloud Console 中,转到管理资源页面。
- 在项目列表中,选择您的项目,然后点击“删除”。
- 在对话框中输入项目 ID,然后点击“关停”以删除项目。
资源
- Document AI Workbench 文档
- 文档的未来发展 - YouTube 播放列表
- Document AI 文档
- Document AI Python 客户端库
- Document AI 示例
许可
此作品已获得 Creative Commons Attribution 2.0 通用许可授权。