python简单验证码识别

在学习python经过接口自动登陆网站时,用户名密码、cookies、headers都好解决可是在碰到验证码这个时就有点棘手了;因而经过网上看贴,看官网完成了对简单验证码的识别,若是是复杂的请看大神的贴这里解决不了;python

mg01mg

以上两张为网站的上比较简单的验证码,没有加复杂的干扰线也没有对字体进行弯曲;cookie

识别的代码用到的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("图片的路径")
运行结果:

res

*注意*若是有边框的图片在处理时没有外理边框,获得的图片以下,在程序识别时就会影响准确度:网站

mg_new

res01

如下是做者对手机拍的一张图片直接识别和处理后识别的若是spa

手机图片:rest

time

直接识别:(咱们看到程序没法识别)code

rest

用代码处理后识别:blog

 

rest02

相关文章
相关标签/搜索