2016-06-13 32 views
5

Jestem nowym użytkownikiem Google Cloud Vision API. Robię OCR na obrazach głównie dla rachunków i pokwitowań.Google Cloud Vision API "Odmowa przyjęcia zamówienia"

Przez kilka zdjęć to działa dobrze, ale gdy próbuję kilka innych obrazów daje mi ten błąd:

Error: { [Error: Request Admission Denied.] 
    code: 400, 
    errors: 
    [ { message: 'Request Admission Denied.', 
     domain: 'global', 
     reason: 'badRequest' } ] } 

To jest mój kod:

// construct parameters 
const req = new vision.Request({ 
image: new vision.Image('./uploads/reciept.png'), 
features: [ 
new vision.Feature('TEXT_DETECTION', 1) 
] 
}) 

vision.annotate(req).then((res) => { 
// handling response 
//console.log(res.responses[0].textAnnotations); 
var desc=res.responses[0].textAnnotations; 
var descarr=[]; 
for (i = 0; i < desc.length; i++) { 
descarr.push(desc[i].description); 
} 
+0

Czy otrzymujesz ten błąd podczas OCRowania określonych zdjęć? Czy możesz wielokrotnie wykonywać OCR ten sam obraz, aby sprawdzić, czy problem dotyczy specyfikacji obrazu lub samego interfejsu API? – Kamran

Odpowiedz

6

Dotyczy również tego problemu. To był problem z rozmiarem obrazu. Nie wiem, jaki jest twardy limit. 4MB działało, ale 9 MB nie, jest gdzieś pośrodku.

+1

Zgodnie z https://cloud.google.com/vision/docs/image-best-practices#file_sizes maksymalny rozmiar pliku to 4MB, maksymalny rozmiar żądania to 8MB – Sock

+1

Tak, naprawiłem go dla mnie (zmiana rozmiaru obrazu) . Byłoby dobrze, gdyby dodali bardziej informacyjny komunikat o błędzie. –

1

byłem w stanie pracować wokół tego, zapisując obraz jako inny format i przesyłając go; było coś "nie tak" (lub co najmniej nieoczekiwane przez Google) z samym plikiem obrazu. Nie jestem pewien co do przetwarzania obrazów w języku, którego używasz (js?), Ale w Pythonie to było tak proste, jak:

from PIL import Image 
bad_image = Image.open(open('failure.jpg', 'rb')) 
bad_image.save(open('success.png', 'wb')) 
+0

Używam JS. Czy twoja praca polegała również na wydobywaniu informacji z nieprzetworzonego tekstu? –

+0

To jest to, co próbuję zrobić szerzej, chociaż nie sądzę, że było to istotne dla konkretnego obrazu, który napotkał ten błąd. W obrazie, który napotkał ten błąd w porównaniu z obrazami, które się powiodły, nie było nic wizualnie unikalnego. – James

0

interesujące. Dziś wpadłem na ten sam problem, używając klienta Java firmy Google. Sposób, w jaki przeczytałem odpowiedź Jamesa, miał plik JPEG, który się nie powiódł, ale pracował jako plik PNG. W moim przypadku miałem plik PNG, który się nie powiódł, ale pracował jako JPEG.

Doszedłem do wniosku, że było to ograniczenie rozmiaru, ponieważ spodziewałem się, że pliki JPEG będą zazwyczaj mniejsze niż pliki PNG; jednak doświadczenie Jamesa sugeruje coś innego.

Nie znalazłem żadnej odpowiedniej dokumentacji w Javadocs Google. Ponieważ odpowiedź jest błędem 400, być może biblioteka Java nie poprawnie koduje bufora obrazu.

1

Doktor Best Practices mówi, że rozmiar pliku obrazu nie powinien przekraczać 4 MB. W oparciu o powyższe odpowiedzi może to być problem.