基于麒麟V11、昇腾300i Duo和VLLM本地部署Mineru2.5
·
mineru官方文档:Ascend - MinerU
1. 基于docker镜像启动
1.1 使用 Dockerfile 构建镜像 (vllm)

1.1.1 在项目目录下运行终端,输入以下命令下载配置文件
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/china/npu.Dockerfile
1.1.2 打开下载的npu.Dockerfile文件,对第三行内容进行修改。
针对使用的昇腾300i Duo卡,310p核心
FROM quay.m.daocloud.io/ascend/vllm-ascend:v0.10.0rc1-310p

1.1.3 构建镜像
输入以下命令构建镜像,构建完成后通过docker image list查看是否生成mineru:npu-vllm-latest镜像文件。
docker build --network=host -t mineru:npu-vllm-latest -f npu.Dockerfile .
1.2 启动 Docker 容器
注意:自行修改device设备,docker容器名称,下载的mineru模型权重已经在容器内路径下:/root/.cache/modelscope/hub/models/OpenDataLab/MinerU2___5-Pro-2605-1___2B, 启动时不要再对该路径进行映射。
docker run -u root --name mineru_docker --privileged=true \
--ipc=host \
--network=host \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /var/log/npu/:/usr/slog \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-e VLLM_WORKER_MULTIPROC_METHOD=spawn \
-e MINERU_MODEL_SOURCE=local \
-e MINERU_LMDEPLOY_DEVICE=ascend \
-it mineru:npu-vllm-latest \
/bin/bash
2. mineru启动

2.1 启动fastapi服务
使用fastapi服务时,可将容器完全作为后端服务器,其他主机不必安装环境和依赖
2.1.1 启动服务
由于310p加速卡不支持图模式与bf16精度,因此在使用该加速卡时,执行任意与vllm相关命令需追加--enforce-eager --dtype float16, 设置显存占用比例和预加热。
mineru-api --host 0.0.0.0 --port 8009 --enforce-eager --dtype float16 --gpu-memory-utilization 0.9 --enable-vlm-preload true

2.1.2 应用服务
使用curl可提交和查询任务


也可使用下面我的python脚本进行任务提交和自动下载解压:
import requests
import time
import sys
import zipfile
import os
def process_pdf(file_path, base_url="http://127.0.0.1:8009"):
"""
提交 PDF 到 MinerU 服务,下载完整结果 ZIP 并自动解压
"""
# 1. 提交任务
print(f"正在上传文件: {file_path} ...")
upload_url = f"{base_url}/tasks"
try:
with open(file_path, "rb") as f:
files = {"files": (file_path.split("/")[-1], f, "application/pdf")}
# 请求返回 Markdown、图片,并打包为 ZIP 格式
data = {
"return_md": "true",
"return_images": "true",
"response_format_zip": "true",
"backend": "vlm-engine"
}
response = requests.post(upload_url, files=files, data=data)
response.raise_for_status()
except Exception as e:
print(f"上传文件失败: {e}")
sys.exit(1)
task_info = response.json()
task_id = task_info.get("task_id")
status_url = task_info.get("status_url")
result_url = task_info.get("result_url")
print(f"任务提交成功!Task ID: {task_id}")
# 2. 轮询任务状态
print("正在等待任务处理完成...")
while True:
try:
status_resp = requests.get(status_url)
status_resp.raise_for_status()
status_data = status_resp.json()
current_status = status_data.get("status")
if current_status == "completed":
print("任务处理完成!")
break
elif current_status == "failed":
print(f"任务处理失败!错误信息: {status_data.get('error')}")
sys.exit(1)
else:
print(f"当前状态: {current_status},等待中...")
time.sleep(2)
except Exception as e:
print(f"查询状态时发生错误: {e}")
sys.exit(1)
# 3. 下载 ZIP 压缩包并自动解压
zip_filename = "output_full_results.zip"
extract_dir = "output_full_results"
try:
# 3.1 下载 ZIP 文件
print("正在下载完整结果压缩包...")
result_resp = requests.get(result_url)
result_resp.raise_for_status()
with open(zip_filename, "wb") as f:
f.write(result_resp.content)
# 3.2 自动解压 ZIP 文件
print(f"正在解压文件到 [{extract_dir}] 目录...")
# 如果解压目录已存在,会自动覆盖或合并
os.makedirs(extract_dir, exist_ok=True)
with zipfile.ZipFile(zip_filename, 'r') as zip_ref:
zip_ref.extractall(extract_dir)
print(f"所有文件(Markdown、图片等)已解压至: {os.path.abspath(extract_dir)}")
# 3.3 清理下载的临时 ZIP 文件(可选)
os.remove(zip_filename)
print("临时 ZIP 文件已清理。")
except zipfile.BadZipFile:
print("下载的文件不是有效的 ZIP 压缩包!")
sys.exit(1)
except Exception as e:
print(f"下载或解压过程中发生错误: {e}")
sys.exit(1)
if __name__ == "__main__":
# 修改需要解析的文件路径,解析后的文件也会下载至该路径下
PDF_PATH = "/root/下载/111.pdf"
process_pdf(PDF_PATH)
2.2 启动mineru-openai-server
mineru-openai-server作为视觉大模型服务,容器外调用的主机需要安装mineru库环境
2.2.1 容器内启动服务
mineru-openai-server --port 8009 --enforce-eager --dtype float16
2.2.2 容器外配置mineru环境
使用pip或者uv安装mineru,推荐使用conda进行环境隔离
pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple
pip install uv -i https://mirrors.aliyun.com/pypi/simple
uv pip install -U "mineru[all]" -i https://mirrors.aliyun.com/pypi/simple
2.2.3 执行mineru解析
终端中激活配置好的mineru环境,执行下面命令即可:
mineru -p <input_path> -o <output_path> -b hybrid-http-client -u http://127.0.0.1:8009
2.3 结果展示
使用fastapi服务配合python代码,打压缩包进行下载,解压压缩包文件,内含图片与md文件。

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)