Cloud Vision API 是一个 REST API,它可使用 HTTP POST 操作对您在请求中发送的图片执行数据分析。该 API 使用 JSON 处理请求和响应。
摘要
- 请求是对
https://vision.googleapis.com/v1/images:annotate
的 POST 请求。 - 您必须对请求进行身份验证。
- 请求正文如此处所示。 响应与此处的内容有些类似,但字段有所不同,具体取决于您使用的注释类型。
- 此处说明了如何使用 cURL 发送请求。
- 此外,还介绍了客户端库。
- 想要寻找快速演示?只需拖放即可!
端点
Vision API 包含一个支持一种 HTTP 请求方法 (annotate
) 的端点 (https://vision.googleapis.com/v1/images
):
POST https://vision.googleapis.com/v1/images:annotate
身份验证
POST 请求必须通过传递 API 密钥或 OAuth 令牌进行身份验证。如需了解详细信息,请参阅身份验证页面。
JSON 请求格式
POST 请求的正文包含一个 JSON 对象,该对象包含一个 requests
列表,该列表本身包含一个或多个类型为 AnnotateImageRequest
的对象:
{
"requests":[
{
"image":{
"content":"/9j/7QBEUGhvdG9...image contents...eYxxxzj/Coa6Bax//Z"
},
"features":[
{
"type":"LABEL_DETECTION",
"maxResults":1
}
]
}
]
}
每个请求都符合以下条件:
- 必须包含
requests
列表。
在 requests
列表中:
image
指定图片文件。它可以作为 base64 编码字符串、Cloud Storage 文件位置或可公开访问的网址发送。请参阅提供图片了解详情。features
用于列出要对图片执行的注释类型。您可以指定一个或多个类型以及要为每个类型返回的maxResults
。imageContext
(上例中未显示)指定服务提示以帮助进行注释:边界框、语言和剪裁提示宽高比。
提供图片
您可以通过以下三种方式之一在请求中提供图片:
以 Base64 编码图片字符串的形式。如果图片存储在本地,您可以将其转换为字符串并将其作为
image.content
的值传递:{ "requests":[ { "image":{ "content":"/9j/7QBEUGhvdG9zaG9...image contents...fXNWzvDEeYxxxzj/Coa6Bax//Z" }, "features":[ { "type":"FACE_DETECTION", "maxResults":10 } ] } ] }
如需了解如何在各种平台上进行编码,请参阅 Base64 编码。
以 Cloud Storage URI 的形式。将完整的 URI 作为
image.source.imageUri
的值传递:{ "requests":[ { "image":{ "source":{ "imageUri": "gs://bucket_name/path_to_image_object" } }, "features":[ { "type":"LABEL_DETECTION", "maxResults":1 } ] } ] }
Cloud Storage 中的文件必须可以通过您正在使用的身份验证方法访问。如果您使用的是 API 密钥,则文件必须可公开访问。如果您使用的是服务账号,则文件必须可供创建相应服务账号的用户访问。
以可公开访问的 HTTP 或 HTTPS 网址的形式。将网址作为
image.source.imageUri
的值传递:{ "requests":[ { "image":{ "source":{ "imageUri": "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png" } }, "features":[ { "type":"LOGO_DETECTION", "maxResults":1 } ] } ] }
从 HTTP/HTTPS 网址中提取图片时,Google 无法保证请求将会完成。如果指定的主机拒绝请求(例如,由于请求限制或 DoS 攻击防范),或者如果 Google 为了防止滥用而限制对网站的请求,则您的请求可能会失败。作为最佳实践,对于生产应用不要依赖外部托管的图片。
JSON 响应格式
annotate
请求会收到 AnnotateImageResponse
类型的 JSON 响应。
尽管每种特征类型的请求都类似,但每种特征类型的响应可能截然不同。 如需了解完整信息,请参阅 Vision API 参考。
以下代码演示了如下照片的示例标签检测响应:
{ "responses": [ { "labelAnnotations": [ { "mid": "/m/0bt9lr", "description": "dog", "score": 0.97346616 }, { "mid": "/m/09686", "description": "vertebrate", "score": 0.85700572 }, { "mid": "/m/01pm38", "description": "clumber spaniel", "score": 0.84881884 }, { "mid": "/m/04rky", "description": "mammal", "score": 0.847575 }, { "mid": "/m/02wbgd", "description": "english cocker spaniel", "score": 0.75829375 } ] } ] }
客户端库
Google 以多种编程语言提供客户端库,可简化构建和发送请求以及接收和解析响应的过程。
如需查看安装和使用说明,请参阅客户端库。