zoukankan      html  css  js  c++  java
  • 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()
    
  • 相关阅读:
    scp 跨服务器传数据
    Mongo启动失败解决方案
    centos7 NET模式配置虚拟机
    centos7虚拟机配置桥接模式
    Linux centos7 查看cpu 磁盘 内存使用情况
    centos7修改时间和时区
    fiddler培训
    docker学习笔记
    docker-ce安装官翻
    Nginx+Tomcat简单负载均衡
  • 原文地址:https://www.cnblogs.com/gqv2009/p/13231251.html
Copyright © 2011-2022 走看看