我是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);
}
答案 0 :(得分:6)
也遇到了这个问题。这是图像尺寸问题。我不知道硬限制是什么。 4MB工作,但9MB没有,它介于两者之间。
答案 1 :(得分:1)
我能够通过将图像保存为另一种格式并提交它来解决这个问题;图像文件本身存在“错误”(或至少是谷歌意外)。不确定你正在使用的语言中的图像处理(js?),但在Python中它很简单:
channel
答案 2 :(得分:0)
有趣。我今天遇到了同样的问题,使用谷歌的Java客户端。我读詹姆斯答案的方式,他有一个失败的JPEG文件,但作为PNG文件工作。在我的情况下,我有一个失败的PNG文件,但作为JPEG工作。
我已经得出结论,这是一个尺寸限制,因为我希望JPEG通常小于PNG;然而,詹姆斯的经验表明不然。
我在Google的Javadocs中找不到任何相关文档。由于响应是400错误,因此Java库可能无法正确编码图像缓冲区。