做知识库的人都有一个痛:PDF 论文里的表格转出来全是乱的,Word 报告的排版全丢了,PPT 内容只剩一堆文字。Firecrawl 刚开源的 AnyDoc 能搞定 14 种格式,而且速度比 markitdown 快 30 倍,值得试一试。
一、为什么我们在意一个文档转换工具
如果你也在做知识库——不管是文献库、行业报告库还是技术文档库——你一定遇到过这个流程:
PDF/Word/PPT → 转 Markdown → 喂给 RAG / 知识图谱 / LLM中间这一步「转 Markdown」看似简单,实际上是整个链路最大的质量瓶颈。转得好,下游 LLM 拿到的是干净的结构化文本;转得差,你给 LLM 喂的就是一堆被空格切碎的"伪表格"——几百行竖线开头的垃圾,对检索是毒药。
我之前一直用微软的 markitdown,它覆盖面广(PDF/Word/Excel/HTML/YouTube/音频都能搞),但有个老问题:PDF 表格还原差,论文里的超参表格按空格切碎,输出大量不完整的 Markdown 表格行。
所以当 Firecrawl 在 2026 年 8 月开源了 AnyDoc——一个用 Rust 写的、号称支持 14 种格式、中位转换速度 4.4ms 的文档解析引擎——我决定用真实文件跑一轮。
二、AnyDoc 是什么
AnyDoc 是 Firecrawl 开源的两个 Rust 文档解析库之一(MIT 协议,零 API key,本地执行):
| AnyDoc | ||
| pdf-inspector |
几个关键设计决策值得注意:
- 内容嗅探
:不看文件扩展名,直接检测文件实际内容。你把 docx 改名成 .txt 它也能正确解析 - 统一文档模型
:所有格式先转为统一的内部表示,再由单一 Markdown 序列化器输出。这意味着表格、列表、标题的还原逻辑是统一的,不会格式 A 产出一种表格、格式 B 产出另一种 - Fail loudly
:坏文件明确报错,不静默降质。这比"转出了但内容丢了一半你也不知道"好太多 - 多语言绑定
:Rust / Node.js / Python / WASM / CLI 都有,还能作为 Claude Code 和 Cursor 的 Agent Skill 直接调用
三、官方基准:速度快 30 倍,质量得分最高
Firecrawl 官方用一套私有语料做了基准测试,不仅速度更快,而且质量最高:
| AnyDoc | 14 | 4.4ms | 81 |
四、实测:用真实育种文档跑三轮对比
测试环境:Windows 11,Python 3.12,anydoc 0.1.8,markitdown[all] 最新版。测试文件来自我的实际工作区——智慧育种报告、基因组选择 PPT、玉米产量预测论文。
4.1 DOCX:智慧育种 AI 应用场景材料
结论:DOCX 两者打平。内容完整度一致,表格都能正确还原。AnyDoc 速度更快(体感瞬间完成 vs markitdown 需要几秒),但输出质量没有差异。
4.2 PPTX:技术演示文稿
结论:PPTX 也基本打平。两者都正确提取了每页标题和正文,丢失了图表中的视觉信息(这正常,都不是 OCR 工具)。AnyDoc 略快。
4.3 PDF论文(真正的分水岭)
| 28 行(真实表格) | 278 行(伪表格) |
markitdown 输出大了 26 KB,不是因为内容更丰富,而是因为它把 PDF 中的公式和间距用 pdfminer 按空格切成了 278 行破碎的"伪表格"。这些行看起来像 Markdown 表格(以 | 开头),但列数不统一、内容被截断,对 RAG 检索来说是噪音。
比如,原文中有一个表格:

AnyDoc 转换后表格基本能够还原:

而 markitdown 对同一段的输出长这样:

效果对比非常明显。
五、实测总结:一张表说清楚
| 真实结构化表格 | ||
uv run --with firecrawl-anydoc | markitdown[all] | |
六、什么时候用哪个
这不是一个"谁取代谁"的问题,而是工具链互补:
| AnyDoc | ||
| AnyDoc | ||
如果你的核心场景是把 Office 文档和文本型 PDF 喂给知识库,AnyDoc 是目前最好的选择。 如果你的场景更杂(图片、音频、扫描件),markitdown 仍然是兜底工具。
七、上手指南:一句话跑起来
AnyDoc 没有 CLI 入口,但 Python API 极简。如果你也在用 WorkBuddy(CodeBuddy),直接跟 AI 说:
"帮我安装 firecrawl-anydoc,创建一个持久 venv"
AI 会自动帮你完成以下操作:用 uv 创建一个专用虚拟环境(比如 C:/Users/你的用户名/.venvs/anydoc),安装 firecrawl-anydoc 包,然后验证安装是否成功。之后每次需要转换文档时,只需告诉 AI 文件路径,它就会调用这个环境里的 anydoc 完成转换。
如果你想手动调用,也很简单——一行 Python 搞定:
import anydoc
md = anydoc.to_markdown('your_file.pdf')没有 API key,没有注册,没有网络请求,全部本地执行。
八、接入知识库工作流
如果你也在用 RAG 知识库(比如 llm-wiki),可以把 AnyDoc 接到文档消化的第一步:
原始文件(PDF/DOCX/PPTX)
↓ anydoc.to_markdown()
干净 Markdown
↓ LLM 提取实体/关系/摘要
结构化知识
↓ 写入知识库
可检索的知识页面之前这个流程的第一步用的是 markitdown,现在切换到 AnyDoc 后,论文表格不再被切碎,下游 LLM 拿到的上下文质量明显提升——尤其是超参数表、性能对比表这类结构化信息,能被完整保留并提取。
写在最后
AnyDoc 不是一个革命性的工具——它做的事情(文档转 Markdown)并不新,但它做对了一件关键的事:把表格当表格对待,而不是当空格对待。
对于做知识库的人来说,这一个点的改善就足以改变整条链路的输出质量。
如果你今天就想把一堆 Word 报告和 PDF 论文转成干净的 Markdown,AnyDoc 值得一试。
相关链接
AnyDoc GitHub: firecrawl/anydocmarkitdown GitHub: microsoft/markitdownAnyDoc 官方博客: firecrawl.dev/blog/anydoc-and-pdf-inspector
本文基于 AnyDoc v0.1.8 和 markitdown 最新版的真实文件测试。测试文件包括智慧育种报告(DOCX)、基因组选择演示文稿(PPTX)和玉米产量预测论文(PDF)。
夜雨聆风