dsh-pdf-translate:DeepSeek Harness 插件

前言

DeepSeek Harness (DSH) 的核心设计理念是“一切皆插件”。在本地化 PDF 处理这一场景中,通常需要人工介入或依赖昂贵的 SaaS 服务。dsh-pdf-translate 插件利用 DeepSeek 或任意 OpenAI 兼容 API,直接在本地对文本型 PDF 进行全文翻译,输出保留版式、字体样式、图片与链接的可编辑 PDF。

核心能力

该插件解决了“翻译”与“版式保留”之间的矛盾,主要能力包括:

  • 输入输出:支持文本型 PDF(有文本层);输出文本可选中、可复制的可编辑 PDF。
  • 版式保留:保留段落区域、字体样式、图片与链接。
  • 原文处理:原文经 redaction 真正删除,而非简单的白块遮盖。
  • 翻译控制:代码块原样保留;段落级翻译,支持样式(字号/颜色/对齐)。
  • 单任务限制:单次任务最多翻译 50 页,超出需分页段多次处理。
  • 术语表与缓存:支持导入 JSON/TXT 术语表锁定专有名词;按段落哈希实现断点续传。

安装与启用

安装插件:

dsh plugin --profile desktop add dsh-pdf-translate

安装后,重启 DSH Desktop。在设置页的“插件区”找到「PDF 翻译」卡片,填入 API Key 并保存。API Key 会被 role('secret') 保护,绝不写入会话日志。

使用方式

插件提供工具调用与命令行两种方式。

Agent 工具调用

Agent 可调用 translate_pdf 工具:
* input:输入 PDF 绝对路径。
* outputDir:输出目录。
* pageStart / pageEnd:页面范围(1-based),默认全文,单次任务 ≤ 50 页。
* langPair:语言对,如 en→zh。
* termbase:术语表文件路径(JSON/TXT)。

命令行使用

node scripts/translate-cli.mjs <input.pdf> <outputDir> 1 20 en→zh

输出目录将生成 <书名>.<langPair>.pdf 及 .translate-cache.json(用于断点续传)。

术语表格式

JSON 格式支持 locked 字段(锁定不翻译):

[
  { "src": "API", "dst": "应用程序接口", "locked": false },
  { "src": "GPT", "dst": "GPT", "locked": true }
]

TXT 格式每行 原文,译文。

技术实现

插件由 TypeScript (Cordis) 和 Python (PyMuPDF) 组成。

  • 架构:TS 层负责编排与 API 调用,Python Worker 负责底层 PDF 操作。
  • Worker 启动:必须使用 python -m worker.main 启动,并确保工作目录为仓库根目录。
  • 工作流:
    1. 检测:检测 PDF 文本层,无文本层报错。
    2. 提取:识别段落(列检测 + 行合并 + 列表项规则),生成带 ID 的文本块。
    3. 重建:两阶段重建。先 redaction 删除所有原文,再根据几何锚点插入译文文本框。

已知限制

  • 仅文本型 PDF:扫描版(需 OCR)不在 v1 范围。
  • 版式细节丢失:下划线样式丢失;密集表格行可能被合并。
  • 交互干扰:与 redaction 区域相交的链接注释会被删除;超长单行译文可能溢出页面。
  • 复杂版式:文本框重叠或旋转文字的版式处理能力有限。

资源

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

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

小夜