编程 4.4毫秒转完一份文档:Firecrawl anydoc用统一文档模型处理14种格式

2026-09-05 19:16:20

4.4毫秒转完一份文档:Firecrawl anydoc用统一文档模型处理14种格式

做过RAG或Agent开发的人都会遇到同一个问题:要把几百个PDF、Word、PPT处理成Markdown喂给模型。用过LibreOffice,转一个文档要一秒钟以上;写Python脚本处理,解析库遇到复杂表格就乱码,合并单元格也会丢失;更夸张的是用户传过来一个.docx后缀的文件,实际却是PDF,识别程序直接崩溃。

anydoc 是Firecrawl团队开源的新项目,专门解决这个问题。上线五天就在GitHub上获得了超过11000个Star。

它是一个将各种办公文档转换为干净Markdown格式的Rust库。

Word、PPT、Excel、PDF、RTF、EPUB、CSV,14种格式全部支持。转一个文档中位数只有4.4毫秒,比LibreOffice快256倍,比第二名快20多倍。不需要安装任何东西,一行命令完成,Firecrawl还把它做成了Agent Skill,AI编程助手也可以直接使用。

实际使用体验

假设手里有一堆乱七八糟的文档要喂给RAG系统:2003年的.doc文件、同事发来的.pptx、客户提供的老格式.xls以及一些.epub电子书。以前要一个个打开、另存为、再转换格式。

安装anydoc后,终端输入一行命令即可,无需脚本或环境配置。它自动识别真实格式,不依赖后缀名,即使文件被重命名也能正确转换,然后输出干净的Markdown——标题有锚点、表格合并单元格全部保留、嵌套列表层次分明、脚注尾注无一遗漏。

单文件转换不到500毫秒,批量100个同样在半秒内完成,以前用LibreOffice要等大约2分钟。整个过程中识别、解析、转换都是它自己完成的。如果文档包含图片,Markdown中会保留替代文本,原始图片数据也会一同返回。

技术原理

01 统一文档模型处理所有格式

每种格式先被各自的解析器拆解——Word有自己的解析器,PPT有自己的,Excel有自己的——但拆完之后都映射到同一个内部文档模型中。标题、段落、表格、列表、脚注、嵌入资源等都属于一个结构体,最后使用同一个Markdown序列化器输出。这种设计将维护成本集中在模型和序列化层,无需为每种格式单独写输出逻辑。

02 格式检测看字节头,不看后缀名

根据文件的原始字节签名读取:PDF头、RTF开头标记、OLE流名、ZIP包的mimetype。CSV没有签名,才需要扩展名或显式指定。这在生产环境特别实用,用户上传的文件后缀名经常是乱的,anydoc不在乎。

03 绑定层不阻塞主线程

Node.js的转换在libuv线程池中进行,不影响事件循环;Python的转换会释放GIL,其他线程仍可正常运行。TypeScript类型和Python stub都直接打包进包中,使用NAPI-RS和PyO3等社区标准方案。还有WASM版本,可以在浏览器中运行,文件不会上传到第三方。

04 无机器学习、无GPU、无第三方服务

纯Rust编写,没有用到任何机器学习模型,不需要GPU,也不需要调用外部API。4.4毫秒是只用Ryzen 9的CPU跑出来的。官方用100份真实文档进行了一轮盲评,对14种格式都做了测试,一共评了482次,anydoc是唯一一个包含所有14种格式且每个格式评分都最高的,同场对比的有LibreOffice、pandoc、unstructured、markitdown、docling、mammoth等主流工具。

安装方式

Node.js和Python用户一条命令即可:

npx @firecrawl/anydoc report.docx
pip install firecrawl-anydoc

Rust用户直接使用cargo add,浏览器中也可以运行,安装WASM包即可。代码中调用时,四个语言的API完全一致:to_markdown、to_markdown_bytes、to_document。CLI也不局限于一个文件,可以用-o指定输出文件,用--format指定格式,也可以从标准输入读取。

Claude Code或Codex用户,一行命令即可让Agent具备读取文档的能力:

npx skills add firecrawl/anydoc

注意事项

  • 只有图片的PDF不能转换,因为没有OCR;文本型PDF走本地解析可以直接转换,扫描件需要使用Firecrawl的云解析接口
  • 加密过的文档不行,会直接报Encrypted错误
  • 格式错误或超出安全限制的文件会返回明确的错误码

小结

Firecrawl做网页抓取做到了14.9万Star,现在把文档解析也开源了。anydoc最打动人的地方是省心:无需LibreOffice、Python环境或GPU,一个二进制文件、一条命令,各种格式都能用。项目基于MIT协议开源。

开源地址:https://github.com/firecrawl/anydoc

复制全文 生成海报 anydoc 文档转换 Markdown Rust Firecrawl

推荐文章

程序员茄子在线接单