前言¶
组会文献汇报的流程是固定的:封面 → 论文首页截图 → 摘要精读 → 实验条件 → 合成方法 → 一张张主图配图注 → 结论 → 致谢。这个流程每次重做一遍,真正费时间的不是 PowerPoint 排版,是「图注写全」和「别把化学式上下角标打错」。
下面介绍的第三方 DSH 插件 wld12314/lit-report-ppt,就是把这套固定流程写成脚本:输入一篇论文 PDF,输出一份中文汇报 PPT(.pptx)和一份逐页对应的 Word 讲稿(.docx)。它偏手工活,判断仍然留给人,脚本负责排版、转上下标、裁图和自检。
这是什么¶
一句话定位:给一篇论文 PDF,出一份能上台讲的中文组会汇报 PPT,外加一份对着每页念的 Word 讲稿。目录页把它归在「工作流」分类,星标 1。README 的 package.json 里写的是 “DeepSeek Harness skill that turns one journal paper PDF into a Chinese group-meeting literature report deck (.pptx) plus a matching Word speaker script, keeping the paper’s own cropped figures and full captions.”
它的两个产物同源于一个 content.json,所以幻灯片上写的和讲稿里念的不会打架。版式和设计参数是从一份真实的组会汇报稿逐形状量出来的实测值,不是凭感觉设的。
从实现上看,它并不是必须跑在 DSH 里的服务。仓库主体是几个普通 Python 脚本,package.json、cordis.patch.yml、lib/index.js 这三个文件是给 DSH 宿主注册 skill 用的登记表,跑在宿主侧、需要 Node 22+。它自己声明不碰出稿脚本,出稿仍然只依赖四个 Python 库。
核心能力¶
README 用一张表说明了它针对的几个常见问题,这里照原文记录:
| 你担心的 | 它怎么处理 |
|---|---|
| 图注偷懒,写「如图所示」 | 图注少于 40 字、缺子图交代 → 自检直接报错 |
| 图注太长,塞不进版面 | 按实际行数算,放不下就开续页,续页仍带同一张图 |
| 图注太短,图被压小 | 短注走底栏满宽排法,长注才走右栏 |
| 化学式上下角标 | 写 Cr^{3+}、Cs_{2}NaInCl_{6},脚本转成真上下标 |
| 元素跑出画面被切 | 逐页扫描出界、重叠、字体缺失、字号越级 |
| 讲稿像念论文 | 讲稿按「一张图两三句、学术但不堆术语」的口径写 |
排版上有两条硬规则值得留意。一是主图页的排法不是审美选择,是按图注实际占的行数自动选:短注走 A 底栏排法(图区 11.71 × 6.20,图注在底部 11.80 × 0.92),长注走 B 右栏排法(图区 8.45 × 7.16,右侧 2.75 × 7.14 放图注)。两层都放不下就自动开续页,续页把同一张图缩到上半页,剩余图注铺在下半页。README 明确说只挪注不挪图不行,否则讲这页时图不在旁边,图注里的 (a)(b)(c) 就悬空了。二是信息太多就拆两页,不要缩字号硬塞。
页序固定为:封面 → 文章首页截图(+作者信息卡,全篇唯一允许全英文的一页)→ 摘要精读 → 实验条件/表格 → 合成方法 → 主图页(占全篇 70% 以上)→ 结论 → 致谢。
安装与启用¶
手动用(不需要 git、不需要 Node、不需要 Office):
pip install -r requirements.txt
依赖就四个:python-pptx、python-docx、Pillow、pymupdf(pypdf 兜底)。
从 DSH 插件市场装,README 给出的命令是:
dsh plugin add AshenSeeker/lit-report-ppt
需要说明一点:仓库 README 正文和它内嵌的 package.json 里的 repository 地址都指向 AshenSeeker/lit-report-ppt,而社区目录页把这个插件列在 wld12314/lit-report-ppt。两者是同一个仓库目录的不同路径还是两个镜像,README 没有交代。安装前先确认一下你要装的那条路径,避免拉错。
也可以不走市场,把整个目录放进 DSH 的 skills 目录:
~/.dsh/skills/lit-report-ppt/
插件元信息(来自 README 内嵌的 package.json):名称 lit-report-ppt,版本 1.4.0,许可证 MIT;engines 要求 dsh >=0.2.0-rc.2 <0.3.0-0、node >=22;声明了 dsh.bundle.patch 指向 ./cordis.patch.yml。
典型用法:四步出一份汇报¶
README 给出的四步走,命令照录:
# 1. 抽正文、摘要、图注
python scripts/extract_paper.py paper.pdf -o work/
# 2. 裁图(先 --list 看清图片块的真实边界,别再靠猜坐标)
python scripts/crop_figures.py paper.pdf --list
python scripts/crop_figures.py paper.pdf --crop "5,0.080,0.065,0.930,0.445" -o work/figs/fig04.png
# 3. 填 content.json(复制 assets/content.template.json 改)
# ↑ 这一步是判断活,脚本不替你写内容
# 4. 出稿
python scripts/build_deck.py content.json -o out/deck.pptx
python scripts/check_deck.py out/deck.pptx --content content.json
python scripts/build_script.py content.json -o out/讲稿.docx
第一步是抽正文和图注,第二步裁图。注意第二步提供了 --list 先列图片块边界,再按坐标裁剪,坐标是归一化值。第三步是要人来完成的判断活,脚本不代写内容。第四步依次出 PPT、自检、出讲稿。README 要求 check_deck.py 跑到 0 个建议才算完成。
汇报人姓名和时间默认印 XX,可以在出稿时传参:
python scripts/build_deck.py content.json -o out/deck.pptx --presenter "张三" --date "2026年11月2日"
python scripts/build_script.py content.json -o out/讲稿.docx --presenter "张三" --date "2026年11月2日"
改学校是自用前必做的一步。仓库封面默认是南阳师范学院物理与电子工程学院,校徽和两行校名都是写死在代码里的,不是 content.json 的字段,只覆盖 assets/logo.png 不够:
| 改什么 | 位置 |
|---|---|
| 校徽图片 | 直接覆盖 assets/logo.png(建议 1:1 正方形,白色或透明底,≥300×300) |
| 第一行校名 | scripts/build_deck.py:53 的 "Nanyang Normal University" |
| 第二行院系 | scripts/build_deck.py:58 的 "College of Physics and Electronic Engineering" |
两行都在 _top_bar() 里,封面和致谢页共用这一个函数,改一处就够,改完重跑 build_deck.py,check_deck.py 不用跟着改。新校名比默认值长的话,把 18pt 往下调到 16pt,别让它顶到右边。
自检与已知取舍¶
check_deck.py 扫六类问题:出界(形状跑出画布)、重叠(阈值 0.15 in)、空图注(少于 40 字)、字体缺失(对照系统实际可用字体)、字号越级(不在 {66,60,40,22,20,18,16,14,13,11,10} 里)、缺图(image 指向的文件不存在)。
字体上有一个跨平台坑要注意。模板原稿用的「华文楷体」多数 Windows 机器没装,仓库统一用楷体(simkai.ttf)顶替,另外三个是系统自带的 Times New Roman、Verdana、等线。但字体检查目前只认 Windows 的字体目录(%WINDIR%\Fonts);在 macOS / Linux 上跑会跳过这项检查且不报错,生成的文件拿到 Windows 上打开时,缺的字体仍会被静默替换、版式走样。跨平台用先确认目标机器有楷体和 Times New Roman。
README 列的已知取舍,有几条直接会影响用法:
- 讲稿不写进 PPT 备注栏,理由备注栏放映时看不见,念的时候还得另开窗口。
- 裁图不能全自动。期刊在图正上方印的深红色小节标题正好落在图的 bbox 里,而 a)/b)/c)/d) 面板编号块也是暗红色,宽松阈值会把编号误判成标题;自动裁切线会削掉子图上半截。所以
crop_figures.py只提供坐标裁切,判断交给人,裁完把每张图顶部 14%、底部 10% 拼成对照图扫一眼。 - 讲稿不必和 PPT 逐页一一对齐,两页图讲同一件事合成一段更顺,用
"p": "7-8"指定覆盖的页范围。 - 不主动加原稿没有的元素,提炼条、橙色 callout、页码都拿掉了,想加先问。
适用场景与注意¶
适合做的是:有固定组会文献汇报流程、需要逐页配完整图注、希望讲稿和幻灯片同源不打架的人。它可以当 AI skill 用(放进 agent 的 skills 目录),也可以纯手动跑那四条命令;模板和校徽按脚本所在位置用 __file__ 解析,跟当前工作目录无关。
有两点要留意。第一,这个 skill 的通用性有个前提,平台得能执行本地 Python 代码。网页版 ChatGPT 这类没有代码执行能力的,只能用它写 content.json 里的文案和图注,最后一步出稿仍要在本机跑,别指望在对话窗口直接吐出 .pptx。第二,插件以当前 dsh 进程权限运行,DSH 理念是「一切皆插件」,但社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。安装前应当检查源码与许可证(本仓库为 MIT),尤其是上面提到的仓库路径不一致这一点。
结束语¶
它的价值不在于把汇报做得更花,而在于把「图注写全、上下标别错、元素别出界」这三类最容易返工的事变成可复现的脚本,并且用同一份 content.json 保证幻灯片和讲稿不脱节。真正需要人做的仍然是内容判断:图注怎么写、主图怎么裁、学校怎么换。
- 目录页:https://www.skillhub.cn/plugins/wld12314/lit-report-ppt
- GitHub:https://github.com/wld12314/lit-report-ppt