abstract:這篇文章主要介紹了Perl使用Tesseract-OCR實(shí)現(xiàn)驗(yàn)證碼識(shí)別教程,Tesseract-OCR是一個(gè)開(kāi)源圖形識(shí)別引擎,需要的朋友可以參考下一、Tesseract-OCR 是什么An OCR Engine that was developed at HP Labs between 1985 and 1995… and now at Google基于Leptonica(http://lepto
這篇文章主要介紹了Perl使用Tesseract-OCR實(shí)現(xiàn)驗(yàn)證碼識(shí)別教程,Tesseract-OCR是一個(gè)開(kāi)源圖形識(shí)別引擎,需要的朋友可以參考下
一、Tesseract-OCR 是什么
An OCR Engine that was developed at HP Labs between 1985 and 1995… and now at Google
基于Leptonica(http://leptonica.com/)圖形處理庫(kù)開(kāi)的開(kāi)源圖形識(shí)別引擎。
支持Linux、Windows、Mac平臺(tái),
支持.NET、C++、Python、Java等開(kāi)發(fā)語(yǔ)言:https://code.google.com/p/tesseract-ocr/wiki/AddOns
項(xiàng)目地址:https://code.google.com/p/tesseract-ocr/
二、使用方法
下載安裝:https://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe
注意安裝時(shí)的Path目錄、數(shù)學(xué)符號(hào)、語(yǔ)言選項(xiàng),按需選擇。
執(zhí)行:”tesseract yourpic.png res”
圖片 yourpic.png 里面的內(nèi)容會(huì)被識(shí)別后保存在 res.txt
為了更精確的識(shí)別可以去到項(xiàng)目地址上下載相應(yīng)的各種語(yǔ)言的 language tessdata
例如:
簡(jiǎn)體中文 https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.chi_sim.tar.gz
繁體中文
下載解壓后 chi_sim.traineddata 復(fù)制到 Tesseract-OCR\tessdata 即可
執(zhí)行:
“tesseract yourpic.png eng” 使用 默認(rèn)eng語(yǔ)言包
“tesseract yourpic.png sim -l chi_sim” 使用 chi_sim語(yǔ)言包
“tesseract yourpic.png tra -l chi_tra” 使用 chi_sim語(yǔ)言包
選擇最接近真實(shí)數(shù)據(jù)的,方便以后修正
三、進(jìn)階使用 Training
為數(shù)不多的training tesseract-ocr中文文檔
http://yy-programer.blogspot.tw/2012/08/training-tesseract-ocr-301.html
對(duì)于高精度需求的需要研究一下了,日常民用級(jí)別,默認(rèn)識(shí)別加后期修正即可。
四、應(yīng)用實(shí)例之吸附代理
針對(duì) http://www.proxyfire.net/ 幾個(gè)代理列表頁(yè)的代理吸附
話不多說(shuō)直接上代碼,
pf.bat
pf.pl http://www.proxyfire.net/index.php?pageid=eliteproxylist elite.txt pf.pl http://www.proxyfire.net/index.php?pageid=anonymousproxylist anony.txt pf.pl http://www.proxyfire.net/index.php?pageid=transparentproxylist trans.txt pf.pl http://www.proxyfire.net/index.php?pageid=socks4proxylist s4.txt pf.pl http://www.proxyfire.net/index.php?pageid=socks5proxylist s5.txt type *.txt > all.tmp del *.txt /s/q ren all.tmp all.txt @pause
pf.pl
use strict; our $url = $ARGV[0]; our $file = $ARGV[1]; my $res = undef; my @tmp = undef; my @pxy = undef; `wget $url -q -O ___html`; open FH, "<___html"; @tmp = ; close FH; $res = join('',@tmp); undef(@tmp); `del ___html /s /q`; @tmp = ( $res =~ /<img alt="" src="([^" border="0">]+)><\/td>(\d+)'http://www.proxyfire.net'.$tmp[$i], 'port'=>$tmp[$i+1]}; $i = $i + 1;} for (my $i=0; $i < @pxy; $i++) { if( length(${$pxy[$i]}{ip})>0 ) { `echo off & wget ${$pxy[$i]}{ip} -q -O ___png`; `tesseract ___png ___ -l chi_tra`; my $txt = undef; open FH,"<___.txt"; $txt = ; close FH; if ( length($txt)>11 ) { $txt =~ s/\s+//g; $txt =~ s/日/8/g; $txt =~ s/昍/88/g; $txt =~ s/s0/60/g; $txt =~ s/s1/61/g; $txt =~ s/s2/62/g; $txt =~ s/s3/69/g; $txt =~ s/s4/64/g; $txt =~ s/s5/65/g; $txt =~ s/s7/67/g; $txt =~ s/s8/68/g; $txt =~ s/s9/69/g; $txt =~ s/0s/06/g; $txt =~ s/1s/16/g; $txt =~ s/2s/26/g; $txt =~ s/3s/96/g; $txt =~ s/4s/46/g; $txt =~ s/5s/56/g; $txt =~ s/6s/66/g; $txt =~ s/7s/76/g; $txt =~ s/8s/86/g; $txt =~ s/9s/96/g; $txt =~ s/ss/66/g; $txt =~ s/\.s/\.6/g; ${$pxy[$i]}{ip} = $txt; my $bak1 = $txt; my $bak2 = $txt; $bak1 =~ s/13/19/g; $bak1 =~ s/\.32\./\.92\./g; $bak1 =~ s/\.33\./\.99\./g; $bak2 =~ s/19/13/g; $bak2 =~ s/\.243/\.249/g; $bak2 =~ s/203\./209\./g; open FHX,">>$file"; print FHX ${$pxy[$i]}{ip}.":".${$pxy[$i]}{port}."\n"; print FHX $bak1.":".${$pxy[$i]}{port}."\n"; print FHX $bak2.":".${$pxy[$i]}{port}."\n"; close FHX; } my $txt = undef; }} `del ___* /s /q`;undef($url); undef($file); undef($res); undef(@tmp); undef(@pxy);
更多關(guān)于Perl使用Tesseract-OCR實(shí)現(xiàn)驗(yàn)證碼識(shí)別教程請(qǐng)關(guān)注PHP中文網(wǎng)(ipnx.cn)其他文章!