项目简介
ddddocr(带带弟弟 OCR)是由 sml2h3 开发的一款开源通用验证码离线本地识别 SDK。它专注于解决验证码识别场景,支持包括数字、字母、中文在内的大多数常见验证码类型,以及滑块验证码的目标检测与边缘匹配。项目完全离线运行,无需调用任何第三方在线 API,在爬虫、自动化测试和安全渗透领域有着广泛的应用。
GitHub 数据
- 仓库地址: sml2h3/ddddocr
Stars: 14,265 Forks: 2,283 - License: MIT
- 主要语言: Python
- 最后更新: 2024 年(活跃维护中)
- 定位: 通用验证码离线本地识别 SDK,支持多种验证码 OCR 识别
核心功能
- 基础 OCR 识别:支持数字+字母混合验证码、纯中文验证码识别,开箱即用
- OCR 概率输出:可输出识别结果的置信度概率,便于做二次校验
- 自定义字符范围:限制识别字符集(如仅数字),提高特定场景准确率
- 目标检测:基于目标检测模型定位验证码中的特定元素(如点击式验证码的图标)
- 滑块验证码:支持边缘匹配和图像差异比较两种滑块验证码破解方式
- 自定义模型导入:允许用户训练和导入自己的 OCR 模型
- 多线程批处理:支持批量识别和多线程并行处理,提升吞吐量
技术栈
- Python:主开发语言,提供 Pythonic 的 API
- PyTorch / ONNX:深度学习推理框架,ONNX 导出保证跨平台兼容
- OpenCV:图像预处理(灰度化、二值化、降噪等)
- Docker:提供容器化部署方案
安装与使用
pip install ddddocr
基础使用:
import ddddocr
ocr = ddddocr.DdddOcr()
with open('captcha.png', 'rb') as f:
image = f.read()
result = ocr.classification(image)
print(result) # 输出验证码文本
滑块验证码识别:
det = ddddocr.DdddOcr(det=False, ocr=False)
with open('target.png', 'rb') as f:
target_bytes = f.read()
with open('background.png', 'rb') as f:
background_bytes = f.read()
res = det.slide_match(target_bytes, background_bytes)
print(res) # 输出滑块偏移坐标
适用场景
- 爬虫工程:批量数据采集时自动处理验证码拦截
- Web 自动化测试:Selenium/Playwright 集成,自动填写验证码
- 安全渗透测试:验证码绕过能力验证与自动化攻击测试
- 数据采集系统:配合代理池实现大规模无间断采集
竞品对比
| 对比项 | ddddocr | 超级鹰/YesCaptcha | TesserOCR | PaddleOCR |
|---|---|---|---|---|
| 运行方式 | 离线本地 | 在线 API | 离线 | 离线 |
| 费用 | 免费 | 按次收费 | 免费 | 免费 |
| 验证码优化 | 深度优化 | 支持 | 未优化 | 通用场景 |
| 中文支持 | 最佳 | 一般 | 一般 | 优秀 |
| 部署体积 | 轻量 | N/A | 中等 | 较大 |
参考资料
- GitHub 仓库: https://github.com/sml2h3/ddddocr
- PyPI: https://pypi.org/project/ddddocr/
- ONNX Runtime: https://onnxruntime.ai/
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/sec/ddddocr.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)