MinerU API接口详解:RESTful接口完整文档
2026-02-04 04:37:38作者:翟江哲Frasier
概述
MinerU是一款高质量的开源PDF转Markdown和JSON工具,提供强大的RESTful API接口,支持批量处理、多格式输出和灵活的配置选项。本文档详细介绍了MinerU的API接口使用方法、参数说明和最佳实践。
快速开始
启动API服务
# 安装MinerU
pip install mineru
# 启动API服务
mineru-api --host 0.0.0.0 --port 8000
服务启动后,可通过以下地址访问API文档:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
基础请求示例
curl -X POST "http://localhost:8000/file_parse" \
-F "files=@document.pdf" \
-F "output_dir=./output" \
-F "lang_list=ch" \
-F "backend=pipeline" \
-F "return_md=true" \
-F "return_middle_json=true"
API端点详解
POST /file_parse
PDF文档解析接口,支持单文件或批量文件处理。
请求参数
| 参数名 | 类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
| files | List[UploadFile] | 是 | - | 上传的PDF或图像文件列表 |
| output_dir | str | 否 | "./output" | 输出目录路径 |
| lang_list | List[str] | 否 | ["ch"] | 语言列表(支持多语言) |
| backend | str | 否 | "pipeline" | 解析后端类型 |
| parse_method | str | 否 | "auto" | 解析方法(auto/txt/ocr) |
| formula_enable | bool | 否 | True | 是否启用公式解析 |
| table_enable | bool | 否 | True | 是否启用表格解析 |
| server_url | str | 否 | None | SGLang服务器地址 |
| return_md | bool | 否 | True | 是否返回Markdown格式 |
| return_middle_json | bool | 否 | False | 是否返回中间JSON格式 |
| return_model_output | bool | 否 | False | 是否返回模型原始输出 |
| return_content_list | bool | 否 | False | 是否返回内容列表 |
| return_images | bool | 否 | False | 是否返回图像base64编码 |
| start_page_id | int | 否 | 0 | 起始页码(从0开始) |
| end_page_id | int | 否 | 99999 | 结束页码 |
后端类型(backend)选项
graph TD
A[后端类型] --> B[pipeline]
A --> C[vlm-transformers]
A --> D[vlm-sglang-engine]
A --> E[vlm-sglang-client]
B --> F[传统流水线模式]
C --> G[基于Transformers的VLM]
D --> H[本地SGLang引擎]
E --> I[远程SGLang客户端]
F --> J[支持多语言OCR]
F --> K[支持批量处理]
G --> L[端到端文档理解]
H --> M[高性能推理]
I --> N[分布式部署]
语言支持列表
| 语言代码 | 语言名称 | 支持的后端 |
|---|---|---|
| ch | 中文(默认) | pipeline |
| ch_server | 中文服务器版 | pipeline |
| ch_lite | 中文轻量版 | pipeline |
| en | 英文 | pipeline |
| korean | 韩文 | pipeline |
| japan | 日文 | pipeline |
| chinese_cht | 繁体中文 | pipeline |
| auto | 自动检测 | pipeline |
响应格式
{
"backend": "pipeline",
"version": "2.1.11",
"results": {
"document_name": {
"md_content": "提取的Markdown内容",
"middle_json": { "pdf_info": {...} },
"model_output": "模型原始输出",
"content_list": ["内容列表"],
"images": {
"image1.jpg": "data:image/jpeg;base64,..."
}
}
}
}
高级用法
批量文件处理
# 批量处理多个文件
curl -X POST "http://localhost:8000/file_parse" \
-F "files=@doc1.pdf" \
-F "files=@doc2.pdf" \
-F "files=@doc3.png" \
-F "lang_list=ch" \
-F "lang_list=en" \
-F "lang_list=ch" \
-F "backend=pipeline"
自定义输出格式
# 仅获取Markdown内容
curl -X POST "http://localhost:8000/file_parse" \
-F "files=@document.pdf" \
-F "return_md=true" \
-F "return_middle_json=false" \
-F "return_model_output=false"
# 获取完整解析结果
curl -X POST "http://localhost:8000/file_parse" \
-F "files=@document.pdf" \
-F "return_md=true" \
-F "return_middle_json=true" \
-F "return_model_output=true" \
-F "return_content_list=true" \
-F "return_images=true"
页面范围控制
# 仅解析前10页
curl -X POST "http://localhost:8000/file_parse" \
-F "files=@document.pdf" \
-F "start_page_id=0" \
-F "end_page_id=9"
# 解析特定页面范围
curl -X POST "http://localhost:8000/file_parse" \
-F "files=@document.pdf" \
-F "start_page_id=5" \
-F "end_page_id=15"
性能优化配置
环境变量配置
# 设置推理设备(CPU/GPU)
export MINERU_DEVICE_MODE=cuda
# 设置显存限制(GB)
export MINERU_VIRTUAL_VRAM_SIZE=8
# 设置模型来源
export MINERU_MODEL_SOURCE=modelscope
# 禁用公式解析
export MINERU_FORMULA_ENABLE=false
# 禁用表格解析
export MINERU_TABLE_ENABLE=false
后端性能对比
| 后端类型 | 处理速度 | 显存需求 | 精度 | 适用场景 |
|---|---|---|---|---|
| pipeline | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 通用文档处理 |
| vlm-transformers | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 高质量解析 |
| vlm-sglang-engine | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | 高性能推理 |
| vlm-sglang-client | ⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ | 分布式部署 |
错误处理
常见错误码
| 状态码 | 错误信息 | 解决方案 |
|---|---|---|
| 400 | Unsupported file type | 检查文件格式,支持PDF/PNG/JPG |
| 400 | Failed to load file | 检查文件完整性和权限 |
| 500 | Failed to process file | 检查系统资源和模型配置 |
错误响应示例
{
"error": "Failed to process file: Model initialization failed"
}
最佳实践
生产环境部署
# 使用Docker部署
docker run -d \
-p 8000:8000 \
-v ./output:/app/output \
-v ./models:/root/.cache/mineru \
--gpus all \
mineru:latest \
mineru-api --host 0.0.0.0 --port 8000
监控和日志
# 启用详细日志
export MINERU_LOG_LEVEL=DEBUG
# 监控API性能
# 使用Prometheus + Grafana监控接口响应时间和资源使用
安全配置
# 启用HTTPS
uvicorn mineru.cli.fast_api:app \
--host 0.0.0.0 \
--port 8443 \
--ssl-keyfile key.pem \
--ssl-certfile cert.pem
# 配置API密钥认证(需要自定义中间件)
客户端代码示例
Python客户端
import requests
import json
def parse_pdf_with_mineru(api_url, file_path, output_dir="./output"):
"""使用MinerU API解析PDF文档"""
with open(file_path, 'rb') as f:
files = {'files': (file_path.name, f, 'application/pdf')}
data = {
'output_dir': output_dir,
'lang_list': 'ch',
'backend': 'pipeline',
'return_md': 'true',
'return_middle_json': 'true'
}
response = requests.post(
f"{api_url}/file_parse",
files=files,
data=data
)
if response.status_code == 200:
return response.json()
else:
raise Exception(f"API请求失败: {response.text}")
# 使用示例
result = parse_pdf_with_mineru(
"http://localhost:8000",
"document.pdf"
)
print(json.dumps(result, indent=2, ensure_ascii=False))
JavaScript客户端
async function parsePDF(apiUrl, file) {
const formData = new FormData();
formData.append('files', file);
formData.append('output_dir', './output');
formData.append('lang_list', 'ch');
formData.append('backend', 'pipeline');
formData.append('return_md', 'true');
const response = await fetch(`${apiUrl}/file_parse`, {
method: 'POST',
body: formData
});
if (response.ok) {
return await response.json();
} else {
throw new Error(`API请求失败: ${response.statusText}`);
}
}
// 使用示例
const fileInput = document.getElementById('pdf-file');
fileInput.addEventListener('change', async (event) => {
const file = event.target.files[0];
try {
const result = await parsePDF('http://localhost:8000', file);
console.log('解析结果:', result);
} catch (error) {
console.error('解析失败:', error);
}
});
性能调优指南
内存优化配置
# 针对低内存环境的配置
export MINERU_VIRTUAL_VRAM_SIZE=4
export MINERU_DEVICE_MODE=cpu
export MINERU_FORMULA_ENABLE=false
export MINERU_TABLE_ENABLE=false
批量处理优化
flowchart TD
A[开始批量处理] --> B[初始化模型]
B --> C{选择最优后端}
C -->|小文件| D[pipeline批量模式]
C -->|大文件| E[vlm-sglang-client]
D --> F[并行处理]
E --> G[分布式处理]
F --> H[内存优化]
G --> I[负载均衡]
H --> J[完成处理]
I --> J
监控指标
| 指标 | 正常范围 | 告警阈值 | 优化建议 |
|---|---|---|---|
| 响应时间 | < 30s | > 60s | 调整后端类型或增加资源 |
| 内存使用 | < 80% | > 90% | 降低批量大小或优化配置 |
| CPU使用率 | < 70% | > 90% | 考虑使用GPU加速 |
| 并发连接数 | < 100 | > 200 | 增加实例或负载均衡 |
常见问题解答
Q: API响应时间过长怎么办?
A: 可以尝试以下优化措施:
- 使用
vlm-sglang-engine后端 - 禁用公式和表格解析(如不需要)
- 增加系统资源(内存、GPU)
- 使用批量处理而不是单文件处理
Q: 如何处理大文件?
A: 对于大文件(>100页),建议:
- 使用页面范围控制,分批次处理
- 使用
vlm-sglang-client连接远程高性能服务器 - 增加JVM内存分配(如果使用Java客户端)
Q: 如何提高解析精度?
A: 可以尝试:
- 使用
vlm-transformers或vlm-sglang-engine后端 - 确保提供正确的语言参数
- 检查输入文件质量,低质量扫描件可能影响效果
版本兼容性
| MinerU版本 | API兼容性 | 主要特性 |
|---|---|---|
| 2.1.x | ✅ 完全兼容 | 最新功能和性能优化 |
| 2.0.x | ✅ 向后兼容 | 架构重构和模型更新 |
| 1.x.x | ⚠️ 部分兼容 | 传统功能,建议升级 |
总结
MinerU的RESTful API提供了强大而灵活的文档解析能力,支持多种输出格式、批量处理和性能优化。通过合理的配置和使用最佳实践,可以在生产环境中实现高效的文档处理流水线。
建议定期关注项目更新,以获取最新的性能优化和功能增强。如有问题或建议,欢迎通过项目Issue反馈。
登录后查看全文
热门项目推荐
相关项目推荐
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
557
3.79 K
Ascend Extension for PyTorch
Python
371
431
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
891
636
昇腾LLM分布式训练框架
Python
114
143
暂无简介
Dart
792
195
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.36 K
769
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
117
146
openJiuwen agent-studio提供零码、低码可视化开发和工作流编排,模型、知识库、插件等各资源管理能力
TSX
1.11 K
264
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1