Vision API 可以使用任何 Vision 特征类型运行离线(异步)检测服务和大批量图片文件注释。例如,您可以为一批图片指定一个或多个 Vision API 特征(例如 TEXT_DETECTION
、LABEL_DETECTION
和 LANDMARK_DETECTION
)。
离线批量请求的输出将写入在指定 Cloud Storage 存储桶中创建的 JSON 文件中。
限制
Vision API 最多可接受 2000 个图片文件。批量图片文件数量超过该限制会返回错误。
目前支持的特征类型
特征类型 | |
---|---|
CROP_HINTS |
确定图片的建议剪裁区域顶点。 |
DOCUMENT_TEXT_DETECTION |
对文档 (PDF/TIFF) 等包含密集文本的图片和包含手写内容的图片执行 OCR。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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
响应
如果请求成功,则将响应 JSON 文件返回到代码示例所指定的 Cloud Storage 存储桶中。每个 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 } ] } } ] } ] }