2016-06-13 39 views
5

Sono nuovo all'API di Google Cloud Vision. Sto facendo OCR su immagini principalmente per fatture e ricevute.API di Google Cloud Vision 'Richiesta di accesso negata'

Per alcune immagini si sta lavorando bene, ma quando provo alcune altre immagini mi dà questo errore:

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

Questo è il mio codice:

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

Si riceve questo errore durante l'OCR delle immagini specifiche? Puoi continuare a fare OCR la stessa immagine più volte per vedere se il problema è legato alle specifiche dell'immagine o all'API stessa? – Kamran

risposta

6

Anche in questo problema. Era un problema di dimensioni dell'immagine. Non so quale sia il limite difficile. 4 MB funzionavano, ma 9 MB no, è da qualche parte nel mezzo.

+1

Secondo https://cloud.google.com/vision/docs/image-best-practices#file_sizes la dimensione massima del file è 4MB, la dimensione massima della richiesta è 8MB – Sock

+1

Sì, questo l'ha corretto per me (ridimensionamento dell'immagine) . Sarebbe bello se aggiungessero un messaggio di errore più informativo. –

1

ero in grado di lavorare attorno a ciò salvando l'immagine come un altro formato e inviandolo invece; c'era qualcosa di "sbagliato" (o almeno inaspettato da Google) con il file immagine stesso. Non sei sicuro di manipolazione delle immagini nella lingua che si sta utilizzando (js?), Ma in Python è stato così semplice come:

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

Sto usando JS. Il tuo lavoro ha comportato anche l'estrazione di informazioni dal testo non elaborato? –

+0

Questo è quello che sto cercando di fare in modo più ampio, anche se non penso che fosse rilevante per la particolare immagine che ha riscontrato questo errore. Non c'era nulla di visivamente unico nell'immagine che ha riscontrato questo errore rispetto alle immagini che hanno avuto successo. – James

0

Interessante. Ho incontrato lo stesso problema oggi, utilizzando il client Java di Google. Il modo in cui ho letto la risposta di James, aveva un file JPEG che non funzionava, ma funzionava come un file PNG. Nel mio caso, avevo un file PNG che non funzionava, ma funzionava come JPEG.

Avevo concluso che si trattava di una limitazione delle dimensioni, poiché mi aspetto che i file JPEG siano in genere più piccoli dei PNG; tuttavia, l'esperienza di James suggerisce il contrario.

Non sono riuscito a trovare alcuna documentazione pertinente in Javadocs di Google. Poiché la risposta è un errore 400, forse la libreria Java non codifica correttamente il buffer di immagini.

1

Il documento Best Practices indica che la dimensione del file immagine non deve superare i 4 MB. Sulla base di queste risposte sopra, questo potrebbe essere il problema.