我正在使用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");
答案 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
这有助于我不会得到奇怪的角色。