谷歌云视觉 API“请求准入被拒绝”
Posted
技术标签:
【中文标题】谷歌云视觉 API“请求准入被拒绝”【英文标题】:Google Cloud Vision API 'Request Admission Denied' 【发布时间】:2016-10-14 07:04:50 【问题描述】:我是 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);
【问题讨论】:
在对特定图像进行 OCR 时是否收到此错误?您能否继续对同一图像进行多次 OCR 以查看问题是否与图像规范或 API 本身有关? 【参考方案1】:也遇到了这个问题。这是一个图像大小问题。我不知道硬限制是什么。 4MB 有效,但 9MB 无效,介于两者之间。
【讨论】:
根据cloud.google.com/vision/docs/image-best-practices#file_sizes最大文件大小为4MB,最大请求大小为8MB 是的,这为我修复了它(调整图像大小)。如果他们添加更多信息的错误消息会很好。【参考方案2】:我可以通过将图像另存为另一种格式并提交来解决此问题;图像文件本身存在“错误”(或者至少是谷歌意想不到的)。不确定您使用的语言(js?)中的图像处理,但在 Python 中它很简单:
from PIL import Image
bad_image = Image.open(open('failure.jpg', 'rb'))
bad_image.save(open('success.png', 'wb'))
【讨论】:
我正在使用 JS 。您的工作是否还涉及从原始文本中提取信息? 这就是我试图更广泛地做的事情,尽管我认为它与遇到此错误的特定图像无关。与成功的图像相比,遇到此错误的图像在视觉上没有什么独特之处。【参考方案3】:Best Practices 文档说图像文件大小不应超过 4 MB。根据上述回复,这可能是问题所在。
【讨论】:
【参考方案4】:有趣。我今天使用 Google 的 Java 客户端遇到了同样的问题。我阅读詹姆斯回答的方式是,他有一个失败的 JPEG 文件,但可以作为 PNG 文件使用。就我而言,我有一个失败的 PNG 文件,但可以作为 JPEG 文件使用。
我认为这是大小限制,因为我希望 JPEG 通常比 PNG 小;然而,詹姆斯的经验表明并非如此。
我在 Google 的 Javadocs 中找不到任何相关文档。由于响应是 400 错误,可能是 Java 库没有正确编码图像缓冲区。
【讨论】:
以上是关于谷歌云视觉 API“请求准入被拒绝”的主要内容,如果未能解决你的问题,请参考以下文章
Android 谷歌云视觉 API 获取 Json 并使用 Json 去另一个活动
在谷歌云视觉 API 中调用 client.text_detection() 获取 TypeError: type object got multiple values for keyword arg