乐于分享
好东西不私藏

我翻遍了文档转换工具,发现这个 Rust 项目有点东西

我翻遍了文档转换工具,发现这个 Rust 项目有点东西

每次要处理办公文档,我都头疼。

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/14
4.4ms
81
libreoffice
12/14
1129.5ms
40
unstructured
8/14
572.9ms
63
markitdown
6/14
134.8ms
65

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 anydoc

API 设计也很简洁:

// 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. 1. 文档处理流水线:接收混合办公文档,输出一致的 Markdown
  2. 2. AI Agent 技能:让 AI 能读取任何文档
  3. 3. 浏览器端处理:WASM 版本,文件不离开用户设备
  4. 4. 批量文档转换:快速处理大量文档

甚至还有 Agent Skill 集成:

npx skills add firecrawl/anydoc

支持 Claude Code、Codex、Cursor、OpenCode 等兼容代理。

我的评价

anydoc 不是那种"大而全"的项目,它就做一件事:把文档转成 Markdown。

但这件事它做得很好:

  • • 覆盖 14 种格式
  • • 速度极快(< 5ms)
  • • 结构完整保留
  • • 数学公式支持
  • • 智能格式检测
  • • 多语言绑定

对于需要处理办公文档的开发者来说,这是一个值得关注的工具。

特别是如果你在做 LLM 相关的项目,anydoc 可能是你缺失的那块拼图。

在线演示:https://firecrawl.github.io/anydoc/

可以去试试,文件不会上传到服务器,都在浏览器本地处理。