2016-06-13 10 views
5

Ich bin neu in Google Cloud Vision API. Ich mache OCR auf Bildern hauptsächlich für Rechnungen und Quittungen.Google Cloud Vision-API "Anfrage abgelehnt"

Für einige Bilder ist es funktioniert gut, aber wenn ich einige andere Bilder versuchen, es gibt mir diese Fehlermeldung:

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

Dies ist mein Code:

// 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

Erhalten Sie diesen Fehler beim OCR-Scannen bestimmter Bilder? Können Sie das gleiche Bild mehrmals mit OCR bearbeiten, um festzustellen, ob das Problem mit der Bildspezifikation oder der API selbst zusammenhängt? – Kamran

Antwort

6

Auch in dieses Problem hineingekommen. Es war ein Bildgrößenproblem. Ich weiß nicht, was das harte Limit ist. 4MB funktionierte, aber 9MB nicht, irgendwo dazwischen.

+1

Laut https://cloud.google.com/vision/docs/image-best-practices#file_sizes beträgt die maximale Dateigröße 4 MB, die maximale Anfragegröße ist 8 MB. – Sock

+1

Ja, das hat es für mich behoben (Größe des Bildes ändern) . Es wäre gut, wenn sie eine informativere Fehlermeldung hinzufügen würden. –

1

Ich war in der Lage zu arbeiten, um dies, indem Sie das Bild als ein anderes Format speichern und das stattdessen einreichen; Es gab etwas "falsches" (oder zumindest unerwartetes von Google) mit der Bilddatei selbst. Nicht sicher Bildmanipulation in der Sprache, die Sie verwenden (js?), Aber in Python war es so einfach wie:

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

Ich benutze JS. Haben Sie bei Ihrer Arbeit auch Informationen aus Rohtext extrahiert? –

+0

Das ist, was ich versuche, breiter zu machen, obwohl ich denke, dass es für das bestimmte Bild, das diesen Fehler vorfand, nicht relevant war. Das Bild, das diesen Fehler verursacht hat, war visuell nicht eindeutig im Vergleich zu Bildern, die erfolgreich waren. – James

0

Interessant. Ich habe heute dasselbe Problem mit dem Google-Java-Client von Google kennengelernt. So wie ich James 'Antwort gelesen habe, hatte er eine JPEG-Datei, die fehlgeschlagen ist, aber als PNG-Datei funktioniert hat. In meinem Fall hatte ich eine PNG-Datei, die fehlgeschlagen ist, aber als JPEG funktionierte.

Ich hatte festgestellt, dass es eine Größenbeschränkung war, da ich erwarten würde, dass JPEGs typischerweise kleiner als PNGs sind; James 'Erfahrung deutet jedoch auf etwas anderes hin.

Ich konnte keine relevante Dokumentation in Javadocs von Google finden. Da die Antwort ein 400-Fehler ist, codiert die Java-Bibliothek den Bildpuffer möglicherweise nicht korrekt.

1

Die doc besagt, dass die Bilddateigröße 4 MB nicht überschreiten sollte. Basierend auf diesen Antworten könnte dies das Problem sein.