PHP は OCR テキスト認識を実装します

WBOY
リリース: 2016-07-30 13:29:32
オリジナル
4435 人が閲覧しました

詳細: 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 チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!