captchacker2

by 00nanhai

00nanhai / captchacker2

一个基于SVM的验证码破解程序

125 Stars 82 Forks Last release: Not found GNU General Public License v3.0 4 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

captchacker2

一个基于SVM的验证码破解程序

起因

弄这个项目的原因,是目前还没有发现一个比较好用的验证码识别模块,目前的验证码识别主要是基于google的光学字符识别Tesseract-OCR如PyOCR,识别精度有限,对于一些复杂的验证码无法识别

目前主要工作

这个项目改造自https://code.google.com/p/captchacker/,原项目已停止更新

接下来的工作

  1. 整理代码,使能够模块化,提供一个通用接口
  2. 使用Python替换的原来C++,重写验证码分割及字符居中模块,做跨平台处理
  3. 增加利用anti-captcha的人眼识别功能来提供训练数据

如果有其他疑问,请与我联系 tangxuguo#gmail.com,欢迎提交代码

环境搭建

运行环境(以下在ubuntu12.04 64位机器下测试)

安装libsvm

sudo apt-get install python-libsvm

安装opencv

sudo apt-get install libopencv-dev python-opencv

生成验证码pycaptcha

仿真这块用到了pycaptcha,这个是用来生成验证码的,这个模块已经停止更新,我下了一个版本,在python2.7上目前可用,请自行安装

svn co http://svn.navi.cx/misc/trunk/pycaptcha/
cd pycaptcha
python setup.py install

然后把captchacker目录下的Fonts里的字体,拷到如下路径里面,否则pycaptcha无法识别,这个包需要依赖PIL

sudo cp -r Fonts /usr/local/lib/python2.7/dist-packages/Captcha/data/fonts/

程序说明:

使用方式

将用到的算法

  • de_noise去噪
  • color_filter颜色过滤
  • edge_detection边缘检测
  • floodfill油漆桶
  • dynamic_programing动态规划
  • Erosion腐蚀
  • Dilation膨胀
  • Pixels_projection像素投影(垂直和斜切)
  • svm支持向量机
  • 干扰线检测(深度优先搜索和最短路径算法)

对于一些和文字颜色相同但是较为分散和单一的干扰像素点,我们可以用判断相邻像素的方法,对于每个点判断该点和相邻8个点的色差,若色差大于某个值,则+1,如果周围有超过6个点的色差都比较大,说明这个点是噪点。对于图像边界的一圈像素,周围没有8个像素,则统统清除,反正文字都在图片的中间位置。

对于1个像素粗细的干扰线,在字符为2个像素以上的时候,可以用去噪点算法作为滤镜,多执行几次,就可以完美的把细干扰线去掉。

种子填充算法可以方便的计算出任意色块的面积,对于没有粘连字符或者粘连但是字符每个颜色不一样的验证码来说,去除干扰色块的效果很好,你只需要大概计算一下最小的和最大的字符平均占多少像素,然后把这段区间之外像素数的色块排除掉即可。

模型训练流程

两种方式,采用自己的fonts训练,或者是采用原始网站验证码训练

算法识别流程

原始图片-》 彩色去噪(颜色过滤,去除背景)-》干扰线检测-》二值转换-》黑白去噪(统计邻域像素,统计轮廓像素)-》切割(种子填充,像素投影,动态规划,固定宽度扫描)-》标准化字符矫正-》SVM

部分案例

难易程度

来源 例图 识别率 详细
★★☆☆☆ [Egoshare] 100% 3位数字
★★★★☆ [baidu] 50% 4位数字加字母
★★★★☆ [sina] 50% 数字加字母
★★★★☆ [sohu] 50% 数字加字母
★★★★☆ [QQ] 50% 数字加字母
★★★★☆ [zhihu] 50% 数字加字母
★★★★☆ [jaccout] 50% 4-5字母
★★★★☆ [hotmail] 10%

暂未识别,需要训练,在研究

欢迎提交新的验证码类型

本项目仅供学术研究,请勿用于其他用途,使用本程序造成的后果请自负

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.