Google Distributed Cloud(GDC)エアギャップ上の Vertex AI の光学式文字認識(OCR)サービスは、BatchAnnotateImages
API メソッドを使用して画像内のテキストを検出します。このサービスは、画像の JPEG ファイルと PNG ファイルに対応しています。
このページでは、Distributed Cloud で OCR API を使用して画像テキストを検出する方法について説明します。
始める前に
OCR API の使用を開始するには、OCR API が有効になっているプロジェクトと適切な認証情報が必要です。また、API の呼び出しを支援するクライアント ライブラリをインストールすることもできます。詳細については、文字認識プロジェクトを設定するをご覧ください。
JPEG ファイルと PNG ファイルからテキストを検出する
BatchAnnotateImages
メソッドは、JPEG または PNG ファイルのバッチからテキストを検出します。テキストを検出するファイルを、API リクエストのコンテンツとして直接送信します。システムは、検出されたテキストを JSON 形式で API レスポンスとして返します。
API リクエストの JSON 本文のフィールドに値を指定する必要があります。次の表に、テキスト検出リクエストで BatchAnnotateImages
API メソッドを使用する場合に指定する必要があるリクエスト本文のフィールドの説明を示します。
リクエスト本文のフィールド | フィールドの説明 |
---|---|
content |
検出するテキストを含む画像。バイナリ画像データの Base64 表現(ASCII 文字列)を指定します。 |
type |
画像から検出する必要があるテキストの種類。 次の 2 つのアノテーション機能のいずれかを指定します。
|
language_hints |
省略可。テキスト検出に使用する言語のリスト。 このフィールドの値が空の場合、システムは自動言語検出と解釈します。 ラテン アルファベット系の言語の場合、 language_hints フィールドを設定する必要はありません。画像内のテキストの言語がわかっている場合は、ヒントを設定すると結果が改善されます。 |
完全な JSON 表現については、AnnotateImageRequest
をご覧ください。
API リクエストを発行する
REST API メソッドを使用して、OCR 事前トレーニング済み API にリクエストを送信します。それ以外の場合は、Python スクリプトから OCR 事前トレーニング済み API を操作して、JPEG ファイルまたは PNG ファイルからテキストを検出します。
次の例は、OCR を使用して画像内のテキストを検出する方法を示しています。
REST
REST API メソッドを使用して画像内のテキストを検出する手順は次のとおりです。
次の
request.json
ファイルをリクエスト本文として保存します。cat <<- EOF > request.json { "requests": [ { "image": { "content": BASE64_ENCODED_IMAGE }, "features": [ { "type": "FEATURE_TYPE" } ], "image_context": { "language_hints": [ "LANGUAGE_HINT_1", "LANGUAGE_HINT_2", ... ] } } ] } EOF
次のように置き換えます。
BASE64_ENCODED_IMAGE
: バイナリ画像データの 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/images: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/images: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) image = {"content": "BASE64_ENCODED_IMAGE"} features = [{"type_": vision.Feature.Type.FEATURE_TYPE}] # Each requests element corresponds to a single image. To annotate more # images, create a request element for each image and add it to # the array of requests req = {"image": image, "features": features} metadata = [("x-goog-user-project", "projects/PROJECT_ID")] resp = vc.annotate_image(req,metadata=metadata) print(resp) if __name__=="__main__": creds = main() vision_func(creds)
次のように置き換えます。
ENDPOINT
: 組織で使用する OCR エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。BASE64_ENCODED_IMAGE
: バイナリ画像データの 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
など)に置き換えます。