最近須要檢測一下書籍封面的LOGO問題,文字識別,只能試試百度的api接口了,而後通用接口好辦、直接傳url值爲圖片的http地址就行,可是你說,高精度的那個,按照文檔:全部圖片均須要base64編碼、去掉編碼頭後再進行urlencode。我試了幾回,網上的工具也好,本身寫demo處理也好就是返回image format error,剛開始試了一個demo:php
<?php $img = '1.jpg'; $base64_img = base64EncodeImage($img); echo '<img src="' . $base64_img . '" />'; function base64EncodeImage ($image_file) { $base64_image = ''; $image_info = getimagesize($image_file); $image_info['mime'] = 'image/jpg'; $image_data = fread(fopen($image_file, 'r'), filesize($image_file)); $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data)); return $base64_image; }
是能夠正確顯示用base64顯示圖片,可是仍是不ok,早上起來莫名其妙好了,但願能幫到一些跟我同樣遇到這樣問題的人,腳本:api
<?php function post($url,$post_data){ //初始化 $curl = curl_init(); //設置抓取的url curl_setopt($curl, CURLOPT_URL, $url); //設置頭文件的信息做爲數據流輸出 curl_setopt($curl, CURLOPT_HEADER, 0); //設置獲取的信息以文件流的形式返回,而不是直接輸出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //設置post方式提交 //關閉https驗證 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_POST, 1); //設置post數據 curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); //執行命令 $data = curl_exec($curl); //關閉URL請求 curl_close($curl); //顯示得到的數據 return $data; } function detail_ocr($image_url){ // 文字識別 - 高精度版 $access_token = '123456'; $url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token='.$access_token; $img = file_get_contents($image_url); $img = base64_encode($img); $headers['Content-Type'] = 'application/x-www-form-urlencoded'; $bodys = array( 'image' => $img, ); $res = post($url, $bodys); return $res; }