カスタム スプリッター

カスタム スプリッターは、各論理ドキュメントを識別することで、複合ドキュメント(複数のクラスで構成されるドキュメント)を複数の単一クラス ドキュメントに分割する目的で使用するために設計されています。たとえば、住宅ローン パッケージには、申請書、収入証明書、写真付き身分証明書など、複数のクラスが含まれています。カスタム スプリッター プロセッサを使用するには、お客様独自のドキュメントとカスタムクラスを使用してゼロからトレーニングします。

スプリッターの説明と使用方法

お客様のドキュメントに特化し、お使いのデータを使用してトレーニングと評価を行うカスタム スプリッターを作成します。このプロセッサは、一連のユーザー定義のクラスからドキュメントのクラスを識別します。このトレーニング済みプロセッサをプロダクション ドキュメントに使用できます。通常は、異なるタイプの論理ドキュメントで構成されるファイルに対してカスタム スプリッター ツールを使用し、それぞれのクラス ID を使用して適切な抽出プロセッサにドキュメントを渡してエンティティを抽出します。

ML モデルは完璧ではなく、ある程度はエラーが発生します。また、通常、分割時のエラーは大きな問題になります(間違った 2 つのドキュメントを作成し、抽出エラーの原因になります)。そのため、分割予測後、実際のファイル分割前に、必ず人間による確認ステップを実施することをおすすめします。ビジネス要件によっては、常に人間によるレビューに代わる方法もあります。

  • 予測の信頼スコアを使用して、人間によるレビューを行わない(十分に高い場合)かどうかを決定します。この信頼スコアのしきい値は、ある信頼スコアのエラー率に関する履歴データに基づいて決定する必要があります。これは、ビジネス プロセスにおけるエラーの許容範囲と、人間によるレビューを省略する要件に基づくビジネス上の決定であるべきです。
  • ユースケースによっては、分割されたドキュメントを、予測されたクラスに応じて適切な抽出ツールに直接転送できます。次に、抽出が不完全であるか、信頼スコアが低い場合は、分割ドキュメントを分離し、元の複合ドキュメントをトリガーして分割の決定をレビューします。これは、ワークフローの要件がかなり複雑になります。

Google Cloud コンソールでカスタム スプリッターを作成する

このクイックスタート ガイドでは、Document AI で、調達ドキュメントを分割して分類するカスタム スプリッターを作成し、トレーニングする方法について説明します。ドキュメントの準備はほとんど完了しているため、カスタム スプリッターの作成に集中できます。

カスタム スプリッターを作成して使用する一般的なワークフローは次のとおりです。

  1. Document AI でカスタム スプリッターを作成します。
  2. 空の Cloud Storage バケットを使用してデータセットを作成します。
  3. プロセッサ スキーマを定義して作成します(クラス)。
  4. ドキュメントをインポートします。
  5. トレーニング セットとテストセットにドキュメントを割り当てます。
  6. Document AI またはラベル付けタスクを使用して、ドキュメントに手動でアノテーションを付けます。
  7. プロセッサをトレーニングします。
  8. プロセッサを評価します。
  9. プロセッサをデプロイします。
  10. プロセッサをテストします。
  11. ドキュメントでプロセッサを使用します。

ドキュメントがクラスごとに個別のフォルダに保存されている場合は、インポート時にクラスを指定して、手順 6 をスキップできます。


このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。

ガイドを表示


始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Document AI, Cloud Storage APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Document AI, Cloud Storage APIs.

    Enable the APIs

プロセッサの作成

  1. Google Cloud コンソールの Document AI セクションで、[Workbench] ページに移動します。

    Workbench

  2. [カスタム ドキュメントスプリッター] で、[プロセッサを作成] を選択します。 custom-splitter-1

  3. [プロセッサを作成] メニューで、プロセッサの名前を入力します(例: my-custom-document-splitter)。

    custom-splitter-2

  4. 最も近いリージョンを選択します。

  5. [作成] を選択します。[プロセッサの詳細] タブが表示されます。

データセットの構成

この新しいプロセッサをトレーニングするには、分割して分類するドキュメントをプロセッサが識別できるように、トレーニング データとテストデータを含むデータセットを作成する必要があります。

このデータセットには新しい場所が必要です。これは空の Cloud Storage バケットまたはフォルダにすることも、Google 管理の(内部)ロケーションを許可することもできます。

  • Google 管理のストレージを使用する場合は、そのオプションを選択します。
  • 顧客管理の暗号鍵(CMEK)を使用するために独自のストレージを使用する場合は、[独自のストレージ ロケーションを指定] を選択し、後の手順を行います。

custom-splitter-3

データセット用の Cloud Storage バケットを作成する

  1. プロセッサの [トレーニング] タブに移動します。

  2. [データセットのロケーションを設定] を選択します。空の Cloud Storage バケットまたはフォルダを選択または作成するように求められます。

    custom-splitter-4

  3. [参照] を選択して、[フォルダを選択] を開きます。

  4. [新しいバケットを作成] アイコンをクリックし、画面の指示に沿って新しいバケットを作成します。バケットを作成すると、そのバケットの [フォルダの選択] ページが表示されます。Cloud Storage バケットの作成の詳細については、Cloud Storage バケットをご覧ください。

  5. バケットの [フォルダの選択] ページで、ダイアログの下部にある [選択] ボタンを選択します。

    custom-splitter-5

[宛先のパス] に選択したバケット名が入力されていることを確認します。[データセットを作成] を選択します。データセットの作成には、数分かかることがあります。

プロセッサ スキーマを定義する

プロセッサ スキーマは、ドキュメントをデータセットにインポートする前と後のどちらでも作成できます。スキーマには、ドキュメントにアノテーションを付けるために使用するラベルが用意されています。

  1. [トレーニング] タブで、左下の [スキーマを編集] を選択します。[ラベルの管理] ページが開きます。

  2. [ラベルを作成] を選択します。

  3. ラベルの名前を入力します。[作成] を選択します。スキーマの作成と編集の詳細な手順については、プロセッサ スキーマを定義するをご覧ください。

  4. プロセッサ スキーマ用に次のラベルをそれぞれ作成します。

    • bank_statement
    • form_1040
    • form_w2
    • form_w9
    • paystub
  5. ラベルが完成したら、[保存] を選択します。

    custom-splitter-6

ラベルなしドキュメントをデータセットにインポートする

次のステップでは、ラベルなしドキュメントをデータセットにインポートし、ラベルを付けます。別の方法として、クラスごとにフォルダに整理されたドキュメントをインポートすることをおすすめします(利用可能な場合)。

独自のプロジェクトで作業する場合は、データのラベル付けの方法を決定します。ラベル付けの方法をご確認ください。

Document AI カスタム プロセッサでは、トレーニング セットとテストセットで少なくとも 10 個のドキュメントと、各セットのラベルごとに 10 個のインスタンスが必要です。最適なパフォーマンスを得るには、各セットに 50 個以上のドキュメントと、各ラベルに 50 個のインスタンスを含めることをおすすめします。一般に、トレーニング データが多くなるほど、精度が高くなります。

  1. [トレーニング] タブで、[ドキュメントのインポート] を選択します。

    custom-splitter-7

  2. この例では、このパスを [ソースパス] に入力します。これには 1 つのドキュメント PDF が含まれています。

    cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-Unlabeled
    
  3. [ドキュメント ラベル] を [なし] に設定します。

  4. [データセット分割] プルダウンを [未割り当て] に設定します。

    このフォルダ内のドキュメントには、デフォルトでラベルが付いていないか、テストセットやトレーニング セットに割り当てられません。

  5. [インポート] を選択します。Document AI により、ドキュメントがバケットからデータセットに読み込まれます。インポート バケットの変更や、インポート完了後のバケットからの読み取りは行われません。

ドキュメントを読み込む際、必要に応じて、インポート時に設定されたトレーニングまたはテストのセットにドキュメントを割り当てたり、後で割り当てを待つこともできます。

ドキュメントまたはインポートしたドキュメントを削除するには、[トレーニング] タブでそれらのドキュメントを選択し、[削除] を選択します。

インポートするデータの準備について詳しくは、データ準備ガイドをご覧ください。

省略可: インポート時にドキュメントに一括ラベルを付ける

インポート時に特定のディレクトリにあるすべてのドキュメントにラベルを付けることで、ラベル付けにかかる時間を節約できます。トレーニング ドキュメントがクラスごとにフォルダに整理されている場合は、[ドキュメントラベル] フィールドを使用してドキュメントのクラスを指定できるため、各ドキュメントを手動でラベル付けする必要がなくなります。

custom-splitter-8

この画像では、Bank_statementsInvoice を定義済みのラベル(ドキュメント クラス)として選択できます。または、CREATE LABEL を使用して新しいクラスを定義することもできます。

  1. ドキュメントのインポート をクリックします。
  2. [ソースパス] に次のパスを入力します。このバケットには、ラベル付けされていないドキュメントが PDF 形式で含まれています。

    cloud-samples-data/documentai/Custom/Patents/PDF-CDC-BatchLabel

  3. [データ分割] リストから [自動分割] を選択します。これにより、トレーニング セットが 80%、テストセットが 20% になるようにドキュメントが自動的に分割されます。

  4. [ラベルを適用] で、[ラベルを選択] を選択します。

  5. これらのサンプル ドキュメントには [その他] を選択します。

  6. [インポート] をクリックして、ドキュメントがインポートされるのを待ちます。このページを離れて、後で戻ってくることもできます。

ドキュメントにラベルを付ける

ドキュメントにラベルを適用するプロセスをアノテーションといいます。

  1. [トレーニング] タブに戻り、[ドキュメント] を選択して [ラベル管理] コンソールを開きます。

  2. このドキュメントには、識別してラベルを付ける必要がある複数のページグループが含まれています。まず、分割ポイントを特定する必要があります。画像ビューでページ 1 とページ 2 の間にマウスを移動し、+ 記号を選択します。

    custom-splitter-9

  3. ページ番号 2345 の前に分割ポイントを作成します。

    完了すると、コンソールは次のようになります。custom-splitter-10

  4. [ドキュメントの種類] プルダウンで、各ページグループに適したラベルを選択します。

    ページ ドキュメントの種類
    1 paystub
    2 form_w9
    3 bank_statement
    4 form_w2
    5、6 form_1040

    完了すると、ラベル付きドキュメントは次のように表示されます。 custom-splitter-11

  5. ドキュメントのアノテーションが完成したら、[ラベル付きとしてマーク] を選択します。

    [トレーニング] タブの左側のパネルで、1 つのドキュメントにラベルが付けられています。

アノテーション付きドキュメントをトレーニング セットに割り当てる

このサンプル ドキュメントにラベルを付けるのが完了したので、これをトレーニング セットに割り当てることができます。

  1. [トレーニング] タブで、[すべて選択] チェックボックスをオンにします。

  2. [セットに割り当て] リストから [トレーニング] を選択します。

左側のパネルで、1 つのドキュメントがトレーニング セットに割り当てられていることがわかります。

一括のラベル付けを使用したデータのインポート

次に、ラベルなし PDF ファイルをインポートし、種類ごとに Cloud Storage フォルダに並べ替えます。一括のラベル付けでは、パスに基づいてインポート時にラベルを割り当てることで、ラベル付けの時間を節約できます。

  1. [トレーニング] タブで、[ドキュメントのインポート] を選択します。

  2. [ソースパス] に次のパスを入力します。このフォルダには、銀行の明細書の PDF が含まれています。

    cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-BatchLabel/bank-statement
    
  3. [ドキュメント ラベル] を bank_statement に設定します。

  4. [データセット分割] メニューで、[自動分割] に設定します。これにより、トレーニング セットが 80%、テストセットが 20% になるようにドキュメントが自動的に分割されます。

  5. [別のフォルダを追加] を選択して、フォルダを追加します。

  6. 次のパスとドキュメント ラベルを使用して、前述の手順を繰り返します。

    バケットのパス ドキュメント ラベル
    cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-BatchLabel/1040 form_1040
    cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-BatchLabel/w2 form_w2
    cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-BatchLabel/w9 form_w9
    cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-BatchLabel/paystub paystub

    完了すると、コンソールは次のようになります。 custom-splitter-12

  7. [インポート] を選択します。インポートには数分かかります。

インポートが終了すると、[Train] タブにドキュメントが表示されます。

事前にラベル付けされたデータをインポートする

このガイドでは、事前にラベル付けされたデータが Document 形式の JSON ファイルとして用意されています。

これは、Document AI がドキュメントの処理、人間参加型のラベル付け、データセットのエクスポート時に出力する形式と同じです。

  1. [トレーニング] タブで、[ドキュメントのインポート] を選択します。

  2. [ソースパス] に次のパスを入力します。

    cloud-samples-data/documentai/Custom/Lending-Splitter/JSON-Labeled
    
  3. [ドキュメント ラベル] を [なし] に設定します。

  4. [データセット分割] プルダウンを [自動分割] に設定します。

  5. [インポート] を選択します。

インポートが終了すると、[Train] タブにドキュメントが表示されます。

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

トレーニング データとテストデータがインポートされたので、プロセッサをトレーニングできるようになりました。トレーニングには数時間かかる場合があるため、トレーニングを開始する前に、適切なデータとラベルがプロセッサに設定されていることを確認してください。

  1. [新しいバージョンのトレーニング] を選択します。

  2. [バージョン名] フィールドに、このプロセッサ バージョンの名前(my-cds-version-1 など)を入力します。

  3. (省略可)[ラベルの統計データを表示] を選択して、ドキュメント ラベルに関する情報を確認します。これにより、対応範囲を判断できます。[閉じる] を選択してトレーニングの設定に戻ります。

    custom-splitter-13

  4. [トレーニングを開始] を選択します。ステータスは右側のパネルで確認できます。

プロセッサ バージョンをデプロイする

  1. トレーニングが完了したら、[バージョンの管理] タブに移動します。トレーニングしたバージョンの詳細を確認できます。

  2. デプロイするバージョンの右側にある [その他アイコン] を選択し、[バージョンをデプロイ] を選択します。

  3. ポップアップ ウィンドウで [デプロイ] を選択します。

    デプロイが完了するまで数分かかります。

プロセッサの評価とテストを行う

  1. デプロイが完了したら、[評価とテスト] タブに移動します。

    このページでは、ドキュメント全体の F1 スコア、ドキュメント全体の適合率と再現率、個々のラベルなどの評価指標を表示できます。評価と統計情報について詳しくは、プロセッサを評価するをご覧ください。

  2. プロセッサのバージョンを評価するために使用できるように、これまでトレーニングやテストに関与していないドキュメントをダウンロードします。独自のデータを使用している場合は、この目的のために用意されたドキュメントを使用します。

    PDF をダウンロード

  3. [テスト ドキュメントをアップロード] を選択し、ダウンロードしたドキュメントを選択します。

    [カスタム スプリッタ 分析] ページが開きます。画面の出力に、ドキュメントがどの程度適切に分割、分類されたかが表示されます。

    完了すると、コンソールは次のようになります。 custom-splitter-14

    別のテストセットまたは別のプロセッサ バージョンに対して評価を再実行することもできます。

(省略可)自動ラベル付けを使用してデータをインポートする

トレーニング済みのプロセッサ バージョンをデプロイした後、自動ラベル付けを使用すると、新しいドキュメントをインポートしたときのラベル付けの時間を短縮できます。

  1. [トレーニング] タブで、[ドキュメントのインポート] を選択します。

  2. [ソースパス] に次のパスを入力します。このフォルダには、複数のドキュメント タイプのラベルなし PDF が含まれています。

    cloud-samples-data/documentai/Custom/Lending-Splitter/PDF-CDS-AutoLabel
    
  3. [ドキュメント ラベル] を [自動ラベル付け] に設定します。

  4. [データセット分割] プルダウンを [自動分割] に設定します。

  5. [自動ラベル付け] セクションで、[バージョン] を以前にトレーニングしたバージョンに設定します。

    • 例: 2af620b2fd4d1fcf
  6. [インポート] をクリックして、ドキュメントがインポートされるのを待ちます。

  7. ラベル付きとマークしないと、トレーニングやテストに自動ラベル付きドキュメントを使用できません。[自動的にラベル付け] セクションに移動して、自動的にラベル付けされたドキュメントを表示します。

  8. 最初のドキュメントを選択して、ラベル付けのコンソールを開きます。

  9. ラベルを検証して正しいことを確認します。正しくない場合は調整します。

  10. 完了したら、[ラベル付きとしてマーク] を選択します。

  11. 自動的にラベル付けされたドキュメントごとにラベルの確認を繰り返します。

  12. [トレーニング] ページに戻り、[新しいバージョンをトレーニング] を選択して、データをトレーニングに使用します。

プロセッサを使用する

カスタム ドキュメントスプリッタープロセッサを作成して正常にトレーニングできました。

カスタム トレーニング済みのプロセッサ バージョンは、他のプロセッサ バージョンと同様に管理できます。詳細については、プロセッサ バージョンの管理をご覧ください。

デプロイ後、カスタム プロセッサに処理リクエストを送信すると、レスポンスを他のスプリッター プロセッサと同じように処理できます。

クリーンアップ

このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の手順を行います。

不要な Google Cloud 料金が発生しないようにするには、Google Cloud コンソールを使用して、不要なプロセッサやプロジェクトを削除します。

Document AI の学習用に新しいプロジェクトを作成し、そのプロジェクトが不要になった場合は、プロジェクトを削除します。

既存の Google Cloud プロジェクトを使用した場合は、作成したリソースを削除して、アカウントに課金されないようにします。

  1. Google Cloud コンソールのナビゲーション メニューで [Document AI] を選択し、[マイ プロセッサ] を選択します。

  2. 削除するプロセッサと同じ行にある [その他の操作] を選択します。

  3. [プロセッサを削除] を選択し、プロセッサ名を入力して、もう一度 [削除] を選択して確定します。

次のステップ