ファイル内のテキストを検出する

Google Distributed Cloud(GDC)エアギャップ アプライアンスの Vertex AI の光学式文字認識(OCR)サービスは、PDF ファイルと TIFF ファイルからテキストを検出して抽出します。ローカル ファイルをインライン リクエストで BatchAnnotateFiles API メソッドに直接送信できます。このメソッドは、バッチ呼び出しごとに 1 つのリクエストをサポートします。

始める前に

OCR API を使用するには、OCR API が有効になっているプロジェクトと適切な認証情報が必要です。また、この API の呼び出しを支援するクライアント ライブラリをインストールすることもできます。詳細については、文字認識プロジェクトを設定するをご覧ください。

インライン リクエストでテキストを検出する

BatchAnnotateFiles メソッドは、PDF ファイルまたは TIFF ファイルのバッチからテキストを検出します。テキストを検出するファイルを、API リクエストのコンテンツとして直接送信します。システムは、検出されたテキストを JSON 形式で API レスポンスに返します。

API リクエストの JSON 本文のフィールドに値を指定する必要があります。次の表に、テキスト検出リクエストに BatchAnnotateFiles API メソッドを使用するときに指定する必要があるリクエスト本文のフィールドの説明を示します。

リクエスト本文のフィールド フィールドの説明
content 検出するテキストを含むファイル。バイナリ ファイルの内容の Base64 表現(ASCII 文字列)を指定します。
mime_type ソース ファイル形式。次のいずれかの値に設定する必要があります。
  • PDF ファイルの場合は application/pdf
  • image/tiff(TIFF ファイルの場合)
type ファイルから必要なテキスト検出のタイプ。

次の 2 つのアノテーション機能のいずれかを指定します。
  • TEXT_DETECTION は、任意のファイルからテキストを検出して抽出します。JSON レスポンスには、抽出された文字列、個々の単語、それらの境界ボックスが含まれます。
  • DOCUMENT_TEXT_DETECTION もファイルからテキストを抽出しますが、このサービスは、高密度のテキストとドキュメント用にレスポンスを最適化します。ページ、ブロック、段落、単語、改行の情報が JSON に含まれます。
これらのアノテーション機能の詳細については、光学式文字認識機能をご覧ください。
language_hints 省略可。テキスト検出に使用する言語のリスト。

このフィールドの値が空の場合、システムは言語の自動検出として解釈します。

ラテン アルファベット系の言語の場合、language_hints フィールドを設定する必要はありません。

ファイル内のテキストの言語がわかっている場合は、ヒントを設定すると結果が改善されます。
pages 省略可。テキスト検出のために処理するファイルのページ数。

指定できるページ数は最大 5 ページです。ページ数を指定しない場合、ファイルの最初の 5 ページが処理されます。

インライン API リクエストを送信する

REST API メソッドを使用して、OCR 事前トレーニング済み API にリクエストを送信します。それ以外の場合は、Python スクリプトから OCR 事前トレーニング済み API を操作して、PDF ファイルまたは TIFF ファイルからテキストを検出します。

次の例は、OCR を使用してファイル内のテキストを検出する方法を示しています。

REST

REST API メソッドを使用してファイル内のテキストを検出する手順は次のとおりです。

  1. リクエスト本文用に次の 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 など)。このフィールドは省略可能です。空の値は、言語の自動検出として解釈されます。
  2. 認証トークンを取得する。

  3. 次のリクエストを行います。

    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
    

    次のように置き換えます。

    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
    

    次のように置き換えます。

Python

Python スクリプトから OCR サービスを使用してファイル内のテキストを検出する手順は次のとおりです。

  1. 最新バージョンの OCR クライアント ライブラリをインストールします。

  2. Python スクリプトで必要な環境変数を設定する。

  3. API リクエストを認証する。

  4. 作成した 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)
      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。
  5. Python スクリプトを保存します。

  6. Python スクリプトを実行して、ファイル内のテキストを検出します。

    python SCRIPT_NAME
    

    SCRIPT_NAME は、Python スクリプトに付けた名前(vision.py など)に置き換えます。