乐于分享
好东西不私藏

任何文档,秒变 Markdown

任何文档,秒变 Markdown

开源 · Rust · AI 基础设施 · 效率工具

任何文档,秒变 Markdown

Firecrawl 开源 anydoc 实测

10 天狂揽 1.5 万 Star · 14 种格式 · 4ms 级转换 · MIT 许可证

你给大模型喂过 Word 文档或 PPT 吗?要么复制粘贴后格式稀碎、表格全乱,要么先生成 PDF 再 OCR,慢得让人抓狂。「让模型读懂办公文档」这件事,2026 年了依然是个没有好答案的问题。直到 Firecrawl 开源了 anydoc——一个 10 天就冲到 1.5 万 Star 的 Rust 文档转换库。

给 LLM 喂文档,为什么这么痛

做过 RAG、文档问答、知识库的同学,下面四个坑你一定踩过:

1 格式地狱

.doc、.docx、.ppt、.xls、.rtf、.odt、.epub……每个格式的二进制结构完全不同。传统方案要么按格式各配一个解析器,要么全部交给 LibreOffice 兜底——适配成本高,产出还不统一。

2 结构丢失

表格变成一串乱码、标题层级消失、脚注列表全部平铺。转换完的文本人能看懂,模型抓不住重点——喂进去质量差,检索出来更差。

3 慢且贵

用 LibreOffice 转一份文档平均要 1 秒多,批处理上千份文件就要跑半小时;商业转换服务按量收费,量大了一笔不小的开销。

4 隐私风险

把合同、标书、内部报告上传到第三方 API 做转换,数据在别人手里走了一圈。对合规敏感的团队,这一条就直接否掉了整个方案。

AI 应用落地,缺的是一条「把任意文档变成模型读得懂的干净文本」的标准化管道——这就是 anydoc 想做的事。

anydoc:把一切文档变成 Markdown 的 Rust 库

anydoc(github.com/firecrawl/anydoc)是 AI 抓取与解析公司 Firecrawl 开源的文档转换库,截至本文编写时已获得约 15,000 Star,采用 MIT 许可证。它把 Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV、PDF 共 14 种格式统一转换为干净的 GitHub Flavored Markdown,并内置了 Node.js、Python、WebAssembly(浏览器端)、Rust 四套接口。

它并不是一个「玩具」项目——anydoc 正是 Firecrawl 自家 Parse 托管 API 的底层转换引擎,在商用服务里跑过真实负载后才开源。浏览器演示版(firecrawl.github.io/anydoc/)用 WebAssembly 运行,文件全程在你本地转换,不出机器

✅ anydoc 的核心承诺

  • 一种输出
    :无论输入是 2003 年的 .doc 还是刚保存的 .pptx,Markdown 行为完全一致
  • 全结构保留
    :标题锚点、表格合并单元格、脚注、任务列表、演讲者备注都不丢
  • 极速
    :纯 Rust 实现,无 ML 模型、无外部服务,单文档中位数 4.4ms
  • 本地运行
    :数据不出设备,浏览器里也能跑
  • Agent 就绪
    :官方 Agent Skill 一行命令装好,AI 编码助手直接读文档

四个设计亮点,看懂它的底气

1 一套模型,输出永远一致

每种格式先解析进一个统一的 Document 模型(块、内联元素、表格、脚注、资源),再由同一个 Markdown 序列化器输出。转义、表格、标题锚点、脚注的行为在任何格式下都一致——修好 docx 的表格转义 bug,rtf、odt 等其他格式自动同步修复,不用逐格式打补丁。

2 识别格式靠内容,不靠扩展名

格式从字节内容本身判断:PDF 文件头、RTF 开组、OLE 流名、ZIP 包 mimetype。文件被错误命名(比如把 .docx 存成 .dat)也能正确转换。只有 CSV 这种没有内容标记的格式才需要靠扩展名或显式指定。

3 快:单文档中位数 4.4 毫秒

纯 Rust、无机器学习模型、无外部服务,官方 benchmark 里中位数转换耗时 4.4ms,比 LibreOffice 快约 250 倍。绑定层也不拖后腿:Node.js 版跑在 libuv 线程池上不阻塞事件循环,Python 版转换时释放 GIL,多线程应用不会卡死。

4 Agent 就绪:AI 助手直接读文档

anydoc 以 Agent Skill 的形式发布:一条 npx skills add firecrawl/anydoc 装好技能后,Claude Code、Codex、Cursor、OpenCode 等编码助手就能直接读取你丢给它的 Word、PPT、PDF——模型不擅长的二进制解析,交给 anydoc。

30 秒上手

最快的方式是直接一行命令,把文档转成 Markdown 输出到终端或文件:

npx @firecrawl/anydoc report.docx        # Markdown 输出到终端
npx @firecrawl/anydoc slides.pptx -o slides.md   # 或写到文件
npx @firecrawl/anydoc - --format csv < data.csv  # 支持标准输入

首次运行会自动下载对应平台的预编译二进制。想永久使用就全局安装:npm install -g @firecrawl/anydoc

2 Python 三行搞定

pip install firecrawl-anydoc

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

3 浏览器里零安装试用

打开官方演示页 firecrawl.github.io/anydoc/,拖一个文件进去就能看转换结果——整个转换跑在浏览器里的 WebAssembly 上,文件不会上传到任何服务器。想验证质量又不想装环境,这是最快的方式。

官方 Benchmark:全面碾压的底气

anydoc 官方用 100 份真实文档、覆盖 14 种格式,与 6 款主流转换工具做了盲测对比。评分方式是让 LLM 评审(Claude Sonnet 5)对照文档渲染图逐项打分,共 482 次两两对比,从完整性、结构、格式、干净度四个维度给分(0-100)。

工具
支持格式
中位耗时
总分
anydoc
14/14
4.4ms
81
markitdown
6/14
134.8ms
65
unstructured
8/14
572.9ms
63
docling
4/14
513.6ms
57
pandoc
5/14
102.1ms
56
mammoth
1/14
52.5ms
70
libreoffice
12/14
1129.5ms
40

anydoc 是唯一覆盖全部 14 种格式的工具,总分 81 全场最高,速度比第二名快 30 倍。注意:总分是「各工具所支持格式的平均分」,mammoth 的 70 分只代表 docx 一种格式。看单格式对比更公平:

格式
anydoc
最强竞品得分
docx
88
71(markitdown)
rtf
88
53(libreoffice)
odt
80
68(unstructured)
xlsx
72
66(unstructured)
pptx
74
66(markitdown)
epub
77
72(unstructured)

每个格式 anydoc 都是第一,xlsx 相对是它最弱的格式(72 分),但仍是全场最高。竞品得分取自官方 benchmark 中该格式下的最高分,完整数据见仓库 bench/ 目录。

应用场景与一点冷静的提醒

🎯 谁最该用它

  • RAG / 知识库管道
    :合同、报告、PPT 批量转 Markdown 进向量库,检索质量直接上一个台阶
  • AI 编码助手
    :Claude Code、Cursor 等接上 Agent Skill,直接读懂你丢过去的文档
  • 隐私敏感场景
    :文档本地转换,不经过任何第三方服务器
  • ETL / 归档系统
    :混合格式统一成一种干净输出,下游只对接 Markdown

⚠️ 客观提醒:它不能做什么

  • 加密 / 密码保护的文档
    :直接报错,不会硬转
  • 纯图片 PDF
    :本地版只转文本型 PDF;扫描件需配合 Firecrawl 托管 API 的 OCR 模型
  • 有安全阀
    :解压、嵌套、节点数超过固定限制会被拒绝,防止恶意文档
  • 项目太新
    :2026 年 8 月 3 日才发布,生态和社区还需要时间沉淀

写在最后

anydoc 给我的启发是:AI 时代的基础设施,很多时候不是更聪明的模型,而是更顺滑的「接入层」。模型不擅长解析二进制格式,那就用 4 毫秒的 Rust 库替它读完;数据不能出内网,那就做成 WASM 让转换发生在浏览器里。

如果你的工作流里恰好要处理一堆 Word、PPT、Excel、PDF——不管是喂给 RAG 还是塞给编码助手,anydoc 都值得放进工具箱。开源、免费、本地运行、实测第一,几乎没有不试的理由。

任意格式的文档

变成模型读得懂的文本

anydoc 用 4 毫秒给出了答案

截至本文编写时,anydoc 已收获约 15,000 Star、833 个 Fork,MIT 协议完全开放。想要随时跟进它的迭代,直接 Watch 仓库即可。

🔗 GitHub:github.com/firecrawl/anydoc

🧪 浏览器演示:firecrawl.github.io/anydoc/

📖 官方文档:firecrawl.dev/parse

本文写于 2026 年 8 月

所有项目信息基于 anydoc 官方 README 和 GitHub 仓库

Star 数为截至本文编写时的数据,可能持续变化

欢迎交流讨论