DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

dsh-pdf-router

Pdf Router

适用于 DeepSeek Harness 的路由式 PDF 阅读器:在存在文本层时使用文本层,为扫描件提供可插拔的视觉 OCR 端点,并执行版面感知处理,将表格返回为 HTML、公式返回为 LaTeX(推荐 MiniCPM-OCR)。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:yuanfuda/dsh-pdf-router#3731536711a28cb0256adb3a8b5524caaf92258d
README兼容性版本

兼容性与来源证明

Pdf Router 以 dsh-pdf-router 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/10/28

版本

0.2.0stable
2026/10/28

相关插件

正在加载相关插件…

最新版
0.2.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/28
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 vision-media 分类下经过校验的插件。

Vision Routerdsh-vision-router为仅支持文本的 DeepSeek Harness agents 提供视觉能力:内置免费视觉链路和像素级工具。除非配置为严格仅限本地使用,否则远程视觉提供商(包括默认的免费回退服务)会接收图像内容。Video Storyboarddsh-video-storyboard将视频转换为可引用的分镜图:每个镜头一帧,单元格大小根据剪辑密度调整(1/1 … 1/8),按行排列以尽量减少图片数量,并提供模型可引用的带时间戳索引和可覆盖的分级映射。See Nowdsh-see-now让 DSH 监看实时屏幕或摄像头画面:根据画面变化程度为每一帧评分,只保留重要的帧,并将它们整合到一张图像中。Vision Toolkit@anionex/dsh-vision-toolkit面向 Harness 原生集成的 DeepSeek 与 agent-vision-toolkit:图像问答、OCR、定位、UI 还原、像素差异、Artifacts 和 Web UI。

README

dsh-pdf-router

A routing PDF reader for DeepSeek Harness. One tool, pdf_read, that picks the cheapest engine per page instead of blindly OCRing everything:

Page situationEngineCost
Has a text layerPyMuPDF direct extraction~0.01 s/page, zero recognition error
No text layer (scan/photo)vision OCR endpoint (MiniCPM-OCR recommended)~20-130 s/page
Tables or formulas matterMiniCPM-OCR layout pipeline~130-200 s/page

The point is not "PDF to text" - several plugins do that. The point is that a page with tables and formulas comes back machine-usable, not merely readable.

Install

dsh plugin --profile web add github:yuanfuda/dsh-pdf-router

Restart the harness afterwards: the loader imports plugin modules once, so a freshly installed bundle is picked up on the next start. The tool pdf_read then appears for every session in that profile.

The recommended backend: MiniCPM-OCR

MiniCPM-OCR is a 1.3B document-parsing vision model from OpenBMB, released under Apache-2.0 (code and weights). It is what this plugin is built and measured against.

Why it is the recommendation

  • It returns structure, not just characters. Tables come back as HTML <table> elements (OTSL internally, converted by the SDK), display formulas as LaTeX, and the model keeps the reading order of multi-column pages. A plain OCR pass gives you neither - it flattens a table into a column of numbers.
  • It handles real-world capture. Scans, phone photos, curved pages, skewed pages, recaptured screens, seals and stamps are in scope, not just clean PDFs.
  • It is small enough to run locally. Q8_0 is 775 MB plus an 859 MB vision projector, ~16 GB system RAM is the documented floor, and it runs on CPU, Vulkan or CUDA through llama.cpp, plus vLLM/SGLang/Ollama. No cloud call, so documents never leave the machine.
  • Published quality numbers: 93.68 on Real5-OmniDocBench, 54.7 on OCRBench v2, 1.2 pages/s on an RTX 5090 - reported at roughly 1.49x the throughput of PaddleOCR-VL-1.6 and 3.62x that of MinerU2.5 Pro.
  • There is a companion quality model. MiniCPM-OCR Jev (2B) scores an OCR result 0-1 per region, which is how you find the cells that need a human look instead of trusting the whole page.

Weights and sizes (GGUF, from the official repo)

FileSizeNote
MiniCPM-OCR-1_0-Q4_K_M.gguf505 MBsmallest usable; slight loss on dense code
MiniCPM-OCR-1_0-Q8_0.gguf775 MBrecommended balance
MiniCPM-OCR-1_0-F16.gguf1.4 GBhighest fidelity
mmproj-model-f16-4x.gguf859 MBvision projector, required for images

Measured on this project's reference machine (Ultra 7 155H, Intel Arc iGPU, 22 threads, no NVIDIA GPU):

PathTimeResult
Text layer, 30-page arXiv paper1.9 s total0 OCR pages needed
MiniCPM-OCR, one scanned page21-43 stwo-column reading order preserved
MiniCPM-OCR SDK, one table page199 s5 HTML <table> blocks
MiniCPM-OCR SDK, one formula page65 scompilable LaTeX

Quality check on a real paper page, scored against the PDF's own text layer: sequence CER 0.3% for MiniCPM-OCR versus 53% for a plain OCR pass - the difference is reading order, not characters.

Deploying it locally (Windows, no NVIDIA GPU)

# 1) weights - ModelScope mirrors the official repo (huggingface.co is often blocked in CN)
curl.exe -L -o MiniCPM-OCR-1_0-Q8_0.gguf `
  https://modelscope.cn/models/OpenBMB/MiniCPM-OCR-1.0-gguf/resolve/master/MiniCPM-OCR-1_0-Q8_0.gguf
curl.exe -L -o mmproj-model-f16-4x.gguf `
  https://modelscope.cn/models/OpenBMB/MiniCPM-OCR-1.0-gguf/resolve/master/mmproj-model-f16-4x.gguf

# 2) runtime: llama.cpp prebuilt with the Vulkan backend drives an Intel/AMD iGPU
#    https://github.com/ggml-org/llama.cpp/releases -> llama-b11962-bin-win-vulkan-x64.zip

# 3) serve an OpenAI-compatible endpoint on :18499
llama-server.exe --model MiniCPM-OCR-1_0-Q8_0.gguf --mmproj mmproj-model-f16-4x.gguf `
  --host 127.0.0.1 --port 18499 --ctx-size 16384 --n-gpu-layers 999

Layout-aware (want: structure) additionally needs the minicpm-ocr SDK and PP-DocLayoutV3:

pip install "minicpm-ocr[all]==1.0.2" "paddlepaddle==3.2.1"   # CPU is enough
# PP-DocLayoutV3_infer.tar (126 MB) from paddle-model-ecology.bj.bcebos.com

Sources: model card . llama.cpp guide . PyPI SDK

Using a different backend

The OCR half is provider-agnostic: anything that speaks OpenAI POST {base}/chat/completions with image_url content parts works. Point ocrEndpoint at Ollama, vLLM, LM Studio or a hosted API:

{ "ocrEndpoint": "http://127.0.0.1:11434/v1", "ocrModel": "qwen2.5vl:7b", "ocrProfile": "generic" }

ocrProfile: generic asks the model for Markdown with HTML tables and LaTeX formulas in words. Expect that only models with real document training - which is exactly what MiniCPM-OCR is for - will honour it. structure mode is MiniCPM-OCR specific: it depends on the model's own table and formula prompts.

Requirements

  • PyMuPDF in the python that runs router.py: pip install pymupdf. Without it the tool returns an actionable error rather than a traceback.
  • Optional the OCR endpoint above. Without it, digital PDFs still work and scanned pages return a warning explaining what is missing.

Configuration

Set on the plugin row (config) in the bundle patch or your profile patch:

KeyDefaultMeaning
pythonPathauto-detect, then pythonpython that can import pymupdf
ocrEndpointhttp://127.0.0.1:18499/v1OpenAI-compatible base URL
ocrModelminicpm-ocrmodel name sent to the endpoint
ocrApiKeyemptybearer token for hosted endpoints
ocrProfileautoauto / minicpm / generic prompt family
ocrPromptemptyoverrides the instruction text
sdkExeauto-detectminicpmvocr executable, structure only
layoutModelDirauto-detectPP-DocLayoutV3 inference dir, structure only
defaultWantautoauto / text / structure
timeoutMs1800000whole-document budget

Tool usage

{ "path": "C:\\docs\\paper.pdf" }                                    // per-page routing
{ "path": "C:\\docs\\paper.pdf", "pages": "7", "want": "structure" } // HTML tables + LaTeX
{ "path": "C:\\docs\\scan.pdf", "want": "text" }                     // never call OCR
{ "path": "C:\\docs\\photo.jpg" }                                    // images are OCRed directly

Returns route counts, per-page timing, warnings, the Markdown, and the out path. Documents above 14000 characters are written to out and truncated inline.

Limitations

  1. Slow on CPU-only hardware. A 30-page two-column paper through the SDK is roughly an hour; auto on born-digital PDFs is seconds. Batch overnight.
  2. Tables are structured, not perfect. Small tables with multi-level headers can still misalign columns.
  3. Scans need the endpoint deployed. The plugin does not install 1.6 GB of weights for you.
  4. Code edits need a harness restart. The loader imports plugin modules with a plain import(), so Node caches them by URL; HMR does not cover a workspace directory linked into a profile.

Development

node selftest.mjs checks registration and the render path offline, without booting a harness.

Publishing checklist (not a market listing yet)

  1. Remove private: true; fill repository, homepage, bugs, author.
  2. LICENSE (MIT) and a raster icon-180.png are already included - market tiles reject SVG, which is why icon.svg is only the in-app manifest icon.
  3. Push to a public GitHub repo and add the dsh-plugin topic.
  4. Optional: npm publish --access public (the name dsh-pdf-router is free).
  5. PR one file data/plugins/<owner>__dsh-pdf-router.yml to awesome-dsh-plugin. The repo must be at least one day old at submission time.