Google Cloud Vision API 上的 INVALID_ARGUMENT 请求问题失败

Request Issue Failed with INVALID_ARGUMENT on Google Cloud Vision API

执行时,使用过去有效但几周没用的密钥,以下 cURL

curl -v -k -s -H "Content-Type: application/json" https://vision.googleapis.com/v1/images:annotate?key=MyKey --data-binary @a.json

其中 a.json

{"requests": [{"image": {"content": "SUkqADwmAAD////8gYEoGct1VHdGU..."}, "features": [{"type": "TEXT_DETECTION", "maxResults": 1}]}]}

returns

*   Trying 173.194.205.239...
* Connected to vision.googleapis.com (173.194.205.239) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: *.googleapis.com
* Server certificate: Google Internet Authority G2
* Server certificate: GeoTrust Global CA
> POST /v1/images:annotate?key=MyKey HTTP/1.1
> Host: vision.googleapis.com
> User-Agent: curl/7.43.0
> Accept: */*
> Content-Type: application/json
> Content-Length: 13454
> Expect: 100-continue
>
* Done waiting for 100-continue
* We are completely uploaded and fine
< HTTP/1.1 400 Bad Request
< Vary: X-Origin
< Vary: Referer
< Content-Type: application/json; charset=UTF-8
< Date: Wed, 10 Feb 2016 18:02:12 GMT
< Server: ESF
< Cache-Control: private
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< Alternate-Protocol: 443:quic,p=1
< Alt-Svc: quic=":443"; ma=604800; v="30,29,28,27,26,25"
< Accept-Ranges: none
< Vary: Origin,Accept-Encoding
< Transfer-Encoding: chunked
<
{
  "error": {
    "code": 400,
    "message": "Request Issue Failed.",
    "status": "INVALID_ARGUMENT"
  }
}
* Connection #0 to host vision.googleapis.com left intact

原来这是因为我发送的是 base64 编码的 tif 图像。适用于 PNG。很确定我在文档中被告知了这一点。

Google Cloud Vision API(测试版)的第 1 版不允许 TIFF [1]。以下是当前支持的格式列表:

  • JPEG
  • PNG8
  • PNG24
  • 动图
  • 动画 GIF(仅第一帧)
  • BMP
  • WEBP
  • RAW
  • ICO

[1] https://cloud.google.com/vision/docs/image-best-practices#image_types