圖形驗證看似是最爲簡單的驗證,可是由於涉及到了不少圖像處理方面的知識,想要作一個通用的驗證程序並不簡單html
而且tesserocr自帶的訓練庫識別的效果然是差強人意啊python
本例經過中國知網註冊頁面的驗證碼爲例 http://my.cnki.net/elibregister/commonRegister.aspx瀏覽器
經過瀏覽器工具將驗證碼圖片保存到python工程文件下app
主要代碼爲(驗證碼圖片不通過任何處理):工具
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裏會標紅,可是不影響運行測試
輸出結果爲空,即未識別出來,所以咱們須要將圖片處理一下,例如減小背景噪點、增長對比度之類spa
本例中採用設定一個閾值將圖片轉換爲二值圖.net
threshold = 135 # 閾值 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) image = image.point(table,'1')
閾值設定的大小與識別結果息息相關,固然不一樣的圖片可能會有不一樣的閾值才能識別出來。所以這個方法並非一個通用的方法code
本例中輸出結果:htm
(二值圖)
輸出結果也是tzxw
but!
換了幾張同樣大小的圖測試發現,閾值的選擇各不相同,有的圖片就是怎麼都識別不了或者識別錯誤