Recently something about the Google Vision API changed. I am using it to recognize text on receipts. All good until now. Suddenly, the API started to respond differently to my requests.
I sent the same picture to the API today, and I got a different response (from the past). I ensured nothing was changed in my code, so this is not the culprit.
Another strange thing is that, when I upload the image to https://cloud.google.com/vision/ in the response, under textAnnotations, I get an array of 183 entries. However when I post from my app I get an array of 113 entries. Below you can see my code.
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;
I am wondering if somehow my free subscription got altered and that's why I receive a different response. Is that even possible? Has anyone stumbled upon this kind of issue before?
I had the same issue. For me, (I don't know why, but...) changing from TEXT_DETECTION to DOCUMENT_TEXT_DETECTION solved the issue. Now the results received from the API are the same seen when I upload the image on Google Vision page.
I had a similar issue.
The Google Cloud Vision API says that the "OCR automaticly detects latin charatecrs, but sometimes it can fail" or have a strange behavior. The API also says that you can add a parameter to help the ocr to detect better the text, giving a context to the image.
You have to add the following code to the request.
"imageContext": {
        "languageHints": [
          "en"
        ]
 }
The result should look like this:
{
  "requests": [
    {
      "image": {
            content: imageData.split(',')[1]
      },
      "features": [{
            type: 'TEXT_DETECTION',
            maxResults:50
        }],
      "imageContext": {
        "languageHints": [
          "en"
        ]
      }
    }
  ]
}
Note that language Hints its an array, so you can add more languages, to give the OCR, precisely, a hint.
You can read more: https://cloud.google.com/vision/docs/reference/rest/v1/images/annotate#imagecontext
This helped me to don't get strange characters.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With