Python tesseract验证码识别

第一步 安装依赖包

pip install pillow
# 图像处理包

pip install pytesseract
# 文字识别包

第二步 下载安装tesseract

Windows系统:
下载:https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v5.0.0-alpha.20190623.exe
安装: 一路next
(中文字体识别率比较差,没下载中文字体)

Linux系统: Ubuntu

sudo apt install tesseract-ocr

第三部 上代码

from PIL import Image
import pytesseract

pytesseract_path=r'D:\Program Files\Tesseract-OCR\tesseract.exe'
# 指定tesseract.exe所在的路径
pytesseract.pytesseract.tesseract_cmd = pytesseract_path

image = Image.open("a.png")
# image.show()
text = pytesseract.image_to_string(image)
print(text)

第四部 识别测试

第一张图片

Python tesseract验证码识别_第1张图片
a.png

识别结果

Python tesseract验证码识别_第2张图片
image.png

因为没有下载中文字体,所以无法识别中文
但数字识别率还可以

第二张图片

Python tesseract验证码识别_第3张图片
image.png

识别结果

Python tesseract验证码识别_第4张图片
image.png

英文识别率还是很不错的
不过稍微有阴影就识别不出来

第五步 写个小代码扒一扒拉钩的图形验证码

from urllib import request

Url = "https://passport.lagou.com/vcode/create?from=register&refresh=1513081451891"
for i in range(1,31):
    request.urlretrieve(Url ,'img/%s.png'%i)

为了方便验证tesseract识别验证码的正确率

我把爬的验证码都人工识别了一遍 并存为文件名

Python tesseract验证码识别_第5张图片
image.png

开始测试识别率

from PIL import Image
import pytesseract
import os
pytesseract.pytesseract.tesseract_cmd = r'D:\Program Files\Tesseract-OCR\tesseract.exe'
n=0
for a,b,c in os.walk('./img/'):
    list_len=len(c)
    
    for i in c:
        str=i.split('.')[0]
        image = Image.open("./img/%s"%i)
        text = pytesseract.image_to_string(image)
        if text==str:
            n+=1
        print(text,str,text==str)

    print(n/list_len)

结果是: 0.26666666666666666
这个结果果然很让人失望

这样的情况根本做不了验证码识别

为了图片识别的正确率有一下几种方式

灰度处理
增加对比度(可选)
二值化
降噪
倾斜校正分割字符
建立训练库
识别

你可能感兴趣的:(Python tesseract验证码识别)