大家好,我是何三,独立开发者

一份 Word 文档转成 Markdown,要多久?

以前的标准答案是:快的一两百毫秒,慢的等好几秒。今天这个项目,中位数 4.4 毫秒

对,你没看错。4.4ms 转完一份,比 LibreOffice 快 256 倍,比 pandoc 快 23 倍,14 种格式全覆盖,质量评分还全场最高。

它叫 anydoc,Firecrawl 团队开源,纯 Rust 写的。发布没几天就冲到近 7000 Star(GitHub 现在显示 6.7k Star,约 7000)。

先搞清楚它到底解决了什么问题。

现在大家都要把文档喂给大模型,第一步就是转 Markdown。这步看着简单,做起来全是坑:表格乱、样式丢、脚注没了、图片变乱码。pandoc 能用,但离"干净"差得远。LibreOffice 转出来更是惨不忍睹,质量分只有 39。

anydoc 的思路很朴素:每种格式一个解析器,解析完统一塞进同一个文档模型,最后用同一个 Markdown 渲染器输出。

说白了,就像把各国语言先翻成同一种"世界语",再从世界语翻成你要的语言。中间只要修一次 bug,所有格式一起好。

没懂作者为什么这么设计?我一开始也没懂,直到看到那句"一个 docx 的表格转义修复,自动就是 rtf、odt、所有格式的修复"——修一次,处处生效。这种设计,服。

(跑题一下。这让我想起以前搞 Electron 应用,为了兼容 Windows 和 Mac 的换行符,差点把头发薅光。要是早懂"统一模型"这套思路,也不至于……算了,说回 anydoc。)

速度和质量,官方拿 100 份真实文档做了个基准测试,横跨 14 种格式:

anydoc 基准对比

  • anydoc:4.4ms,质量分 81,14/14 格式
  • LibreOffice:1129.5ms,质量分 39,12/14
  • pandoc:102.1ms,质量分 56,5/14
  • markitdown:134.8ms,质量分 64,6/14

LibreOffice 转完一份的时间,它已经转完 256 份。这数字真的离谱。

原理大概是这样,细节可能有出入——有懂的大佬欢迎指正。反正核心就一句:不搞玄学,纯 Rust 硬解,没有 ML 模型,没有外部服务

anydoc 转换原理

上手门槛约等于零。

不想装环境?浏览器里直接玩。官方 Demo 页把整个库编译成了 WebAssembly,文件在本地转换,不会上传到任何服务器

想集成进自己的项目,一条命令:

npx @firecrawl/anydoc report.docx          # 直接输出到终端
npx @firecrawl/anydoc slides.pptx -o slides.md   # 或者写到文件

Node 和 Python 都有绑定,几行代码搞定:

import anydoc
markdown = anydoc.to_markdown("report.docx")

转出来的效果怎么说呢,就是……就是那种"直接丢给 LLM 就能用"的干净。表格、标题锚点、脚注、代码块、任务列表,整整齐齐。文本型 PDF 也能纯本地转,不用装 OCR 服务。扫描件它搞不定,但 Firecrawl 有托管 API 可以补——那是人家自己的商业服务,用不用随你。

装不装都行,看你自己。但如果你经常处理混合格式的办公文档,这玩意儿是真能省时间。同类工具还有微软的 markitdown、Unstructured,要么格式覆盖不全,要么速度差一个量级。anydoc 是目前唯一 14 种格式全覆盖、还跑得最快的。

GitHub 地址:https://github.com/firecrawl/anydoc

一句话总结:AI 时代喂文档给大模型,以前是将就着用,现在是 4.4ms 搞定。想试的先去官方 Demo 页体验一把,再决定要不要装。

本文使用 MGO 编辑并发布

关注"何三笔记",回复"mgo" 免费下载使用