Google Vision API JSON响应仅英文

时间:2018-07-31 10:16:01

标签: java json response google-vision non-english

探索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"
              }
            ]
          },

2 个答案:

答案 0 :(得分:1)

如果我正确理解,则Vision Api正在查看您的图像,并确定它在https://www.tummyummi.com/food/menu-aryaas-restaurant处看到了相似的图像。

此网站的标题为Aryaas India Restaurant - مطعم ارياس لبهند - TummYummi Restaurants

将这种非英语文本发送给您并不是错误,因为您要求Api使用WEB_DETECTION。 它找到了具有该图片的网站,并为您提供了指向该图片及其标题的链接。

通过docsImageContext参数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]";