>  기사  >  백엔드 개발  >  PHP는 OCR 텍스트 인식을 구현합니다.

PHP는 OCR 텍스트 인식을 구현합니다.

WBOY
WBOY원래의
2016-07-30 13:29:324464검색

더 보기: http://www.webyang.net/Html/web/article_161.html

바이두에서 OCR(Optical Character Recognition, 광학 문자 인식)에 대한 정의는 전자 장비(예: 스캐너)를 의미합니다. ) 또는 디지털 카메라) 종이에 인쇄된 문자를 검사하고, 어두운 패턴과 밝은 패턴을 감지하여 문자 인식 방법을 사용하여 그 모양을 컴퓨터 텍스트로 변환하는 기술, 즉 인쇄된 문자에 대해 광학적 방법을 사용하는 기술; 문서의 텍스트를 흑백 도트 매트릭스 이미지 파일로 변환하고 인식 소프트웨어를 사용하여 워드 프로세싱 소프트웨어로 추가 편집 및 처리를 위해 이미지의 텍스트를 텍스트 형식으로 변환합니다.

엔지니어로서 실제 프로그래밍에서는 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)가 제공된다는 사실을 발견했습니다.

재미로 작성됨:

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

몇 장의 사진을 테스트했는데 정확도가 상당히 높습니다. 100% 비현실적입니다~


저작권표시: 이 글은 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.

위 내용은 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.