定价页面声明安全搜索检测在标签检测中是免费的,每个月最多有5,000,000次请求。对我来说,这意味着应该有一种方法在单个请求中运行标签和安全搜索检测,但我无法找到如何做到这一点。
我从一个Node.js程序调用Google,使用谷歌提供的Node.js客户端。
当调用safeSearchDetection
时,只将图像路径作为参数传递,我将获得安全搜索结果,但返回标签(labelAnnotations
)的空数组,如下所示。
代码片段
const visionClient = new vision.ImageAnnotatorClient();
const [ result ] = await client.safeSearchDetection('./resources/wakeupcat.jpg');
console.log ({ result });
输出
{
result: {
faceAnnotations: [],
landmarkAnnotations: [],
logoAnnotations: [],
labelAnnotations: [],
textAnnotations: [],
localizedObjectAnnotations: [],
safeSearchAnnotation: {
adult: "VERY_UNLIKELY",
spoof: "VERY_UNLIKELY",
medical: "VERY_UNLIKELY",
violence: "VERY_UNLIKELY",
racy: "VERY_UNLIKELY"
}
}
}
相反,当我调用labelDetection
函数时就会发生这种情况。我们得到了有效的labelAnnotations
,但是我们得到了safeSearchAnnotation
的空值。
如何使用Node.js客户端调用运行安全搜索检测,从而使labelAnnotations
也被返回?
如果我打了两个电话(一个负责标签检测,另一个负责搜索安全检测),我恐怕会收到两次账单。
发布于 2019-12-03 11:28:47
事实证明,确实有可能发出一个请求,以获得标签和安全搜索结果(在这种情况下,可以免费进行安全搜索,每月请求多达500万次)。
我们只需要使用annotateImage
函数,传递一个AnnotateImageRequest
参数,将标签检测和安全搜索检测指定为特性:
const visionClient = new vision.ImageAnnotatorClient();
const visionRequest = {
features: [
{ type: 'LABEL_DETECTION' },
{ type: 'SAFE_SEARCH_DETECTION' },
],
image: { source: { filename: './resources/wakeupcat.jpg' } },
};
const [ result ] = await visionClient.annotateImage(request);
通过这样做,result
包括了labelAnnotations
和safeSearchAnnotation
。
https://stackoverflow.com/questions/59154702
复制相似问题