Vision API 可使用任何 Vision 功能類型,執行離線 (非同步) 偵測服務,並為大量圖片檔案加上註解。舉例來說,您可以為單一批次圖片指定一或多個 Vision API 功能 (例如 TEXT_DETECTION
、LABEL_DETECTION
和 LANDMARK_DETECTION
)。
離線批次要求的輸出內容會寫入在指定 Cloud Storage 值區中建立的 JSON 檔案。
限制
Vision API 最多可接受 2,000 個圖片檔案。較大量的圖片檔案會傳回錯誤。
目前支援的地圖項目類型
特徵類型 | |
---|---|
CROP_HINTS |
判斷圖片裁剪區域的建議端點。 |
DOCUMENT_TEXT_DETECTION |
針對含有密集文字的圖片執行光學字元辨識,例如文件 (PDF/TIFF) 和含有手寫文字的圖片。TEXT_DETECTION 可用於含稀疏文字的圖片。
如果 DOCUMENT_TEXT_DETECTION 和 TEXT_DETECTION 同時存在,則優先採用。 |
FACE_DETECTION |
偵測圖片中的臉孔。 |
IMAGE_PROPERTIES |
計算一組圖片屬性,例如圖片主色。 |
LABEL_DETECTION |
根據圖片內容新增標籤。 |
LANDMARK_DETECTION |
偵測圖片中的地理地標。 |
LOGO_DETECTION |
偵測圖片中的公司標誌。 |
OBJECT_LOCALIZATION |
偵測並擷取圖片中的多個物件。 |
SAFE_SEARCH_DETECTION |
執行安全搜尋,以偵測可能不安全或不適當的內容。 |
TEXT_DETECTION |
針對圖片中的文字執行光學字元辨識 (OCR)。
文字偵測已針對大型圖片中稀疏的文字區域進行最佳化。
如果圖片是文件 (PDF/TIFF)、含有密集文字,或包含手寫內容,請改用 DOCUMENT_TEXT_DETECTION 。 |
WEB_DETECTION |
偵測圖片的主題內容 (例如新聞、事件或名人),並透過 Google 圖片搜尋找出網路上的相似圖片。 |
程式碼範例
使用下列程式碼範例,在 Cloud Storage 中的一批圖片檔案上執行離線註解服務。
Java
在試用這個範例之前,請先按照 Vision API 快速入門:使用用戶端程式庫中的操作說明設定 Java 環境。詳情請參閱 Vision API Java 參考說明文件。
Node.js
在試用這個範例之前,請先按照 使用用戶端程式庫的 Vision 快速入門中的操作說明設定 Node.js。詳情請參閱 Vision Node.js API 參考說明文件。
如要向 Vision 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python
在試用這個範例之前,請先按照 使用用戶端程式庫的 Vision 快速入門中的操作說明設定 Python。詳情請參閱 Vision Python API 參考說明文件。
如要向 Vision 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
回應
成功的要求會在您在程式碼範例中指定的 Cloud Storage 值區中傳回回應 JSON 檔案。每個 JSON 檔案的回應數量取決於程式碼範例中的 batch_size
。
傳回的回應類似於一般 Vision API 功能回應,具體取決於您為圖片要求哪些功能。
以下回應顯示 image1.png
的 LABEL_DETECTION
和 TEXT_DETECTION
註解、image2.jpg
的 IMAGE_PROPERTIES
註解,以及 image3.jpg
的 OBJECT_LOCALIZATION
註解。
回應中也會包含顯示檔案 URI 的 context
欄位。
offline_batch_output/output-1-to-2.json
{ "responses": [ { "labelAnnotations": [ { "mid": "/m/07s6nbt", "description": "Text", "score": 0.93413997, "topicality": 0.93413997 }, { "mid": "/m/0dwx7", "description": "Logo", "score": 0.8733531, "topicality": 0.8733531 }, ... { "mid": "/m/03bxgrp", "description": "Company", "score": 0.5682425, "topicality": 0.5682425 } ], "textAnnotations": [ { "locale": "en", "description": "Google\n", "boundingPoly": { "vertices": [ { "x": 72, "y": 40 }, { "x": 613, "y": 40 }, { "x": 613, "y": 233 }, { "x": 72, "y": 233 } ] } }, ... ], "blockType": "TEXT" } ] } ], "text": "Google\n" }, "context": { "uri": "gs://cloud-samples-data/vision/document_understanding/image1.png" } }, { "imagePropertiesAnnotation": { "dominantColors": { "colors": [ { "color": { "red": 229, "green": 230, "blue": 238 }, "score": 0.2744754, "pixelFraction": 0.075339235 }, ... { "color": { "red": 86, "green": 87, "blue": 95 }, "score": 0.025770646, "pixelFraction": 0.13109145 } ] } }, "cropHintsAnnotation": { "cropHints": [ { "boundingPoly": { "vertices": [ {}, { "x": 1599 }, { "x": 1599, "y": 1199 }, { "y": 1199 } ] }, "confidence": 0.79999995, "importanceFraction": 1 } ] }, "context": { "uri": "gs://cloud-samples-data/vision/document_understanding/image2.jpg" } } ] }
offline_batch_output/output-3-to-3.json
{ "responses": [ { "context": { "uri": "gs://cloud-samples-data/vision/document_understanding/image3.jpg" }, "localizedObjectAnnotations": [ { "mid": "/m/0bt9lr", "name": "Dog", "score": 0.9669734, "boundingPoly": { "normalizedVertices": [ { "x": 0.6035543, "y": 0.1357359 }, { "x": 0.98546547, "y": 0.1357359 }, { "x": 0.98546547, "y": 0.98426414 }, { "x": 0.6035543, "y": 0.98426414 } ] } }, ... { "mid": "/m/0jbk", "name": "Animal", "score": 0.58003056, "boundingPoly": { "normalizedVertices": [ { "x": 0.014534635, "y": 0.1357359 }, { "x": 0.37197515, "y": 0.1357359 }, { "x": 0.37197515, "y": 0.98426414 }, { "x": 0.014534635, "y": 0.98426414 } ] } } ] } ] }