欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python驗證碼識別的實例詳解

 更新時間:2016年09月09日 09:22:27   投稿:daisy  
現(xiàn)在的網(wǎng)站為了防止機器人提交表單,圖片驗證碼是很常見的應(yīng)對手段之一。這里就不詳細介紹了,相信大家都遇到過?,F(xiàn)在這篇文章就給出用Python識別驗證碼的詳細示例代碼,文中介紹的很詳細,有需要的可以參考借鑒。

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

依賴

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

利用google ocr來識別驗證碼

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

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

所以我們首先要對驗證碼進行去噪。

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

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

下面是兩張學校網(wǎng)站上的驗證碼

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

     1. 只有加法運算

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

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

有了上述的信息,可以判斷這個驗證碼的生成算法是有缺陷的

import Image 
from numpy import * 
import pytesseract 
im = Image.open('1.png') 
im = im.convert('RGB') 
#拉長圖像,方便識別。
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 

利用上述腳本我們可以將圖像進行二值化,利用google ocr進行識別。再通過eval()來對表達式進行求值。

總結(jié)

python驗證碼識別的內(nèi)容到這就基本介紹了,希望這篇文章對大家的學習或者工作能有所幫助,如果有疑問大家可以留言交流。

相關(guān)文章

最新評論