训练和评估

借助 Document AI,您可以使用自己的训练数据训练新的处理器版本,并根据自己的测试数据评估处理器版本的质量。

如果您想使用自定义处理器,这会非常有用。有适用于您的文档类型的 Document AI 处理器,但您可以对其自定义版本进行增量训练,以满足您的需求。

训练和评估通常会同时进行,以迭代出高质量且可用的处理器版本。

Document AI

借助 Document AI,您可以构建自己的自定义提取器,从特定类型的文档中提取实体,例如菜单中的项或简历中的姓名和联系信息。

与其他处理器不同,自定义处理器不附带任何预训练的处理器版本,因此在您从头训练一个版本之前,无法处理任何文档。

如需开始使用 Document AI,请参阅构建自己的自定义处理器

增量训练处理器

您可以追加训练新版处理器,以提高数据准确性、从文档中提取其他自定义字段,以及添加对新语言的支持。

升级训练的工作原理是将迁移学习应用于 Google 预训练的处理器版本,与从头开始训练相比,通常需要的数据更少。

如需开始使用,请参阅对预训练处理器进行增量训练

支持的处理器

并非所有专用处理器都支持升级训练。以下是支持升级培训的处理器。

数据注意事项和建议

数据的质量和数量决定了训练、再训练和评估的质量。

获取一组具有代表性的真实文档并提供足够数量的高质量标签,通常是该流程中最耗时且最耗资源的部分。

文档数量

如果您的文档格式都很相似(例如,变化极小的固定表单),则需要的文档数量就越少,准确性就越高。差异越大,需要提供的文件就越多。

下图大致估算了自定义文档提取器需要处理多少文档才能获得特定质量得分。

变化较小 变化较大
processor-training-and-evaluation-overview-1 processor-training-and-evaluation-overview-2

为数据加标签

考虑为文档添加标签的选项,并确保您有足够的资源来为数据集中的文档添加注释。

训练模型

自定义提取器处理程序可以使用不同的模型类型,具体取决于特定用例和可用的训练数据。

  • 自定义模型:使用标记的训练数据的模型。
    • 基于模板:布局固定的文档。
    • 基于模型:布局存在一定差异的文档。
  • 生成式 AI 模型:基于预训练的基础模型,只需最少的额外训练。

下表说明了哪些用例与每种模型类型相对应。

自定义模型 生成式 AI
基于模板 基于模型
布局变体 低到中
自由形式文本的数量(例如,合同中的段落)
所需的训练数据量
使用有限训练数据时的准确性 较高 较低 较高

不妨了解如何使用房源说明微调处理器

何时使用其他处理器

在以下情况下,您可能需要考虑 Document AI Document AI Workbench 以外的选项,或调整工作流。

  • Document AI Workbench 不支持某些基于文本的输入格式(例如 .txt、.html、.docx、.md 等)。考虑使用 Google Cloud中的其他预构建或自定义语言处理产品和服务,例如 Cloud Natural Language API
  • 自定义文档提取器架构最多支持 150 个实体标签。如果您的业务逻辑要求架构定义中包含超过 150 个实体,请考虑训练多个处理器,每个处理器都定位到实体的一部分。

如何训练处理器

假设您已创建支持训练或增量训练的处理器,并为数据集添加了标签,则可以从头开始训练新的处理器版本。或者,您也可以基于现有处理器版本增量训练新的处理器版本。

模块序列处理器版本

网页界面

  1. 在 Google Cloud 控制台中,前往处理器的训练标签页。

    前往“处理器”库

  2. 点击修改架构以打开管理标签页面。验证处理器的标签。

    训练时启用的标签决定了新版处理器会提取哪些实体。如果架构中某个标签处于非活动状态,则处理器版本不会提取该标签,即使文档已标记也是如此。

  3. 训练标签页上,点击查看标签统计信息,然后验证测试集和训练集。自动加标签未加标签未分配的文档将从训练和评估中排除。

  4. 点击训练新版本

    版本名称用于定义 processorVersionname 字段。

    processor-training-and-evaluation-overview-3

  5. 点击开始训练,然后等待系统训练和评估新的处理器版本。

    您可以在管理版本标签页中监控训练进度:

    processor-training-and-evaluation-overview-4

  6. 点击评估和测试标签页,了解新处理器版本在测试集上的表现。如需了解详情,请参阅评估处理器版本

Python

如需了解详情,请参阅 Document AI Python API 参考文档

如需向 Document AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证


from typing import Optional

from google.api_core.client_options import ClientOptions
from google.cloud import documentai  # type: ignore

# TODO(developer): Uncomment these variables before running the sample.
# project_id = 'YOUR_PROJECT_ID'
# location = 'YOUR_PROCESSOR_LOCATION' # Format is 'us' or 'eu'
# processor_id = 'YOUR_PROCESSOR_ID'
# processor_version_display_name = 'new-processor-version'
# train_data_uri = 'gs://bucket/directory/' # (Optional)
# test_data_uri = 'gs://bucket/directory/' # (Optional)


def train_processor_version_sample(
    project_id: str,
    location: str,
    processor_id: str,
    processor_version_display_name: str,
    train_data_uri: Optional[str] = None,
    test_data_uri: Optional[str] = None,
) -> None:
    # You must set the api_endpoint if you use a location other than 'us', e.g.:
    opts = ClientOptions(api_endpoint=f"{location}-documentai.googleapis.com")

    client = documentai.DocumentProcessorServiceClient(client_options=opts)

    # The full resource name of the processor
    # e.g. `projects/{project_id}/locations/{location}/processors/{processor_id}
    parent = client.processor_path(project_id, location, processor_id)

    processor_version = documentai.ProcessorVersion(
        display_name=processor_version_display_name
    )

    # If train/test data is not supplied, the default sets in the Cloud Console will be used
    input_data = documentai.TrainProcessorVersionRequest.InputData(
        training_documents=documentai.BatchDocumentsInputConfig(
            gcs_prefix=documentai.GcsPrefix(gcs_uri_prefix=train_data_uri)
        ),
        test_documents=documentai.BatchDocumentsInputConfig(
            gcs_prefix=documentai.GcsPrefix(gcs_uri_prefix=test_data_uri)
        ),
    )

    request = documentai.TrainProcessorVersionRequest(
        parent=parent, processor_version=processor_version, input_data=input_data
    )

    operation = client.train_processor_version(request=request)
    # Print operation details
    print(operation.operation.name)
    # Wait for operation to complete
    response = documentai.TrainProcessorVersionResponse(operation.result())

    metadata = documentai.TrainProcessorVersionMetadata(operation.metadata)

    print(f"New Processor Version:{response.processor_version}")
    print(f"Training Set Validation: {metadata.training_dataset_validation}")
    print(f"Test Set Validation: {metadata.test_dataset_validation}")

部署和使用处理器版本

您可以像管理任何其他处理器版本一样部署和管理自定义处理器版本。如需了解详情,请参阅管理处理器版本

部署后,您可以向自定义处理器发送处理请求

停用或删除处理器

如果您不想再使用某个处理器,可以将其停用或删除。如果您停用了处理器,则可以重新启用它。处理器一经删除,便无法恢复。

  1. 在左侧的 Document AI 面板中,点击我的处理器

  2. 点击处理器名称右侧的垂直点。点击停用处理器删除处理器

如需了解详情,请参阅管理处理器版本

训练数据的加密

Document AI 训练数据会保存在 Cloud Storage 中,并可根据需要使用客户管理的加密密钥进行加密。

删除训练数据

Document AI 训练作业完成后,存储在 Cloud Storage 中的所有训练数据都会在两天的保留期限后过期。后续的数据删除活动将遵循 Google Cloud上的数据删除中所述的流程。

价格

训练或提升训练无需付费。您需要支付托管和预测费用。 如需了解详情,请参阅 Document AI 价格