美文网首页虫虫python_pycham爬东东
python爬虫高级技术:破解验证码

python爬虫高级技术:破解验证码

作者: 9ba4bd5525b9 | 来源:发表于2019-04-10 14:48 被阅读131次

    验证码探究

    如果你是一个数据挖掘爱好者,那么验证码是你避免不过去的一个天坑,和各种验证码斗争,必然是你成长的一条道路,接下来的几篇文章,我会尽量的找到各种验证码,并且去尝试解决掉它,中间有些技术甚至我都没有见过,来吧,一起Coding吧

    数字+字母的验证码

    我随便在百度图片搜索了一个验证码,如下

    今天要做的是验证码识别中最简单的一种办法,采用pytesseract解决,它属于Python当中比较简单的OCR识别库

    库的安装

    使用pytesseract之前,你需要通过pip 安装一下对应的模块 ,需要两个

    pytesseract库还有图像处理的pillow库了

    pip install pytesseract

    pip install pillow

    pillow库的基本操作

    Filter

    Format

    format属性定义了图像的格式,如果图像不是从文件打开的,那么该属性值为None;

    size属性是一个tuple,表示图像的宽和高(单位为像素);

    mode属性为表示图像的模式,常用的模式为:L为灰度图,RGB为真彩色,CMYK为pre-press图像。如果文件不能打开,则抛出IOError异常。

    验证码识别

    注意安装完毕,如果还是报错,请找到模块 pytesseract.py 这个文件,对这个文件进行编辑

    一般这个文件在C:\Program Files\Python36\Lib\site-packages\pytesseract\pytesseract.py位置

    文件中 tesseract_cmd = 'tesseract' 改为自己的地址

    例如: tesseract_cmd = 'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe'

    如果报下面的BUG,请注意

    Error opening data file \Program Files (x86)\Tesseract-OCR\tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable

    解决办法也比较容易,按照它的提示,表示缺失了 TESSDATA_PREFIX 这个环境变量。你只需要在系统环境变量中添加一条即可

    将 TESSDATA_PREFIX=C:\Program Files (x86)\Tesseract-OCR 添加环境变量

    重启IDE或者重新CMD,然后继续运行代码,这个地方注意需要用管理员运行你的py脚本

    步骤分为

    打开图片 Image.open()

    pytesseract识别图片

    测试英文,数字什么的基本没有问题,中文简直惨不忍睹。空白比较大的可以识别出来。唉~不好用 当然刚才那个7364 十分轻松的就识别出来了。

    带干扰的验证码识别

    接下来识别如下的验证码,我们首先依旧先尝试一下。运行代码发现没有任何显示。接下来需要对这个图片进行处理

    基本原理都是完全一样的

    彩色转灰度

    灰度转二值

    二值图像识别

    彩色转灰度

    im = im.convert('L')

    灰度转二值,解决方案比较成套路,采用阈值分割法,threshold为分割点

    调用

    binaryImage = im.point(initTable(),'1')

    binaryImage.show()

    调整之后

    我们还需要对干扰线进行处理。在往下研究去,是图片深入处理的任务,对付小网站的简单验证码,这个办法足够了

    相关文章

      网友评论

        本文标题:python爬虫高级技术:破解验证码

        本文链接:https://www.haomeiwen.com/subject/tiiniqtx.html