谷歌视觉API文本检测奇怪行为 - Javascript

4

最近Google Vision API出现了一些变化。我正在使用它来识别收据上的文本,一切都很顺利。但突然间,API开始对我的请求做出不同的响应。

今天我向API发送了相同的图片,但获得了与以前不同的响应。我确保我的代码没有更改,因此这不是罪魁祸首。

另一个奇怪的事情是,当我将图像上传到https://cloud.google.com/vision/时,在textAnnotations下的响应中,我得到了一个由183个条目组成的数组。但是当我从我的应用程序中发送时,我得到了一个由113个条目组成的数组。下面是我的代码。

function googleScan(imageData) {
    var deferred = $q.defer();
    var url = "https://vision.googleapis.com/v1/images:annotate?key=<myAPIKey>";
    var payload = {
        requests: {
            image: {
                content: imageData.split(',')[1]
            },
            features: [{
                type: 'TEXT_DETECTION',
                maxResults:50
            }]
        }
    };
    $http.post(url, payload, { headers: { "NoAuthToken": true } }).then(function (response) {
        deferred.resolve(parseAnalyzedResult(response.data.responses[0].textAnnotations));
        console.log(response);
    }, function (error) {
        console.log(error);
    });
    return deferred.promise;

我想知道是否我的免费订阅被更改了,导致我收到了不同的响应。这种情况可能发生吗?有人遇到过这种问题吗?

2个回答

5

我曾经遇到过同样的问题。对我来说,(我不知道为什么,但是...)从TEXT_DETECTION更改为DOCUMENT_TEXT_DETECTION解决了这个问题。现在从API收到的结果与我在Google Vision页面上上传图像时看到的结果相同。


我尝试了这个,但对我来说结果并不相同。API中一定有些变化,否则我无法解释这种不一致性。 - Cosmin Leferman
1
谢谢,DOCUMENT_TEXT_DETECTION 对我非常适用,因为我正在处理真实文档!在此链接中明确提到了这一点:https://cloud.google.com/vision/docs/ocr - Yezan Rafed
对我不起作用,我从这个拖放页面复制了JSON请求,但我的结果仍然与API和他们的演示页面不同,唯一的区别是我使用imageUri发送我的文件,而Google使用他们的本地存储(content参数)。 - Maxence

2
我遇到了类似的问题。
Google Cloud Vision API称“OCR自动检测拉丁字符,但有时会失败”或表现出奇怪的行为。该API还表示,您可以添加一个参数来“帮助”OCR更好地检测文本,并为图像提供上下文。
您需要向请求中添加以下代码。
"imageContext": {
        "languageHints": [
          "en"
        ]
 }

结果应该看起来像这样:
{
  "requests": [
    {
      "image": {
            content: imageData.split(',')[1]
      },
      "features": [{
            type: 'TEXT_DETECTION',
            maxResults:50
        }],
      "imageContext": {
        "languageHints": [
          "en"
        ]
      }
    }
  ]
}

请注意,language Hints 是一个数组,因此您可以添加更多语言,以便精确地给OCR提供提示。
您可以阅读更多: https://cloud.google.com/vision/docs/reference/rest/v1/images/annotate#imagecontext 这帮助我避免出现奇怪的字符。

不幸的是,这并没有解决我的问题。毫无疑问,谷歌方面做了一些改变,而没有提前通知任何人。感谢您的回复! - Cosmin Leferman
1
我在寻找 languageHints 语法的示例时找到了这个答案,非常感谢。另外,对于法语,谷歌远不如微软 OCR API,在识别 l'eau 等带有撇号的单词时存在明显劣势,而这在法语中到处可见,是一个重大缺陷。 - carbontracking

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接