我正在将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");
我也有类似的问题。
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/rest/v1/images/annotate#imagecontext
这帮助我没有奇怪的角色。