dsh-doc:DeepSeek Harness 全本地文档解析与离线 OCR

前言

在 DeepSeek Harness(DSH)里让智能体读 PDF、Word、Excel 或扫描件,常见做法是接远程文档转换服务、起 Docker 容器,或把文件上传到带 API Key 的云端 OCR。这些路径要么依赖网络与额外部署,要么会把文档送出本机。

dsh-doc(GitHub 仓库 Sqhao-O/dsh-docs)走另一条路:在 DSH 进程内用本地引擎解析文档,Windows x64 上还可挂载预构建的离线 Python + Xberg 运行时,配合本地 Tesseract 语言包做 OCR。不需要 Docker、HTTP 服务或 API Key,文档不离开磁盘。

下面介绍插件定位、能力边界、安装步骤与典型用法。事实均来自项目 README、package.json 与 SkillHub 目录页。

这是什么

dsh-doc 是维护者 Sqhao-O 发布的 DSH 插件,npm 包名与插件 id 均为 dsh-doc(工具前缀 dshdoc_*;早期曾用 dsh-docling / docling_* 命名,现已更名)。SkillHub 分类为「模型推理」,仓库约 12 stars,许可证 MIT,当前发布版本 0.1.1。

一句话定位:给 DSH 智能体提供全本地的文档智能能力——把 PDF、Office、图片或扫描件解析为 Markdown、纯文本或结构化 JSON,供后续推理与问答使用。

核心功能

支持的输入格式

README 列明并已通过集成测试验证的格式包括:

  • 文档:PDF、DOCX、XLSX、PPTX、Markdown、HTML、CSV 及纯文本
  • 图片与扫描件:PNG、JPEG、TIFF、WebP,以及需 OCR 的扫描版 PDF

其他 Xberg 支持的格式可在自有语料上自行验证后再用于生产。

输出形态

转换结果可为 Markdown、纯文本,或 JSON 结构的 Tool Result。page_range 对 Markdown/纯文本按从 1 开始的页码做区间截取;JSON 输出保留完整结构化文档。

双引擎架构

平台 推荐引擎 OCR
Windows x64 engine: python,指向预构建 runtime 默认开启(defaultOcr: true),内置英文与简体中文 Tesseract 数据
其他平台 engine: node(Xberg Node 绑定) 默认关闭;若需 OCR 须本地配置 tessdataPath,缺语言包返回 ENGINE_OCR_UNAVAILABLE,不会自动下载模型

Windows 预构建运行时包含 CPython 3.11.9、xberg==1.0.14 及固定的 eng / chi_sim 语言包;下载与解压均做 SHA-256 校验。Python worker 仅通过 stdio 接收文件字节快照、显示名、MIME 与转换选项,不接收用户路径或 URL,离线运行且禁用文档派生 OCR 缓存。

提供的工具

工具 用途
dshdoc_health 检查当前所选本地引擎是否就绪
dshdoc_extract 解析本地文件的便捷入口(推荐)
dshdoc_convert_file 解析白名单内的本地文件
dshdoc_convert_url 兼容桩,对 HTTP(S) 输入返回 UNSUPPORTED_URL

插件检测到 URL 输入会直接拒绝,避免把远程地址转发给 Xberg 或 Python。远程文档须先下载到允许读取的本地目录,再调用本地解析工具。

路径与权限

会话工作区默认可读。若需访问工作区以外的持久目录(例如共享文档库),在 cordis.patch.yml 中配置 allowedLocalRoots。相对路径相对于 DSH 会话工作区解析,而非 dsh web 启动时的 shell 目录。

安装与启用

前置条件:本机已安装可用的 dsh CLI,Node 版本为 ^22.19>= 24

1. 安装插件包

在目标 profile(以下以 web 为例)安装已发布的 npm 包:

dsh plugin --profile web add dsh-doc

2. Windows x64:下载离线 OCR 运行时

将预构建运行时放到 node_modules 之外,避免插件升级时删除:

node <home>/.dsh/profiles/web/node_modules/dsh-doc/scripts/fetch-runtime-win32-x64.mjs <home>/.dsh/runtimes/dshdoc-runtime-win32-x64

<home> 替换为本机用户主目录的绝对路径。脚本会校验压缩包 SHA-256,并对解压文件做 manifest 校验。非 Windows x64 平台跳过此步,后续使用 engine: node

3. 编辑 profile 配置

<home>/.dsh/profiles/web/cordis.patch.yml 中保留已有条目,新增或更新:

Windows x64(完整 OCR 能力):

- id: dsh-doc
  config:
    engine: python
    runtimeDir: <home>/.dsh/runtimes/dshdoc-runtime-win32-x64
    maxFileBytes: 52428800
    maxOutputChars: 32000
    defaultOcr: true
    defaultTableMode: accurate
    defaultOutputFormat: md

其他平台(Node 回退,无默认 OCR):

- id: dsh-doc
  config:
    engine: node
    defaultOcr: false
    maxOutputChars: 32000

4. 验证并重启

确认配置已生效:

dsh --profile web --dump-config

检查输出中 dsh-doc 条目是否携带预期 config。重启 dsh web 后,调用 dshdoc_health 确认引擎状态。

README 还提供一段「一键安装」提示词,可粘贴到运行中的 DSH 会话,由智能体在终端完成上述步骤;详见仓库 INSTALL.md

典型用法

安装完成并重启 dsh web 后,可在会话中让智能体读取工作区内的本地文件,例如:

Read ./reports/annual-report.pdf and give me the three main risks.
Extract the tables from ./financials.xlsx.
Read the text from ./scanned-invoice.png.

也可在工具层直接调用 dshdoc_extract 解析指定路径。仅工作区或 allowedLocalRoots 下的路径可读。

适用场景与注意

适合谁

  • 需要在 DSH 工作流中处理合同、报表、幻灯片、扫描发票等本地文档,且希望数据不出本机的开发者
  • Windows x64 用户需要开箱即用的离线 OCR(中英)时,优先使用 Python 引擎路径
  • 不愿维护 Docling Serve、Docker 或远程文档 API 的团队

使用注意

  1. 插件以当前 dsh 进程的权限运行,安装前应审阅 源码 与 MIT 许可证。
  2. 不要将 Docling Serve、Docker 容器或可下载 OCR 后端接入此插件;项目明确禁止这类远程或自动拉取模型的配置。
  3. 非 Windows 平台默认无离线 OCR;若业务强依赖扫描件识别,应在 Windows x64 上部署 Python 运行时,或自行准备经审查的本地 tessdataPath
  4. 单文件大小受 maxFileBytes(默认 52428800 字节)与 maxOutputChars(示例配置 32000)限制,超大文档需分段或调高配置。
  5. SkillHub 目录页(skillhub.cn/plugins/Sqhao-O/dsh-docs)为社区收录站点,与 DeepSeek / 幻方无官方从属关系;安装命令以 README 与 npm 包 dsh-doc 为准。

结尾

dsh-doc 把 PDF、Office、图片与扫描件的解析收拢到 DSH 插件内,在 Windows x64 上提供完整的离线 OCR 路径,在其他平台上以 Node 引擎覆盖非 OCR 解析需求。若你的智能体需要「读本地文档再推理」,可按上文步骤安装并先用 dshdoc_health 确认环境。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜