一个仓库从创建到冲到 1.6 万 Star,用了不到两周。anydoc 在 2026 年 8 月 3 日才第一次提交,到今天 8 月 16 日,已经攒下 16386 个 Star 和 916 个 fork。这个速度放在 Rust 工具链里相当反常,尤其是它解决的问题听起来一点都不性感:把 Word、Excel、PPT 这些办公文档转成干净的 Markdown。
我第一次看到这个数据时的反应不是惊叹,而是先按下了 BS 检测器。文档转换这个赛道挤满了老玩家,微软的 markitdown、IBM 的 docling、Unstructured、Pandoc、mammoth,哪一个都不是吃素的。一个新项目凭什么两周就盖过它们几年的积累?带着这个疑问,我把它的源码、benchmark 和背后的来路翻了一遍。

结论比预想的有意思。anydoc 不是又一个”轮子”,它是 Firecrawl 这家公司把自己 Parse 商业产品的底层引擎拆出来开源了。也就是说,这套转换逻辑已经在真实生产负载里跑过,被下载、被压测、被用户骂过一轮之后,才披上开源的外衣。这跟那种”先开源再慢慢修”的玩法,完全是两条路。
那它到底值不值得跟?我先把结论放这:它值得你花十分钟了解,但不值得你无脑迁移。往下看,好话坏话我都摊开讲,判断权交给你自己。
打动我的几个地方
最核心的设计,是把”格式解析”和”输出”彻底解耦。anydoc 的做法是:不管进来的是 .docx 还是 .rtf,先各自解析进一个统一的 Document 模型,里面装着块、内联元素、表格、脚注、嵌入资源这些结构化信息。然后所有格式共用同一个 Markdown 序列化器吐出来。
这个架构有个很容易被忽略的好处:一致性是白送的。docx 里修好一个表格转义 bug,rtf 和 odt 会自动跟着修好,不用逐格式打补丁。用过 Pandoc 的人应该能体会到这种痛苦,每个 reader 各写各的输出逻辑,同一个表格在不同格式下长得不一样。

这张图把整条管线的结构摊开了。左侧是十四种格式各走各的解析器,中间收敛到那个统一的 Document 模型,右侧再由同一个 Markdown 序列化器输出。所有格式的一致性保证,就藏在这个”先统一、再序列化”的收窄点上。
第二个让我眼前一亮的是格式识别靠字节内容,不靠扩展名。它读 PDF 文件头、RTF 开组、OLE 流名、ZIP 包里的 mimetype 来判定真实格式。你把一个 .docx 文件故意改名成 .dat,它照样能正确转换。只有 CSV 这种没有内容签名的东西才需要靠扩展名兜底。
第三个是绑定做得很全。Rust、Node.js、Python、浏览器 WASM、CLI,五条路都通,而且是同一套 one-call API。更狠的是它还以 Agent Skill 形式发布,npx skills add firecrawl/anydoc 一条命令,Claude Code、Cursor、Codex 这些 AI 编码助手就能直接读办公文档了。这一步踩准了当下 Agent 火热的点。
性能是绕不开的话题。官方用 100 份真实文档、14 种格式做了盲测,anydoc 中位耗时 4.4 毫秒。对比一下,markitdown 是 134.8 毫秒,Pandoc 是 102.1 毫秒,慢了几十倍。纯 Rust 实现、没有 ML 模型、没有外部服务,这个速度确实是实打实的地板优势。账面数据够漂亮,但实际跑起来是什么感觉?
上手什么感觉
上手成本低到几乎可以忽略。最快的方式是 npx,一行命令直接出结果,首次运行会自动下载对应平台的预编译二进制:
npx @firecrawl/anydoc report.docx # Markdown 输出到终端
npx @firecrawl/anydoc slides.pptx -o slides.md # 输出到文件
npx @firecrawl/anydoc - --format csv < data.csv

实际跑起来就是上面这个效果,一个命令进去,一份结构完整的 Markdown 出来,标题、表格、列表各归其位,不需要任何配置。
想在代码里集成也一样简单,Python 和 Node 都只要三行,全程本地跑、不用申请 API Key、不用起服务:
import anydoc
markdown = anydoc.to_markdown("report.docx")
也可以去官方演示页 firecrawl.github.io/anydoc 拖个文件进去,转换全程跑在浏览器里的 WASM 上,文件不出本机。想验证质量又不想装任何环境,这是最快的路。
坑也要说在前面。它本地转换只覆盖基于文本的 PDF,扫描件和纯图片 PDF 它搞不定,那些要走 Firecrawl 的托管 API 加 OCR,是付费的商业服务。加密文档会直接抛 Encrypted 错误,不会静默降质。这一点我反而觉得是优点,宁可明确报错,也不给你一份”转出来但内容丢了一半”的假货。
什么时候用,什么时候别用
它最合适的位置,是文档处理管线的中间那一层。下面这张表把四类典型场景、对应人群和各自的短板都列了出来,你照着对号入座就行:
| 场景 | 典型用户 | 优势 | 局限 |
|---|---|---|---|
| 批量喂文档给 LLM | 做 RAG、Agent 的开发者 | 格式全、速度快、本地跑 | 扫描件需另接 OCR |
| 办公文档标准化入库 | 企业数据管道 | 统一输出、结构完整 | 项目太新,API 稳定性待观察 |
| AI 编码助手读文档 | 用 Cursor、Claude Code 的人 | Agent Skill 一条命令接入 | 依赖 npx 生态 |
| 离线/隐私敏感场景 | 金融、医疗行业 | 数据不出本机、无 API Key | 无云端增强能力 |
不适用的情况也直说,下面这三类人我建议先别急着上,等它再成熟几个版本也不迟:
-
只是偶尔转一两个 Word 文件,微软 markitdown 或在线工具完全够用,没必要为一个新依赖折腾 -
核心需求是扫描件 OCR,anydoc 本地版帮不上忙,得搭配 Firecrawl 的付费 API -
要的是深度学术 PDF 解析,Docling 那种带版面分析的重型方案更对口
说到替代方案,anydoc 的直接竞品其实就那几个。微软 markitdown 覆盖 6 种格式,IBM docling 主打版面分析,Pandoc 胜在格式互转。对比这些同类工具,anydoc 的差异化在于格式覆盖全、速度快、可本地部署,短板则是太新、生态尚浅。技术层面的账算完了,这个项目能不能长期托付,还得看维护。
维护靠不靠谱
要判断一个上线两周的项目靠不靠谱,光看 Star 数没用。我把几个硬指标先摆出来,后面再逐个展开讲我的判断:
| 指标 | 数据 | 说明 |
|---|---|---|
| Stars | 16386(截至 2026-08-16) | 上线不到两周,增速极快 |
| 核心维护者 | 2 人 | Bus Factor 中风险,主力是 abimaelmartell |
| Open Issues | 68 | 新项目正常水平,尚未堆积 |
| 协议 | MIT | 商业友好,可自由商用 |
Bus Factor 是这里最该盯的一点。提交历史里 109 次提交,绝大多数出自 abimaelmartell 一人之手,cursoragent 偶尔 co-author。对一个刚满两周的项目来说这不算反常,但如果你打算在生产环境深度依赖它,这个单点风险得心里有数。Firecrawl 是家正经公司,但公司重点会不会长期押在这个开源库上,现在下结论还太早。
协议是 MIT,商业友好,这个没什么好担心的。真正要盯的是 68 个 Open Issues 的消化速度。新项目 issue 多是正常现象,关键是维护者有没有及时响应,而不是放任堆积。从提交节奏看,7 月底到 8 月中旬几乎天天有 commit,集中在格式解析器的边界情况修复上,说明团队还在密集打磨期,没到放养的阶段。
社区声音方面,这个项目太新,Issue 区基本还是 bug 报告和 feature request,谈不上有深度的讨论沉淀。反倒是中文技术博客有一些有价值的第三方实测。有个博主拿自己工作里的智慧育种报告、基因组 PPT、玉米论文跑了三轮对比,结论是 DOCX 和 PPTX 上 anydoc 与 markitdown 的输出质量基本打平,关键段落命中率一致,表格还原都正确,anydoc 赢的主要是速度。这个声音比官方 benchmark 有参考价值,因为它不是拿官方那套语料跑的。声音听完了,剩下的问题是我自己怎么下判断。
我的真实看法
聊到这份上,该给我的判断了。我对 anydoc 分两层看:底层能力我信,商业动机我保持警惕。
先说信的部分。它是 Firecrawl 自家 Parse 产品的底层引擎,Firecrawl 主项目已经攒了约 15 万 Star,Parse 是它真正赚钱的托管服务。把一个跑在钱生钱业务里的组件开源出来,质量通常比”为了开源而开源”的项目靠谱得多,因为它经受过真实用户和真实文件的毒打。这一点,从它把加密、超限、坏文件都做成显式错误码就能看出来,是给生产环境写代码的做派。
但官方那个 benchmark,我劝你打个折看。语料是 Firecrawl 自建的,评分是让 Claude Sonnet 5 盲测打分,anydoc 拿了 81 分全场最高。自家语料、自家工具、自家立场,这跟”自说自话”只隔一层纸。第三方实测里,DOCX 和 PPTX 的质量跟 markitdown 是打平的,这说明 anydoc 的护城河更多在速度、格式覆盖和本地部署,而不是”转换质量碾压”这种官方宣传口径。

这张对比图把官方打分摆在一起,anydoc 的 81 分确实最高。但注意 mammoth 的 70 分只覆盖 docx 一种格式,anydoc 的 81 是十四种格式的平均。单看每个格式的正面较量,差距其实没有总分暗示的那么大。
所以我给它下的判断是:一个扎实的基础设施级库,而不是革命性突破。它真正的价值是那套统一 Document 模型带来的架构红利,是”本地跑、无 API Key、14 种格式一条 API”这种工程上的省心。如果你已经在用 markitdown 且没遇到性能瓶颈,为了它迁移的收益不大;如果你要起一条新的文档处理管线,它值得放进候选名单的第一位。该给的判断都给了,最后落到一句行动建议。
资源地址
| 资源 | 地址 |
|---|---|
| GitHub | https://github.com/firecrawl/anydoc |
| 官方演示 | https://firecrawl.github.io/anydoc |
| 官方博客 | https://www.firecrawl.dev/blog/anydoc-and-pdf-inspector |
| 姊妹项目 pdf-inspector | https://github.com/firecrawl/pdf-inspector |
上面的链接先存着。真正想上手的话,其实一条 npx 命令就够了,下面的建议就是让你用最低成本验证它值不值得。
先用 npx 试一条命令
如果你手里正好有份 Word 或 PPT,现在就能验证我的判断:跑一条 npx 命令,看看输出质量是不是跟 markitdown 打平、速度是不是真的快一个量级。这是成本最低的验证方式,比看任何 benchmark 都管用。
如果你打算把它接进生产管线,盯两个指标就够了。一是维护者数量能不能从 2 人扩到 4 人以上,Bus Factor 是它眼下最大的软肋。二是 Firecrawl 会不会持续投入,而不是开源完就冷处理。这两点决定了它能不能从”好用的新玩具”变成”敢依赖的基础设施”。
说到底,anydoc 最打动我的不是那个 4.4 毫秒,而是它踩中了 AI 落地最缺的那一环:把乱七八糟的办公文档,变成模型读得懂的干净文本。这一步,过去大家是将就着用,现在有引擎级别的选择了。
