http://my.cnki.net/elibregister/CheckCode.aspx每次刷新該網頁可以得到新的驗證碼進行測試
以我本次查看的驗證碼圖片為例,右鍵保存圖片為image.jpg
下面用代碼來對該圖片驗證碼進行識別:
#!usr/bin/env python # coding:utf-8
import tesserocr from PIL import Image image = Image.open(r'C:\Users\fengyun\Desktop\image.jpg') #傳入你所保存的圖片路徑 result = tesserocr.image_to_text(image) print(result)
最后輸出結果:P4CJ,代表圖片驗證碼識別成功。
對於圖片上有線條干擾的,可能不一定能成功,比如下面這個圖片用上面的方法就不能正確識別
對於這種情況,可以對圖片進行灰度和二值化處理,下面以代碼來實現
#!usr/bin/env python # coding:utf-8
import tesserocr from PIL import Image image = Image.open(r'C:\Users\fengyun\Desktop\image.png') image = image.convert('L') #轉化為灰度圖 threshold = 127 #設定的二值化閾值 table = [] #table是設定的一個表,下面的for循環可以理解為一個規則,小於閾值的,就設定為0,大於閾值的,就設定為1 for i in range(256): if i < threshold: table.append(0) else: table.append(1) image = image.point(table,'1') #對灰度圖進行二值化處理,按照table的規則(也就是上面的for循環) result = tesserocr.image_to_text(image) #對去噪后的圖片進行識別 print(result)
這樣成功輸出了結果PFRT,關於圖片驗證碼的話題暫時就到這。