写爬虫有一个绕不过去的问题就是验证码,现在验证码分类大概有4种:图像类

滑动类

点击类

语音类

今天先来看看图像类,这类验证码大多是数字、字母的组合,国内也有使用汉字的。在这个基础上增加噪点、干扰线、变形、重叠、不同字体颜色等方法来增加识别难度。

相应的,验证码识别大体可以分为下面几个步骤:灰度处理

增加对比度(可选)

二值化

降噪

倾斜校正分割字符

建立训练库

识别

由于是实验性质的,文中用到的验证码均为程序生成而不是批量下载真实的网站验证码,这样做的好处就是可以有大量的知道明确结果的数据集。

当需要真实环境下需要获取数据时,可以使用结合各个大码平台来建立数据集进行训练。

生成验证码这里我使用 Claptcha 这个库,当然 Captcha 这个库也是个不错的选择。

为了生成最简单的纯数字、无干扰的验证码,首先需要将claptcha.py的285行_drawLine做一些修改,我直接让这个函数返回None,然后开始生成验证码:

这里需要注意ubuntu的字体路径,也可以在网上下载其他字体使用。生成验证码如下:

可以看出,验证码有形变。对于这类最简单的验证码,可以直接使用谷歌开源的tesserocr来识别。

首先安装:

然后开始识别:

可以看出,对于这种简单的验证码,基本什么都不做识别率就已经很高了。有兴趣的小伙伴可以用更多的数据来测试,这里我就不展开了。

接下来,在验证码背景添加噪点来看看:

生成验证码如下:

识别:

效果还可以。接下来生成一个字母数字组合的:

生成验证码如下:

第3个为小写字母o,第4个为大写字母O,第5个为数字0,第6个为小写字母z,第7个为大写字母Z,最后一个是数字2。人眼已经跪了有木有!但现在一般验证码对大小写是不做严格区分的,看自动识别什么样吧:

人眼都跪的计算机当然也废了。但是,对于一些干扰小、形变不严重的,使用tesserocr还是十分简单方便的。然后将修改的claptcha.py的285行_drawLine还原,看添加干扰线的情况。

加了条干扰线就完全识别不出来了,那么有没有什么办法去除干扰线呢?

虽然图片看上去是黑白的,但还需要进行灰度处理,否则使用 load() 函数得到的是某个像素点的RGB元组而不是单一值了。处理如下:

处理后的图片如下:

可以看出处理后图片锐化了很多,接下来尝试去除干扰线,常见的4邻域、8邻域算法。所谓的X邻域算法,可以参考手机九宫格输入法,按键5为要判断的像素点,4邻域就是判断上下左右,8邻域就是判断周围8个像素点。如果这4或8个点中255的个数大于某个阈值则判断这个点为噪音,阈值可以根据实际情况修改。

处理后的图片如下:

好像……根本没卵用啊?!确实是这样的,因为示例中的图片干扰线的宽度和数字是一样的。对于干扰线和数据像素不同的,比如Captcha生成的验证码:

从左到右依次是原图、二值化、去除干扰线的情况,总体降噪的效果还是比较明显的。另外降噪可以多次执行,比如我对上面的降噪后结果再进行依次降噪,可以得到下面的效果:

再进行识别得到了结果:

另外,从图片来看,实际数据颜色明显和噪点干扰线不同,根据这一点可以直接把噪点全部去除,这里就不展开说了。

感谢 大家转发 关注

python 验证码识别库_python验证码识别相关推荐

  1. python验证码识别库_Python验证码识别

    注意:若使用云服务器 (Windows Server版) 遇到闪退,请按照步骤:我的电脑--属性--管理--添加角色和功能--勾选桌面体验,点击安装,安装之后重启即可. 2020/06/01编外: 想 ...

  2. 基于Python的开源人脸识别库:离线识别率高达99.38%

    基于Python的开源人脸识别库:离线识别率高达99.38% 2019年04月18日 18:13:18 AI终结者 阅读数 1233 项目地址:https://github.com/ageitgey/ ...

  3. Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%

    Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38% 仅用 Python 和命令行就可以实现人脸识别的库开源了.该库使用 dlib 顶尖的深度学习人脸识别技术构建 ...

  4. python人脸识别库_基于Python的face_recognition库实现人脸识别

    Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...

  5. python文字识别库_python做文字识别一行代码都不用!

    今天,我们用Python实现对图像文字的识别,很简单!利用的库是pillow和pytesseract.pytesseract需要从网上下载,也很方便. 学习Python中有不明白推荐加入交流群 号:9 ...

  6. python颜色的字母代码_python字母识别

    广告关闭 提供包括云服务器,云数据库在内的50+款云计算产品.打造一站式的云产品试用服务,助力开发者和企业零门槛上云. 最后识别每个字符. 图片的处理,我采用 python 标准图像处理库 pil. ...

  7. python开源人脸识别库识别率达99_Python的开源人脸识别库:离线识别率高达99.38%...

    本文的模型使用了C++工具箱dlib基于深度学习的最新人脸识别方法,基于户外脸部数据测试库Labeled Faces in the Wild 的基准水平来说,达到了99.38%的准确率. 数据测试库L ...

  8. Python的开源人脸识别库:离线识别率高达99.38%【源码】

    以往的人脸识别主要是包括人脸图像采集.人脸识别预处理.身份确认.身份查找等技术和系统.现在人脸识别已经慢慢延伸到了ADAS中的驾驶员检测.行人跟踪.甚至到了动态物体的跟踪.由此可以看出,人脸识别系统已 ...

  9. python ocr识别库_轻松识别文字,这款Python OCR库支持超过80种语言

    OCR是什么? 有一款软件叫扫描全能王,想必一些小伙伴听过,这是一个OCR集成软件,可以将图像内容扫描成文字. 所以说,OCR作用是对文本资料的图像文件进行分析识别处理,获取文字及版面信息. OCR的 ...

最新文章

  1. python操作excel之 模块 xlrd (详解)
  2. Java导入导出CSV文件
  3. VTK:图表之TreeBFSIterator
  4. 项目--properties--Builder;MyEclipse---project---clean---指定项目
  5. Excel中这四个常出错的地方,你一定中过!
  6. IDEA 搭建 SpringBoot + Maven + Oracle + Hibernate 项目框架
  7. Python3 sorted() 与sort()函数
  8. 谈一下“男”字“,女”字,怎样解析?
  9. 软件过程改进杂谈 00.序
  10. [Err] 1136 - Column count doesn't match value count at row 35
  11. 问道linux一键端,问道手游源码打包一键端搭建_附教程
  12. OJDBC版本区别nbsp;[ojdbc14.jar…
  13. linux 命令打印,Linux终端打印命令使用介绍
  14. 矩阵分析之 实矩阵分解(3)Cholesky分解
  15. NetVLAD: CNN architecture for weakly supervised place recognition 翻译
  16. 电脑屏幕键盘关闭方法
  17. 第四章——软件测试流程和规范
  18. Android平台App进程优先级
  19. WarGame bandit
  20. 机器学习-33-Anomaly Detection(异常侦测)

热门文章

  1. 2021-06-14Leetcode4.寻找两个正序数组的中位数
  2. Tomcat架构解析之DefaultServlet和JspServlet
  3. 教师计算机培训网站,教师计算机培训材料..pdf
  4. 谭晓生:人工智能时代的网络安全新发展
  5. 2021-11-14剑指OfferII014.字符串中的变位词
  6. 计算机管理中用户密码不能关闭,关于计算机密码我想知道XP控制面版里的管理员密码设置完也就是开机 爱问知识人...
  7. 一文讲透静电放电(ESD)保护(转发)
  8. 沙发的故事——人才的价值在于贡献度?
  9. 游戏程序员谈GameAI
  10. 乐华阅卷系统打不开服务器,乐华网上阅卷系统1.0操作手册.doc