跳转到主要内容

什么是 MinerU Tianshu

MinerU Tianshu 是一个企业级多 GPU 文档解析服务,适用于 RAG 数据预处理等场景。它结合 SQLite 任务队列 + LitServe GPU 负载均衡,支持将 PDF 等多种格式的文档转换为 Markdown 或 JSON 结构化数据,可以解决文档解析、多 GPU 调度、任务管理等生产环境痛点。 MinerU Tianshu 的核心特性如下:
  • 高性能架构
    • Worker 主动拉取:0.5秒响应速度,无需调度器触发
    • 并发安全:原子操作防止任务重复,支持多 Worker 并发
    • GPU 负载均衡:LitServe 自动调度,避免显存冲突
    • 多 GPU 隔离:每个进程只使用分配的 GPU ,彻底解决多卡占用
  • 企业级功能
    • 异步处理:客户端立即响应(~ 100 ms),无需等待处理完成
    • 任务持久化:SQLite 存储,服务重启任务不丢失
    • 优先级队列:重要任务优先处理
    • 自动清理:定期清理旧结果文件,保留数据库记录
  • 智能解析
    • 双解析器:PDF / 图片用 MinerU(GPU加速), Office / HTML 等用 MarkItDown(快速)
    • 内容获取:API 自动返回 Markdown 内容,支持图片上传到 MinIO
    • RESTful API:支持任何编程语言接入
    • 实时查询:随时查看任务进度和状态
如需了解更多,请在MinerU 项目官方网站上查看详细信息。

运行 MinerU Tianshu

  1. 进入算力市场页面
  2. 单击「选择模板」,找到 MinerU Tianshu ,单击「使用模板」。 tianshu-1
  3. 按照需要,选择计费方式、地区、实例规格等配置。 tianshu-2
  4. 检查磁盘大小,并在环境变量中替换 OSS 信息。 tianshu-3
  5. 确认配置无误后,单击「部署」。
  6. 进入实例管理页面,查看新创建的实例。等待实例创建成功,状态变为运行中。 tianshu-4
  7. 查看实例日志,确保服务正常启动。 tianshu-5

使用 MinerU Tianshu

  1. 实例管理页面,单击实例对应的「连接」。
  2. 在弹出的对话框中,获取 HTTP 服务地址。 tianshu-7
  3. 启动 Web Terminal,然后通过 Web Terminal 远程连接实例。 tianshu-6
  4. 在 Web Terminal 中,切换到/vllm-workspace/MinerU/projects/mineru_tianshu目录。
  5. 创建 test_auto_upload_images.py。 test_auto_upload_images.py 的代码示例如下,请将API_BASE_URL的值替换为实际的 HTTP 服务地址,将LOCAL_PDF_PATH的值和OUTPUT_DIR的值替换为测试的实际路径。
    # ==================== 配置 ====================
    API_BASE_URL = "http://localhost:8000"  
    LOCAL_PDF_PATH = "./1.pdf"  # 要上传的 PDF 文件路径
    OUTPUT_DIR = "./auto_upload_output"  # 本地保存目录
    
  6. 运行 test_auto_upload_images.py。
    python3 test_auto_upload_images.py
    
    预期返回:
    ============================================================
    MinerU Tianshu - 自动上传图片到对象存储示例
    ============================================================
    
    📋 Step 1: Submit task
    ------------------------------------------------------------
    📤 Submitting task: demo1.pdf
       Backend: http-client
       Parse method: auto
       Languages: ['zh']
     Task submitted successfully!
       Task ID: 4c18cb2b-ff8c-4d14-b9a6-d2e80c64f9f3
    
    📋 Step 2: Wait for task completion
    ------------------------------------------------------------
     Waiting for task 4c18cb2b-ff8c-4d14-b9a6-d2e80c64f9f3 to complete...
       Status: pending (elapsed: 0.0s)
       Status: processing (elapsed: 2.0s)
       Status: processing (elapsed: 4.0s)
       Status: processing (elapsed: 6.0s)
       Status: processing (elapsed: 8.0s)
       Status: processing (elapsed: 10.0s)
       Status: processing (elapsed: 12.0s)
       Status: processing (elapsed: 14.0s)
       Status: processing (elapsed: 16.0s)
       Status: processing (elapsed: 18.0s)
       Status: processing (elapsed: 20.0s)
       Status: processing (elapsed: 22.0s)
       Status: processing (elapsed: 24.0s)
       Status: processing (elapsed: 26.0s)
     Task completed!
    
    📋 Step 3: Get results with auto image upload to storage
    ------------------------------------------------------------
    🖼️  Requesting API to upload images to object storage...
     Results retrieved successfully!
       Markdown file: demo1.md
       Content length: 51753 characters
       Images uploaded to storage: True
    
    📋 Step 4: Save results to local
    ------------------------------------------------------------
     Saved Markdown to: auto_upload_output/4c18cb2b-ff8c-4d14-b9a6-d2e80c64f9f3_demo1.md
     Saved metadata to: auto_upload_output/4c18cb2b-ff8c-4d14-b9a6-d2e80c64f9f3_metadata.json
    
    📋 Step 5: Download images from storage to local
    ------------------------------------------------------------
    🖼️  Downloading images from object storage...
       📥 Found 8 images to download
       🔐 Downloading from OSS: a625057f-d84f-44a8-92fa-53b3b512edfd.jpg
     Downloaded: a625057f-d84f-44a8-92fa-53b3b512edfd.jpg (33785 bytes)
       🔐 Downloading from OSS: 366f3f26-01bb-4d88-a3ca-0c066fabfc2f.jpg
     Downloaded: 366f3f26-01bb-4d88-a3ca-0c066fabfc2f.jpg (54819 bytes)
       🔐 Downloading from OSS: 9999568b-0075-4cf1-bddc-c4708a0847e2.jpg
     Downloaded: 9999568b-0075-4cf1-bddc-c4708a0847e2.jpg (12612 bytes)
       🔐 Downloading from OSS: 7ab0e083-c22c-4f65-b98f-65acfd4e6dc0.jpg
     Downloaded: 7ab0e083-c22c-4f65-b98f-65acfd4e6dc0.jpg (30049 bytes)
       🔐 Downloading from OSS: 572ed653-a760-4c41-a5a0-79207219593a.jpg
     Downloaded: 572ed653-a760-4c41-a5a0-79207219593a.jpg (47093 bytes)
       🔐 Downloading from OSS: 6b2465d4-eba5-4ffd-b1fa-629edf4cb634.jpg
     Downloaded: 6b2465d4-eba5-4ffd-b1fa-629edf4cb634.jpg (20770 bytes)
       🔐 Downloading from OSS: aa1f1bfa-16c8-463b-99af-5dc4dfc4c994.jpg
     Downloaded: aa1f1bfa-16c8-463b-99af-5dc4dfc4c994.jpg (17916 bytes)
       🔐 Downloading from OSS: 7e8db6de-9533-4257-b767-1b2300dfb4ab.jpg
     Downloaded: 7e8db6de-9533-4257-b767-1b2300dfb4ab.jpg (21239 bytes)
     Downloaded 8 images
     Saved updated Markdown to: auto_upload_output/4c18cb2b-ff8c-4d14-b9a6-d2e80c64f9f3/demo1.md
       Images directory: auto_upload_output/4c18cb2b-ff8c-4d14-b9a6-d2e80c64f9f3/images
    
    ============================================================
     完成!
    ============================================================
    
    📁 本地文件:
     Markdown (含本地图片路径): auto_upload_output/4c18cb2b-ff8c-4d14-b9a6-d2e80c64f9f3/demo1.md
     图片目录: auto_upload_output/4c18cb2b-ff8c-4d14-b9a6-d2e80c64f9f3/images (8 张图片)
     原始 Markdown (含云端链接): auto_upload_output/4c18cb2b-ff8c-4d14-b9a6-d2e80c64f9f3_demo1.md
     元数据: auto_upload_output/4c18cb2b-ff8c-4d14-b9a6-d2e80c64f9f3_metadata.json
    
    🖼️  图片存储:
     云端:所有图片已上传到对象存储(MinIO/COS/OSS)
     本地:已下载 8 张图片到本地
     Markdown 图片链接:本地路径 (images/xxx.png)
     存储类型由服务端配置决定(STORAGE_TYPE 环境变量)
    
    📂 服务器本地文件(如需要):
    
    📄 Markdown 内容预览(前 200 字符):
    ------------------------------------------------------------
    (显示本地图片版本)
    # The response of flow duration curves to afforestation
    
    Patrick N.J. Lane $^{a,c,*}$ , Alice E. Best $^{b,c,d}$ , Klaus Hickel $^{b,c}$ , Lu Zhang $^{b,c}$
    
    $^{a}$ School of Forest and Ecosystem Stud
    ... (truncated)