php培训

新闻中心

行业资讯

Python 只需20行代码即可实现验证码识别
2018-04-19 09:44| | 打印|

       

  识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域

  简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。计算机涉及到的几何图形处理一般有2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正。对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等。

  在破解验证码中需要用到的知识一般是像素,线维图形元素的处理和色差分析。常见工具为:

  

  Max和其他版本的Linux可以直接使用easy_install或pip安装,安装前需要把编译环境装好:

  注:官网提供的安装包是32位的,64位系统请前往这里下载替代包pillow。

  所谓降噪就是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵最好。

  对于彩色背景的验证码:每个像素都可以放在一个5维的空间里,这5个维度分别是,X,Y,R,G,B,也就是像素的坐标和颜色,在计算机图形学中,有很多种色彩空间,最常用的比如RGB,印刷用的CYMK,还有比较少见的HSL或者HSV,每种色彩空间的维度都不一样,但是可以通过公式互相转换。在RGB空间中不好区分颜色,可以把色彩空间转换为HSV或HSL。色彩空间参见

  

  

  二值化是图像分割的一种常用方法。在二值化图象的时候把大于某个临界灰度值的像素灰度设为灰度极大值,把小于这个值的像素灰度设为灰度极小值,从而实现二值化(一般设置为0-1)。根据阈值选取的不同,二值化的算法分为固定阈值和自适应阈值,这里选用比较简单的固定阈值。

  把像素点大于阈值的设置,1,小于阈值的设置为0。生成一张查找表,再调用point()进行映射。

  

  识别验证码的重点和难点就在于能否成功分割字符,对于颜色相同又完全粘连的字符,比如google的验证码,目前是没法做到5%以上的识别率的。不过google的验证码基本上人类也只有30%的识别率。本文使用的验证码例子比较容易识别。可以不用切割,有关图片切割的方法参见这篇博客:

  pytesser是谷歌OCR开源项目的一个模块,在python中导入这个模块即可将图片中的文字转换成文本。

  安装pytesser,下载地址:,下载后直接将其解压到项目代码下,或者解压到python安装目录的Libsite-packages下,并将其添加到path环境变量中,不然在导入模块时会出错。

  pytesser提供了两种识别图片方法,通过image对象和图片地址,代码判断如下:

  文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

  诞生之初用来作为配置管理语言的Python,现在已经成为最流行的编程语言之一,尤其是随着AI应用的兴....

  uri指请求中不包含参数的部分; request_uri指原始的请求,包含参数或者无参数; args....

  本系列是为了剖析crt库中intel模块下的那些函数的,那么我们去找找那里面有没有strlen的实现....

  另一个原因是我们可以将 Python 用在很多地方:数据科学、Web 开发和机器学习等都可以使用 P....

  Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言、并集成面向....

  目前常见的Wi-Fi加密方式有WEP、WPA2和WPS(链接为各自的破解方式),不过有网友反映以往破....

  后端使用字典进行缓存,使用缓存管理轻松访问多个缓存对象,当使用模块级缓存对象,重构运行时的缓存设置.....

  我个人超级喜欢 Matthew Inman 的漫画。它们在疯狂搞笑的同时,却又发人深省。但是,我很厌....

  BCD码是一种十进制数的二进制代码,其中每个数都用特定的位来表示,通常是4位或8位,这与人类计算的方....

  上述每一个功能列表都是经过多次实践出来的需求,虽然不是非常完美,但是如果不是刻意来逃避日志记录的话,....

  协程的优点:(1)无需线程上下文切换的开销,协程避免了无意义的调度,由此可以提高性能(但也因此,程序....

  Python的用途十分广泛,不同的程序员将其用于不用的领域,不同的程序员将自己的代码打包成库,供其他....

  随着Python在企业中的应用越来越多,岗位需求越来越大,面试成为了搞定优质职位的快速方式,下面是笔....

  SPI连接的是型号为BMI160的六轴加速度计和陀螺仪传感器。具体是如何通过寄存器的读取加速度值的我....

  本文开始对Python的概念以及Python的特点进行了介绍,其次介绍了Python搭建开发环境与应....

  搜索是大数据领域里常见的需求。Splunk和ELK分别是该领域在非开源和开源领域里的领导者。本文利用....

  Python 以其简单易懂的语法格式与其它语言形成鲜明对比,初学者遇到最多的问题就是不按照 Pyth....

  在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是....

  本文介绍了如何在树莓派上,使用 OpenCV 和 Python 完成人脸检测项目。该项目不仅描述了识....

  NumPy系统是Python的一种开源的数值计算扩展,它也是是Python数据分析必不可少的第三方库....

  将原本几天乃至几周的过程缩短为几分钟,大幅提高生产力,超越Caffe2+cuBLAS

  8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。在这种编码方式中每一位二值代码的1....

  2017年被称为中国人工智能元年——在两会期间,人工智能技术已经成为国家战略,同时被写进政府报告。在....

  以下列出了学习 Python 时犯的三种错误: 1.可变数据类型作为函数定义中的默认参数 2.可....

  HEVC编码框架与H.26X标准的编码框架类似,均采用基于块的混合模型。HEVC编码单元的概念和作用....

  包管理是python这个Get的重要部分。本文介绍了Python的各个包管理工具之间的关系,相信通过....

  在这篇教程中,你将用Python完成你的第一个机器学习项目: 1.下载并安装Python SciP....

  Python已经成为漏洞开发领域的行业标准,读者会发现大多数概念验证工具都是用Python语言编写的....

  php的正式环境部署非常简单,改几个文件就OK,用FastCgi方式也是分分钟的事情。相比起来,Py....

  这不Github上一位大神就把 Python 3 的几乎所有语法重点都整理到了一张图上,对于有编程基....

  在python世界,拥有一个永恒的道,那就是“type”,请记在脑海中,type就是道。如此广袤无垠....

  作为一名程序员或者准程序员,对于面向对象编程简直熟悉的不能再熟悉。作为当今最流行的编程思想之一(或许....

  栈(stack)又称之为堆栈是一个特殊的有序表,其插入和删除操作都在栈顶进行操作,并且按照先进后出,....

  在本文中,我们将介绍那些用于 AI 开发的高质量库,并谈谈它们的优缺点,以及特性。

  我们知道,任何编程语言编写的程序归根到底都是由底层机器的机器代码(01序列)执行的,无论是编译型语言....

  为什么要挑战自己在代码里不写for loop?因为这样可以迫使你去使用比较高级、地道的语法或库。本文....

  本文介绍机器学习中一种基于概率的常见的分类方法,朴素贝叶斯,之前介绍的KNN, decision t....

  用深度学习模型——Mask R-CNN,自动从视频中制作目标物体的GIF动图。

  本文主要介绍了Python编程实现蚁群算法详解,涉及蚂蚁算法的简介,主要原理及公式,以及Python....

  简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行。Python中....

  ngxtop是用python开发的一款监控nginx访问日志的工具, 它可以实时动态地查看访问....

  随着大数据概念的火热,啤酒与尿布的故事广为人知。我们如何发现买啤酒的人往往也会买尿布这一规律?数据挖....

  异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误....

  我发现自己在学习mock的过程中遇到的主要困难是不清楚mock能做什么,而不是mock对象到底有哪些....


版权所有:PHP教程,株洲PHP培训,IT培训机构|
扫描二维码
关注PHP培训
官方微信
返回顶部