2016-06-13 113 views
5

我是Google Cloud Vision API的新手。我在圖像上主要爲票據和收據進行OCR。Google Cloud Vision API'拒絕請求入場'

對於一些圖片它工作正常,但是當我嘗試一些其他的圖像它給了我這個錯誤:

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

這是我的代碼:

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

OCR特定圖像時是否收到此錯誤?你能否多次使用相同的圖像做OCR來查看問題是否與圖像規範或API本身有關? – Kamran

回答

6

也出現這個問題。這是一個圖像尺寸問題。我不知道硬限制是什麼。 4MB的工作,但9MB沒有,它之間的某處。

+1

根據https://cloud.google.com/vision/docs/image-best-practices#file_sizes,最大文件大小爲4MB,最大請求大小爲8MB – Sock

+1

是的,這對我來說是固定的(調整圖像大小) 。如果他們添加了更多信息性的錯誤消息,那將會很好。 –

1

我能工作通過將圖像另存爲另一種格式並提交,圖像文件本身有一些「錯誤」(或至少是谷歌意想不到的)。不知道你正在使用的語言(js?)的圖像處理,但在Python中,它很簡單:

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

我正在使用JS。您的工作是否也涉及從原始文本中提取信息? –

+0

這就是我試圖做得更廣泛,但我不認爲它與遇到此錯誤的特定圖像相關。與成功的圖像相比,遇到此錯誤的圖像在視覺上沒有任何獨特之處。 – James

0

有趣。我今天遇到了同樣的問題,使用Google的Java客戶端。我讀James的答案的方式是,他有一個失敗的JPEG文件,但作爲PNG文件工作。在我的情況下,我有一個失敗的PNG文件,但作爲JPEG工作。

我已經得出結論這是一個大小限制,因爲我期望JPEG通常小於PNG;然而,詹姆斯的經驗表明,否則。

我在Google的Javadoc中找不到任何相關文檔。由於響應是400錯誤,因此Java庫可能沒有正確編碼圖像緩衝區。

1

Best Practices doc表示圖像文件大小不應超過4 MB。基於上述迴應,這可能是問題所在。