muggle_ocr验证码识别在docker中安装使用

发布时间:2026-08-04 阅读量:1 Docker Go 部署
muggle_ocr验证码识别在docker中安装使用

宝塔面板安装好docker后,选择镜像debian12创建一个容器,进入容器目录,新建ocr目录并将文件解压到ocr目录下。

项目结构:

── ocr/

├── db.sqlite3

├── manage.py

└── webocr/

    ├── asgi.py

    ├── settings.py

    ├── urls.py

    ├── views.py

    ├── wsgi.py

    └── __init__.py

进入容器终端,安装Python-3.7.17,选择编译安装。

django==3.2.*
gunicorn==20.1.*
pillow==9.5.*

安装**muggle-ocr**相关环境:

python3.7 -m pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

更新pip:

python3.7 -m pip install --upgrade pip \
  -i https://pypi.tuna.tsinghua.edu.cn/simple \
  --trusted-host pypi.tuna.tsinghua.edu.cn

安装 setuptools

python3.7 -m pip install --no-cache-dir --upgrade setuptools \
  -i https://pypi.tuna.tsinghua.edu.cn/simple \
  --trusted-host pypi.tuna.tsinghua.edu.cn

安装所需库,并进入ocr目录测试识别:

# 1. 更新包列表
apt-get update

# 2. 安装核心依赖
apt-get install -y \
    libglib2.0-0 \
    libsm6 \
    libxrender1 \
    libxext6 \
    libgl1-mesa-glx

# 3. 安装可选但推荐的依赖
apt-get install -y \
    libgtk2.0-0 \
    libavcodec-dev \
    libavformat-dev \
    libswscale-dev

# 4. 更新库缓存
ldconfig

# 5. 运行程序识别
python3.7 ocr.py

启动API,注意端口为5000:

python3.7 manage.py runserver 0.0.0.0:5000

view.py代码优化,只加载一次库,加快速度:

from django.shortcuts import render, HttpResponse
from django.views.decorators.csrf import csrf_exempt
import time
import base64
import logging
# 导入ocr识别包
import muggle_ocr

# 配置日志
logger = logging.getLogger(__name__)

# 初始化OCR SDK(全局只加载一次)
# 添加计时器
logger.debug("开始加载OCR模型...")
start_load = time.time()
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)
load_time = time.time() - start_load
logger.debug(f"✅ OCR模型加载完成,耗时: {load_time:.2f}秒")

@csrf_exempt
def ocr(request):
    # 记录请求开始时间
    start_time = time.time()
    
    if request.method != "POST":
        logger.warning("⚠️ 非POST请求")
        return HttpResponse("仅支持POST请求", status=400)
    
    img = request.POST.get("img", "")
    logger.debug(f"收到请求,图片长度: {len(img)} 字符")
    
    if not img:
        logger.warning("❌ 图片为空")
        return HttpResponse("图片为空", status=400)
    
    try:
        # 修复base64编码
        img = img.replace(" ", "+")
        
        # 解码计时
        decode_start = time.time()
        image = base64.b64decode(img)
        decode_time = time.time() - decode_start
        logger.debug(f"🖼️ Base64解码完成,耗时: {decode_time:.4f}秒")
        
        # OCR识别计时
        ocr_start = time.time()
        text = sdk.predict(image_bytes=image)
        ocr_time = time.time() - ocr_start
        logger.debug(f"🔍 OCR识别完成,耗时: {ocr_time:.4f}秒")
        logger.info(f"识别结果: {text}")
        
        # 总耗时
        total_time = time.time() - start_time
        logger.info(f"✅ 请求处理完成,总耗时: {total_time:.4f}秒")
        
        return HttpResponse(text)
    
    except Exception as e:
        logger.exception("🔥 处理异常")
        return HttpResponse(f"服务器错误: {str(e)}", status=500)

这个就可以使用了。为了方便以后使用,打包好了镜像

保存镜像为文件:
docker save -o kzh-python37-ocr-1.0.tar kzh-python37-ocr:1.0

# 加载镜像(如果之前保存过)
docker load -i kzh-python37-ocr-1.0.tar

# 复制项目文件到数据卷
docker cp ./project ocr-app:/app
docker cp requirements.txt ocr-app:/app/

# 重启容器使配置生效
docker restart ocr-app


温馨提示

知识产权声明:本软件已获国家版权局软件著作权登记(登记号:2022SR0558725),受《计算机软件保护条例》保护。未经书面授权,严禁对本软件进行反向工程、反编译、破解或任何形式的篡改。侵权必究。

官方指引:本文档为官方安装部署说明,仅适用于当前发布版本,后续版本请以最新官方文档为准。

环境要求:安装前请确认操作系统版本、运行环境(如 .NET、Java 等)及硬件配置满足软件运行要求,避免因环境不兼容导致异常。

操作风险与免责:安装配置涉及防火墙、注册表或环境变量等系统级变更,建议由具备相关经验的技术人员操作。因用户未严格遵循本官方指引或操作不当导致的任何数据丢失、系统异常或其他损失,我方不承担相关责任。如遇问题,请及时联系技术支持。

反馈渠道:如有未覆盖的问题,欢迎通过客服反馈,我们将持续更新与改进。

版本记录:最后更新于 2026-08-07

AI

智能问答助手

基于本手册内容回答问题
AI
你好,我是本手册的 AI 助手,有任何安装问题可以直接问我。
← 返回手册列表

相关手册