2017-05-07 90 views
1

我正在嘗試將基本64 Jpeg發送到OCR分析的API。Base 64 Image to ocr.space API Ionic 2

API文檔可以在這裏找到https://ocr.space/ocrapi

的代碼保存圖像是在這裏:

takePicture() { 
    Camera.getPicture({ 
     destinationType: Camera.DestinationType.DATA_URL, 
     targetWidth: 1000, 
     targetHeight: 1000, 
     encodingType: Camera.EncodingType.JPEG, 
     sourceType: Camera.PictureSourceType.CAMERA, 
     allowEdit:true }).then((imageData)=>{ 
     this.base64Image = "data:image/jpeg;base64," + imageData; 
    }); 
} 

不過,我敢肯定,這是所有罰款,複製基地64串,並通過發送郵遞員工作正常。

這是我如何發送字符串到API。

post(val) { 
    let headers = new Headers(); 
    headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
    headers.append('apikey', 'APIKEY'); 

    let data = 'base64Image=' + val; 
    console.log(data); 
    return this.http.post('http://api.ocr.space/parse/image', data, {headers: headers}) 
     .map(response => response.json()); 
} 

基部64串傳遞給VAL變量。

給定的錯誤是:「不是有效的base64圖像,接受的base64圖像格式是'data:image /; base64'。」

奇怪的是,它在郵遞員工作正常....任何人都可以發現我做錯了什麼?

+0

你爲什麼要追加'數據:圖像/ JPEG; BASE64,'的'base64image'變量? –

+0

@MariaInesParnisari我相信這是正確的格式? – calmcalmuncle

+0

是的,但'imageData'變量已經有了嗎? –

回答

3

問題是你如何通過數據發送。如果您使用API​​調用示例查看Postman collection,則會看到base64image正在以form-data的形式發送。

Postman call

但是,正如this SO answer指出,

當我們要發佈的值作爲表單POST,我們需要改變 序列化算法,並與內容 - 發佈數據類型, 「application/x-www-form-urlencoded」。

所以這個代碼應工作:

var headers = { 
    'Content-Type': 'application/x-www-form-urlencoded', 
    'apikey': 'helloworld' 
}; 
var data = { 
    'base64image': 'data:image/png;base64,iVBORw0KGgoAAAANS...' 
} 

$http({ 
    method: 'POST', 
    url: 'http://api.ocr.space/parse/image', 
    headers: headers, 
    data: data, 
    transformRequest: function(obj) { 
     var str = []; 
     for (var p in obj) 
     str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
     return str.join("&"); 
    }, 
    }) 

工作演示:http://plnkr.co/edit/aPO4UGng7uaMbIqrzc7J

+0

根據我已經有的代碼更簡單的方式修復,但你的答案是非常正確的!非常感謝! – calmcalmuncle

+0

@calmcalmuncle請考慮upvoting的答案,如果他們是有幫助的,而不是說謝謝:) [更多信息](https://meta.stackexchange.com/questions/126180/is-it-acceptable-to-write-a-謝謝,你-IN-A-評論) – sebaferreras