python3图片验证码识别种类最多第三方模块-MuggleOCR
官网下载地址
https://pypi.org/project/muggle-ocr/
pip install muggle_ocr
pip install muggle_ocr -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
案例1
导入包
复制import time
# 1. 导入包
import muggle_ocr
"""
使用预置模型,预置模型包含了[ModelType.OCR, ModelType.Captcha] 两种
其中 ModelType.OCR 用于识别普通印刷文本, ModelType.Captcha 用于识别4-6位简单英数验证码
"""
# 打开印刷文本图片
with open(r"test1.png", "rb") as f:
ocr_bytes = f.read()
# 打开验证码图片
with open(r"test2.jpg", "rb") as f:
captcha_bytes = f.read()
# 2. 初始化;model_type 可选: [ModelType.OCR, ModelType.Captcha]
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
# ModelType.Captcha 可识别光学印刷文本
for i in range(5):
st = time.time()
# 3. 调用预测函数
text = sdk.predict(image_bytes=ocr_bytes)
print(text, time.time() - st)
# ModelType.Captcha 可识别4-6位验证码
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)
for i in range(5):
st = time.time()
# 3. 调用预测函数
text = sdk.predict(image_bytes=captcha_bytes)
print(text, time.time() - st)
"""
使用自定义模型
支持基于 https://github.com/kerlomz/captcha_trainer 框架训练的模型
训练完成后,进入导出编译模型的[out]路径下, 把[graph]路径下的pb模型和[model]下的yaml配置文件放到同一路径下。
将 conf_path 参数指定为 yaml配置文件 的绝对或项目相对路径即可,其他步骤一致,如下示例:
"""
with open(r"test3.jpg", "rb") as f:
b = f.read()
sdk = muggle_ocr.SDK(conf_path="./ocr.yaml")
text = sdk.predict(image_bytes=b)
案例2
复制import time
import muggle_ocr
import os
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
root_dir = r"./imgs"
for i in os.listdir(root_dir):
n = os.path.join(root_dir, i)
with open(n, "rb") as f:
b = f.read()
st = time.time()
text = sdk.predict(image_bytes=b)
print(i, text, time.time() - st)
案例3
复制
import datetime
import time
import requests
import json
import base64
import muggle_ocr
import random
import warnings
warnings.filterwarnings("ignore")
def login_qufenqi():
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)
# sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
# num_str = ''.join(str(random.choice(range(10))) for _ in range(7))
# 获取图片
url = "https://passport.qufenqi.com/verify/getimg?r=0.05915737242270325"
headers = {
"authority": "passport.qufenqi.com",
"method": "GET",
"path": "/verify/getimg?r=0.05915737242270325",
"scheme": "https",
"accept": "image/webp,image/apng,image/*,*/*;q=0.8",
"accept-encoding": "gzip, deflate, br",
"accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
"referer": "https://passport.qufenqi.com/i/resetloginpass",
"sec-fetch-dest": "image",
"sec-fetch-mode": "no-cors",
"sec-fetch-site": "same-origin",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36",
}
response = requests.get(url, headers=headers, verify=False, timeout=10)
print("图片验证码",response.content)
with open('a.jpg', 'wb') as fw:
fw.write(response.content)
# 验证号码
code = sdk.predict(response.content)
print(code)
url = "https://passport.qufenqi.com/i/resetloginpass/setaccount"
headers = {
"authority":"passport.qufenqi.com",
"method":"POST",
"path":"/i/resetloginpass/setaccount",
"scheme":"https",
"accept":"*/*",
"accept-encoding":"gzip, deflate, br",
"accept-language":"zh-CN,zh;q=0.9,en;q=0.8",
"content-length":"31",
"content-type":"application/x-www-form-urlencoded; charset=UTF-8",
"origin":"https://passport.qufenqi.com",
"referer":"https://passport.qufenqi.com/i/resetloginpass",
"sec-fetch-dest":"empty",
"sec-fetch-mode":"cors",
"sec-fetch-site":"same-origin",
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36",
"x-requested-with":"XMLHttpRequest",
}
time.sleep(1)
data = {"mobile": "13918238777","imgcode": code} # input("输入验证码:")
print(data)
response = requests.post(url, headers=headers, data=data, verify=False, timeout=10)
print(json.loads(response.text))
if __name__ == '__main__':
# while True:
# time.sleep(1)
login_qufenqi()
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载!
分类:
Python3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~