训练和评估

借助 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 Document AI Workbench 不支持某些基于文本的输入格式(.txt、.html、.docx、.md 等)。请考虑中的其他预构建或自定义 语言处理产品 Google Cloud,例如 Cloud Natural Language API
  • 自定义文档提取器架构最多支持 150 个实体标签。如果您的业务逻辑需要在架构定义中使用超过 150 个实体,请考虑训练多个处理器,每个处理器都以实体子集为目标。

如何训练处理器

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

训练处理器版本

网页界面

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

    前往处理器库

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

    在训练时 启用的 标签决定了新处理器版本提取的实体。如果标签在架构中处于非活跃状态,即使文档已加标签,处理器版本也不会提取该标签。

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

  4. 点击训练新版本

    版本名称 定义了 name 字段的 processorVersion

    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. 点击处理器名称右侧的垂直点。点击停用处理器删除处理器

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

升级经过微调的处理器版本

您可以将经过微调的自定义提取器 处理器版本升级到较新的基础版本。较新的基础版本的配置将基于旧版本。 它将使用原始版本中的处理器训练数据。

  1. 在 Google Google Cloud 控制台中,前往处理器的部署和使用标签页, 然后选中要升级的受支持处理器版本的复选框。新处理器版本的配置将基于此版本。

    processor-training-and-evaluation-overview-5

  2. 选择已启用的升级 。输入新处理器版本的名称和基础版本。

    processor-training-and-evaluation-overview-6

  3. 点击升级 ,然后等待训练新的处理器版本。

使用 API 进行升级

您还可以使用 API 调用将经过微调的 自定义 提取器 处理器版本升级到较新的基础 版本。

curl

此示例展示了如何使用 FoundationModelTuningOptions 字段 在 TrainingMethod 中迁移现有的经过微调的 processor

在使用任何请求数据之前,请使用 Document AI Google Cloud 控制台 概览 标签页中处理器的信息进行以下替换。

  • LOCATION:处理器的 位置
  • PROJECT_ID:您的项目 ID。
  • PROCESSOR_ID:您的处理器 ID。
  • DISPLAY_NAME:您的处理器 新显示名称。
  • BASE_PROCESSOR_VERSION: 当前模型的处理器版本的名称
  • PROCESSOR_VERSION:要升级的当前处理器的 ID

    curl -X POST -v -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://LOCATION-documentai.googleapis.com/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions:train" \
      -d '{
      "processor_version": {
        "display_name": "DISPLAY_NAME"
      },
      "base_processor_version": "projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/BASE_PROCESSOR_VERSION",
      "foundation_model_tuning_options": {
      "train_steps": 10,
      "learning_rate_multiplier": 1,
      "previous_fine_tuned_processor_version_name": "projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION",
      }
    }'

训练数据加密

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

删除训练数据

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

价格

训练或增量训练不收取任何费用。您需要为托管和预测付费。 如需了解详情,请参阅 Document AI 价格