五行Python實(shí)現(xiàn)驗(yàn)證碼識(shí)別,太穩(wěn)了!
大家好,我是小五??
在很久之前,分享過一次Python代碼實(shí)現(xiàn)驗(yàn)證碼識(shí)別的辦法。
當(dāng)時(shí)采用的是pillow+pytesseract,優(yōu)點(diǎn)是免費(fèi),較為易用。但其識(shí)別精度一般,若想要更高要求的驗(yàn)證碼識(shí)別,初學(xué)者就只能去選擇使用百度API接口了。
但其實(shí)百度API接口和pytesseract其實(shí)都需要進(jìn)行前期配置,對(duì)于初學(xué)者來說就不太友好了。
而且百度API必須要聯(lián)網(wǎng),對(duì)于某些機(jī)器不能聯(lián)網(wǎng)的朋友而言,就得pass了
最近群里有位群友分享了一個(gè)新庫,試用一下發(fā)現(xiàn)非常實(shí)用,特意今天分享給大家。
Github地址:https://github.com/sml2h3/ddddocr
該庫名也是非常有趣 —— ddddocr(諧音帶帶弟弟OCR)
環(huán)境要求:
python >= 3.8
Windows/Linux/Macox..
可以通過以下命令安裝
pip install ddddocr
參數(shù)說明:
在網(wǎng)上隨機(jī)尋找了一個(gè)驗(yàn)證碼圖片,使用這個(gè)庫來實(shí)戰(zhàn)一下。
來源:百度搜索
import ddddocr
ocr = ddddocr.DdddOcr()
with open('1.png', 'rb') as f:
img_bytes = f.read()
res = ocr.classification(img_bytes)
print(res)
成功識(shí)別出來了驗(yàn)證碼文字!
而且優(yōu)點(diǎn)也非常明顯:首先代碼非常精簡,對(duì)比前文提到的兩種方法,不需要額外設(shè)置環(huán)境變量等等,5行代碼即可輕松識(shí)別驗(yàn)證碼圖片。另一方面,我們使用魔法命令%%time也測試出來嗎,這段代碼識(shí)別速度非???。
下面用更多的驗(yàn)證碼圖片繼續(xù)測試:
我又找了6個(gè)驗(yàn)證碼圖片來測試,觀察結(jié)果,發(fā)現(xiàn)這類簡單的驗(yàn)證碼基本可以進(jìn)行快速識(shí)別。但也有部分結(jié)果有問題——字母大小寫沒有進(jìn)行區(qū)分(比如第6張圖片)。
總而言之,如果你需要進(jìn)行驗(yàn)證碼識(shí)別,且對(duì)精度要求不是過高。
那么,帶帶弟弟OCR(ddddocr)這個(gè)庫是一個(gè)不錯(cuò)的選擇~