このページでは、Google Distributed Cloud(GDC)エアギャップ アプライアンスで光学式文字認識(OCR)API を使用してファイル内のテキストを検出する方法について説明します。
GDC のエアギャップ アプライアンス上の Vertex AI の OCR サービスは、BatchAnnotateFiles
API メソッドを使用して PDF ファイルと TIFF ファイルのテキストを検出します。
始める前に
OCR API の使用を開始するには、OCR API が有効になっているプロジェクトと適切な認証情報が必要です。また、API の呼び出しを支援するクライアント ライブラリをインストールすることもできます。詳細については、文字認識プロジェクトを設定するをご覧ください。
インライン リクエストでテキストを検出する
BatchAnnotateFiles
メソッドは、PDF ファイルまたは TIFF ファイルのバッチからテキストを検出します。テキストを検出するファイルを、API リクエストのコンテンツとして直接送信します。システムは、検出されたテキストを JSON 形式で API レスポンスとして返します。
API リクエストの JSON 本文のフィールドに値を指定する必要があります。次の表に、テキスト検出リクエストで BatchAnnotateFiles
API メソッドを使用する場合に指定する必要があるリクエスト本文のフィールドの説明を示します。
リクエスト本文のフィールド | フィールドの説明 |
---|---|
content |
検出するテキストを含むファイル。バイナリ ファイル コンテンツの Base64 表現(ASCII 文字列)を指定します。 |
mime_type |
ソース ファイル形式。次のいずれかの値に設定する必要があります。
|
type |
ファイルから検出する必要があるテキストの種類。 次の 2 つのアノテーション機能のいずれかを指定します。
|
language_hints |
省略可。テキスト検出に使用する言語のリスト。 このフィールドの値が空の場合、システムは自動言語検出と解釈します。 ラテン アルファベット系の言語の場合、 language_hints フィールドを設定する必要はありません。ファイル内のテキストの言語がわかっている場合は、ヒントを設定すると結果が改善されます。 |
pages |
省略可。テキスト検出のために処理するファイルのページ数。 指定できるページ数の上限は 5 ページです。ページ数を指定しない場合、サービスはファイルの最初の 5 ページを処理します。 |
インライン API リクエストを作成する
REST API メソッドを使用して、OCR 事前トレーニング済み API にリクエストを送信します。それ以外の場合は、Python スクリプトから OCR 事前トレーニング済み API を操作して、PDF ファイルまたは TIFF ファイルからテキストを検出します。
次の例は、OCR を使用してファイル内のテキストを検出する方法を示しています。
REST
REST API メソッドを使用してファイル内のテキストを検出する手順は次のとおりです。
次の
request.json
ファイルをリクエスト本文として保存します。cat <<- EOF > request.json { "requests": [ { "input_config": { "content": BASE64_ENCODED_FILE, "mime_type": "application/pdf" }, "features": [ { "type": "FEATURE_TYPE" } ], "image_context": { "language_hints": [ "LANGUAGE_HINT_1", "LANGUAGE_HINT_2", ... ] }, "pages": [] } ] } EOF
次のように置き換えます。
BASE64_ENCODED_FILE
: バイナリ ファイル コンテンツの Base64 表現(ASCII 文字列)。この文字列は、/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
に似た文字で始まります。FEATURE_TYPE
: ファイルから必要なテキスト検出のタイプ。指定できる値はTEXT_DETECTION
またはDOCUMENT_TEXT_DETECTION
です。LANGUAGE_HINT
: テキスト検出の言語ヒントとして使用する BCP 47 言語タグ(en-t-i0-handwrit
など)。このフィールドは省略可能です。空の値は自動言語検出として解釈されます。
次のリクエストを行います。
curl
curl -X POST \ -H "Authorization: Bearer TOKEN" \ -H "x-goog-user-project: projects/PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ https://ENDPOINT/v1/files:annotate
次のように置き換えます。
TOKEN
: 取得した認証トークン。PROJECT_ID
: プロジェクト ID。ENDPOINT
: 組織で使用する OCR エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。
PowerShell
$headers = @{ "Authorization" = "Bearer TOKEN" "x-goog-user-project" = "projects/PROJECT_ID" } Invoke-WebRequest -Method POST -Headers $headers -ContentType: "application/json; charset=utf-8" -InFile request.json -Uri "ENDPOINT/v1/files:annotate" | Select-Object -Expand Content
次のように置き換えます。
TOKEN
: 取得した認証トークン。ENDPOINT
: 組織で使用する OCR エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。
Python
Python スクリプトから OCR サービスを使用してファイル内のテキストを検出する手順は次のとおりです。
作成した Python スクリプトに次のコードを追加します。
from google.cloud import vision import google.auth from google.auth.transport import requests from google.api_core.client_options import ClientOptions audience = "https://ENDPOINT:443" api_endpoint="ENDPOINT:443" def vision_client(creds): opts = ClientOptions(api_endpoint=api_endpoint) return vision.ImageAnnotatorClient(credentials=creds, client_options=opts) def main(): creds = None try: creds, project_id = google.auth.default() creds = creds.with_gdch_audience(audience) req = requests.Request() creds.refresh(req) print("Got token: ") print(creds.token) except Exception as e: print("Caught exception" + str(e)) raise e return creds def vision_func(creds): vc = vision_client(creds) input_config = {"content": "BASE64_ENCODED_FILE"} features = [{"type_": vision.Feature.Type.FEATURE_TYPE}] # Each requests element corresponds to a single file. To annotate more # files, create a request element for each file and add it to # the array of requests req = {"input_config": input_config, "features": features} metadata = [("x-goog-user-project", "projects/PROJECT_ID")] resp = vc.annotate_file(req,metadata=metadata) print(resp) if __name__=="__main__": creds = main() vision_func(creds)
次のように置き換えます。
ENDPOINT
: 組織で使用する OCR エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。BASE64_ENCODED_FILE
: ファイル コンテンツの Base64 表現(ASCII 文字列)。この文字列は、/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
に似た文字で始まります。FEATURE_TYPE
: ファイルから必要なテキスト検出のタイプ。指定できる値はTEXT_DETECTION
またはDOCUMENT_TEXT_DETECTION
です。PROJECT_ID
: プロジェクト ID。
Python スクリプトを保存します。
Python スクリプトを実行して、ファイル内のテキストを検出します。
python SCRIPT_NAME
SCRIPT_NAME
は、Python スクリプトに付けた名前(vision.py
など)に置き換えます。