dsh-docx2md:把含公式的 Word 轉成帶 LaTeX 的 Markdown

前言

在 DeepSeek Harness(DSH)裏處理技術文檔時,常見路徑是讓用戶上傳 .docx,再由 Agent 轉成 Markdown 入庫或續寫。直接用 Pandoc 往往卡在 Word 裏的公式:OLE(Equation Editor / MathType)、Word 原生 OMML,以及截圖式圖片公式,載體不同,誤差形態也不同。OLE 若只做二進制解碼,常常不報錯卻給出殘缺字符,比 outright 失敗更難排查。

下面介紹社區插件 dsh-docx2md(維護者 stallenlu),分類爲工作流。它把上述三類公式分別走確定性與讀圖兩條路,儘量保留公式編號與文檔結構,並在 DSH 中提供 inspect → extract → build 工具鏈,供 Agent 按步驟調用。

這是什麼

dsh-docx2md 是發佈在 npm 上的 DSH 插件(當前文檔中的示例版本爲 0.6.5),許可證爲 MIT。一句話定位:把含公式的 Word 文檔轉成帶 LaTeX 的 Markdown,跨平臺運行;OLE、Word 原生 OMML、圖片公式三種載體都會處理。

DSH 生態主張「一切皆插件」;SkillHub 等爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係。插件在當前 DSH 進程的權限下運行,安裝前應自行查看源碼與許可證。

三種公式,三條處理路徑

Word 裏公式的存儲方式決定了插件能否「確定性」轉出 LaTeX,還是必須藉助渲染後的位圖。

OLE 公式 OMML(Word 原生) 圖片公式
典型來源 Equation Editor / MathType;WPS 公式默認載體 Word 2007+ 插入公式默認格式 截圖粘貼、掃描頁、從 PDF 拷貝
插件策略 渲染 PNG → 視覺模型逐張轉寫 extract 階段從 XML 確定性轉 LaTeX 無法自動結構化;佔位符 + media/ 原件供轉寫
純 OMML 文檔 混排時才需讀圖部分 全程可不讀圖 需人工參與

對 OLE,插件原則是:以渲染位圖爲準,不以 MTEF 解析字符爲準。README 中舉例:同一份多公式文檔,直接解 MTEF 可能只得到兩三個字符,卻不報錯。渲染失敗會明確標記,不靜默降級到錯誤解碼。

純 OMML 文檔可用空的 LaTeX 表配合 docx2md_build 產出完整 Markdown(OMML 會預填);混排文檔裏 OLE 與圖片公式部分才需要讀圖步驟。

核心能力(與 README 一致)

除正文與公式外,插件還處理文檔中的複雜圖形場景(細節以倉庫 README 爲準):

  1. 掃描與統計:docx2md_inspect 只輸出事實(段落數、OLE / OMML / 圖片公式候選數量、本機渲染引擎等),不下結論。
  2. 抽取中間物:docx2md_extract 寫出 paras.json、eq_index.json(OMML 條目可帶 latex 字段)、media/、png/、image_inventory.json 等;流程圖畫布可整塊渲染爲 media/canvasN.png,畫布內公式在索引中標記 in_canvas,避免重複佔位。
  3. 組裝 Markdown:docx2md_build 根據工作目錄與 LaTeX 映射生成最終 .md,並支持標題建議等可選參數(完整參數見 README)。

在 Agent 裏可直接說明需求,例如:「把 論文.docx 轉成 Markdown,公式要保留。」Agent 會加載 docx2md 技能並按 inspect → extract → 讀圖 → build 順序執行。

運行環境

依賴 用途 必需
Python 3.9+ 運行 py/ 下腳本 是
olefile 解 OLE、讀取 Equation Native 經 uvx 自動安裝
uv(可選) 管理 Python 依賴 推薦

公式圖渲染會按平臺探測:Windows 桌面可用 GDI+;Linux / macOS 常用 LibreOffice(soffice),需自行安裝;畫布類 v:group / DrawingML 圖版需無頭瀏覽器(Edge / Chrome)。缺引擎時 docx2md_inspect 會說明,docx2md_extract 會把 render.ok 置爲 false,不假裝成功。

package.json 要求 Node ^22.19.0 || >=24.0.0,peer 依賴 @deepseek-ai/cordis ^4.0.2。

安裝與啓用

DSH 的 profile 用 pnpm 管理依賴(nodeLinker: hoisted)。日常使用建議裝 npm 正式包,不要手工往 node_modules 拷貝目錄。

在 desktop profile 下執行(版本號可按需替換):

cd ~/.dsh/profiles/desktop
pnpm add dsh-docx2md@0.6.5

或使用 DSH 安裝器等價命令:

dsh plugin --profile desktop add dsh-docx2md@0.6.5

也可安裝與 npm 包字節一致的 GitHub Release tarball:

dsh plugin --profile desktop add https://github.com/stallenlu/dsh-docx2md/releases/download/v0.6.5/dsh-docx2md-0.6.5.tgz

package.json 需同時滿足兩點:dependencies 裏爲 npm 版本號(pnpm add 會寫入 lockfile);在 dsh.profile.bundles 中加入 "dsh-docx2md"。包內已聲明 dsh.bundle.patch,不要再往 profile 的 cordis.patch.yml 手寫 insert,否則會重複註冊。

若希望改 bundles 後立即生效,可在 profile 的 package.json 配置:

"dsh": { "profile": { "patchReload": "live" } }

無此項時需重啓 DSH 進程後工具纔可用。僅開發插件源碼時才考慮 file: 或 github: 依賴,正式環境請繼續用 dsh-docx2md@0.6.5。

卸載時:

cd ~/.dsh/profiles/desktop
pnpm remove dsh-docx2md

並從 bundles 刪除對應條目後重啓 DSH。

典型用法

在 Agent 中

用自然語言交代路徑與要求即可,由技能驅動工具鏈。

三個工具(摘要)

只讀掃描:

docx2md_inspect(path)

抽取到目錄(可選 outDir、render):

docx2md_extract(path, outDir?, render?)

生成 Markdown:

docx2md_build(workDir, latex, out, ...)

人工或模型需要爲 OLE、圖片公式填寫/校對 LaTeX 時,讀 png/ 與 eq_index.json;OMML 已在 extract 階段寫入 latex 字段。升級插件後,README 建議重啓 DSH 並跑一次 docx2md_inspect 覈對行爲。

適用場景與注意

適合:

  • 論文、教材、技術規範等 Word 稿轉 Markdown,且公式不能丟編號與結構;
  • 以 OMML 爲主、少量 OLE 或圖片公式的混排文檔(OMML 部分可自動化);
  • 需要在 DSH 工作流裏把「轉檔」拆成可檢查的中間步驟(inspect / extract 便於排錯)。

注意:

  • 圖片公式與部分 OLE 依賴讀圖質量與人工校對,不能期望全自動零差錯;
  • Linux / macOS 需自備 LibreOffice 等渲染能力;無頭瀏覽器缺失時畫布可能無法完整渲染,但會在 summary.json 等處給出警告而非靜默丟圖;
  • 插件不替代你對文檔版權與敏感內容的審查;轉換在本地 profile 環境中執行,權限與 DSH 進程一致。

結尾

dsh-docx2md 把「含公式 Word → LaTeX Markdown」拆成可觀測的步驟:先分清 OLE、OMML、圖片三種載體,再按路徑轉換或讀圖,避免 Pandoc 式靜默殘缺。若你在 DSH 裏維護文檔工作流,可從 npm 0.6.5 裝入 profile,用 bundles 啓用後交給 Agent 調用。

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

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

小夜