煩人的驗證碼破解,ddddocr 超好用Python 套件工具使用方式
煩人的驗證碼破解,ddddocr 超好用Python 套件工具使用方式
零、前言
寫爬蟲最討厭就是遇到各種驗種碼的機制,往往最難處理的都不是資料本身,而是如何繞過層層防護網,在傳統因應做法上,除了透過一般OCR工具自行辨識,可能就是透過像是 2Captcha 這類線上「人肉驗證碼破解」的方式來處理,但這終究還是讓人覺得有點沒效率。
最近在網路上找到一個蠻厲害的驗證碼辨識工具—ddddocr,可以直接透過深度學習預訓練好的模型進行辨識,並且具備一定的通用性,以下就來介紹其相關使用方式吧!
一、ddddocr 基本介紹
GitHub - sml2h3/ddddocr: 带带弟弟 通用验证码识别OCR pypi版
專案連結在此,此套件目標是成為「通用型」的驗證碼識別套件,可以應付大部分的驗證碼方式,包含但不僅限:
- 文字驗證碼
- 數字驗證碼
- 文字點選驗證碼
- 滑動方塊驗證碼
因為是基於深度學習模型所做的辨識套件,因此就會有一定機率的辨識錯誤,但在驗證碼的處理上,其實只要重新整理,再辨識一次,就有大概率重整到模型可以辨識通過的結果。
二、套件基礎用法示範
基本流程概念:
- 取得驗證碼圖片檔
- 圖片檔匯入 model 進行辨識
- 將回傳結果輸入驗證碼輸入框,Done!
以下針對我們最常遇到的文字驗證碼進行辨識示範~~~~
基礎 OCR 辨識:
我們以證交所買賣日報表查詢網站驗證碼為例:
- 先觀察網站的 html 結構,可以找到驗證碼圖片的下載網址
- 載下圖片後,即可進行辨識
- 使用下面程式碼進行圖片辨識
- 最後輸出結果即為「驗證碼文字」
- 將文字輸入回網站
1
2
3
4
5
6
7
8
9
import ddddocr
# 建立OCR物件
ocr = ddddocr.DdddOcr()
# 先把驗證碼圖片下載下來,再讀檔
image = open("example.jpg", "rb").read()
result = ocr.classification(image)
print(result)
從結果可以看到,ddddocr 的辨識度很高,自己實際測試,10 張驗證碼圖片的準確度基本上可以達到約 80%~90% 左右,這對於一般爬蟲程式來說,已經非常夠用。
更多驗證碼示範可以參考專案中的範例,這邊不多示範。
三、結語
這工具是自己試過許多驗證碼處理工具後,目前認為最好使用的,但驗證碼種類繁多,其實這應該也無法一套打天下,還是要 case by case 處理,如果有網友知道別種更有用的工具,也歡迎留言處分享,互相交流!
四、其他好用教學
- 透過 Excel VBA 串接 ddddocr 處理網路驗證碼問題
带带弟弟OCR,纯VBA本地获取网络验证码整体解决方案-Excel VBA程序开发-ExcelHome技术论坛 -
- ddddocr Rust 版本
- ddddocr 部署 fastapi 服務
GitHub - sml2h3/ddddocr-fastapi: 使用ddddocr的最简api搭建项目,支持docker
本文章以 CC BY 4.0 授權