编者按

Lee-Hilex/dsh-mineru

基于 MinerU 的 DeepSeek Harness 多模态文档解析插件:PDF/Word/PPT/Excel/HTML/图片 → 结构化 Markdown(免 Token 的 Agent 轻量解析 / 精准解析双 API 模式)

这是一个 DeepSeek Harness(DSH)插件。本站汇总其 GitHub README、安装信息、维护状态与公开安全信号。

dsh-mineru

license version dsh MinerU

仓库: https://github.com/Lee-Hilex/dsh-mineru · npm: dsh-mineru · 更新日志

English | 简体中文

dsh-mineruDeepSeek Harness(简称 dsh)的 MinerU 多模态文档解析插件:把 PDF、Word、PPT、Excel、HTML 和图片一键转成结构化 Markdown配置了 MinerU Token 走 🎯 精准解析 API;不配 Token 也能用 ⚡ Agent 轻量解析 API(免登录,IP 限频)。

目录

简介

这是什么?

dsh-mineru 把 MinerU(OpenDataLab 出品的高精度文档解析引擎)接入 DeepSeek Harness 的 Agent 生态,让纯文本模型也能"看懂"文档:模型拿到的是结构化 Markdown(含表格、公式、图片),而不是打不开的二进制文件。

典型场景:

  • 读论文 / 合同 / 报告:让 Agent 解析 PDF 后总结要点、提取数据;
  • 批量整理资料:一次解析几十份文档,逐项产出 Markdown;
  • 图片 / 截图转文字:OCR 扫描件、网页截图转可检索文本;
  • 公式与表格还原:论文中的数学公式、Excel 表格结构完整保留。

支持的文件格式

格式精准解析 API(需 Token)Agent 轻量 API(免 Token)
PDF
Word(.doc / .docx✅(仅 .docx
PPT(.ppt / .pptx✅(仅 .pptx
Excel(.xls / .xlsx✅(仅 .xlsx
HTML(.html / .htm✅(自动强制 MinerU-HTML 模型)
图片(.png .jpg .jpeg .jp2 .webp .gif .bmp

注:Agent 轻量 API 不支持 .doc / .ppt / .xls(旧版 Office 格式)与 HTML,遇到这类文件请改用精准解析(需 Token)。

核心能力

  • 双 API 自动切换 — 按是否配置 Token 自动选择精准解析或轻量解析,也可手动指定;
  • 渐进式工具曝光 — 平时只挂一个极小的 mineru_activate 引导工具,激活后才挂载完整工具集,省上下文;
  • 拖拽上传 — 文件直接拖进聊天窗口,路径自动填入输入框,纯文本模型也能处理文档;
  • 自动分批批量解析 — 一次提交上百个文件/URL,自动按官方限额分批;
  • 限流感知 — 内置令牌桶、每日限额、429 退避重试,错误码全部翻译成可操作提示;
  • 结果落地为 Artifact — 解析结果写入工作区文件,Web 界面可预览/打开,带签名链接。

快速开始

第 1 步:安装

Note: 需要已安装 DeepSeek Harness(0.1.0-rc.6 或兼容的 0.1.x),且 dsh 命令可用。

从 npm 安装(推荐)

dsh plugin --profile web add dsh-mineru        # Web 界面使用
dsh plugin --profile headless add dsh-mineru   # 无头(Headless)模式使用

从源码构建(开发 / 预览最新改动)

git clone git@github.com:Lee-Hilex/dsh-mineru.git
cd dsh-mineru
npm install        # 安装 peer 依赖(本包无构建步骤,无需 build)
npm pack           # 产出 dsh-mineru-<version>.tgz
dsh plugin --profile web add ./dsh-mineru-<version>.tgz

修改源码后重新 npm pack 并重装即可。注意本地安装请用 tgz(pnpm link: 安装会使 @deepseek-ai 依赖解析脱离 profile)。

第 2 步:验证安装

dsh --profile web --dump-config | grep -A 2 "id: mineru"

期望输出(# == 注释行 + 你的插件行):

# == dsh-mineru
  - id: mineru
    name: dsh-mineru

然后重启 Web profile(dsh web),在 设置 → 插件 → MinerU 解析 中即可看到本插件。

第 3 步:配置(可选)

不配 Token 也能用(自动走 Agent 轻量解析)。配 Token 可以解锁完整能力(精准解析 + 批量 + HTML + 更多格式):

  • Web 界面:设置 → 插件 → MinerU 解析 → 在 Token 输入框粘贴 Token(只写不读,留空保留现有值);
  • Headless / 命令行:在 $DSH_HOME/.credentials.yaml 写入 MINERU_API_TOKEN: <你的Token>,或设置环境变量 MINERU_API_TOKEN

Token 每次调用时实时解析,轮换后无需重启立即生效。Token 去哪领:https://mineru.net 注册后到 API 管理页面获取。

第 4 步:开始使用

Web 界面(推荐方式,支持拖拽):

  1. 把 PDF/Word/图片直接拖进聊天窗口 —— 文件会自动保存到会话工作区,路径填入输入框(不会自动发送);
  2. 在输入框补一句需求,比如「把这份 PDF 解析成 Markdown,然后总结一下重点」;
  3. 发送。Agent 会自动激活工具并调用 mineru_parse,解析结果以文件形式返回,可点击预览。

URL 解析:直接告诉 Agent「解析这个网页/文档:https://example.com/paper.pdf」即可。

Headless 快速验证(冒烟测试):一次性任务走 headless profile:

dsh --profile headless "把 C:/docs/sample.pdf 解析成 Markdown,并总结前 3 段"

Headless 与 Web 共用同一套工具语义;也可以在会话中输入 /mineru-tools 加载使用说明技能。

两种 API 模式

维度🎯 精准解析 API(需 Token)⚡ Agent 轻量解析 API(免 Token)
接口/api/v4/extract/task/api/v4/file-urls/batch/api/v4/extract/task/batch/api/v1/agent/parse/url/api/v1/agent/parse/file
模型pipeline / vlm(默认)/ MinerU-HTML固定轻量 pipeline 模型
大小限制≤ 200 MB≤ 10 MB
页数限制≤ 200 页≤ 20 页
批量解析✅(URL 每批 ≤200,本地上传每批 ≤50,自动分批)❌ 仅单文件
输出Zip:full.md + content_list.json + layout.json + 图片(可加 docx/html/latex)仅 Markdown
适用场景长文档、扫描件、公式表格、批量、HTML快速粗读、小文件、临时使用

模式选择mode 参数或配置项):

  • auto(默认)— 有 Token 走精准解析,没 Token 走 Agent 轻量;
  • precision — 强制精准解析,没配 Token 会直接报错提示;
  • agent — 强制 Agent 轻量解析。

想知道当前会话实际走的哪个 API:调用一次 mineru_activate,返回结果里的 api 字段会明确告诉你(precisionagent)。

工具详解

安装后,工具集默认渐进式曝光:一开始只有 mineru_activate 一个引导工具,调用一次即解锁其余三个工具,随后 mineru_activate 对本会话自动隐藏。

mineru_activate —— 激活引导

说明
用途解锁 mineru_parse / mineru_batch_parse / mineru_task 并加载 mineru-tools 技能
参数
返回当前生效的 API 模式、是否已配 Token、各 API 限制等现状摘要

mineru_parse —— 解析单个文档

工作区文件路径http(s) URL 解析为结构化 Markdown。

参数必填说明
source工作区文件路径,或完整 http(s) URL
modeauto(默认)/ precision / agent
modelVersion精准解析模型:pipeline / vlm(默认,推荐)/ MinerU-HTML(HTML 源自动强制)
language文档语言包,默认 ch(中英),见 language 取值
enableTable表格识别,默认 true
enableFormula公式识别,默认 true
isOcr强制 OCR(扫描件),默认 false
pageRanges精准解析页码范围,逗号分隔,如 "2,4-6";支持倒数页 "2--2"(倒数第 2 页)
pageRangeAgent 解析页码范围,仅 from-to 或单页,如 "1-10"
extraFormats额外导出格式(仅精准解析):docx / html / latex
dataId业务数据 ID(可选,≤128 字符)
timeoutMs整个操作(含轮询)超时,默认取插件配置(10 分钟)
output结果目录基名,默认取源文件名

返回要点ok、所用 api/modelVersiontaskId、耗时、runDir 结果目录、截断的 Markdown 预览、Artifact 列表(Web 含签名预览链接)。

mineru_batch_parse —— 批量解析(仅精准解析)

一次解析多个文档,本地文件路径与 URL 可混用,自动分批提交(官方限额内),逐项报告成功/失败。

参数必填说明
sources文件路径 / URL 混合列表
outputPrefix结果目录基名,默认 batch
dataIdPrefix业务数据 ID 前缀,每项自动追加序号(可选)
其余mineru_parse 的公共选项(mode 除外——本工具强制精准解析)

分批规则:本地文件每批 ≤ 50 个、URL 每批 ≤ 200 个、单次调用总共 ≤ 1000 个;超出会报错并提示拆分调用。

返回要点:成功/失败计数、各 batchId、逐项结果(每个成功项包含其 full.md 所在目录),失败项附错误信息。

mineru_task —— 任务查询与结果收集

解析超时后不丢任务:凭 mineru_parse 返回的 taskId + api 继续查询进度、收集结果,无需重新提交。

参数必填说明
taskId提交任务时返回的 task_id
api任务所属:precisionagent
wait是否轮询等待任务完成,默认 false(只查一次)
collect任务完成时是否下载结果落地为 Artifact,默认 true
output收集结果目录基名,默认 task
timeoutMswait 模式下的超时

典型场景:解析大 PDF 时 mineru_parse 超时了 → 告诉 Agent「用 mineru_task 继续收集 taskId=xxx 的结果」。

mineru-tools 技能

插件自带同名技能:会话中输入 /mineru-tools 或让 Agent 调用 skill 工具加载,即可获得工具清单、双 API 对比、使用要点与官方限制的完整说明(Agent 视角的使用手册)。

解析结果与 Artifacts

所有解析结果写入 <workspace>/.dsh-mineru/artifacts/<run>/<workspace> 为当前会话工作区,<run> 为每次解析的独立目录):

.dsh-mineru/artifacts/<run>/
├── full.md                  # 结构化 Markdown 主结果(两模式都有)
├── run.json                 # 本次解析元数据(来源、API、模型、耗时等)
├── *_content_list.json      # 内容结构化清单(仅精准解析)
├── layout.json              # 版面布局数据(仅精准解析)
├── *_model.json             # 模型原始输出(仅精准解析)
├── *_origin.pdf             # 服务端转换的原始文件(仅精准解析)
├── images/                  # 文档内嵌图片(仅精准解析)
└── result.zip               # 服务端原始结果包(仅精准解析)
  • 工具结果里附限长 Markdown 预览(默认前 12 KB),完整内容请用 read 工具读取 full.md
  • Web 界面:Artifact 带 HMAC 签名预览链接(默认有效期 24 小时),点开即可看/下载;工具结果卡片可直接打开文件;
  • Headless:直接使用返回的绝对路径。

批量解析时每个文档在独立子目录:<run>/<文件名>/full.md

配置参考

配置分三层解析:schema 默认值 ← 组合层(profile patch 中的 mineru 行 config)← 用户设置(Web 设置卡片写入),后一层覆盖前一层。

# 组合层配置示例(cordis.patch.yml 或 profile patch)
- id: mineru
  config:
    mode: auto               # auto | precision | agent
    modelVersion: vlm        # pipeline | vlm | MinerU-HTML
    language: ch             # 文档语言包
    enableTable: true        # 表格识别
    enableFormula: true      # 公式识别
    isOcr: false             # 强制 OCR
    extraFormats: []         # docx | html | latex(仅精准解析)
    exposeMode: progressive  # progressive: 引导激活; always: 全局注册全部工具
    timeoutMs: 600000        # 整体超时(毫秒)
    pollIntervalMs: 3000     # 结果轮询间隔(毫秒)
    inlineMarkdownBytes: 12000  # 工具结果内联预览字节数
    submitRatePerMin: 40     # 提交限速(次/分钟)
    pollRatePerMin: 900      # 查询限速(次/分钟)
    dailySubmitLimit: 5000   # 每日提交限额
    artifactRootName: .dsh-mineru  # Artifact 根目录名

完整配置项

配置项默认值说明
modeautoAPI 模式:auto(按 Token 自动)/ precision / agent
modelVersionvlm精准解析模型:pipeline / vlm / MinerU-HTML(HTML 源自动强制)
languagech文档语言包(见下表)
enableTabletrue表格识别开关
enableFormulatrue公式识别开关
isOcrfalse强制 OCR(扫描件)
extraFormats[]额外导出格式(仅精准解析):docx / html / latex
exposeModeprogressiveprogressive:引导激活;always:全局注册全部工具
timeoutMs600000整个操作(含轮询)超时,范围 10 s ~ 1 h
pollIntervalMs3000结果轮询间隔,范围 500 ~ 60000 ms
pollJitterMs500轮询随机抖动,避免请求整齐划一
maxFileBytes0本地文件大小上限;0 = 按 API 模式限额(200 MB / 10 MB)
inlineMarkdownBytes12000工具结果内联的 Markdown 预览字节数
artifactUrlTtlSec86400签名预览链接有效期(秒),范围 60 s ~ 30 天
submitRatePerMin40提交限速(官方上限 50/分钟)
pollRatePerMin900查询限速(官方上限 1000/分钟)
dailySubmitLimit5000每日提交限额(官方上限 5000/天)
tokenCredentialMINERU_API_TOKENDSH 凭据引用名(只存引用,不存密钥)
apiBaseUrlhttps://mineru.netMinerU API 地址
artifactRootName.dsh-mineruArtifact 根目录名(单层目录名)
userAgentdsh-mineru/<版本>请求 User-Agent

Token 与凭据

配置中只保存凭据引用名(默认 MINERU_API_TOKEN),Token 值存放在 dsh 凭据层,三种方式任选:

  1. Web 设置卡片:Token 输入框只写不读——留空保留现有值,点「清除」删除;
  2. Headless / 命令行$DSH_HOME/.credentials.yaml 写入 MINERU_API_TOKEN: <token>
  3. 环境变量:设置 MINERU_API_TOKEN

Token 每次操作实时解析——轮换后下一次调用立即生效,无需重启。日志、错误与设置响应永不携带密钥

language 取值

说明说明
ch中英(默认)ch_server中文(服务端)
en英文japan日文
korean韩文chinese_cht繁体中文
latin拉丁语系arabic阿拉伯语
cyrillic西里尔语系east_slavic东斯拉夫语系
devanagari天城文th泰文
ta泰米尔文te泰卢固文
ka格鲁吉亚文el希腊文

使用技巧

  • 拖拽上传:把文件拖进聊天窗口即可——文件自动保存到会话工作区,路径填入输入框草稿(不自动发送),你补一句需求再发送。这绕开了纯文本模型不支持的图片附件通道;
  • URL 注意:MinerU 服务端会去抓取该 URL——无法访问被墙站点(如 github.com、aws 等)。这类文档请先下载到本地再传路径;
  • 页码范围:精准解析用 pageRanges"2,4-6""2--2" 表示倒数第 2 页);Agent 用 pageRange"1-10");
  • 长文档:优先精准解析 + pageRanges 分段处理;vlm 模型对公式/复杂版面效果最好;
  • 超时恢复:解析超时不等于失败——任务还在服务端跑,用 mineru_task + taskId 继续收集;
  • HTML 文档:仅精准解析支持,且自动强制 MinerU-HTML 模型(无需手动指定);
  • HTML 文件每日限额:官方对 HTML 提交有单独限制(最多 100 个/天)。

Web 界面

  • 设置 → 插件 → MinerU 解析:Token(只写)、模式、模型、语言、表格/公式/OCR 开关、额外导出格式,以及可折叠的高级设置(超时/轮询/限速/限额、API 地址、凭据引用名、Artifact 根目录名)。每个操作都有即时反馈(忙碌状态与结果消息);保存带修订冲突检测(409 冲突 → 重新加载后重试);
  • 测试按钮:「测试 Token」提交官方一页示例 PDF 验证密钥(约消耗 1 页额度);「测试 Agent API」验证免登录通道(受 IP 限频);
  • 工具卡片:三个解析工具的结果以专属卡片呈现——模式徽章、耗时、任务 ID、Artifact 列表(点击打开 / 链接预览)、限长预览、逐项批量结果。

限流与可靠性

MinerU 官方限流(插件已内置本地限速与退避,超限的请求会被服务端以 HTTP 429 拒绝):

维度官方限额插件本地默认
提交50 个文件/分钟40 个/分钟
每日提交5000 个文件/天/用户(HTML 最多 100 个/天)5000(本地提前报错)
结果查询1000 次/分钟900 次/分钟

插件行为:

  • 内置令牌桶限速(提交/查询分开),超限的本地请求排队而不是打爆 API;
  • 命中 HTTP 429 时按 Retry-After 退避自动重试
  • 轮询带随机抖动(pollJitterMs),避免请求整齐划一触发风控;
  • 整体超时(timeoutMs)后任务不丢——用 mineru_tasktaskId 继续收集。

错误码速查

错误码含义处理方式
A0202 / A0211Token 错误 / 过期在设置中更新 MinerU Token
-60005 / -30001文件超限(200 MB / 10 MB)压缩或拆分文件
-60006 / -30003页数超限(200 页 / 20 页)pageRanges / pageRange 分段
-60018当日配额已满明天再试,或检查 dailySubmitLimit
429请求过于频繁稍后重试或降低并发
MINERU_TOKEN_REQUIRED需要 Token 的操作未配 Token配置 Token 或改用 Agent 模式
MINERU_UNSUPPORTED_TYPE该格式不被当前 API 支持换格式或换 API 模式
MINERU_BATCH_TOO_LARGE单次批量超过 1000 个拆分后多次调用

所有错误都会映射为可操作的中文提示,而不是原始错误码。

安全模型

  • 路径隔离:输入路径以会话工作区为根解析,不能读取工作区外文件;
  • ZIP 解包防护:拒绝绝对路径、.. 穿越、加密条目与 ZIP64,带条目数量/体积上限,每个解出的条目都校验 CRC32;
  • Artifact 边界:只写入 <workspace>/.dsh-mineru;预览 URL 为 HMAC 签名 + 过期时间,每次读取重新校验;
  • Web 路由:仅接受同源请求;HTML/SVG 等 Artifact 以附件方式下发(nosniff);
  • 可取消:所有网络请求响应工具取消信号——会话取消/超时会立即停止上传、轮询与下载;
  • 密钥不出库:Token 只存在于凭据层,日志/错误/设置响应永不携带。

常见问题 FAQ

Q:不配 Token 能用吗? 能。自动走 Agent 轻量解析 API(≤10 MB、≤20 页、仅 Markdown、免登录),适合快速粗读。

Q:为什么工具列表里只有 mineru_activate 这是渐进式曝光设计。调用一次 mineru_activate,其余三个工具立即解锁;或者把配置项 exposeMode 改为 always 全局注册。

Q:解析超时了,文件会不会丢? 不会。任务在 MinerU 服务端继续执行,用 mineru_tasktaskId + api)随时查询进度并收集结果,无需重新提交。

Q:拖拽文件后为什么没有自动解析? 拖拽只把文件路径填入输入框草稿(防误发送),需要你补充需求后手动发送,Agent 才会开始解析。

Q:报错 A0202 / A0211 怎么办? Token 无效或过期。在「设置 → 插件 → MinerU 解析」重新填写 Token(留空再点保存不会覆盖旧值)。

Q:HTML 网页能解析吗? 能,但仅精准解析 API 支持(需 Token),且自动使用 MinerU-HTML 模型。注意服务端抓不到被墙的 URL。

Q:怎么批量解析?mineru_batch_parse,把文件路径/URL 列成列表即可,自动分批(本地 ≤50/批、URL ≤200/批、单次 ≤1000)。

Q:Agent 轻量解析和精准解析结果有什么差别? 轻量解析只出 Markdown;精准解析额外产出 content_list.jsonlayout.jsonmodel.json、内嵌图片,还可加导出 docx/html/latex,且支持表格/公式识别参数。

开发与发布

本包无构建步骤lib/ 为可直接加载的 ESM,lib/client.js 为打包形态的浏览器 bundle。

node --check lib/*.js      # 语法检查
npm pack                   # 打包本地 tgz

新版本发布请严格按 RELEASE.md 清单执行(升版本号 → 更新 CHANGELOG 与双语 README → 打包验证 → 打 tag 推送 → npm publish),完整开发循环见 CONTRIBUTING.md

贡献

欢迎 Issue 与 PR,见 CONTRIBUTING.md。报告问题时请勿粘贴 MinerU Token

许可

MIT。MinerU 由 OpenDataLab 提供,其官方文档(API 文档限流策略)为权威依据。

REPOSITORY SIGNALS

安全与安装证据

该分数只基于公开仓库元数据与本站登记的安装证据,不等同于代码安全审计。

来源可追溯

来自公开插件目录,并链接到公开 GitHub 仓库。

许可证

仓库声明 MIT 许可证。

维护活跃度

最近 180 天内有代码更新。

安装证据

尚未登记可复验的精确安装元数据,请按仓库说明手动检查。

安装生命周期脚本

已检查的包元数据未声明安装生命周期脚本。