OCR(Optical Character Recognition, 광학 문자 인식)에 대한 Baidu의 정의는 종이에 인쇄된 문자를 검사하고 어둡고 밝은 패턴을 감지하여 모양을 판단한 후 문자를 사용하는 전자 장치(스캐너, 디지털 카메라 등)를 말합니다. 문자 인식 방법 도형을 컴퓨터 텍스트로 변환하는 과정, 즉 인쇄된 문자의 경우 종이 문서의 텍스트를 광학적으로 흑백 도트 매트릭스 이미지 파일로 변환하고 이미지의 텍스트를 텍스트 형식으로 변환합니다. 인식 소프트웨어를 통해 워드 프로세싱 소프트웨어로 추가 편집 및 처리를 수행하는 기술입니다.
엔지니어로서 실제 프로그래밍에서는 OCR 기술을 사용하여 그림에 텍스트를 표시해야 할 수도 있습니다. PHP 개발 때문에 PHP를 우선으로 하여 PHP의 OCR 확장기능을 찾아 테스트해 보았으나 사용할 수 없는 것으로 나타났습니다(주소: http://sourceforge.net/projects/phpocr.berlios)? 인터넷에서 친구들의 데모도 많이 봤습니다. 기본 원리는 이미지를 0과 1의 행렬로 분해한 다음 특성에 따라 해당 문자열로 변환하는 것입니다. 여러개를 테스트하는 것은 불가능합니다. 그러다가 PHP는 OCR에 거의 사용되지 않고 언어 효율성이 너무 낮다는 말을 봤습니다. C, MATLAB 등의 OCR 알고리즘을 사용해 볼 수 있습니다. MATLAB에서는 OCR과 같은 부분 알고리즘을 사용하는 사람들이 많이 있습니다.
재능도 없고 지식도 부족할 수밖에 없고 C도 모릅니다. 우연히 Baidu에 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 ='http://apis.baidu.com/apistore/idlocr/ocr';//百度ocr api $header = array( 'Content-Type:application/x-www-form-urlencoded', 'apikey:69c2ace1ef297ce88869f0751cb1b618', ); $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('4.jpg'); if($wordArr['errNum']==0){ var_dump($wordArr); }else{ echo "识别出错:".$wordArr["errMsg"]; }