ファイルのアノテーションをオフラインで一括処理する

Vision API は、Cloud Storage に保存されている PDF や TIFF ファイルから、あらゆる Vision API の機能を検出できます。

PDF と TIFF からの機能検出は、files:asyncBatchAnnotate 関数を使用してリクエストする必要があります。これにより、オフライン(非同期)リクエストが実行され、operations リソースでそのステータスを確認できるようになります。

PDF / TIFF リクエストからの出力は、指定した Cloud Storage バケットに作成された JSON ファイルに書き込まれます。

制限事項

Vision API は、2,000 ページまでの PDF/TIFF ファイルを受け入れます。これよりファイルが大きくなるとエラーが返されます。

認証

API キーは、files:asyncBatchAnnotate リクエストではサポートされていません。サービス アカウントによる認証の手順については、サービス アカウントの使用をご覧ください。

認証に使用するアカウントは、出力のために指定する Cloud Storage バケットへのアクセス権(roles/editor または roles/storage.objectCreator 以上の役割)が付与されている必要があります。

API キーを使用してオペレーションのステータスをクエリできます。手順については、API キーの使用をご覧ください。

機能検出リクエスト

現在のところ、PDF や TIFF ドキュメントの検出は Cloud Storage バケットに保存されているファイルに対してのみ実行できます。レスポンスの JSON ファイルも Cloud Storage バケットに保存されます。

コマンドライン

PDF / TIFF ドキュメント テキスト検出を行うには、POST リクエストを作成し、適切なリクエスト本文を指定します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://vision.googleapis.com/v1/files:asyncBatchAnnotate -d "{
  'requests':[
    {
      'inputConfig': {
        'gcsSource': {
          'uri': 'gs://your-source-bucket-name/folder/multi-page-file.pdf'
        },
        'mimeType': 'application/pdf'
      },
      'features': [
        {
          'type': 'DOCUMENT_TEXT_DETECTION'
        }
      ],
      'outputConfig': {
        'gcsDestination': {
          'uri': 'gs://your-bucket-name/folder/'
        },
        'batchSize': 1
      }
    }
  ]
}"

ここで

  • inputConfig は、他の Vision API リクエストで使用される image フィールドの代わりです。これには、次の 2 つの子フィールドが含まれます。

    • gcsSource.uri - PDF または TIFF ファイルの Cloud Storage URI(リクエストするユーザーまたはサービス アカウントがアクセス可能な URI)
    • mimeType - 使用可能なファイルタイプ(application/pdf または image/tiff)。
  • outputConfig は、出力の詳細を指定します。これには、次の 2 つの子フィールドが含まれます。

    • gcsDestination.uri - 有効な Cloud Storage URI。バケットは、リクエストを行うユーザーまたはサービス アカウントによって書き込み可能である必要があります。ファイル名は output-x-to-y です。ここで、xy は出力ファイルに含まれる PDF / TIFF のページ番号です。ファイルが存在する場合、その内容は上書きされます。
    • batchSize - それぞれの JSON 出力ファイルに含める出力ページ数を指定します。

レスポンス:

asyncBatchAnnotate リクエストに成功すると、次のような name フィールドのみを含むレスポンスが返されます。

{
  "name": "projects/usable-auth-library/operations/1efec2285bd442df"
}

この name は関連 ID(例: 1efec2285bd442df)を持つ長時間実行オペレーションの名前です。この名前は、v1.operations API を使用してクエリできます。

Vision のアノテーション レスポンスを取得するには、v1.operations エンドポイントに GET リクエストを送信し、URL でオペレーション ID を渡します。

curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://vision.googleapis.com/v1/operations/1efec2285bd442df

オペレーションが進行中の場合:

{
  "name": "operations/1efec2285bd442df",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.OperationMetadata",
    "state": "RUNNING",
    "createTime": "2019-05-15T21:10:08.401917049Z",
    "updateTime": "2019-05-15T21:10:33.700763554Z"
  }
}

オペレーションが完了すると、stateDONE として表示され、指定した Cloud Storage ファイルに結果が書き込まれます。

{
  "name": "operations/1efec2285bd442df",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.OperationMetadata",
    "state": "DONE",
    "createTime": "2019-05-15T20:56:30.622473785Z",
    "updateTime": "2019-05-15T20:56:41.666379749Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.AsyncBatchAnnotateFilesResponse",
    "responses": [
      {
        "outputConfig": {
          "gcsDestination": {
            "uri": "gs://your-bucket-name/folder/"
          },
          "batchSize": 1
        }
      }
    ]
  }
}

出力ファイル内の JSON は、画像のドキュメント テキスト検出リクエストの JSON と似ていますが、指定された PDF または TIFF の場所とファイルのページ数を示す context フィールドが追加されています。

output-1-to-1.json