国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python驗證碼識別教程之灰度處理、二值化、降噪與tesserocr識別

2020-02-15 21:37:27
字體:
來源:轉載
供稿:網友

前言

寫爬蟲有一個繞不過去的問題就是驗證碼,現在驗證碼分類大概有4種:

    圖像類 滑動類 點擊類 語音類

今天先來看看圖像類,這類驗證碼大多是數字、字母的組合,國內也有使用漢字的。在這個基礎上增加噪點、干擾線、變形、重疊、不同字體顏色等方法來增加識別難度。

相應的,驗證碼識別大體可以分為下面幾個步驟:

    灰度處理 增加對比度(可選) 二值化 降噪 傾斜校正分割字符 建立訓練庫 識別

由于是實驗性質的,文中用到的驗證碼均為程序生成而不是批量下載真實的網站驗證碼,這樣做的好處就是可以有大量的知道明確結果的數據集。

當需要真實環境下需要獲取數據時,可以使用結合各個大碼平臺來建立數據集進行訓練。

生成驗證碼這里我使用Claptcha (本地下載)這個庫,當然Captcha(本地下載)這個庫也是個不錯的選擇。

為了生成最簡單的純數字、無干擾的驗證碼,首先需要將claptcha.py的285行_drawLine做一些修改,我直接讓這個函數返回None,然后開始生成驗證碼:

from claptcha import Claptchac = Claptcha("8069","/usr/share/fonts/truetype/freefont/FreeMono.ttf")t,_ = c.write('1.png')

這里需要注意ubuntu的字體路徑,也可以在網上下載其他字體使用。生成驗證碼如下:


可以看出,驗證碼有形變。對于這類最簡單的驗證碼,可以直接使用谷歌開源的tesserocr來識別。

首先安裝:

apt-get install tesseract-ocr libtesseract-dev libleptonica-devpip install tesserocr

然后開始識別:

from PIL import Imageimport tesserocrp1 = Image.open('1.png')tesserocr.image_to_text(p1)'8069/n/n'

可以看出,對于這種簡單的驗證碼,基本什么都不做識別率就已經很高了。有興趣的小伙伴可以用更多的數據來測試,這里我就不展開了。

接下來,在驗證碼背景添加噪點來看看:

c = Claptcha("8069","/usr/share/fonts/truetype/freefont/FreeMono.ttf",noise=0.4)t,_ = c.write('2.png')

生成驗證碼如下:


識別:

p2 = Image.open('2.png')tesserocr.image_to_text(p2)'8069/n/n'

效果還可以。接下來生成一個字母數字組合的:

c2 = Claptcha("A4oO0zZ2","/usr/share/fonts/truetype/freefont/FreeMono.ttf")t,_ = c2.write('3.png')

生成驗證碼如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 祁阳县| 舞钢市| 古田县| 沙雅县| 昭苏县| 洪湖市| 广德县| 龙州县| 房产| 平谷区| 阿巴嘎旗| 泰兴市| 滁州市| 南阳市| 望江县| 内丘县| 清涧县| 沛县| 永泰县| 班戈县| 荆州市| 高雄市| 东安县| 碌曲县| 吉林市| 徐闻县| 沧州市| 金乡县| 无极县| 肥东县| 上蔡县| 晋江市| 灯塔市| 饶河县| 五常市| 河北省| 翁源县| 金沙县| 临沂市| 武威市| 嵊州市|