チェックポイント
Enable the Document AI API.
/ 20
Configure your Vertex AI Workbench instance
/ 20
Make a synchronous process document request.
/ 20
Prepare your environment for asynchronous API calls
/ 20
Make an asynchronous process document request
/ 20
Python で Document AI API を使用してドキュメントを処理する
GSP925
概要
Document AI API は、文書やメールなどの非構造化データを対象に、データを簡単に理解、分析、利用できるようにするドキュメント理解のためのソリューションです。
このラボでは、Python で Document AI API を使用して一般用のフォーム プロセッサ、ドキュメント OCR プロセッサなどのさまざまなプロセッサを作成し、その後 Python を使用して同期および非同期 API 呼び出しを行います。ラボでは Vertex AI Workbench インスタンスが自動的に作成され、これを JupyterLab ノートブックで使用して Document AI の Python クライアント モジュールを操作します。
目標
このラボでは、次の方法について学びます。
- Document AI API を有効にし、プロセッサを作成する
- Vertex AI Workbench インスタンスに Python のクライアント ライブラリをインストールする
- スキャンしたフォームのデータを Python を使って解析し、同期 API 呼び出しを行う
- スキャンしたフォームのデータを Python を使って解析し、非同期 API 呼び出しを行う
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. 一般用フォーム プロセッサを作成してテストする
このタスクでは、Document AI API を有効にし、一般用フォーム プロセッサを作成してテストします。このフォーム プロセッサでは、あらゆる種類のドキュメントを処理でき、ドキュメント内の識別可能なテキスト要素がすべて抽出されます。タイプされたテキストだけでなく手書きのテキストも処理でき、さまざまな向きのテキスト、多数の言語に対応可能です。また、フォームデータ要素の相互関係を理解するので、テキストラベルのあるフォーム フィールドの Key-Value ペアを抽出可能です。
Cloud Document AI API を有効にする
Document AI を使用するには、API を有効にする必要があります。
-
Cloud コンソールのナビゲーション メニュー()で、[API とサービス] をクリックします。
-
「Cloud Document AI API」を検索して [有効にする] ボタンをクリックし、Google Cloud プロジェクトで API を使用できるようにします。
Cloud Document AI API がすでに有効になっている場合は、[管理] ボタンが表示され、ラボの作業を進めることができます。
一般用フォーム プロセッサを作成する
Document AI の Form Parser を使用して Document AI プロセッサを作成します。
-
コンソールのナビゲーション メニュー()で、[Document AI] > [概要] をクリックします。
-
[プロセッサを確認] をクリックして、一般タイプのプロセッサの [Form Parser] を選択します。
-
プロセッサ名に「form-parser」を指定して、リージョンの一覧から [US(米国)] を選択します。
-
[作成] をクリックして、form-parser 一般用プロセッサを作成します。
プロセッサが作成されて、プロセッサの詳細ページにプロセッサの ID、ステータス、予測エンドポイントが表示されます。
- 今後のタスクで JupyterLab ノートブックの変数を更新するために必要になるので、プロセッサ ID をメモしておきます。
タスク 2. Document AI API 呼び出しを実行するよう Vertex AI Workbench インスタンスを構成する
次に、ラボの開始時に作成された Vertex AI Workbench インスタンスで実行中の JupyterLab に接続してから、今後のタスク用にこの環境を構成します。
-
Google Cloud コンソールのナビゲーション メニューで、[Vertex AI] > [ワークベンチ] をクリックします。
-
インスタンスを見つけて、[JupyterLab を開く] ボタンをクリックします。
Workbench インスタンスの JupyterLab インターフェースが新しいブラウザタブで開きます。
-
[ターミナル] をクリックして、Vertex AI Workbench インスタンスでターミナル シェルを開きます。
-
ターミナル シェルに次のコマンドを入力して、ラボファイルを Vertex AI Workbench インスタンスにインポートします。
- ターミナル シェルに次のコマンドを入力して、Document AI に必要な Python クライアント ライブラリとその他の必要なライブラリをインストールします。
ライブラリが正常にインストールされたことが出力に示されます。
- ターミナル シェルに次のコマンドを入力して、サンプルの医療機関の受け付けフォームをインポートします。
-
ノートブック インターフェースで、
という JupyterLab ノートブックを開きます。 -
[Select Kernel] ダイアログで、使用可能なカーネルのリストから [Python 3] を選択します。
タスク 3. 同期ドキュメント処理リクエストを作成する
同期 Document AI API 呼び出しを使用して、ドキュメント処理呼び出しを行います。一度に大量のドキュメントを処理する場合は、後のタスクで取り上げる非同期 API を使用することもできます。
同期 Document AI API 呼び出しの Python コードを確認する
最初のコードブロックでは、必要なライブラリをインポートして、いくつかの変数を初期化します。
Set your Processor ID コードセルでは、プロセッサ ID を設定します。ノートブックでドキュメントを処理するには、事前にプロセッサ ID を手動で設定する必要があります。
このステップには、タスク 1 で作成したプロセッサの Document AI プロセッサ ID が必要です。
ヒント: プロセッサ ID を保存していなかった場合は、Cloud コンソールのタブでナビゲーション メニュー()から [Document AI] > [マイプロセッサ] をクリックし、作成したプロセッサの名前をクリックして詳細ページを開きます。ここで、プロセッサ ID をコピーできます。
Process Document Function コードセルでは、Document AI プロセッサへの同期呼び出しに使用される process_document
関数を定義します。関数は Document AI API クライアント オブジェクトを作成します。
API 呼び出しに必要なプロセッサ名が project_id
、locations
、processor_id
の各パラメータを使用して作成され、サンプル PDF ドキュメントが読み取られて mime_type
構造に格納されます。
この関数は、ドキュメントの完全なプロセッサ名を含むリクエスト オブジェクトを作成し、このオブジェクトを Document AI API クライアントへの同期呼び出しのパラメータとして使用します。リクエストが成功すると、返されるドキュメント オブジェクトのプロパティに、フォームで検出されたエンティティが含まれていることが確認できます。
Process Document コードセルでは、process_document
関数を呼び出して、レスポンスを document
変数に保存し、検出された未加工のテキストを出力します。すべてのプロセッサで、document.text
プロパティのデータがレポートされます。
Get Text Function コードセルでは、get_text()
関数を定義します。この関数は、指定された要素の text_segments
の text_anchor
start_index
と end_index
プロパティを使って、指定された要素のテキストを取得します。この関数は、プロセッサによって該当するフォームデータが返される場合に、そのデータのフォーム名とフォーム値を取得するために使用されます。
Display Form Data セルでは、検出されたすべてのページを反復処理します。検出された form_field
ごとに、get_text()
関数を使用してフィールド名とフィールド値を取得します。次に、これらの値を、対応する信頼スコアとともに出力します。フォームデータは、一般用の Form Parser または専用パーサーを使用するプロセッサでは返されますが、Document OCR パーサーで作成されたプロセッサでは返されません。
Display Entity Data セルでは、ドキュメント オブジェクトからエンティティ データを抽出して、検出されたエンティティごとにエンティティ タイプ、値、信頼スコアの各プロパティを表示します。エンティティ データは、Procurement Expense パーサーなどの専用 Document AI パーサーを使用するプロセッサでのみ返されます。一般用の Form Parser と Document OCR パーサーでは、エンティティ データは返されません。
タスク 4. 同期 Document AI Python コードを実行する
JupyterLab ノートブックで Document AI API への同期呼び出しを行うコードを実行します。
-
2 つ目の Set your Processor ID コードセルでは、
PROCESSOR_ID
プレースホルダ テキストを、前のタスクで作成した form-parser プロセッサのプロセッサ ID に置き換えます。 -
最初のセルを選択し、[Run] メニュー、[Run Selected Cell and All Below] の順にクリックして、ノートブックですべてのコードを実行します。
サンプルの医療機関の受け付けフォームを使用した場合は、フォームデータの出力セルに次のようなデータが表示されます。
専用プロセッサを作成できる場合は、最後のセルでエンティティ データが表示されますが、それ以外の場合は空のテーブルが表示されます。
- JupyterLab メニューで、[File]、[Save Notebook] の順にクリックして、進行状況を保存します。
タスク 5. Document AI のドキュメント OCR プロセッサを作成する
このタスクでは、一般用 Document OCR パーサーを使用して、Document AI のプロセッサを作成します。
-
ナビゲーション メニューで、[Document AI] > [概要] をクリックします。
-
[プロセッサを確認] をクリックして、[Document OCR] の [プロセッサを作成] をクリックします。これは一般タイプのプロセッサです。
-
プロセッサ名に「ocr-processor」を指定して、リージョンの一覧から [US(米国)] を選択します。
-
[作成] をクリックして、プロセッサを作成します。
-
プロセッサ ID をメモしておきます。今後のタスクでこれを指定する必要があります。
タスク 6. 非同期 Document AI API 呼び出し用に環境を準備する
このタスクでは、サンプル JupyterLab ノートブックをアップロードして、非同期 Document AI API 呼び出しをテストし、ラボ向けのいくつかのサンプル フォームを非同期処理用に Cloud Storage にコピーします。
-
[ターミナル] タブをクリックして、Vertex AI Workbench インスタンスでターミナル シェルを再び開きます。
-
入力ドキュメント用の Cloud Storage バケットを作成して、サンプル W2 フォームをバケットにコピーします。
-
ノートブック インターフェースで、
という JupyterLab ノートブックを開きます。 -
[Select Kernel] ダイアログで、使用可能なカーネルのリストから [Python 3] を選択します。
タスク 7. 非同期ドキュメント処理リクエストを作成する
非同期 Document AI API 呼び出しの Python コードを確認する
最初のコードセルでは、必要なライブラリをインポートします。
Set your Processor ID コードセルでは、プロセッサ ID を設定します。ノートブックでドキュメントを処理するには、事前にプロセッサ ID を手動で設定する必要があります。
Set your variables コードセルでは、非同期呼び出しを行うために使用されるパラメータを定義します。これには、ソースデータと出力ファイルに使用される Cloud Storage バケット(入力および出力)のロケーションが含まれます。コードを実行する前に、このセルで、ラボの次のセクションの PROJECT_ID
と PROCESSOR_ID
のプレースホルダの値を更新します。他の変数にはプロセッサのロケーション、入力 Cloud Storage バケットと出力 Cloud Storage バケットのデフォルト値が含まれ、これらを変更する必要はありません。
Define Google Cloud client objects コードセルでは、Document AI と Cloud Storage クライアントを初期化します。
Create input configuration コードセルでは、入力構成として非同期 Document AI リクエストに渡される、ソースデータの入力構成配列パラメータを作成します。この配列には、入力 Cloud Storage ロケーションで検出されたファイルごとに、Cloud Storage のソース ロケーションと MIME タイプが格納されます。
Create output configuration コードセルでは、出力 Cloud Storage バケットのロケーションを含む非同期リクエストの出力パラメータを作成し、Document AI バッチ出力構成としてこれを格納します。
Create the Document AI API request コードセルでは、入力および出力構成オブジェクトを使用して、非同期 Document AI バッチ処理リクエスト オブジェクトを作成します。
Start the batch (asynchronous) API operation コードセルでは、リクエスト オブジェクトを batch_process_documents()
メソッドに渡すことで、非同期ドキュメント処理リクエストを作成します。これは非同期呼び出しであるため、result()
メソッドを使用して、ノートブックがバックグラウンド非同期ジョブの完了まで待機するよう強制します。
Fetch list of output files セルでは、destination_uri
変数で定義された出力バケット ロケーション内のオブジェクトを列挙します。
Display detected text from asynchronous output JSON files セルでは、Document AI ドキュメント オブジェクトとして見つかった各出力 JSON ファイルを読み込み、ドキュメント OCR プロセッサで検出されたテキストデータを出力します。
Display entity data セルでは、見つかったエンティティ データを表示します。ただし、エンティティ データは、専用パーサーを使って作成されたプロセッサの場合にのみ表示されます。このタスクで使用されている一般用 Document OCR パーサーでは、エンティティ データは表示されません。
非同期 Document AI Python コードを実行する
JupyterLab ノートブックに用意されているサンプルコードを使用して、Document AI バッチ処理リクエストでドキュメントを非同期に処理します。
-
2 つ目のコードセルでは、
PROCESSOR_ID
プレースホルダ テキストを、前のステップで作成した form-parser プロセッサのプロセッサ ID に置き換えます。 -
最初のセルを選択し、[Run] メニュー、[Run Selected Cell and All Below] の順にクリックして、ノートブックですべてのコードを実行します。
-
コードセルの実行中に、ノートブックのステップを追いながら、コードとコメント(非同期リクエスト オブジェクトの作成方法と使用方法を説明したもの)を確認しましょう。
ノートブックは、 Start the batch (asynchronous) API operation コードセルで非同期バッチ処理オペレーションが完了するまで 1~2 分待機します。バッチ処理 API 呼び出し自体が非同期ですが、ノートブックは result
メソッドを使用して、非同期呼び出しが完了するまで待機するよう強制してから、出力データを列挙、表示します。
非同期ジョブに想定以上の時間がかかってタイムアウトした場合は、出力を表示するために残りのセルの再実行が必要になることがあります。これらは、Start the batch (asynchronous) API operation セルの後のセルです。
出力では、各ファイルで検出された Document AI データのテキストが一覧表示されます。Document OCR パーサーではフォームまたはエンティティ データが検出されないので、生成されるフォームまたはエンティティ データはありません。専用プロセッサを作成できる場合は、最後のセルによってエンティティ データが出力されます。
- JupyterLab メニューで、[File]、[Save Notebook] の順にクリックして、進行状況を保存します。
お疲れさまでした
Document AI API への同期呼び出しと非同期呼び出しを正常に行うことができました。このラボでは、Document AI API を有効にし、プロセッサを作成しました。Vertex AI Workbench インスタンスに Python 用のクライアント ライブラリをインストールし、Python を使ってスキャンしたフォームのデータを解析して同期 API 呼び出しと非同期 API 呼び出しを行いました。
クエストを完了する
このセルフペース ラボは、「Detect Manufacturing Defects using Visual Inspection AI」スキルバッジ クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められてバッジが贈られます。獲得したバッジをレジュメやソーシャル プラットフォームで共有し、#GoogleCloudBadge を使用して成果を公表しましょう。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、次のクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なその他のクエストもご確認ください。
次のステップと詳細情報
- Document AI API を使用する方法について詳しくは、ガイドをご確認ください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 10 月 8 日
ラボの最終テスト日: 2024 年 10 月 8 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。