如何部署自己的MinerU API OCR服务?

以下为兼容MacOS和Linux的部署步骤:

1、准备Dockerfile

# syntax=docker/dockerfile:1
FROM python:3.11-slim-bookworm

ENV PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple \
    PIP_NO_CACHE_DIR=1 \
    PIP_ROOT_USER_ACTION=ignore \
    PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    UV_SYSTEM_PYTHON=1

RUN apt-get update && apt-get install -y --no-install-recommends \
    libgl1 \
    libglib2.0-0 \
    poppler-utils \
    tesseract-ocr \
    tesseract-ocr-eng \
    tesseract-ocr-chi-sim \
    tesseract-ocr-chi-tra \
    curl \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# 安装 uv,并明确装到“系统 Python”里(非 venv)
RUN pip install -U uv && \
    uv pip install --system -U "mineru[core]"

RUN mkdir -p /data /models

EXPOSE 8000
ENTRYPOINT ["mineru-api"]
CMD ["--host", "0.0.0.0", "--port", "8000"]

2、准备compose.yaml

services:
  mineru-api:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: mineru-api
    restart: unless-stopped
    ports:
      - "8000:8000"
    environment:
      OMP_NUM_THREADS: "6"
      NUMEXPR_MAX_THREADS: "6"
      MKL_NUM_THREADS: "6"
      # 可选:指定 CUDA 可见设备(若有多 GPU,按需配置)
      # CUDA_VISIBLE_DEVICES: "0"  # 只使用第 1 块 GPU(索引从 0 开始)
      # CUDA_VISIBLE_DEVICES: "0,1"  # 使用第 1、2 块 GPU
    volumes:
      - ./ms_models:/root/.cache/modelscope/hub/models
      - ./models:/models
      - ./data:/data
      - ./mineru.json:/root/mineru.json
    # 关键:添加 GPU 资源配置
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all  # 使用所有可用 GPU(推荐),也可指定数量(如 count: 1)
              capabilities: [gpu]  # 声明需要 GPU 能力
    healthcheck:
      test: ["CMD-SHELL", "curl -fsS http://localhost:8000/docs || exit 1"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 20s

MacOS 需要去掉GPU资源配置部分。

3、设置mineru.json

{
    "bucket_info": {
        "bucket-name-1": [
            "ak",
            "sk",
            "endpoint"
        ],
        "bucket-name-2": [
            "ak",
            "sk",
            "endpoint"
        ]
    },
    "latex-delimiter-config": {
        "display": {
            "left": "$$",
            "right": "$$"
        },
        "inline": {
            "left": "$",
            "right": "$"
        }
    },
    "llm-aided-config": {
        "title_aided": {
            "api_key": "your_api_key",
            "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
            "model": "qwen3-next-80b-a3b-instruct",
            "enable_thinking": false,
            "enable": false
        }
    },
    "models-dir": {
        "pipeline": "/root/.cache/modelscope/hub/models/OpenDataLab/PDF-Extract-Kit-1___0",
        "vlm": "/root/.cache/modelscope/hub/models/OpenDataLab/MinerU2___5-2509-1___2B"
    },
    "config_version": "1.3.1"
}

4、打包并启动

docker compose up -d

启动完成后能成功访问 `http://localhost:8000/docs/`

5、进入容器下载模型

mineru-models-download -s modelscope -m all

6、测试接口(不要在界面直接使用接口,解析结果很长时,无法在界面返回内容)

curl -X 'POST' \
  'http://localhost:8000/file_parse' \
  -H 'accept: application/json' \
  -H 'Content-Type: multipart/form-data' \
  -F 'return_middle_json=false' \
  -F 'return_model_output=false' \
  -F 'return_md=true' \
  -F 'return_images=false' \
  -F 'end_page_id=99999' \
  -F 'parse_method=auto' \
  -F 'start_page_id=0' \
  -F 'lang_list=ch' \
  -F 'output_dir=./output' \
  -F 'server_url=string' \
  -F 'return_content_list=false' \
  -F 'backend=pipeline' \
  -F 'table_enable=true' \
  -F 'response_format_zip=false' \
  -F 'files=@your_pdf.pdf;type=application/pdf' \
  -F 'formula_enable=true'

内容概要:本文介绍了一种基于蒙特卡洛模拟和拉格朗日优化方法的电动汽车充电站有序充电调度策略,重点针对分时电价机制下的分散式优化问题。通过Matlab代码实现,构建了考虑用户充电需求、电网负荷平衡及电价波动的数学模【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)型,采用拉格朗日乘子法处理约束条件,结合蒙特卡洛方法模拟大量电动汽车的随机充电行为,实现对充电功率和时间的优化分配,旨在降低用户充电成本、平抑电网峰谷差并提升充电站运营效率。该方法体现了智能优化算法在电力系统调度中的实际应用价值。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源汽车、智能电网相关领域的工程技术人员。; 使用场景及目标:①研究电动汽车有序充电调度策略的设计与仿真;②学习蒙特卡洛模拟与拉格朗日优化在能源系统中的联合应用;③掌握基于分时电价的需求响应优化建模方法;④为微电网、充电站运营管理提供技术支持和决策参考。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注目标函数构建、约束条件处理及优化求解过程,可尝试调整参数设置以观察不同场景下的调度效果,进一步拓展至多目标优化或多类型负荷协调调度的研究。
MinerU 是一个用于 OCR(光学字符识别)的开源 API,特别适用于批量文档的解析和处理。其设计目标是为用户提供一个高效、稳定的文档解析服务,尤其在处理 PDF、图像等文件中的文字识别方面表现优异。以下是关于 MinerU API 使用方法的详细说明: ### API 调用方法 MinerU 提供了基于 HTTP 协议的 RESTful API 接口,用户可以通过发送 HTTP 请求调用 API 进行文档解析。以下是调用的基本步骤: 1. **获取 API 密钥** 用户需要先注册账号并获取 API 密钥。该密钥用于身份验证和访问控制,确保调用的安全性。 2. **构造请求** 请求应包含以下信息: - **请求地址**:MinerUAPI 端点地址(如 `https://api.mineru.com/ocr`)。 - **请求方法**:通常为 `POST`。 - **请求头**:包含认证信息(如 `Authorization: Bearer <API_KEY>`)和内容类型(如 `Content-Type: application/json`)。 - **请求体**:包含待解析的文件或文件路径。 3. **上传文件** 用户可以通过两种方式上传文件: - **直接上传文件**:将文件以二进制流的形式上传。 - **上传文件路径**:如果文件已经存储在服务器上,可以提供文件路径。 4. **接收响应** API 会返回结构化的解析结果,通常为 JSON 格式。用户可以根据需要解析返回的数据,提取所需的文字内容。 ### 示例代码 以下是一个使用 Python 调用 MinerU API 的示例代码: ```python import requests # 替换为你的 API 密钥 API_KEY = "your_api_key_here" # API 端点地址 url = "https://api.mineru.com/ocr" # 请求头 headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # 请求体 data = { "file_path": "/path/to/your/document.pdf" # 或者使用文件二进制流 } # 发送请求 response = requests.post(url, headers=headers, json=data) # 解析响应 if response.status_code == 200: result = response.json() print(result) else: print(f"Error: {response.status_code}") print(response.text) ``` ### 限流策略 MinerU API 对用户的使用进行了限流策略,以确保服务的稳定性和公平性: - **上传限制**:单个文件大小不超过 200 MB,单个上传文件页数不超过 600 页。 - **解析页数限制**:每个账号每天不限解析页数,但超过 2000 页的部分优先级降低(自然日内统计)[^1]。 ### 文档资源 MinerU 的官方文档是用户获取详细信息的主要来源。文档中通常包括以下内容: - **API 接口说明**:包括请求方法、参数、响应格式等。 - **示例代码**:提供多种编程语言的示例代码,帮助用户快速上手。 - **常见问题**:解答用户在使用过程中可能遇到的问题。 - **性能优化建议**:如何高效使用 API,减少资源消耗。 ### 开发者支持 MinerU 提供了开发者支持服务,用户可以通过以下方式获取帮助: - **官方论坛**:与其他用户交流经验,解决技术问题。 - **技术支持邮箱**:直接联系技术支持团队。 - **GitHub 仓库**:查看项目源码,提交问题或建议。 ### 相关问题
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jacky_wxl(微信同号)

喜欢作者

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值