当前位置: 首页 > news >正文

基于麒麟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文件。

http://www.jsqmd.com/news/1155311/

相关文章:

  • 基于STM32和TC78H651AFNG的直流有刷电机驱动方案
  • PIC配对抗体:原理、制备与应用全景分析
  • 2026年江苏工业防水连接器外壳/光模块外壳生产厂家实力排行 - 起跑123
  • Electron 28 白屏问题深度排查:从渲染进程崩溃到原生依赖缺失的 5 种场景
  • 2026年AI就业指南:避开内卷陷阱,选对赛道稳拿高薪!35岁危机?
  • 三角形五心(内心)3 类典型问题解析:角平分线、面积最值与共点证明
  • 2026大连奢侈品回收避坑指南:名包名表变现,避开压价与隐形扣费陷阱 - 奢侈品回收中心
  • 2026广州首饰回收深度测评!7家正规门店对比,内行变现从不亏 - 分享测评官
  • 452.用最少数量的箭引爆气球
  • 2026佛山禅城闲置包包速出渠道,全域上门收香奈儿 LV易奢福 - 奢侈品回收实体店
  • TB67H480FNG与PIC18F46K42在电机控制中的高性价比方案
  • Git 使用保姆级教程(2026)
  • 直流有刷电机驱动方案:TC78H651AFNG与PIC32MX675F512L组合设计
  • 家电补贴怎么领更划算?广东中山家电家居家具一站式选购榜单 - 深度智识库
  • 【Agent智能体】33ElasticSearch
  • 夏季官渡区全套奢品变现 逸程当面核验货品当场转账 - 融媒生活
  • Milvus 源码学习系列 | 第 20 章:删除、TTL、可见性与 Compaction
  • 工业自动化中TPD2015FN与dsPIC30F4011的协同设计与应用
  • 【避坑指南】2026亨得利售后网络大升级:真实体验与数据验证(附全国热线) - 亨得利客户服务中心
  • 北京亨得利官方直营售后维修网点|官方门店地址及客服电话全新公告(2026年7月最新) - 亨得利售后服务官网
  • Vue3 自定义指令对比:3种 el-select 滚动加载方案性能与实现差异
  • AI如何自动诊断并解决Linux编译环境缺失C编译器问题
  • 2026常德黄金回收白银回收铂金回收市民首选无隐形扣费正规备案回收门店联系方式推荐
  • 亨得利官方名表服务中心|详细地址与售后电话权威信息声明(2026年7月更新) - 亨得利钟表维修中心
  • Day18 | Agentic RAG——让模型自己决定查不查、查什么、查几次
  • 74LS138/151/160 三款经典芯片实战:从逻辑函数到6进制计数器设计
  • 2026厦门手表回收哪家价高?5家门店实测行情盘点 - 奢品小当家
  • 论文 Rebuttal 实战:针对 3 类常见负面意见(创新性/描述错误/效果)的回应策略与模板
  • 数字漫画永久收藏指南:从在线租赁到真正拥有的技术实践
  • OpenMetadata开源元数据管理平台:构建AI时代数据语义的终极解决方案