自定义拆分器
自定义拆分器旨在通过标识每个逻辑文档,将复合文档(由多个类组成的文档)拆分为多个单类文档。例如,抵押贷款软件包中包含多个类,如申请、收入验证和带照片的身份证件等。如需使用自定义拆分器处理器,您需要使用自己的文档和自定义类从头开始训练它们。
拆分器说明和用法
您可以创建专门适合您的文档使用的自定义拆分器,并使用您的数据进行训练和评估。该处理器负责从用户定义的类集中识别文档的类。之后,您便可以将此经过训练的处理器用于生产文档。您通常会对由不同类型的逻辑文档组成的文件使用自定义拆分器,然后使用每个文档的类标识将文档传递给相应的提取处理器以提取实体。
由于机器学习模型并不完美,具有一定的错误率,而且拆分过程中的错误通常非常麻烦(拆分不当会导致两个文档出错并导致提取错误),因此最佳实践是始终在拆分预测之后,但在实际文件拆分之前执行人工审核步骤。根据业务要求,除了始终进行人工审核,还有其他替代方案:
- 使用预测的置信度分数来决定是否绕过人工审核(如果足够高)。该置信度分数阈值应根据给定置信度分数下错误率的有关历史数据来确定。这应该是一项业务决策,基于业务流程对错误的容忍度以及绕过人工审核的要求。
- 在某些应用场景中,拆分的文档可以根据预测的类直接路由到相应的提取器。随后,如果提取未完成或置信度分数较低,请隔离拆分的文档并触发原始复合文档和拆分决策以供审核。这具有相当复杂的工作流要求。
在 Google Cloud 控制台中创建自定义拆分器
本快速入门指南介绍了如何使用 Document AI 创建和训练对采购文档进行拆分和分类的自定义拆分器。大部分文档准备工作已完成,因此您可以专注于创建自定义拆分器。
创建和使用自定义拆分器的典型工作流如下:
- 在 Document AI 中创建自定义拆分器。
- 使用空 Cloud Storage 存储桶创建数据集。
- 定义并创建处理器架构(类)。
- 导入文档。
- 将文档分配给训练集和测试集。
- 在 Document AI 中手动为文档添加注解或通过添加标签任务为文档添加注解。
- 训练处理器。
- 评估处理器。
- 部署处理器。
- 测试处理器。
- 对文档使用处理器。
如果您的文档按类放在单独的文件夹中,可以在导入时通过指定类来跳过第 6 步。
如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示:
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Document AI, Cloud Storage APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Document AI, Cloud Storage APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 在 Google Cloud 控制台的 Document AI 部分,进入 Workbench 页面。 
- 对于自定义文档拆分器,请选择 - 创建处理器 。  
- 在创建处理器菜单中,输入处理器的名称,例如 - my-custom-document-splitter。  
- 选择离您最近的区域。 
- 选择创建。系统随即会显示处理器详情标签页。 
- 如果您需要由 Google 管理的存储空间,请选择该选项。
- 如果您希望使用自己的存储空间来使用客户管理的加密密钥 (CMEK),请选择我将指定我自己的存储位置并按照后续过程操作。
- 转到处理器的 - 训练 标签页。
- 选择设置数据集位置。系统会提示您选择或创建一个空的 Cloud Storage 存储桶或文件夹。  
- 选择浏览以打开选择文件夹。 
- 选择新建存储桶图标,然后按照提示创建新存储桶。创建存储桶后,系统会显示该存储桶的选择文件夹页面。如需详细了解如何创建 Cloud Storage 存储桶,请参阅 Cloud Storage 存储桶。 
- 在存储桶的选择文件夹页面上,选择对话框底部的选择按钮。  
- 在训练标签页上,选择左下角的 - 修改架构 。系统随即会打开管理标签页面。
- 选择 - 创建标签 。
- 为标签输入一个名称。选择创建。如需详细了解如何创建和修改架构,请参阅定义处理器架构。 
- 为处理器架构创建以下每个标签。 - bank_statement
- form_1040
- form_w2
- form_w9
- paystub
 
- 标签设置完成后,选择 - 保存 。  
- 在训练标签页上,选择 - 导入文档 。  
- 在此示例中,请在 - 来源路径 中输入此路径。此路径包含一个 PDF 文档。- cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-Unlabeled
- 将 - 文档标签 设置为无。
- 将 - 数据集拆分 下拉菜单设置为未分配。- 默认情况下,此文件夹中的文档没有标签,也不会分配给测试集或训练集。 
- 选择 - 导入 。Document AI 将存储桶中的文档读入数据集。它不会修改导入存储桶,也不会在导入完成后从存储桶读取数据。
- 点击导入文档。
- 在来源路径中输入以下路径。此存储桶包含 PDF 格式的未加标签文档。 - cloud-samples-data/documentai/Custom/Patents/PDF-CDC-BatchLabel
- 在数据拆分列表中,选择自动拆分。这会自动拆分文档,使其数据在训练集中占 80%,在测试集中占 20%。 
- 在应用标签部分,选中选择标签。 
- 对于这些示例文档,请选择“其他”。 
- 点击导入,然后等待文档导入。您可以暂时离开此页面,稍后再返回来查看。 
- 返回训练标签页,然后选择 - 一个文档 以打开标签管理控制台。
- 本文档包含多个需要识别和添加标签的页面组。首先,您需要确定拆分点。在图片视图的第 1 页和第 2 页之间移动鼠标,然后选择 - + 符号 。  
- 在以下页码之前创建拆分点:2、3、4、5。 - 完成后,您的控制台应如下所示。   
- 在 - 文档类型下拉菜单 中,为每个页面组选择合适的标签。- 页码 - 文档类型 - 1 - paystub- 2 - form_w9- 3 - bank_statement- 4 - form_w2- 5 和 6 - form_1040- 完成添加标签的文档应如下所示:   
- 完成为文档添加注解后,选择 - 标记为已加标签 。- 在训练标签页上,左侧面板会显示已标记 1 个文档。 
- 在训练标签页上,选中 - 全选 复选框。
- 从 - 分配给集合 列表中,选择训练。
- 在训练标签页上,选择 - 导入文档 。
- 在 - 来源路径 中输入以下路径。此文件夹包含银行对账单的 PDF 文件。- cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-BatchLabel/bank-statement
- 将 - 文档标签 设置为- bank_statement。
- 在 - 数据集拆分 菜单中,设置为自动拆分。这会自动拆分文档,使其数据在训练集中占 80%,在测试集中占 20%。
- 选择 - 添加其他文件夹 以添加更多文件夹。
- 使用以下路径和文档标签重复前面的步骤: - 存储桶路径 - 文档标签 - cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-BatchLabel/1040- form_1040- cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-BatchLabel/w2- form_w2- cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-BatchLabel/w9- form_w9- cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-BatchLabel/paystub- paystub- 完成后,控制台应如下所示:   
- 选择 - 导入 。导入过程需要几分钟时间。
- 在训练标签页上,选择 - 导入文档 。
- 在 - 来源路径 中输入以下路径。- cloud-samples-data/documentai/Custom/Lending-Splitter/JSON-Labeled
- 将 - 文档标签 设置为无。
- 将 - 数据集拆分 下拉菜单设置为自动拆分。
- 选择 - 导入 。
- 选择 - 训练新版本 。
- 在 - 版本名称 字段中,输入此处理器版本的名称,例如- my-cds-version-1。
- (可选)选择查看标签统计信息,找到文档标签的相关信息。这有助于确定覆盖率。选择关闭即可返回训练设置。  
- 选择 - 开始训练 ,您可以在右侧面板上查看训练状态。
- 训练完成后,转到 - 管理版本 标签页。您可以查看刚刚训练的版本的详细信息。
- 选择要部署的版本右侧的 - 三个垂直点 ,然后选择部署版本。
- 从弹出式窗口中选择 - 部署 。- 部署需要几分钟才能完成。 
- 部署完成后,转到 - 评估和测试 标签页。- 在此页面上,您可以查看完整文档以及各个标签的各项评估指标,包括 F1 得分、精确率和召回率。如需详细了解评估及统计信息,请参阅评估处理器。 
- 下载之前训练或测试中未涉及的文档,以便使用它来评估处理器版本。如果您使用自己的数据,则可以使用为此目的预留的文档。 
- 选择 - 上传测试文档 ,然后选择您刚刚下载的文档。- 系统随即会打开自定义拆分器分析页面。屏幕输出将展示文档的拆分和分类效果。 - 完成后,控制台应如下所示:   - 您也可以针对其他测试集或处理器版本重新运行评估。 
- 在训练标签页上,选择 - 导入文档 。
- 在 - 来源路径 中输入以下路径。此文件夹包含多种文档类型的未加标签 PDF 文件。- cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-AutoLabel
- 将 - 文档标签 设置为自动添加标签。
- 将 - 数据集拆分 下拉菜单设置为自动拆分。
- 在自动加标签部分中,将 - 版本 设置为您之前训练的版本。- 例如:2af620b2fd4d1fcf
 
- 例如:
- 选择 - 导入 ,然后等待文档导入。
- 您不能使用自动加标签的文档进行训练或测试,除非将其标记为已加标签。找到 - 已自动加标签 部分以查看自动加标签的文档。
- 选择第一个文档以进入标签控制台。 
- 验证标签以确保其正确,如果不正确,则进行调整。 
- 完成后,选择 - 标记为已加标签 。
- 为每个自动添加标签的文档重复标签验证过程。 
- 返回训练页面,然后选择训练新版本以将数据用于训练。 
- 在 Google Cloud 控制台导航菜单中,依次选择 Document AI 和我的处理器。 
- 选择要删除的处理器所在行中的 - 更多操作 。
- 选择删除处理器,输入处理器名称,然后再次选择删除进行确认。 
创建处理器
配置数据集
如需训练新处理器,您必须创建一个包含训练和测试数据的数据集,以帮助处理器识别您要拆分和分类的文档。
此数据集需要新的位置。此位置可以是空的 Cloud Storage 存储桶或文件夹,也可以是由 Google 管理的(内部)位置。

为数据集创建 Cloud Storage 存储桶
确保目标路径中填充了您选择的存储桶的名称。选择创建数据集。 数据集最多可能需要几分钟时间才能创建完毕。
定义处理器架构
在将文档导入数据集之前或之后都可以创建处理器架构。该架构提供了用于为文档添加注释的标签。
将未加标签的文档导入数据集
下一步是开始将未加标签的文档导入数据集并为其添加标签。建议的替代方案是导入在文件夹中按类整理的文档(如果适用)。
如果您处理的是自己的项目,可确定如何为您的数据添加标签。请参阅标签选项。
Document AI 自定义处理器要求在训练集和测试集中都至少有 10 个文档,并且每个数据集中的每个标签都至少有 10 个实例。为了获得最佳性能,我们建议每个数据集中至少有 50 个文档,每个标签至少有 50 个实例。一般来说,训练数据越多,准确性就越高。
导入文档时,可以选择性地在导入后将文档分配给训练或测试集,或者等待稍后再分配这些文档。
如果要删除已导入的一个或多个文档,请在训练标签页上选择这些文档,然后选择删除。
如需详细了解如何准备要导入的数据,请参阅数据准备指南。
可选:在导入时为文档批量添加标签
您可以在导入时为特定目录中的所有文档添加标签,以节省添加标签的时间。如果您在文件夹中按类整理训练文档,则可以使用文档标签字段为这些文档指定类,避免手动为每个文档添加标签。

在图片中,Bank_statements 和 Invoice 是可供选择的已定义标签(文档类)。或者,您也可以使用 CREATE LABEL 并定义新类。
为文档加标签
将标签应用于文档的过程称为“添加注解”。
将已添加注解的文档分配给训练集
现在,您已为此示例文档添加了标签,接下来可以将其分配给训练集。
在左侧面板中,您可以看到系统已将 1 个文档分配给训练集。
使用批量添加标签功能导入数据
接下来,您将导入按类型分类到不同 Cloud Storage 文件夹中的未加标签 PDF 文件。批量添加标签功能可以根据路径在导入时分配标签,从而帮助节省添加标签的时间。
导入完成后,可在训练标签页上找到相关文档。
导入预先添加标签的数据
在本指南中,我们以 JSON 文件的形式,为您提供了 Document 格式的预先添加标签的数据。
这与 Document AI 在处理文档、使用人机协同 (Human-in-the-Loop) 添加标签或导出数据集时输出的格式相同。
导入完成后,可在训练标签页上找到相关文档。
训练处理器
现在,您已导入训练和测试数据,接下来就可以训练处理器了。由于训练过程可能需要几个小时,因此在开始训练之前,请确保您已使用适当的数据和标签设置处理器。
部署处理器版本
评估和测试处理器
(可选)使用自动添加标签功能导入数据
部署经过训练的处理器版本后,您可以在导入新文档时使用自动加标签功能来节省加标签的时间。
使用处理器
您已成功创建并训练了一个自定义拆分器处理器。
您可以像管理任何其他处理器版本一样管理自定义训练的处理器版本。如需了解详情,请参阅管理处理器版本。
部署后,您可以向自定义处理器发送处理请求,并且响应的处理方式可以与其他拆分器处理器相同。
清理
为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。
为避免产生不必要的 Google Cloud 费用,请使用Google Cloud console 删除您不需要的处理器和项目。
如果您为了解 Document AI 创建了一个新项目,但现在不再需要该项目,请删除项目。
如果您使用的是现有 Google Cloud 项目,请删除您创建的资源,以避免您的账号产生费用: