環境安裝見博文《python3爬蟲之驗證碼的識別——環境安裝》
圖形驗證看似是最為簡單的驗證,但是因為涉及到了很多圖像處理方面的知識,想要做一個通用的驗證程序並不簡單
並且tesserocr自帶的訓練庫識別的效果真是差強人意啊
本例通過中國知網注冊頁面的驗證碼為例 http://my.cnki.net/elibregister/commonRegister.aspx
通過瀏覽器工具將驗證碼圖片保存到python工程文件下
主要代碼為(驗證碼圖片不經過任何處理):
import tesserocr from PIL import Image image = Image.open('tzxw.jpg') image.show() res = tesserocr.image_to_text(image)# 在pycharm中有兼容性問題 print(res)
ps:tesserocr.image_to_text( ) 這個方法可能在PyCharm里會標紅,但是不影響運行
輸出結果為空,即未識別出來,因此我們需要將圖片處理一下,例如減少背景噪點、增加對比度之類
本例中采用設定一個閾值將圖片轉換為二值圖
threshold = 135 # 閾值 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) image = image.point(table,'1')
閾值設定的大小與識別結果息息相關,當然不同的圖片可能會有不同的閾值才能識別出來。因此這個方法並不是一個通用的方法
本例中輸出結果:
(二值圖)
輸出結果也是tzxw
but!
換了幾張一樣大小的圖測試發現,閾值的選擇各不相同,有的圖片就是怎么都識別不了或者識別錯誤