发布于2019-08-08 12:15 阅读(1063) 评论(0) 点赞(2) 收藏(0)
在学习python通过接口自动登录网站时,用户名密码、cookies、headers都好解决但是在碰到验证码这个时就有点棘手了;于是通过网上看贴,看官网完成了对简单验证码的识别,如果是复杂的请看大神的贴这里解决不了;
以上两张为网站的上比较简单的验证码,没有加复杂的干扰线也没有对字体进行弯曲;
识别的代码用到的python模块有pytesseract,PIL;pytesseract在win下需要tesseract-ORC支持,这个需要上网下载安装,并在win的系统环境变量下配置安装路径,运行tesseract –v 显示当前tesseract版本信息表示设置安装正常
以下是识别验证码代码:
import pytesseract from PIL import Image def getcode(image): image = Image.open(image) #image.show() #查看打开的验证码 im = image.convert("L") #把图片转成L单通道,这样像素点的值在[0~255]之前,区别于普通的RGC图片为三通道像素点的值在[0~255,0~255,0~255] #把图片的白色边框设置为黑色,如果没有可认忽略这个步骤 #1.把图片上下两条边框设置为黑色 for x in range(im.size[0]): im.putpixel((x,0),0) im.putpixel((x,im.size[1] - 1),0) #2.把图片左右两条边框设置为黑色 for y in range(im.size[1]): im.putpixel((0,y),0) im.putpixel((im.size[0] - 1,y),0) #将图片色像素值在150以上的设置为白色,否则为黑色 for i in range(im.size[0]): for j in range(im.size[1]): if(im.getpixel((i,j)) > 150): im.putpixel((i,j),255) else: im.putpixel((i,j),0) #im.show() #查看打开的验证码 #im.save("xxxxxxxxxxxx") #保存图片 code = pytesseract.image_to_string(im) print(code) if __name__ == '__main__': getcode("图片的路径")
*注意*如果有边框的图片在处理时没有外理边框,得到的图片如下,在程序识别时就会影响准确度:
以下是作者对手机拍的一张图片直接识别和处理后识别的如果
手机图片:
直接识别:(我们看到程序无法识别)
用代码处理后识别:
作者:大王叫我来巡山了
链接:https://www.pythonheidong.com/blog/article/14086/24e99016821f00b0fb91/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!