lit-report-ppt:論文 PDF 進,中文組會彙報 PPT 和 Word 講稿出

前言

組會文獻彙報的流程是固定的:封面 → 論文首頁截圖 → 摘要精讀 → 實驗條件 → 合成方法 → 一張張主圖配圖注 → 結論 → 致謝。這個流程每次重做一遍,真正費時間的不是 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
羽毛球分组比赛记分
小程序二维码

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

小夜