カスタム モデルのトレーニングと使用
事前構築済みモデルが特定のドキュメントの種類に対応していない場合は、独自のフォームからデータを抽出するカスタム モデルをトレーニングできます。 Azure Document Intelligence では、教師あり機械学習がサポートされています。ここでは、抽出するフィールドでサンプル ドキュメントにラベルを付け、新しいドキュメント内のこれらのフィールドを認識するようにモデルをトレーニングします。
カスタム モデルの種類
Azure ドキュメント インテリジェンスには、次の 2 種類のカスタム抽出モデルと分類モデルが用意されています。
カスタム テンプレート モデル
カスタム テンプレート モデルは、ラベル付きデータを抽出するために一貫したビジュアル テンプレートに依存します。 これらは、アンケート、アプリケーション、標準の政府機関向けフォームなど、あるドキュメント インスタンスから次のドキュメント インスタンスにレイアウトが静的である構造化フォームに最適です。
テンプレート モデルでは、ラベル付きのキーと値のペア、選択マーク、テーブル、領域、署名が正確に抽出されます。 トレーニングには数分しかかかりません。100 を超える言語がサポートされています。 テンプレート モデルはトレーニングが速く、実行にコスト効率が高いため、ドキュメントの視覚的なレイアウトが統一されている場合の出発点として適しています。
カスタム ニューラル モデル
カスタム ニューラル モデルではディープ ラーニングが使用され、ラベル付けされたデータで微調整されます。 レイアウト機能と言語機能を組み合わせて、構造化ドキュメント、半構造化ドキュメント、非構造化ドキュメントからフィールドを抽出します。 ニューラル モデルのサポート:
- 重複するフィールド
- 署名の検出
- テーブル、行、およびセル レベルの信頼度
ニューラル モデルは、テンプレート モデルよりも高い精度を提供します。特に、インスタンス間でレイアウトが異なる半構造化ドキュメントまたは非構造化ドキュメントの場合です。 ただし、トレーニングに時間がかかり、より多くのリソースを消費します。
テンプレート モデルとニューラル モデルを選択する
使用するカスタム モデルの種類を決定するときは、次のトレードオフを検討してください。
| 要因 | カスタム テンプレート | カスタム ニューラル |
|---|---|---|
| 最適な用途 | 一貫性のある視覚的レイアウトを持つ構造化フォーム | レイアウトが異なる半構造化ドキュメントまたは非構造化ドキュメント |
| トレーニング時間 | 議事録 | 長い (データセットのサイズによって異なります) |
| トレーニング コスト | 下 | より高い |
| 精度 | 固定レイアウトフォームの場合は高い。レイアウトが変化すると減少する | 全体的に高い (特に形式のバリエーションがあるドキュメントの場合) |
| 言語サポート | 100 以上の言語 | 言語の数を減らします (現在のサポートについては ドキュメント を参照してください) |
| 機能のサポート | キーと値のペア、選択マーク、テーブル、領域、署名 | 重複するフィールド、署名の検出、テーブル/行/セルの信頼度 |
ヒント
フォームに一貫したビジュアル レイアウトがある場合は、カスタム テンプレート モデルから始めます。 トレーニングの時間が短縮され、コストが削減されます。 精度が不十分な場合、またはドキュメントの形式が異なる場合は、カスタム ニューラル モデルに切り替えます。
カスタム分類子
カスタム分類モデルは、抽出モデルを呼び出す前にドキュメントの種類を識別します。 分類子を使用すると、複数のフォームの種類を処理するときに、受信ドキュメントを適切な抽出モデルにルーティングできます。
カスタム モデルをトレーニングする
カスタム抽出モデルをトレーニングするには:
- レイアウトとラベル フィールド情報を含む JSON ファイルと共に、Azure BLOB コンテナーにサンプル フォームを格納します。
- 各サンプル フォームの
ocr.jsonファイル (ドキュメント分析関数を使用して生成されます)。 - 抽出するフィールドを記述する 1 つの
fields.jsonファイル。 - 各サンプル フォームの
labels.jsonファイル。フィールドをフォーム内の場所にマッピングします。
- 各サンプル フォームの
- コンテナーの Shared Access Signature (SAS) URL を生成します。
- ビルド モデル REST API 関数または同等の SDK メソッドを使用します。
- トレーニング済みのモデル ID を取得するには、 Get model REST API 関数を使用します。
「ドキュメント インテリジェンス スタジオの使用」ユニットで説明されているように、Document Intelligence Studio を 使用して カスタム モデルを視覚的にトレーニングすることもできます。
ヒント
トレーニングには、少なくとも 5 ~ 6 個のサンプル フォームを使用します。 より大規模で多様なデータセットを使用すると、より正確なモデルが生成されます。
カスタム モデルを使用する
カスタム モデルを使用してフォーム データを抽出するには、モデル ID で Analyze ドキュメント 関数を呼び出します。 サポートされている SDK または REST API を使用できます。
C#
string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
AzureKeyCredential credential = new AzureKeyCredential(apiKey);
DocumentAnalysisClient client = new DocumentAnalysisClient(new Uri(endpoint), credential);
string modelId = "<modelId>";
Uri fileUri = new Uri("<fileUri>");
AnalyzeDocumentOperation operation = await client.AnalyzeDocumentFromUriAsync(WaitUntil.Completed, modelId, fileUri);
AnalyzeResult result = operation.Value;
Python
endpoint = "YOUR_DOC_INTELLIGENCE_ENDPOINT"
key = "YOUR_DOC_INTELLIGENCE_KEY"
model_id = "YOUR_CUSTOM_BUILT_MODEL_ID"
formUrl = "YOUR_DOCUMENT"
document_analysis_client = DocumentAnalysisClient(
endpoint=endpoint, credential=AzureKeyCredential(key)
)
task = document_analysis_client.begin_analyze_document_from_url(model_id, formUrl)
result = task.result()
成功した応答には、抽出されたコンテンツを含む analyzeResult オブジェクトと、ドキュメントに関する情報を含むページの配列が含まれます。
作成済みモデル
複数のカスタム モデルを 1 つの構成済み モデルに結合できます。 構成済みモデルにドキュメントを送信すると、ドキュメント インテリジェンスによって分類され、最も適切なコンポーネント モデルが決定され、そのモデルからの抽出結果が返されます。 この方法は、それぞれが独自の抽出モデルを必要とする複数のフォーム型を処理する場合に便利です。