生成 AI を利用したカスタム エクストラクタ
生成 AI のトレーニングと抽出により、次のことが可能になります。
- ゼロショット テクノロジーと少数ショット テクノロジーを使用して、基盤モデルを使用してトレーニング データをほとんどまたはまったく使用せずに、高性能のモデルを取得します。
- トレーニング データを追加するにつれて、微調整を使用して精度をさらに高めることができます。
生成 AI のトレーニング方法
選択するトレーニング方法は、利用可能なドキュメントの量と、モデルのトレーニングに費やせる労力によって異なります。生成 AI モデルをトレーニングする方法は 3 つあります。
トレーニング方法 | ゼロショット | 少数ショット | ファインチューニング |
---|---|---|---|
精度 | 中 | 中程度 | 高 |
作業量 | 低 | 低 | 中 |
推奨されるトレーニング ドキュメントの数 | 0 | 5 ~ 10 | 10 ~ 50 人以上 |
カスタム エクストラクタ モデルのバージョン
カスタム抽出ツールで使用できるモデルは次のとおりです。モデル バージョンを変更するには、プロセッサ バージョンを管理するをご覧ください。
バージョン 1.0 と 1.3 は信頼スコアをサポートしていますが、バージョン 1.1、1.2、1.4 はサポートしていません。
モデル バージョン | 説明 | Stable | 米国/EU での ML 処理 | 米国/EU のファインチューニング | リリース日 |
---|---|---|---|---|---|
pretrained-foundation-model-v1.0-2023-08-22 |
専用のビジョンモデルと基盤モデルを活用し、ドキュメントのユースケースに特化した本番環境対応の候補モデル。 |
○ | いいえ | 米国のみ(一般提供) | 2024 年 1 月 9 日 |
pretrained-foundation-model-v1.1-2024-03-12 |
Gemini 1.0 Pro LLM と、専門の言語モデルやビジョン モデルなどの新しく開発されたテクノロジーを活用したリリース候補版。 このバージョン以降には、チェックボックスの検出などの高度な OCR 機能が含まれています。トークン数の上限を引き上げた場合や、新しいモデルをテストする場合におすすめします。 |
いいえ | ○ | 米国、EU(プレビュー) | 2024 年 5 月 3 日 |
pretrained-foundation-model-v1.2-2024-05-10 |
Gemini 1.5 Pro LLM と、専用の言語モデルや画像モデルなどの新しく開発されたテクノロジーを活用した本番環境対応の候補。 | ○ | ○ | 米国、EU(プレビュー) | 2024 年 5 月 27 日 |
pretrained-foundation-model-v1.3-2024-08-31 |
Gemini 1.5 Flash LLM を搭載した本番環境対応の候補。レイテンシを最小限に抑えたい方におすすめです。 | ○ | ○ | 米国、EU(プレビュー) | 2024 年 8 月 23 日 |
pretrained-foundation-model-v1.4-2025-02-05 |
Gemini 2.0 Flash LLM を搭載したリリース候補版。オンライン プロセス リクエストに対して、1 分あたり最大 120 ページの割り当てをサポートします。また、チェックボックスの検出などの高度な OCR 機能も含まれています。新しいモデルを試す場合におすすめです。 | いいえ | ○ | いいえ | 2025 年 2 月 5 日 |
プロジェクトのプロセッサ バージョンを変更するには、プロセッサ バージョンの管理をご覧ください。
開始する前に
まだ有効にしていない場合は、請求と Document AI API を有効にします。
生成 AI モデルを構築して評価する
プロセッサを作成し、ベスト プラクティスに沿って抽出するフィールドを定義します。これは、抽出の品質に影響するため重要です。
- [Workbench] > [カスタム抽出ツール] > [プロセッサを作成] > [名前を割り当てる] に移動します。
- [使ってみる] > [新しいフィールドを作成] に移動します。
ドキュメントのインポート
- 自動ラベル付けを使用してドキュメントをインポートし、トレーニング セットとテストセットにドキュメントを割り当てます。
- ゼロショットの場合は、スキーマのみが必要です。モデルの精度を評価するには、テストセットのみが必要です。
- 少数ショットの場合は、5 つのトレーニング ドキュメントをおすすめします。
- 必要なテストドキュメントの数はユースケースによって異なります。一般的に、テストドキュメントが多いほど効果的です。
- ドキュメントのラベルを確認または編集します。
モデルをトレーニングします。
- [ビルド]、[新しいバージョンを作成] の順に選択します。
- 名前を入力して [作成] を選択します。
評価:
- [評価とテスト] に移動し、トレーニングしたバージョンを選択して、[完全な評価を表示] を選択します。
- ドキュメント全体と各フィールドの F1、精度、再現率などの指標が表示されます。
- パフォーマンスが本番環境の目標を満たしているかどうかを判断します。満たしていない場合は、トレーニング セットとテストセットを再評価します。
新しいバージョンをデフォルトとして設定します。
- [バージョンの管理] に移動します。
- 選択してオプションを開き、[デフォルトとして設定] を選択します。
モデルがデプロイされました。このプロセッサに送信されたドキュメントは、カスタム バージョンを使用します。モデルのパフォーマンスを評価して、さらにトレーニングが必要かどうかを確認できます。
評価の参照
評価エンジンは、完全一致とファジー マッチの両方を行うことができます。完全一致の場合、抽出された値は正解ラベルと完全に一致している必要があります。一致しない場合、ミスとしてカウントされます。
大文字と小文字の違いなど、わずかな違いがあるファジー マッチ抽出結果も、一致としてカウントされます。この設定は [評価] 画面で変更できます。
ファインチューニング
ファインチューニングでは、トレーニングに数百または数千のドキュメントを使用します。
プロセッサを作成し、ベスト プラクティスに沿って抽出するフィールドを定義します。これは、抽出の品質に影響するため重要です。
自動ラベル付けを使用してドキュメントをインポートし、トレーニング セットとテストセットにドキュメントを割り当てます。
ドキュメントのラベルを確認または編集します。
モデルをトレーニングする。
- [Build] タブを選択し、[Create New Version] を選択します。
提供されているデフォルトのトレーニング パラメータまたは値を試します。結果に満足できない場合は、次の高度なオプションを試してください。
トレーニング ステップ(100 ~ 400): チューニング中にデータのバッチで重みが最適化される頻度を制御します。
- 値が低すぎると、収束前にトレーニングが終了するリスク(過小適合)があります。
- 値が高すぎると、トレーニング中にモデルが同じデータバッチを複数回参照し、過学習につながる可能性があります。
- ステップ数が少ないほど、トレーニング時間が短縮されます。テンプレートの差異が少ないドキュメントではカウントを大きくし、差異が大きいドキュメントではカウントを小さくします。
学習率乗数(0.1 ~ 10): トレーニング データでモデル パラメータが最適化される速度を制御します。これは、各トレーニング ステップのサイズにほぼ相当します。
- 低い率は、トレーニングの各ステップでモデル重みに小さな変化があることを意味します。低すぎると、モデルが安定した解に収束しない可能性があります。
- レートが高いほど変化が大きくなります。レートが高すぎると、モデルが最適解を飛び越えて、最適解に収束しない可能性があります。
- トレーニング時間は、学習率の選択に影響されません。
名前を指定し、必要なベースプロセッサ バージョンを選択して、[作成] を選択します。
評価: [評価とテスト] に移動し、トレーニングしたバージョンを選択して [評価全体を表示] を選択します。
- ドキュメント全体と各フィールドの f1、精度、再現率などの指標が表示されます。
- パフォーマンスが本番環境の目標を満たしているかどうかを判断します。満たしていない場合は、追加のトレーニング資料が必要になることがあります。
新しいバージョンをデフォルトとして設定します。
- [バージョンの管理] に移動します。
- 選択してオプションを開き、[デフォルトとして設定] を選択します。
モデルがデプロイされ、このプロセッサに送信されるドキュメントでカスタム バージョンが使用されるようになりました。モデルのパフォーマンスを評価して、さらにトレーニングが必要かどうかを確認する。
基盤モデルを使用した自動ラベル付け
基盤モデルは、さまざまなドキュメント タイプのフィールドを正確に抽出できますが、追加のトレーニング データを提供して、特定のドキュメント構造のモデルの精度を高めることもできます。
Document AI は、定義したラベル名と以前のアノテーションを使用して、自動ラベル付けで素早く簡単にドキュメントを大規模にラベル付けすることができます。
- カスタム プロセッサを作成したら、[使ってみる] タブに移動します。
- [新しいフィールド] を選択します。
ラベルにわかりやすく、区別できる名前を付けます。これにより、基盤モデルの精度とパフォーマンスが向上します。
抽出の精度とパフォーマンスを高めるために、検出するエンティティの種類の説明(各エンティティのコンテキスト、分析情報、事前知識の追加など)を追加します。
[Build] タブに移動し、[Import Documents] を選択します。
ドキュメントのパスと、ドキュメントをインポートするセットを選択します。自動ラベル付けオプションをオンにして、基盤モデルを選択します。
[ビルド] タブで、[データセットの管理] を選択します。
インポートしたドキュメントが表示されたら、いずれかを選択します。
モデルからの予測が紫色でハイライト表示されます。
- モデルによって予測された各ラベルを確認し、正しいことを確認します。
フィールドが不足している場合は、それらも追加します。
ドキュメントを確認したら、[ラベル付きとしてマーク] を選択します。これで、ドキュメントをモデルで使用できるようになりました。
ドキュメントがテストセットまたはトレーニング セットに含まれていることを確認します。
3 レベルのネスト
カスタム エクストラクタで、ネストのレベルが 3 つになりました。この機能により、複雑なテーブルの抽出が改善されます。
モデルタイプは、次の API 呼び出しを使用して確認できます。
これらのレスポンスは ProcessorVersion
で、v1beta3 プレビューでは modelType
フィールドが含まれています。
手順と例
このサンプルを使用します。
[使ってみる] を選択し、フィールドを作成します。
- 最上位を作成します。
- このサンプルでは、
officer_appointments
を使用しています。 - [これは親ラベルである] を選択します。
- [発生] で
Optional multiple
を選択します。
[子フィールドを追加] を選択します。2 番目のレベルのラベルを作成できます。
- このレベルラベルに
officer
を作成します。 - [これは親ラベルである] を選択します。
- [発生] で
Optional multiple
を選択します。
- このレベルラベルに
2 番目のレベルの
officer
で [子フィールドを追加] を選択します。3 番目のネストレベルの子ラベルを作成します。スキーマが設定されている場合は、自動ラベル付けを使用して、3 レベルのネストされたドキュメントから予測を取得できます。
データセットの構成
プロセッサ バージョンのトレーニング、アップトレーニング、評価を行うには、ドキュメント データセットが必要です。Document AI プロセッサは、人間と同じように例から学習します。データセットは、パフォーマンスの観点からプロセッサの安定性を高めます。トレーニング データセット
モデルとその精度を改善するには、ドキュメントでデータセットをトレーニングします。このモデルは、グラウンド トゥルースを含むドキュメントで構成されています。- ファインチューニングでは、バージョン
pretrained-foundation-model-v1.0-2023-08-22
の新しいモデルをトレーニングするには 10 個以上のドキュメント、バージョンpretrained-foundation-model-v1.1-2024-03-12
の場合は 16 個以上のドキュメント、pretrained-foundation-model-v1.2-2024-05-10
とpretrained-foundation-model-v1.3-2024-08-31
の場合は 1 個のドキュメントが必要です。 - 少数ショットの場合は、5 つのドキュメントを推奨します。
- ゼロショットの場合は、スキーマのみが必要です。
テスト データセット
テストデータセットは、モデルが F1 スコア(精度)の生成に使用するものです。グラウンド トゥルースを含むドキュメントで構成されます。モデルが正しい頻度を確認するには、グラウンド トゥルースを使用して、モデルの予測(モデルから抽出されたフィールド)と正解を比較します。テストデータセットには、バージョンpretrained-foundation-model-v1.0-2023-08-22
のファインチューニング用に 10 個以上、バージョン pretrained-foundation-model-v1.1-2024-03-12
用に 16 個以上、pretrained-foundation-model-v1.2-2024-05-10
と pretrained-foundation-model-v1.3-2024-08-31
用に 1 個以上のドキュメントが必要です。
プロパティの説明を含むカスタム エクストラクタ
プロパティの説明を使用すると、ラベル付きフィールドの特徴を記述してモデルをトレーニングできます。各エンティティに追加のコンテキストと分析情報を提供できます。これにより、指定した説明に一致するフィールドを照合してモデルをトレーニングし、抽出精度を向上させることができます。宿泊施設の説明は、親エンティティと子エンティティの両方に指定できます。
プロパティの説明の良い例としては、プロパティ値の位置情報やテキスト パターンなどがあります。これらは、ドキュメント内で混乱の原因となる可能性のあるものを明確にするために役立ちます。明確で正確なプロパティの説明により、特定のドキュメント構造やコンテンツの違いに関係なく、より信頼性が高く一貫した抽出を保証するルールでモデルをガイドします。
プロセッサのドキュメント スキーマを更新する
プロパティの説明を設定する方法については、ドキュメント スキーマを更新するをご覧ください。
プロパティの説明を含む処理リクエストを送信する
ドキュメント スキーマに説明がすでに設定されている場合は、処理リクエストを送信するの手順に沿って処理リクエストを送信できます。
プロパティの説明を使用してプロセッサを微調整する
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: プロセッサのロケーション(例:
us
- 米国eu
- 欧州連合
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- PROCESSOR_ID: カスタム プロセッサの ID。
- DISPLAY_NAME: プロセッサの表示名。
- PRETRAINED_PROCESSOR_VERSION: プロセッサのバージョン ID。詳細については、プロセッサ バージョンを選択するをご覧ください。例:
pretrained-TYPE-vX.X-YYYY-MM-DD
stable
rc
- TRAIN_STEPS: モデルのファインチューニングのトレーニング ステップ。
- LEARN_RATE_MULTIPLIER: モデルのファインチューニングの学習率乗数。
- DOCUMENT_SCHEMA: プロセッサのスキーマ。DocumentSchema の表現をご覧ください。
HTTP メソッドと URL:
POST https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process
リクエストの本文(JSON):
{ "rawDocument": { "parent": "projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID", "processor_version": { "name": "projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/DISPLAY_NAME", "display_name": "DISPLAY_NAME", "model_type": "MODEL_TYPE_GENERATIVE", }, "base_processor_version": "projects/PROJECT_ID/locations/us/processors/PROCESSOR_ID/processorVersions/PRETRAINED_PROCESSOR_VERSION", "foundation_model_tuning_options": { "train_steps": TRAIN_STEPS, "learning_rate_multiplier": LEARN_RATE_MULTIPLIER, } "document_schema": DOCUMENT_SCHEMA } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process" | Select-Object -Expand Content