Google云视API'Request Admission Denied'

Google Cloud Vision API 'Request Admission Denied'

我是 Google Cloud Vision API 的新手。我主要对账单和收据的图像进行 OCR。

有几张图片工作正常,但当我尝试其他图片时出现此错误:

Error:  { [Error: Request Admission Denied.]
  code: 400,
  errors:
   [ { message: 'Request Admission Denied.',
       domain: 'global',
       reason: 'badRequest' } ] }

这是我的代码:

// construct parameters
const req = new vision.Request({
image: new vision.Image('./uploads/reciept.png'),
features: [
new vision.Feature('TEXT_DETECTION', 1)
]
})

vision.annotate(req).then((res) => {
// handling response
//console.log(res.responses[0].textAnnotations);
var desc=res.responses[0].textAnnotations;
var descarr=[];
for (i = 0; i < desc.length; i++) { 
descarr.push(desc[i].description);
}

我可以通过将图像另存为另一种格式并提交来解决这个问题;图像文件本身有些 "wrong"(或者至少 Google 出乎意料)。不确定您使用的语言(js?)中的图像处理,但在 Python 中它很简单:

from PIL import Image
bad_image = Image.open(open('failure.jpg', 'rb'))
bad_image.save(open('success.png', 'wb'))

有意思。我 运行 今天遇到同样的问题,使用 Google 的 Java 客户端。我阅读詹姆斯回答的方式是,他有一个失败的 JPEG 文件,但可以作为 PNG 文件使用。就我而言,我有一个失败的 PNG 文件,但可以作为 JPEG 使用。

我认为这是一个大小限制,因为我希望 JPEG 通常小于 PNG;然而,James 的经验表明情况并非如此。

我在 Google 的 Java 文档中找不到任何相关文档。由于响应是 400 错误,可能 Java 库没有正确编码图像缓冲区。

运行也是这个问题。这是一个图像大小问题。我不知道硬性限制是什么。 4MB 有效,但 9MB 无效,介于两者之间。

Best Practices 文档说图像文件大小不应超过 4 MB。根据以上回复,这可能是问题所在。