Google Cloud Vision API提供的文本检测结果不准确

时间:2017-04-28 19:52:48

标签: google-cloud-vision

我正在使用Google Cloud Vision API进行OCR目的。我能够连接到API并按预期获得JSON结果。令我感到困惑的是,当https://cloud.google.com/vision/ url正确检测到图像中的文本时,API调用通常会返回同一图像的不准确文本数据。 PL。让我知道可能是什么情况。示例代码已附上。

        String url = "https://vision.googleapis.com/v1/images:annotate?key=mykey";
        URL obj = new URL(url);
        HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
        BufferedImage img = ImageIO.read(new File("F://image.jpg"));
        ByteArrayOutputStream baos=new ByteArrayOutputStream();
        String fileext = "jpg";
        ImageIO.write(img, fileext, baos );
        baos.flush();
        byte[] imageInByte=baos.toByteArray();
        baos.close();
        String imgstr =  java.util.Base64.getEncoder().encodeToString(imageInByte);
        //add reuqest header
        con.setRequestMethod("POST");
        con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
        con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

1 个答案:

答案 0 :(得分:0)

我有类似的问题。

Google Cloud Vision API表示“OCR会自动检测拉丁字符,但有时会失败”或者有一种奇怪的行为。 API还说你可以添加一个参数来帮助ocr更好地检测文本,为图像提供上下文。

您必须将以下代码添加到请求中。

"imageContext": {
        "languageHints": [
          "en"
        ]
 }

json结果应如下所示:

{
  "requests": [
    {
      "image": {
            ...
      },
      "features": [{
            type: 'TEXT_DETECTION',
            maxResults:1
        }],
      "imageContext": {
        "languageHints": [
          "en"
        ]
      }
    }
  ]
}

请注意,语言提示它是一个数组,因此您可以添加更多语言,以准确地给出OCR提示。

您可以阅读更多内容:https://cloud.google.com/vision/docs/reference/rest/v1/images/annotate#imagecontext

这有助于我不会得到奇怪的角色。