
每次要处理办公文档,我都头疼。
Word、PPT、Excel,还有那些古老的 RTF 和 OpenDocument 格式,每种都要找不同的工具。更别提要把它们转成 Markdown 给 AI 处理了——简直是噩梦。
直到我在 GitHub 上发现了 anydoc。
一个仓库,14种格式
Firecrawl 出品,17.7k star,MIT 协议。看起来是个正经项目。
但真正吸引我的是它的定位:专为 LLM 设计的文档转换库。
支持 14 种格式:
• Word(.doc/.docx/.docm) • PowerPoint(.ppt/.pptx 等 6 种) • Excel(.xls/.xlsx/.xlsm/.xlsb) • OpenDocument(.odt/.ods/.odp) • RTF、EPUB、CSV、PDF
等等,PDF 也能转?这个我得看看。
看看它的设计思路
anydoc 用 Rust 写的,核心架构很清晰:
文档字节 ↓格式检测(基于内容,不是扩展名) ↓格式解析器(每种格式一个) ↓Document(统一模型) ↓GFM 序列化器 ↓Markdown这个设计有意思的地方在于:所有格式共用一个文档模型。
这意味着什么?修复一个 bug,所有格式都受益。新增一个特性,所有格式都能用。
不像有些项目,每种格式都是独立的代码路径,维护起来简直是灾难。
性能数据有点夸张
官方给了个基准测试,我看了下:
anydoc 是唯一覆盖全部 14 种格式的工具,速度比次快的工具快了一个数量级。
4.4ms 是什么概念?一秒钟可以转换 200 多个文档。
我有点怀疑这个数据,直到看到它的实现方式:纯 Rust,无 ML 模型,无外部服务。
难怪这么快。
数学公式转换是个亮点
这个功能让我意外。
Word 和 PowerPoint 里的 OMML 数学公式,OpenDocument 和 EPUB 里的 MathML,都能转成 LaTeX。
输出格式是 GitHub 风格的数学公式:$...$(行内)和 $$...$$(块级)。
对于要做技术文档处理的人来说,这个功能太实用了。
实际用起来怎么样?
安装很简单:
# Node.jsnpm install @firecrawl/anydoc# Pythonpip install firecrawl-anydoc# Rustcargo add anydocAPI 设计也很简洁:
// Node.jsimport { toMarkdown } from'@firecrawl/anydoc';const markdown = awaittoMarkdown('report.docx');# Pythonimport anydocmarkdown = anydoc.to_markdown("report.docx")甚至还有 WebAssembly 版本,可以在浏览器里直接转换,文件都不用上传到服务器。
这个设计对隐私敏感的场景很友好。
它的智能检测有点东西
anydoc 的格式检测是基于文件内容,不是文件扩展名。
这意味着什么?即使文件扩展名错了,它也能正确识别并转换。
我试了下把一个 .docx 文件改成 .txt,anydoc 照样能正确转换。
这个功能在处理用户上传的文件时特别有用——你永远不知道用户会给你传什么奇奇怪怪的文件。
错误处理很实在
anydoc 定义了 6 种错误类型:
• Unsupported:未知格式• Malformed:文件损坏• Encrypted:加密文件• ResourceLimit:超出限制• MissingPart:缺少组件• Io:读取失败
每种错误都有明确的含义,不会给你返回一个莫名其妙的错误码。
它能用来做什么?
anydoc 的定位很明确:LLM 数据预处理。
把各种办公文档转成 Markdown,然后喂给 AI 处理。
几个典型场景:
1. 文档处理流水线:接收混合办公文档,输出一致的 Markdown 2. AI Agent 技能:让 AI 能读取任何文档 3. 浏览器端处理:WASM 版本,文件不离开用户设备 4. 批量文档转换:快速处理大量文档
甚至还有 Agent Skill 集成:
npx skills add firecrawl/anydoc支持 Claude Code、Codex、Cursor、OpenCode 等兼容代理。
我的评价
anydoc 不是那种"大而全"的项目,它就做一件事:把文档转成 Markdown。
但这件事它做得很好:
• 覆盖 14 种格式 • 速度极快(< 5ms) • 结构完整保留 • 数学公式支持 • 智能格式检测 • 多语言绑定
对于需要处理办公文档的开发者来说,这是一个值得关注的工具。
特别是如果你在做 LLM 相关的项目,anydoc 可能是你缺失的那块拼图。
在线演示:https://firecrawl.github.io/anydoc/
可以去试试,文件不会上传到服务器,都在浏览器本地处理。
夜雨聆风