OCR 识别图形验证码
从基础预处理到PaddleOCR/Selenium 4 自动化全流程(2024版)
1. 验证码技术概述
随着网络安全意识的提升,各类网站的反爬虫体系迭代越来越快——验证码(CAPTCHA) 作为第一道「人机鉴别门」,技术形态也早已跳出了纯字符组合的范畴:
- 初代基础款:纯数字/纯字母/大小写混排,无明显干扰
- 轻量增强款:加入倾斜、旋转、干扰点线、随机背景
- 中文本地化款:使用常用汉字/生僻汉字,或加汉字组语义干扰
- 行为复杂款:如12306的「点选同类物体」「点击文字补全诗句」
- AI 辅助交互款:滑动拼图(含缺口检测)、轨迹识别验证
本次教程聚焦于前三种纯静态图形验证码的通用识别方案,复杂交互验证码将单独撰文分享。
2. 图形验证码识别技术基础
2.1 OCR 技术选型参考
OCR(光学字符识别)的核心是把图像中的「视觉文字信息」转成「可编辑文本数据」。2024年做轻量级爬虫,没必要从零搭模型,这几个方案按易用性→准确率→成本排序即可:
2.2 轻量级开发环境准备
Python 3.9+ 是目前爬虫+OCR的稳定组合,依赖库按方案拆分安装:
通用依赖(必装)
方案1:Tesseract 练手依赖
方案2:PaddleOCR 实战推荐依赖
3. 验证码识别全流程实战
3.1 热身:直接用 Tesseract 识别「无干扰基础款」
基础款验证码甚至不需要预处理,但识别率会受字体倾斜/颜色影响:
3.2 关键步骤:OpenCV 验证码预处理(适配轻量增强款)
轻量增强款的核心干扰是「背景噪点/线」「颜色混乱」——预处理的目标就是把文字和背景彻底分离,只保留「清晰的黑白文字块」:
3.3 2024 实战首选:PaddleOCR 识别带预处理的验证码
PaddleOCR 的预训练模型已经覆盖了中英文/常见干扰的场景,配合预处理准确率能到90%以上:
4. 自动化登录实战(Selenium 4 + PaddleOCR)
以「scrape.center」的模拟登录验证码网站为例,把整个流程串起来:
5. 轻量级反反爬技巧(2024更新)
识别验证码只是第一步,还要避免被网站的「其他反爬虫规则」封掉:
- 随机延迟:所有操作都加
random.uniform(a, b)延迟,不要毫秒级执行 - IP轮换:如果频繁请求,用免费/付费代理池(推荐付费,免费的可用性太低)
- 验证码错误重试:PaddleOCR 也不是100%准确,加个3-5次的重试逻辑
- 减少请求频率:如果是批量爬取,控制在每分钟10-20次以内
6. 总结与展望
本次教程分享了2024年轻量级爬虫识别纯静态图形验证码的全流程最佳实践——配合OpenCV预处理+PaddleOCR预训练模型,大部分网站的轻量增强/中文验证码都能搞定。
如果遇到特别复杂的验证码(比如生僻字密集、扭曲变形严重),可以:
- 尝试百度/腾讯的商业API
- 收集该网站的验证码数据,训练专用的小样本模型
参考资料:

