下载Tesseract-OCR 自定义安装,将安装目录添加到环境变量中
识别登录验证码如下:
gif识别不了,先转换为jpg再来识别
具体代码如下:
import requests
from PIL import Image
import pytesseract
"""
验证古诗文网动态验证码图片
https://so.gushiwen.cn/user/login.aspx?from=https%3A%2F%2Fwww.gushiwen.cn%2Fdefault_1.aspx
"""
# gif转jpg
def gif_to_jpg(gif_file, jpg_file):
# 打开GIF图像
gif_image = Image.open(gif_file)
# 获取GIF图像的第一帧
first_frame = gif_image.convert("RGBA")
# 创建一个新的RGB图像,将第一帧粘贴到其中
new_image = Image.new("RGB", first_frame.size, (255, 255, 255))
new_image.paste(first_frame, (0, 0), mask=first_frame)
# 保存为JPG格式
new_image.save(jpg_file, "JPEG")
def download(url):
# 下载验证码图片
res = requests.get(url)
# res.encoding = 'utf-8'
with open("D:/01/download.gif", 'wb') as f:
f.write(res.content)
# 验证登录图片
def gettext(jpg_file):
# 如果没有将tesseract的安装目录添加到系统环境变量中,则需要指定安装路径
pytesseract.pytesseract.tesseract_cmd = r"D:\Tesseract-OCR\tesseract.exe"
img = Image.open(jpg_file)
text = pytesseract.image_to_string(img, lang='eng')
print(text)
if __name__ == "__main__":
# 古诗文网登录验证图片
url = "https://so.gushiwen.cn/RandCode.ashx"
# 保存验证图片位置
gif_file = "D:/01/download.gif"
# gif转jpg保存位置
jpg_file = "D:/01/download.jpg"
# 下载登录gif图片
download(url)
# 将gif文件修改为jpg
gif_to_jpg(gif_file, jpg_file)
# 提取验证图片文字
gettext(jpg_file)