AnyDoc 實測:不到 1 秒把 Word 轉成 Markdown,還能直接交給 Agent 使用
我用 AnyDoc 高速把文件轉成 Markdown。這篇整理 CLI 與 Agent Skill 的完整用法、實際保留的文件結構,以及它和 Marker、MinerU 的差別。
前言
我平常把 PDF、Word 或簡報交給 Agent,主要是要它讀取標題、段落、清單和表格。先整理成 Markdown,後面要摘要、搜尋或擷取資料都比較直接。
這次測的 AnyDoc 就是在做這層轉換。它用 Rust 寫成,不靠模型,也不用先架服務。我拿一份 8.5MB 的繁中 Word 文件跑 CLI,終端機顯示整條指令總共花了 0.997 秒;標題、粗斜體、編號清單、表格和連結也都留了下來。
安裝與基本用法
AnyDoc 的 CLI 需要 Node.js 20 以上。可以先在終端機確認版本:
node --version
不用另外全域安裝 AnyDoc,直接用 npx 就能轉檔:
npx @firecrawl/[email protected] \
"輸入文件.docx" \
-o "輸出文件.md"
第一個路徑是原始文件,-o 後面是 Markdown 的輸出位置。第一次執行時,npx 會先下載套件;之後再執行通常會直接使用快取。
Word 可以換成 PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV 或文字型 PDF。完成後,用任何 Markdown 編輯器打開輸出的 .md 就能檢查結果。
我這次怎麼測?
我先做了一份繁體中文 Word 文件,內容刻意放入標題、粗體、斜體、中文標點、編號與巢狀清單、表格和超連結。接著在同一個資料夾執行:
time npx @firecrawl/[email protected] \
"AnyDoc 繁體中文測試文件.docx" \
-o "anydoc-test.md"
這次終端機顯示 0.997 total。這個數字包含 npx 與 CLI 啟動,不是 AnyDoc 官方 benchmark 裡單純解析文件的時間;而且套件當時已有快取,換一台電腦第一次執行,還要把下載時間算進去。我只把它當成這台 Mac、這份文件的實跑紀錄。
這次從 npx 指令開始到輸出完成,終端機顯示總時間 0.997 秒
轉換結果保留了什麼?
我把原本的 Word 和轉出的 Markdown 並排。標題層級、粗斜體、編號清單、表格內容與超連結都有留下來,繁體中文也沒有出現亂碼。第二個清單項目後面的 \ 是 Markdown 的強制換行符號,預覽時仍能看到下面的巢狀項目。
左邊是原始 Word,右邊是 AnyDoc 輸出的 Markdown
AnyDoc 會捨棄 Word 的字型、欄寬、顏色與頁面配置,圖片也主要以替代文字呈現。留下來的是文件語意結構,方便後續程式或 Agent 讀取;要看原始版面,還是得回到 Word。
檔名有空格時要加引號
我第一次執行時直接把中文檔名貼進終端機:
npx @firecrawl/[email protected] AnyDoc 繁體中文測試文件.docx -o anydoc-test.md
結果出現:
anydoc: one document per invocation: unexpected second input '繁體中文測試文件.docx'
原因不是 AnyDoc 讀不到中文,而是 Shell 把空格後面的文字拆成另一個參數。把輸入與輸出路徑都放進雙引號就能正常執行。AnyDoc 一次也只接受一份文件;要處理整個資料夾,仍要另外寫迴圈或交給 Agent 逐份跑。
為什麼它特別適合給 Agent 使用?
AnyDoc 本體是文件解析器與 CLI,官方專案另外附了一個 convert-documents-to-markdown Agent Skill,可以用下面這行安裝:
npx skills add firecrawl/anydoc
安裝完成後,不用自己先轉檔。把文件路徑和後續任務一起交給 Agent,例如:
請使用 AnyDoc 把
"/Users/mashuo/Downloads/會議紀錄.docx"
轉成 Markdown,再整理出會議重點、待辦事項與負責人。
Agent 會依照 Skill 裡的說明呼叫 AnyDoc,產生 Markdown,再繼續完成摘要或資料整理。沒有安裝 Skill 也能請有終端機權限的 Agent 執行 CLI,但裝好 Skill 後,它會知道支援哪些格式、何時該使用 -o,以及掃描 PDF 需要改用 OCR 工具。
這個 Skill 的內容很薄,主要是告訴 Agent:遇到無法直接讀取的 Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV 或 PDF 時,先呼叫 AnyDoc 轉成 GitHub-Flavored Markdown。大型文件則先用 -o 寫成檔案,再只讀任務需要的段落,避免一次把整份內容塞進 context。
官方列出的相容工具包含 Codex、Claude Code、Cursor 與 OpenCode。這個 Skill 只補上一個很小的文件入口:使用者丟進二進位 Office 文件後,Agent 有固定方法把內容轉成自己比較容易處理的文字格式,不會多出另一個聊天介面。
如果本來就在 Node.js、Python 或 Rust 專案裡,也不一定要從 Shell 呼叫。AnyDoc 同時提供 npm、PyPI 與 crates.io 套件,可以直接使用相同的轉換 API。CLI 與 Agent Skill 比較適合先驗證流程,確定會長期整合後,再改成程式庫會比較乾淨。
輕量的代價也很明確
AnyDoc 不載入 OCR 或視覺模型,轉換很快,也不需要 GPU。瀏覽器 Demo 甚至能透過 WebAssembly 在本機處理,文件不必上傳。不過這也代表掃描 PDF、只有圖片的 PDF 無法靠它辨識;官方會直接把這類檔案列為不支援。
我會這樣分工:
| 情境 | 我會先選 |
|---|---|
| Word、PowerPoint、Excel 等 Office 文件,要快速交給 Agent 閱讀 | AnyDoc |
| 大量不同格式要統一變成 Markdown,接自動化流程 | AnyDoc |
| 一般文字型 PDF,只想很快抓出文字 | AnyDoc 或 Marker fast |
| 掃描 PDF、複雜公式、表格與版面辨識 | Marker balanced 或 MinerU |
| 要保留原始文件的視覺版面 | 直接用 Office/PDF 閱讀工具 |
我自己會分成兩種用法。臨時轉一份文件,就直接跑 npx @firecrawl/anydoc;要讓 Agent 長期處理 Word、PowerPoint 或 Excel,就先安裝官方 Skill,再把文件路徑和任務一起寫進提示詞。對我來說,第二種才是 AnyDoc 最有用的地方:不用先手動複製文件內容,Agent 可以自己轉檔,再接著摘要、搜尋或整理表格。

