python 验证码识别库_python验证码识别
写爬虫有一个绕不过去的问题就是验证码,现在验证码分类大概有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验证码识别相关推荐
- python验证码识别库_Python验证码识别
注意:若使用云服务器 (Windows Server版) 遇到闪退,请按照步骤:我的电脑--属性--管理--添加角色和功能--勾选桌面体验,点击安装,安装之后重启即可. 2020/06/01编外: 想 ...
- 基于Python的开源人脸识别库:离线识别率高达99.38%
基于Python的开源人脸识别库:离线识别率高达99.38% 2019年04月18日 18:13:18 AI终结者 阅读数 1233 项目地址:https://github.com/ageitgey/ ...
- Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%
Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38% 仅用 Python 和命令行就可以实现人脸识别的库开源了.该库使用 dlib 顶尖的深度学习人脸识别技术构建 ...
- python人脸识别库_基于Python的face_recognition库实现人脸识别
Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...
- python文字识别库_python做文字识别一行代码都不用!
今天,我们用Python实现对图像文字的识别,很简单!利用的库是pillow和pytesseract.pytesseract需要从网上下载,也很方便. 学习Python中有不明白推荐加入交流群 号:9 ...
- python颜色的字母代码_python字母识别
广告关闭 提供包括云服务器,云数据库在内的50+款云计算产品.打造一站式的云产品试用服务,助力开发者和企业零门槛上云. 最后识别每个字符. 图片的处理,我采用 python 标准图像处理库 pil. ...
- python开源人脸识别库识别率达99_Python的开源人脸识别库:离线识别率高达99.38%...
本文的模型使用了C++工具箱dlib基于深度学习的最新人脸识别方法,基于户外脸部数据测试库Labeled Faces in the Wild 的基准水平来说,达到了99.38%的准确率. 数据测试库L ...
- Python的开源人脸识别库:离线识别率高达99.38%【源码】
以往的人脸识别主要是包括人脸图像采集.人脸识别预处理.身份确认.身份查找等技术和系统.现在人脸识别已经慢慢延伸到了ADAS中的驾驶员检测.行人跟踪.甚至到了动态物体的跟踪.由此可以看出,人脸识别系统已 ...
- python ocr识别库_轻松识别文字,这款Python OCR库支持超过80种语言
OCR是什么? 有一款软件叫扫描全能王,想必一些小伙伴听过,这是一个OCR集成软件,可以将图像内容扫描成文字. 所以说,OCR作用是对文本资料的图像文件进行分析识别处理,获取文字及版面信息. OCR的 ...
最新文章
- python操作excel之 模块 xlrd (详解)
- Java导入导出CSV文件
- VTK:图表之TreeBFSIterator
- 项目--properties--Builder;MyEclipse---project---clean---指定项目
- Excel中这四个常出错的地方,你一定中过!
- IDEA 搭建 SpringBoot + Maven + Oracle + Hibernate 项目框架
- Python3 sorted() 与sort()函数
- 谈一下“男”字“,女”字,怎样解析?
- 软件过程改进杂谈 00.序
- [Err] 1136 - Column count doesn't match value count at row 35
- 问道linux一键端,问道手游源码打包一键端搭建_附教程
- OJDBC版本区别nbsp;[ojdbc14.jar…
- linux 命令打印,Linux终端打印命令使用介绍
- 矩阵分析之 实矩阵分解(3)Cholesky分解
- NetVLAD: CNN architecture for weakly supervised place recognition 翻译
- 电脑屏幕键盘关闭方法
- 第四章——软件测试流程和规范
- Android平台App进程优先级
- WarGame bandit
- 机器学习-33-Anomaly Detection(异常侦测)
热门文章
- 2021-06-14Leetcode4.寻找两个正序数组的中位数
- Tomcat架构解析之DefaultServlet和JspServlet
- 教师计算机培训网站,教师计算机培训材料..pdf
- 谭晓生:人工智能时代的网络安全新发展
- 2021-11-14剑指OfferII014.字符串中的变位词
- 计算机管理中用户密码不能关闭,关于计算机密码我想知道XP控制面版里的管理员密码设置完也就是开机 爱问知识人...
- 一文讲透静电放电(ESD)保护(转发)
- 沙发的故事——人才的价值在于贡献度?
- 游戏程序员谈GameAI
- 乐华阅卷系统打不开服务器,乐华网上阅卷系统1.0操作手册.doc