python3爬蟲之驗證碼的識別——圖形驗證碼


環境安裝見博文《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!

換了幾張一樣大小的圖測試發現,閾值的選擇各不相同,有的圖片就是怎么都識別不了或者識別錯誤

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM