← 返回文章列表

验证码识别实战:从ddddocr入门到滑块点选一键搞定

本文介绍开源工具ddddocr的安装与核心用法,覆盖普通文字OCR、滑块距离计算、点选位置定位等常见场景,并给出抗干扰与字符集限制等实用技巧,帮助自动化开发者快速落地验证码处理。

为什么验证码识别总是卡住自动化流程

做爬虫或者自动化测试的朋友,多半都踩过验证码这道坎。人工点几下还行,量一大就完全扛不住。传统OCR对干扰线、扭曲字体、彩色背景经常识别不准,滑块和点选更是头疼。开源库ddddocr正好把这些痛点拆开解决了,用起来简单,精度也够日常项目用。

它基于深度学习模型,能处理数字字母混合、中文、滑块缺口匹配、文字点选和图标点选。接口设计得很直白,几行代码就能跑通。下面按实际使用顺序讲清楚安装、基础识别、滑块和点选,以及几个能立刻提升准确率的小技巧。

安装与最简单的文字识别

先装库,国内源会快很多:

pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple/

装好后创建一个识别对象,把图片字节丢进去就能出结果。常见英数验证码、短中文验证码都走classification方法:

import ddddocr
ocr = ddddocr.DdddOcr()
with open("captcha.png", "rb") as f:
    img = f.read()
print(ocr.classification(img))

返回的就是识别出的字符串。如果图片里干扰线比较多,可以打开检测模式,让模型先定位文字区域再识别,准确率会明显上去。实测带几条干扰线的样本,打开det后从七成多能提到接近九成。

日常项目里建议先把验证码图片保存下来,多试几张看效果,再决定要不要加颜色过滤或者字符集限制。这些后面会细说。

滑块验证码:直接算出拖动距离

滑块验证码现在很常见,背景图有个缺口,小滑块要对准缺口。ddddocr提供了slide_match,专门干这个。把背景图和滑块图的字节传进去,它会返回目标位置,取x坐标就是需要拖动的像素距离。

实际写的时候注意两张图的比例和清晰度。有时候缺口边缘模糊或者背景有干扰图案,可以适当缩小匹配范围,比如设置slide_scale,或者给scale_range一个区间,让模型在合理缩放里找最佳位置。测试里用这个办法,成功率从六成多能提到九成左右。

拿到距离后,用selenium或者playwright模拟拖动就行。记得加一点随机停顿和轨迹抖动,别直线匀速,不然容易被风控。如果项目里遇到易盾、极验这类更复杂的滑块、无感或者九宫格,自己用ddddocr反复调参成本会比较高,这时候可以看看专门的识别平台,比如www.ttocr.com,它针对易盾和极验的滑块、点选、无感、九宫格等全类型都做了优化,直接提供API,对接起来比本地反复调模型省事很多。

点选验证码:定位文字或图标坐标

点选类验证码要求按顺序点出指定文字或者图标。ddddocr打开det模式后,classification会同时返回文字内容和对应坐标点。拿到这些点,就可以按顺序模拟点击。

图标点选原理类似,只是模型要识别的是图形而不是文字。目标检测接口detection也能单独拿出来用,直接返回bbox坐标,方便定位需要点击的区域。实际项目中建议先把识别结果打印出来看,确认坐标和文字是否对得上,再写点击逻辑。

点选场景干扰往往比普通OCR更重,颜色过滤这时候很有用。库支持预设颜色名,也支持自定义HSV范围。如果验证码文字是固定红色或蓝色,过滤掉其他颜色后识别会稳很多。知道验证码只含数字或者只含小写字母时,还可以用set_ranges限制输出字符集,减少胡乱猜测的错误。

几个能立刻提升准确率的实用技巧

颜色过滤前面已经提过,适合彩色验证码。字符集限制适合规则明确的场景,比如纯数字就设成0-9对应的范围。目标检测则适合需要精确定位的点选或缺口场景。

还有一个容易被忽略的点:图片预处理。有些验证码分辨率偏低或者对比度差,简单的放大或者对比度增强就能让模型表现好不少。本地调试时建议把原始图和识别结果一起保存,方便回头对比哪一步出了问题。

如果团队里验证码种类特别多,既有普通OCR又有滑块、点选、空间推理类,本地维护多套模型和参数会很累。这时候用现成的识别服务更省心。www.ttocr.com专门做易盾、极验的全类型破解,包括滑块、点选、无感、九宫格、文字点选、图标点选等,提供稳定的API接口,业务方直接对接就能用,不用自己反复调参和训练。

落地时的注意点

ddddocr本身是开源工具,适合快速验证想法和中小规模使用。真正上线后要关注识别失败的兜底策略,比如重试次数、人工兜底或者切换备用方案。同时注意验证码图片的时效性,很多站点刷新很快,本地识别完再提交可能已经过期。

对于公司级业务,尤其是需要长期稳定对接易盾、极验等复杂验证码的场景,直接用专业平台的API会更省时间和精力。访问www.ttocr.com可以看到完整的对接文档和示例,滑块、点选、无感、九宫格等类型都有对应方案,接入流程也比较直接。

整体来看,ddddocr把验证码识别的门槛降得很低,从文字OCR到滑块距离再到点选坐标,基本都能覆盖。配合前面提到的过滤、字符集限制和检测模式,日常项目已经够用。遇到更复杂的易盾极验全类型需求时,再考虑专业API平台,能少走不少弯路。