Python:PIL+pytesseract+tesseract-ocr识别图片验证码

一、环境准备

1.Pycharm安装第三方库:

PIL

pytesseract

2.电脑安装软件:

tesseract-ocr

版本:tesseract-ocr-w64-setup-v5.0.0.20190526

下载地址:https://digi.bib.uni-mannheim.de/tesseract/ 

百度云下载地址:https://pan.baidu.com/s/1of1yUdmAW9i5LUS1cGumFg

提取码:yy3b

3.设置环境变量:

编辑path:新增tesseract-ocr安装路径

新增TESSDATA_PREFIX:tesseract-ocr安装路径下的tessdata文件夹路径

4.验证环境配置是否符合要求

5.找一张验证码图片试一下

二、实现代码

from PIL import Image
from http import cookiejar
import urllib.request, urllib.parse, urllib.error
# import sys
import time
import pytesseract

class AuthCode():
    def get_verification_code(self,time):
        f = None
        try:
            cookieJar = cookiejar.CookieJar()
            opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookieJar))
            # 找一个带验证码图片的网页,获取验证码图片
            url = '*****' +  time
            print(url)
            res =  opener.open(url)
            response=res.read()
            with open('D:\\auth_code_image\\auth_code.jpg', 'wb') as f:
                f.write(response)
            # 使用PIL打开一个图片,转换成灰度模式
            l_image = Image.open('D:\\auth_code_image\\auth_code.jpg').convert('L')
            # 使用image_to_string识别验证码
            py_text = pytesseract.image_to_string(l_image).strip()
            print(py_text)
            # res_text = []
            # for i in py_text:
            #     if i != ' ':
            #         res_text.append(i)
            # text = ''.join(res_text)
            # print(text)

        except urllib.error.HTTPError as e:
            raise Exception("连接失败:%s" % e)
        finally:
            if f:
                f.close()
        return py_text

millis = str(int(round(time.time() * 1000)))
auth_api = AuthCode()
res = auth_api.get_verification_code(millis)
print(res)

三、运行结果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章