離線批次檔案加註

Vision API 可偵測儲存在 Cloud Storage 的 PDF 和 TIFF 檔案中的任何 Vision API 功能。

如要從 PDF 和 TIFF 偵測特徵,必須使用 files:asyncBatchAnnotate 函式提出要求,該函式會執行離線 (非同步) 要求,並使用 operations 資源提供狀態。

PDF/TIFF 要求產生的輸出內容會寫入指定 Cloud Storage bucket 中建立的 JSON 檔案。

限制

Vision API 最多可接受 2000 頁的 PDF/TIFF 檔案。如果檔案過大,系統會傳回錯誤。

驗證

files:asyncBatchAnnotate 要求不支援 API 金鑰。如需透過服務帳戶進行驗證的說明,請參閱「使用服務帳戶」。

用於驗證的帳戶必須有權存取您指定的輸出 Cloud Storage 值區 (roles/editorroles/storage.objectCreator 以上)。

可以使用 API 金鑰查詢作業狀態;如需操作說明,請參閱「使用 API 金鑰」一節。

特徵偵測要求

目前 PDF/TIFF 文件偵測功能僅適用於儲存在 Cloud Storage bucket 中的檔案。回應 JSON 檔案也會儲存到 Cloud Storage bucket。

指令列

如要執行 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 欄位。其中包含兩個子欄位:

    • gcsSource.uri - PDF 或 TIFF 檔案的 Cloud Storage URI (要求的使用者或服務帳戶可存取)
    • mimeType - 接受的檔案類型:application/pdfimage/tiff
  • outputConfig - 指定輸出詳細資料。其中包含兩個子欄位:

    • gcsDestination.uri:有效的 Cloud Storage URI。使用者或服務帳戶必須可寫入該 bucket,才能提出要求。檔案名稱為 output-x-to-y,其中 xy 代表該輸出檔案中包含的 PDF/TIFF 頁碼。如果檔案存在,系統會覆寫其內容。
    • batchSize - 指定每個輸出 JSON 檔案應包含多少頁的輸出內容。

回覆:

成功的 asyncBatchAnnotate 要求會傳回含有單一名稱欄位的回應:

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

這個名稱代表一項長期執行的作業,並具有相關聯的 ID (例如 1efec2285bd442df),您可以使用 v1.operations API 查詢這項作業。

如要擷取 Vision 註解回應,請將 GET 要求傳送至 v1.operations 端點,並在網址中傳遞作業 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"
  }
}

作業完成後,state 會顯示為 DONE,結果會寫入您指定的 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 類似於圖片的文件文字偵測要求,但會額外顯示 context 欄位,指出指定 PDF 或 TIFF 的位置,以及檔案中的頁數:

output-1-to-1.json