昨晚刷到 Nicolas Camara(Firecrawl CEO)的推文,3102 likes、4618 bookmarks。他开源了一个 Rust 写的文档解析库 anydoc,数据直接把我看呆了。
先看效果:
📹 演示视频:点击观看 anydoc 解析演示(720p MP4)[1]
一组让人沉默的数字
anydoc 的 benchmark 跑了 100 个真实文档、覆盖 14 种格式,对比 6 个主流工具:
| 工具 | 支持格式数 | 中位耗时 | 质量评分 |
|---|---|---|---|
| anydoc | 14/14 | 4.7ms | 80 |
| libreoffice | 12/14 | 1129.5ms | 40 |
| unstructured | 8/14 | 572.9ms | 65 |
| markitdown | 6/14 | 134.8ms | 65 |
| pandoc | 5/14 | 102.1ms | 57 |
| docling | 4/14 | 513.6ms | 57 |
速度是 LibreOffice 的 240 倍,质量评分是它的 2 倍。 而且 anydoc 是唯一覆盖全部 14 种格式的工具。
这意味着什么?意味着你 Agent 管线里那个「先调 LibreOffice 转 PDF 再解析」的 200ms 延迟,可以降到 5ms。500 个 docx 文件,1.7 秒搞定。
为什么这件事重要
做 Agent 的人都知道,文档解析是 RAG 管线里最脏的活。你收到的文件可能是 .docx、.pptx、.xlsx、.pdf、.rtf、.epub……每种格式都有自己的解析库,每个库的输出格式都不一样,你要写一堆胶水代码做格式统一。
anydoc 的设计哲学是:所有格式走同一个 Document Model,然后统一序列化为 GFM(GitHub-Flavored Markdown)。
document bytes
│
├─► format detection → 基于内容标记,不依赖扩展名
│
├─► format parser → 每种格式一个解析器
│ │
│ └─► Document → 共享模型:blocks, inlines, tables,
│ footnotes, assets
│ │
│ └─► GFM serializer → Markdown
│
└─► PDF → pdf-inspector → 直接输出 Markdown
这个架构的好处是:修一个格式的 bug,所有格式都受益。docx 的表格转义修好了,rtf、odt、pptx 自动修复。
对 Agent 开发者的实际意义
1. 一行命令接入
npx @firecrawl/anydoc report.docx # 输出到 stdout
npx @firecrawl/anydoc slides.pptx -o slides.md # 输出到文件
或者作为 Agent Skill:
npx skills add firecrawl/anydoc
装完后 Claude Code / Cursor / Codex 都能直接用。Agent 遇到 .docx 自动转 Markdown 再处理。
2. 三种语言绑定
Node.js: npm install @firecrawl/anydoc,转换在 libuv 线程池跑,不阻塞事件循环Python: pip install firecrawl-anydoc,释放 GIL,其他线程继续跑Rust: cargo add anydoc,原生性能
3. 内容检测,不依赖扩展名
anydoc.format_from_bytes(data) # 从文件头判断格式
PDF 看 header,RTF 看 open group,OLE 看 stream names,ZIP 看 mimetype。文件被错误命名也能正确解析。
和我之前用过的工具对比
我之前 Agent 管线里用的是 markitdown + pdfplumber 的组合。docx 走 markitdown,PDF 走 pdfplumber,pptx 先转 PDF 再解析。三个库、两套输出格式、一堆胶水代码。
换 anydoc 之后:一个库、一种输出格式、零胶水代码。而且速度快了一个数量级。
唯一需要注意的:anydoc 不处理扫描件 PDF(图片型 PDF)。扫描件还是需要 OCR。Firecrawl 的方案是 anydoc 处理文本型 PDF + 他们的 Parse API 用 OCR 模型处理扫描件,两者互补。
谁应该关注
RAG 管线开发者:文档解析从瓶颈变成零延迟 Agent 框架作者:一行 npx skills add让你的 Agent 能读任何文档ETL 工程师:14 种格式统一输出,不再写格式适配层 做文档处理 SaaS 的:看看 Firecrawl 怎么用 Rust 把性能做到极致
快速上手
# CLI
npx @firecrawl/anydoc report.docx
# Node.js
npm install @firecrawl/anydoc
# Python
pip install firecrawl-anydoc
# Agent Skill
npx skills add firecrawl/anydoc
GitHub:github.com/firecrawl/anydoc[2]
觉得有用?
→ 转发给那个还在用 LibreOffice 转文档的同事
→ 收藏,下次做 RAG 管线时翻
→ 关注,不漏更新
引用链接
[1] 点击观看 anydoc 解析演示(720p MP4): https://kaelblog.oss-cn-beijing.aliyuncs.com/aicoder/anydoc/anydoc_demo.mp4
[2] github.com/firecrawl/anydoc: https://github.com/firecrawl/anydoc
夜雨聆风