亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

python驗(yàn)證碼識(shí)別的實(shí)例詳解

原創(chuàng) 2017-01-16 14:08:09 454
摘要:其實(shí)關(guān)于驗(yàn)證碼識(shí)別涉及很多方面的內(nèi)容,入手難度大,但是入手后,可拓展性又非常廣泛,可玩性極強(qiáng),成就感也很足,對(duì)這感興趣的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。依賴sudo apt-get install python-imaging sudo apt-get install tesseract-ocr pip install&nb

其實(shí)關(guān)于驗(yàn)證碼識(shí)別涉及很多方面的內(nèi)容,入手難度大,但是入手后,可拓展性又非常廣泛,可玩性極強(qiáng),成就感也很足,對(duì)這感興趣的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。

依賴

sudo apt-get install python-imaging
sudo apt-get install tesseract-ocr
pip install pytesseract

利用google ocr來(lái)識(shí)別驗(yàn)證碼

from PIL import Image
import pytesseract
image = Image.open('v1.jpg')
vcode = pytesseract.image_to_string(image)
print vcode

但是pytesseract本身識(shí)別率不高,而且一般網(wǎng)站的驗(yàn)證碼都帶有大量干擾元素。( ̄▽ ̄)" 

所以我們首先要對(duì)驗(yàn)證碼進(jìn)行去噪。 

對(duì)于單像素干擾線、干擾點(diǎn)我們可以通過(guò)掃描整個(gè)圖像,考察每一個(gè)像素點(diǎn)所臨近的八個(gè)像素點(diǎn)的顏色,如果不同的個(gè)數(shù)大于一定的值,那就說(shuō)明該點(diǎn)是離散點(diǎn),需要去除。 

另外也可以嘗試設(shè)定閾值來(lái)直接將驗(yàn)證碼二值化。

下面是兩張學(xué)校網(wǎng)站上的驗(yàn)證碼

我們可以看到驗(yàn)證碼存在單像素干擾點(diǎn),所以我們需要設(shè)法去除。但是經(jīng)過(guò)反復(fù)刷新驗(yàn)證碼,發(fā)現(xiàn)這個(gè)驗(yàn)證碼

     1. 只有加法運(yùn)算

     2.至多兩位數(shù)的加法

     3.文字部分一定是紅色(255,0,0)

有了上述的信息,可以判斷這個(gè)驗(yàn)證碼的生成算法是有缺陷的

import Image
from numpy import *
import pytesseract
im = Image.open('1.png')
im = im.convert('RGB')
#拉長(zhǎng)圖像,方便識(shí)別。
im = im.resize((200,80))
a = array(im)
for i in xrange(len(a)):
for j in xrange(len(a[i])):
  if a[i][j][0] == 255:
    a[i][j]=[0,0,0]
  else:
    a[i][j]=[255,255,255]
im = Image.fromarray(a)
im.show()
vcode = pytesseract.image_to_string(im)
print vcode

利用上述腳本我們可以將圖像進(jìn)行二值化,利用google ocr進(jìn)行識(shí)別。再通過(guò)eval()來(lái)對(duì)表達(dá)式進(jìn)行求值。

更多關(guān)于python驗(yàn)證碼識(shí)別的實(shí)例詳解請(qǐng)關(guān)注PHP中文網(wǎng)(ipnx.cn)其他文章! 

發(fā)佈手記

熱門詞條