詳細: http://www.webyang.net/Html/web/article_161.html
OCR (光学式文字認識、光学式文字認識) の 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。
楽しみのために書きました:
<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 での OCR テキスト認識の実装を内容の側面も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。