美文网首页百人计划我爱编程
基于Python3 实现简单的验证码识别

基于Python3 实现简单的验证码识别

作者: 葛木瓜 | 来源:发表于2018-03-17 12:59 被阅读138次

    一、缘 由

    学习Selenium的过程,在尝试应用于实际工作中遇到的第一个问题,和开发沟通是否可以开个后门绕过验证码登录,但无果,遂决定自己尝试解决这个问题。

    二、说 明

    接下来我分享两种较为简单验证码的自动识别方法实现,一种如图1无杂质,仅仅添加有干扰的背景色,另一种在图1验证码的基础上再添加不规则的杂质,如图2所示。

    图1 验证码(无杂质)
    图2 验证码(有杂质)

    三、方法及实现

    3.1、图1(无杂质)验证码,实现自动识别

    思 路:
    首先截取整个web页面,然后定位验证码元素大小,截取验证码图片并保存,最后调用用OCR识别技术识别验证码,OK!

    环 境:

    Python3 + Selenium + OCR软件 + pytesseract/PIL(第三方图像识别库)
    Python3安装两个第三方图像识别库,直接命令行输入:pip install pytesseract,同时也会附带安装PIL库
    OCR软件下载(目前最新版是v3.05.01):https://github.com/UB-Mannheim/tesseract/wik

    配置环境变量:
    PATH→ D:\Tesseract-OCR
    TESSDATA_PREFIX→ D:\Tesseract-OCR\tessdata
    注 意:
    OCR软件需要配置两个环境变量,一个是其安装路径,另一个是安装路径下的tessdata,变量名为:TESSDATA_PREFIX,这个点很重要!

    实 现:

    不带杂质验证码识别的具体实现

    3.2、图2(有杂质)验证码,实现自动识别

    思 路:
    还是先截取整个web页面,然后定位验证码元素大小,截取验证码图片并保存,这次调用百度云识别技术识别验证码,OK!

    说 明:
    环境搭建与方法3.1一致,区别在于识别技术调用百度云-文字识别,基于Python的SDK下载、安装以及使用方法见官方SDK文档调用需要有百度云账号)。
    根据不同的文字识别技术,每天有50~500次的免费调用权限,如图所示,我本次所使用的是网络图片文字识别,目前对于图2类型(有杂质)的验证码识别正确率大概为40%,虽然识别率不高但是总比你手动输入方便。

    识别技术列表

    实 现:

    带杂质验证码识别的具体实现

    OK,搞定!如有问题欢迎随时沟通,评论~

    相关文章

      网友评论

        本文标题:基于Python3 实现简单的验证码识别

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