トレーニングして評価する

Document AI では、独自のトレーニング データを使用して新しいプロセッサ バージョンをトレーニングし、独自のテストデータと比較してプロセッサ バージョンの品質を評価できます。

これは、カスタム プロセッサを使用する場合に便利です。ドキュメント タイプに適した Document AI プロセッサがありますが、ニーズに合わせてカスタム バージョンをアップトレーニングできます。

通常、トレーニングと評価は連携して行われ、高品質で使用可能なプロセッサ バージョンに向けて反復処理されます。

Document AI

Document AI では、独自のカスタム エクストラクタを構築できます。これは、メニューのアイテムや履歴書の名前や連絡先情報など、特定のタイプのドキュメントからエンティティを抽出します。

他のプロセッサとは異なり、カスタム プロセッサには事前トレーニング済みバージョンのプロセッサが備わっていないため、バージョンにゼロからトレーニングを行った後でなければドキュメントを処理できません。

Document AI の使用を開始するには、独自のカスタム プロセッサを作成するをご覧ください。

プロセッサのアップトレーニング

新しいプロセッサ バージョンをアップトレーニングして、データの精度を高めたり、ドキュメントから追加のカスタム フィールドを抽出したり、新しい言語のサポートを追加したりできます。

アップトレーニングは、Google の事前トレーニング済みプロセッサ バージョンに転移学習を適用することで機能し、通常はゼロからトレーニングする場合よりも少ないデータが必要です。

使用を開始するには、事前トレーニング済みプロセッサをアップトレーニングするをご覧ください。

サポートされるプロセッサ

すべての専用プロセッサがアップトレーニングをサポートしているわけではありません。アップトレーニングをサポートするプロセッサは次のとおりです。

データに関する考慮事項と推奨事項

トレーニング、アップトレーニング、評価の品質は、データの品質と量によって決まります。

多くの場合、代表的な実際のドキュメントのセットを取得し、十分な高品質のラベルを提供する作業が、プロセスの中で最も時間とリソースを消費する部分です。

ドキュメント数

ドキュメントの形式がすべて類似している場合(変動が非常に少ない固定フォームなど)、精度を達成するために必要なドキュメントの数は少なくなります。バリエーションが多いほど、必要な書類が多くなります。

次のグラフは、カスタム ドキュメント エクストラクタが特定の品質スコアを達成するために必要なドキュメント数の概算を示しています。

変動が少ない 変動が大きい
processor-training-and-evaluation-overview-1 processor-training-and-evaluation-overview-2

Data Labeling

ドキュメントのラベル付けオプションを検討し、データセット内のドキュメントにアノテーションを付けるのに十分なリソースがあることを確認します。

モデルのトレーニング

カスタム抽出プロセッサは、特定のユースケースと利用可能なトレーニング データに応じて、さまざまなモデルタイプを使用できます。

  • カスタムモデル: ラベル付きトレーニング データを使用するモデル。
    • テンプレート ベース: レイアウトが固定されたドキュメント。
    • モデルベース: レイアウトが多少異なるドキュメント。
  • 生成 AI モデル: 追加のトレーニングを最小限に抑える事前トレーニング済みの基盤モデルに基づいています。

次の表に、各モデルタイプに対応するユースケースを示します。

カスタムモデル 生成 AI
テンプレートベース モデルベース
レイアウトのバリエーション なし 低~中
自由形式のテキストの量(契約書の段落など)
必要なトレーニング データの量
トレーニング データが限られている場合の精度 高い 高い

プロパティの説明を使用してプロセッサを微調整する方法を学びます。

別のプロセッサを使用する場合

Document AI Document AI Workbench 以外のオプションを検討したり、ワークフローを調整したりする必要がある場合を次に示します。

  • 特定のテキストベースの入力形式(.txt、.html、.docx、.md など)は、Document AI Document AI Workbench ではサポートされていません。 Google Cloudの他の事前構築済みまたはカスタムの言語処理サービス(Cloud Natural Language API など)を検討してください。
  • カスタム ドキュメント エクストラクタのスキーマは、最大 150 個のエンティティラベルをサポートしています。ビジネス ロジックでスキーマ定義に 150 を超えるエンティティが必要な場合は、エンティティのサブセットをターゲットとする複数のプロセッサをトレーニングすることを検討してください。

プロセッサをトレーニングする方法

トレーニングまたはアップトレーニングをサポートするプロセッサを作成し、データセットにラベルを付けたと仮定すると、新しいプロセッサ バージョンをゼロからトレーニングできます。または、既存のプロセッサ バージョンに基づいて新しいプロセッサ バージョンをアップトレーニングすることもできます。

トレイン プロセッサ バージョン

ウェブ UI

  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 に保存されているすべてのトレーニング データは、2 日間の保持期間後に期限切れになります。その後のデータ削除アクティビティは、 Google Cloudのデータ削除で説明されているプロセスに従います。

料金

トレーニングやアップトレーニングの費用はかかりません。ホスティングと予測に対して料金が発生します。詳細については、Document AI の料金をご覧ください。