我实现了这个谷歌云功能示例,以调节上传到firebase存储的图像:链接但我有一个问题,这个功能几乎可以检测我上传的每一张图像,如果它们不合适,即使很明显它们不是,这就是功能的代码:
exports.blurOffensiveImages = functions.storage.object().onFinalize(async (object) => {
if (object.name.startsWith(`${BLURRED_FOLDER}/`)) {
console.log(`Ignoring upload "${object.name}" because it was already blurred.`);
return null;
}
const visionClient = new vision.ImageAnnotatorClient();
const data = await visionClient.safeSearchDetection(
`gs://${object.bucket}/${object.name}`
);
const safeSearch = data[0].safeSearchAnnotation;
console.log('SafeSearch results on image', safeSearch);
if (
safeSearch.adult !== VERY_UNLIKELY ||
safeSearch.spoof !== VERY_UNLIKELY ||
safeSearch.medical !== VERY_UNLIKELY ||
safeSearch.violence !== VERY_UNLIKELY ||
safeSearch.racy !== VERY_UNLIKELY
) {
console.log('Offensive image found. Blurring.');
//DO SOME STUFF
}
return null;
});
我也经历过同样的行为。
接口有点误导,在typescript定义中,我注意到诸如google.cloud.vision.v1.ISafeSearchAnnotation.adult之类的属性的类型定义为:vision.protos.google.cloud.vision.v1.可能性|"未知"|"VERY_UNLIKELY"|"不一样的"|"可能的"|"可能性"VERY_LIKELY"|null |未定义。
因此,他们可以返回似然枚举或值的字符串。当我改变我的条件以检查字符串"0"时;VERY_UNLIKELY";我得到了预期的结果,而不是枚举。
如果返回枚举,我很可能会检查枚举和字符串,以防止将来发生更改。