最近在爬取一個網(wǎng)站的時候,當爬取到一定數(shù)量的時候會遇到服務器的驗證碼驗證英古,經(jīng)過對驗證碼的識別,發(fā)現(xiàn)驗證碼比較規(guī)范昙读,沒有旋轉(zhuǎn)和扭曲召调。可以使用谷歌開源的驗證碼識別蛮浑。我這里使用的是anacada2的集成環(huán)境唠叛。下面是步驟:
- 因為anacada2集成了Pillow所以不用再進行額外的安裝,如果你使用的是官方安裝包的話可以使用下面的命令進行安裝:
pip install Pillow
- 下載pytesser安裝包(傳送門 密碼:DPHE)
- 把下載下來的pytesser包解壓到python目錄的Lib/site_packages里面沮稚,名字取為pytesser,然后再在這個目錄下面新建一個
pytesser.pth
文件艺沼,內(nèi)容為pytesser,然后修改pytesser.py
,把第一句的import Image
修改為from PIL import Image
,這一步的原因是這里我們用的是pillow而不是用的原生PIL。這樣做好以后記得把pytesser這個目錄放入到系統(tǒng)環(huán)境變量壮虫,因為程序會調(diào)用這個目錄里面的tesseract.exe
,如果不放到環(huán)境變量會因為找不到這個文件而拋出異常澳厢。
4.寫段測試代碼來測試
# encoding=utf-8
from PIL import Image
from pytesser import *
img = Image.open('./2.jpg')
img_grey = img.convert('L')
threshold = 140
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
img_out = img_grey.point(table, '1')
text = image_to_string(img_out) # 將圖片轉(zhuǎn)成字符串
print text.replace(' ', '').replace('\n', '') #這里因為識別出來的文字可能會有空格和回車
識別的圖片
2.jpg
識別結(jié)果
2.png