首頁 >後端開發 >php教程 >php實作ocr文字識別

php實作ocr文字識別

巴扎黑
巴扎黑原創
2016-11-10 11:31:312769瀏覽

 OCR的百度定義(Optical Character Recognition,光學字符識別)是指電子設備(例如掃描儀或數碼相機)檢查紙上打印的字符,通過檢測暗、亮的模式確定其形狀,然後用字符識別方法將形狀翻譯成電腦文字的過程;即,針對印刷體字符,採用光學的方式將紙質文檔中的文字轉換成為黑白點陣的圖像文件,並通過識別軟體將圖像中的文字轉換成文本格式,供文字處理軟體進一步編輯加工的技術。

作為一個工程師,在實際程式設計中,可能需要把圖片中的文字顯示出來,這就需要用到ocr技術。因為php開發,所以優先選擇php,找了php的ocr擴充測試了下,結果發現不可用(網址:http://sourceforge.net/projects/phpocr.berlios)? 網路上也看了很多朋友的demo,基本上原理都是對圖片分解成0,1矩陣,然後根據特徵,轉換成對應的字串。測試幾個都是不可行的。然後看到別人說PHP 搞OCR的很少,也不適合,語言效率太低,這種演算法需要很高的效率。可以嘗試C,MATLAB 等的OCR演算法。搞matlab的玩OCR這類偏演算法的很多。

無奈才虛學淺,不會C。無意中卻發現百度有ocr的api提供:http://apistore.baidu.com/apiworks/servicedetail/146.html。

寫了個玩下:

<?php
header("Content-type: text/html; charset=utf-8");
 
function curl($img){
 
$ch = curl_init();
$url =&#39;http://apis.baidu.com/apistore/idlocr/ocr&#39;;//百度ocr api
$header = array(
&#39;Content-Type:application/x-www-form-urlencoded&#39;,
&#39;apikey:69c2ace1ef297ce88869f0751cb1b618&#39;,
);
 
$data_temp = file_get_contents($img);
$data_temp = urlencode(base64_encode($data_temp));
//封装必要参数
$data="fromdevice=pc&clientip=127.0.0.1&detecttype=LocateRecognize&languagetype=CHN_ENG&imagetype=1&image=".$data_temp;
curl_setopt($ch, CURLOPT_HTTPHEADER , $header);// 添加apikey到header
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);// 添加参数
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch , CURLOPT_URL , $url);// 执行HTTP请求
$res = curl_exec($ch);
if($res === FALSE){
echo "cURL Error: ". curl_error($ch);
}
curl_close($ch);
$temp_var = json_decode($res,true);
return $temp_var;
 
}
 
$wordArr = curl(&#39;4.jpg&#39;);
if($wordArr[&#39;errNum&#39;]==0){
var_dump($wordArr);
}else{
echo "识别出错:".$wordArr["errMsg"];
}


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:php 運算下一篇:php 運算