项目名anydocfirecrawl/anydocGitHubhttps://github.com/firecrawl/anydoc 在线 Demoanydoc by Firecrawl 版本持续更新中 协议MIT Star18000截至 2026-08-24 语言Rust 绑定Node.js / Python / Rust / WebAssembly 适用跨平台开篇MarkItDown 很好但遇到老.doc和 2003 的 PPT 就歇菜做 RAG、喂 AI 文档、处理知识库的人大概率用过微软的MarkItDown我之前也专门写过一篇。它把 Office 文档转 Markdown日常够用但有几个硬伤格式覆盖不全老格式.doc、.ppt、.xls、RTF、OpenDocument 很多转不动纯 Python 慢一个稍大的文档要一两百毫秒甚至更久表格、公式、脚注经常丢转出来的 Markdown 结构残缺AI 读起来费劲。最近 Firecrawl 团队就是那个做网页抓取 Parse 的开源了一个Rust 重写的文档转 Markdown 库叫anydoc8 月初上线不到一个月冲到 18k Star。它放出的 benchmark 很嚣张14 种格式全覆盖中位转换时间 4.4ms综合评分 81 分——全部干翻 MarkItDown6/14 格式、134.8ms、65 分。这篇我从它强在哪、benchmark 细节、CLI/Node/Python/Rust 四种用法、Agent Skill、踩坑讲透。如果你正在做文档 → Markdown → AI 的链路这篇值得看。目录anydoc 到底是什么为什么比 MarkItDown 强格式 速度 结构Benchmark 逐项拆解CLI 上手一行命令转文档Node.js / Python / Rust 三种绑定Agent Skill让 AI 自己读 Office 文档它强在哪几个关键设计常见坑和解决方案适合谁 / 不适合谁一、anydoc 到底是什么官方一句话一个快速的 Rust 库把 Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV、PDF 转成干净的 GitHub 风格 MarkdownGFM。它有四个关键身份身份说明Rust 库cargo add anydocNode.js 库npm install firecrawl/anydocPython 库pip install firecrawl-anydocAgent Skillnpx skills add firecrawl/anydoc它还是Firecrawl Parse的底层引擎——你没自己跑 anydoc 也没关系Firecrawl 的托管 API 用的就是它扫不动的扫描版 PDF 还会叠加他们自己的 OCR 模型。二、为什么比 MarkItDown 强格式 速度 结构三个维度逐个说。2.1 格式覆盖14/14 vs 6/14anydoc 支持的格式14 种全类别扩展名Word.doc.docx.docmPowerPoint.ppt.pps.pot.pptx.pptm.ppsx.ppsmExcel.xls.xlsx.xlsm.xlsbOpenDocument.odt.ods.odpRTF.rtfEPUB.epubCSV.csvPDF.pdfMarkItDown 只覆盖其中 6 种老.doc/.ppt/.xls、RTF、OpenDocument 都搞不定。对历史文档多的企业知识库来说格式覆盖是硬门槛。2.2 速度纯 Rust无 ML、无外部服务anydoc 是纯 Rust 实现没有 ML 模型、不调外部服务中位转换 4.4ms/文档。MarkItDown 是 Python134.8ms。差一个数量级。批量处理几百上千份文档时这个差距就是「秒级」和「分钟级」的区别。2.3 结构完整 统一统一输出不管输入是 2003 的.doc还是昨天的.pptx都走同一个文档模型 同一个 Markdown 序列化器转义、表格、标题锚点、脚注行为完全一致完整结构标题锚点、粗斜体/删除线、行内代码和代码块、链接和内部交叉引用、有序/无序/嵌套/任务列表保留原始编号、合并单元格表格、引用块、脚注尾注、演讲者备注公式转 LaTeXWord/PowerPoint 的 OMML、OpenDocument/EPUB 的 MathML、RTF 公式全转成 GitHub 风格$...$和$$块。三、Benchmark 逐项拆解官方在100 份真实文档、14 种格式上把 anydoc 和 6 个同类工具做了对比。评分 0-100越高越好速度是中位转换耗时。工具格式覆盖中位耗时评分完整性结构格式整洁度anydoc14/144.4ms8187797881libreoffice12/141129.5ms4059424024unstructured8/14572.9ms6376595163markitdown6/14134.8ms6578666052pandoc5/14102.1ms5674575638docling4/14513.6ms5760605751mammoth1/1452.5ms7084717551几个关键结论anydoc 是唯一覆盖全部 14 种格式的工具每一种格式的评分都是第一分格式表格里 docx 88、rtf 88、epub 77、pptx 74、xlsx 72…全部领先速度比第二名快一个数量级4.4ms vs mammoth 的 52.5ms且 mammoth 只支持 1 种格式。评分方法也很硬核用 Claude Sonnet 5 当 LLM 裁判盲评两个工具的输出跟 ground truth文档前 6 页渲染图对比每对评两次交换顺序抵消位置偏差共482 次判决。数据开源在仓库bench/里想复核自己去跑。四、CLI 上手一行命令转文档4.1 用 npx最省事# 转 docx输出到 stdout npx firecrawl/anydoc report.docx # 转 pptx写到文件 npx firecrawl/anydoc slides.pptx -o slides.md # 从 stdin 读 CSV npx firecrawl/anydoc - --format csv data.csvnpx第一次运行会自动下载你平台对应的预编译二进制。4.2 全局安装npm install -g firecrawl/anydoc anydoc --help4.3 在线 Demo不装任何东西浏览器打开 anydoc by Firecrawl它把库编译成了 WebAssembly文件在本地转换不会离开你的机器。适合先试一个文档看看效果。五、Node.js / Python / Rust 三种绑定5.1 Node.jsnpm install firecrawl/anydocimport { toMarkdown, toMarkdownBytes, toDocument } from firecrawl/anydoc; const markdown await toMarkdown(report.docx); // 从文件路径 const fromBytes await toMarkdownBytes(bytes); // 从字节自动检测格式 const fromCsv await toMarkdownBytes(bytes, csv); // CSV 这种无签名格式需要显式命名 const document await toDocument(bytes); // 停在文档模型可拿嵌入资源Node 转换跑在 libuv 线程池上不阻塞事件循环。5.2 Pythonpip install firecrawl-anydocimport anydoc markdown anydoc.to_markdown(report.docx) markdown anydoc.to_markdown_bytes(data) markdown anydoc.to_markdown_bytes(data, csv) document anydoc.to_document(data)Python 转换会释放 GIL其他线程照常跑。5.3 Rustcargo add anydoclet markdown anydoc::to_markdown(report.docx)?; let markdown anydoc::to_markdown_bytes(bytes, None)?; let markdown anydoc::to_markdown_bytes(bytes, Some(anydoc::Format::Csv))?; let document anydoc::to_document(bytes, None)?;六、Agent Skill让 AI 自己读 Office 文档这是 anydoc 最「AI 原生」的一点——它直接打包成了一个Agent Skillnpx skills add firecrawl/anydoc装上之后你的 AI 编程工具Claude Code、Codex、Cursor、OpenCode 等遇到 Office 文档能自己转成 Markdown 再读不用你手动转一遍。这个 Skill 教 agent 用 anydoc 的 CLI 干活。做 RAG / 知识库 / AI 阅读文档类应用的人这一条价值巨大文档解析这条链路直接下沉成 agent 的一个技能了。七、它强在哪几个关键设计7.1 基于内容的格式检测格式是从文件内容本身读出来的PDF 头、RTF 分组、OLE 流名、ZIP 包 mimetype不是看扩展名。所以扩展名标错的文档也能转对。7.2 嵌入资源处理图片和嵌入对象在 Markdown 里渲染成 alt 文本原始字节仍保留在文档模型上带 media type 标签带外部 URL 的图片直接变成普通 Markdown 图片。7.3 PDF 支持内置文本型 PDF 通过它兄弟项目pdf-inspector本地转换不需要 OCR 服务扫描版 PDF 才需要 OCR官方托管 API 里叠加了 OCR 模型。7.4 只在该报错时报错转换只在「产不出任何有意义的 Markdown」时才返回Err并明确报出原因ConvertError会告诉你到底哪出了问题。八、常见坑和解决方案Q1npx 首次运行下载慢npx firecrawl/anydoc首次要下预编译二进制国内网络可能慢。可以挂代理或npm install -g firecrawl/anydoc装一次长期用。Q2扫描版 PDF 转出来是空的anydoc 对文本型 PDF是本地转扫描版图片没有文字层它读不出来。先跑 OCR比如ocrmypdf input.pdf output.pdf再转。或直接用 Firecrawl 托管 API自带 OCR。Q3CSV 转不出来 / 报格式错CSV 没有签名得显式指定--format csvCLI或to_markdown_bytes(bytes, csv)绑定。Q4想拿文档里的图片原始字节用to_document()而不是to_markdown()返回的文档模型里带着嵌入资源按 media type 取原始字节。Q5和 MarkItDown 怎么选只转.docx/.md/.html图省事 → MarkItDown 也能用要处理老格式、批量、要结构完整、要快 →anydoc已经是 Firecrawl 用户 → 直接用它Parse 底层就是 anydoc。九、适合谁 / 不适合谁✅ 适合做 RAG / 知识库 / 文档问答需要把各种 Office 文档喂给 AI要批量处理大量、格式杂乱的文档尤其老.doc/.xls/.ppt写 Python/Node/Rust 服务想把「文档转 Markdown」内嵌进自己的流水线想让 AI 编码工具「自己能读 Office 文档」。❌ 不适合只要转扫描版 PDF 精准 OCR → 它不做 OCR得配合 OCR 工具或用托管 API需要保留精确排版转 Word 而不是 Markdown→ 这是「转轻量结构」不是排版还原。最后总结anydoc 是 2026 年「文档 → LLM-ready Markdown」这个细分方向里最亮眼的新星——Rust 重写、14 种格式全覆盖、4.4ms、评分全第一、还自带 Agent Skill。它把 MarkItDown 没解决好的「老格式、速度、结构完整」三个问题一次性补齐了。如果你正在做任何「文档进 AI」的事npx firecrawl/anydoc 你的文档.docx试一下大概率回不去 MarkItDown 了。项目地址https://github.com/firecrawl/anydoc 在线 Demoanydoc by Firecrawl