探索Google视觉API已经花了很多时间,我试图仅以英语获得视觉API响应,以下是我对具有语言提示的API的请求对象:
{
"requests": [
{
"features": [
{
"type": "IMAGE_PROPERTIES"
},
{
"type": "LANDMARK_DETECTION"
},
{
"type": "LABEL_DETECTION"
},
{
"type": "WEB_DETECTION"
},
{
"type": "FACE_DETECTION"
},
{
"type": "SAFE_SEARCH_DETECTION"
},
{
"type": "TEXT_DETECTION"
},
{
"type": "LOGO_DETECTION"
}
],
"image": {
"source": {
"imageUri": "https://images.dreamstream.com/prodds/prddsimg/OM_pasteIt22_12_2017_2_34_7806303.jpeg"
}
},
"imageContext": {
"languageHints": [
"en"
]
}
}
]
}
即使此请求对象也无法从Vision API中获得正确的响应(多种语言)。
如果有任何步骤可以仅用英语获得答复,请告知我,截至目前,答复包含以下多种语言:
{
"url": "https://www.tummyummi.com/food/menu-aryaas-restaurant",
"pageTitle": "Aryaas India Restaurant - مطعم ارياس لبهند - TummYummi Restaurants",
"fullMatchingImages": [
{
"url": "https://www.tummyummi.com/food/upload/1509868727-Curd-Vada.jpg"
}
]
},
答案 0 :(得分:1)
如果我正确理解,则Vision Api正在查看您的图像,并确定它在https://www.tummyummi.com/food/menu-aryaas-restaurant处看到了相似的图像。
此网站的标题为Aryaas India Restaurant - مطعم ارياس لبهند - TummYummi Restaurants
。
将这种非英语文本发送给您并不是错误,因为您要求Api使用WEB_DETECTION
。
它找到了具有该图片的网站,并为您提供了指向该图片及其标题的链接。
通过docs的ImageContext
参数languageHints
,您可以设置图像中文本的预期语言,如果检测到其他任何语言,则将返回错误:>
如果一种或多种指定语言不是受支持的语言之一,则文本检测将返回错误。
请注意,此语言设置仅会影响文本检测。
如果您希望文本检测仅返回英文元素,但如果检测到其他任何内容都不会出错,则该文档建议以下内容:
对于基于拉丁字母的语言,不需要设置languageHints。在极少数情况下,当知道图像中文本的语言时,设置提示将有助于获得更好的结果(尽管如果提示错误,这将是一个很大的障碍)
相反,要过滤掉所有非英语的文本,您可以查看TextAnnotation
的{{1}}字段,并过滤掉locale
之外的任何内容。客户端。
关于在en
期间检测网站标题的语言,我认为这超出了Google视觉api的范围,但是您可以尝试使用detecting lanuages feature cloud translation api。
答案 1 :(得分:0)
感谢有用的答案@dustinroepsch,而不是依靠cloud translation api,我们可以选择正则表达式,因为唯一具有非英语文本的功能是WEB_DETECTION,有时它可能变化。
在WEB_DETECTION中,pagesWithMatchingImages和webEntities之类的对象可能很少包含非英语文本。解析JSON之后,我们可以使用以下正则表达式模式删除非英语文本。
String regex = "[a-z,A-Z,0-9,($&+,:;=?@#|'<>.^*()%!-)\\s]";