Firecrawl开源anydoc,14种文档转MD,速度远超mammoth,有Python/Node包。
Firecrawl开源了Rust编写的文档转Markdown引擎anydoc,支持Word、PowerPoint、Excel、PDF等14种办公格式。官方benchmark显示其中位转换速度仅4.7毫秒,比第二快的mammoth(52.5ms)快一个数量级,比LibreOffice(1129ms)快约240倍。质量综合得分80,除EPUB外在所有可比格式上均为最高。该引擎提供Rust crate、Node.js包和Python包,无ML模型和外部服务依赖,并已是Firecrawl Parse的底层引擎。
Firecrawl 开源了一个文档转 Markdown 引擎 anydoc @firecrawl https://t.co/y44tR7E27n Rust 语言编写,能把 Word、Power...
Firecrawl 开源了一个文档转 Markdown 引擎 anydoc @firecrawl github.com/firecrawl/anyd… Rust 语言编写,能把 Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV、PDF 等 14 种办公文档格式,统一转换为干净的 GitHub 风格 Markdown (GFM),中位转换速度不到 5 毫秒。 它同时提供 Rust crate、Node.js 包和 Python 包三种形态。没有 ML 模型、没有外部服务依赖,以单一引擎覆盖全部主流办公格式,并保证输出一致性。它同时是 Firecrawl 商业产品 Firecrawl Parse 的底层引擎。 # 性能与质量 官方 benchmark 用 100 份真实文档对比了 6 个竞品(libreoffice、unstructured、markitdown、pandoc、docling、mammoth),结果相当突出: · 速度:中位 4.7ms,比第二快的 mammoth(52.5ms)快一个数量级,比 LibreOffice(1129ms)快约 240 倍; · 格式覆盖:14/14,是唯一全覆盖的工具(LibreOffice 12/14,其余 8/14 或更少); · 质量:综合得分 80,除 EPUB 外在所有可比格式上均为最高。 # 核心架构决策是 "统一文档模型 + 单一序列化器" 原始字节 ├─► 格式探测(基于内容特征,而非扩展名) ├─► 各格式专属解析器(doc/docx/ppt/pptx/xls/xlsx/odt/rtf/epub/csv) │ └─► Document 共享模型(块、行内元素、表格、脚注、内嵌资源) │ └─► 唯一的 GFM 序列化器 → Markdown └─► PDF 单独走 pdf-inspector 库 → Markdown 这个设计带来两个实际收益: 1. 输出行为完全一致。无论是 2003 年的 .doc 还是昨天的 .pptx,表格转义、标题锚点、脚注处理都走同一条序列化路径。 2. 修复一次、处处生效。一个针对 docx 的表格转义修复,自动惠及 rtf、odt 等所有格式。这是典型的"漏斗式架构"红利,也是它能用较少代码(Rust 约 64 万字节,规模适中)覆盖 14 种格式的关键。 另外几个工程细节值得关注: · 内容级格式探测:通过 PDF 头、RTF 开组标记、OLE 流名、ZIP 包内 mimetype 等规范定义的特征判断格式,文件扩展名标错了也能正确转换;只有 CSV 这种无签名格式需要显式指定。 · 内嵌资产不丢失:图片以 alt 文本形式进入 Markdown,原始字节保留在文档模型中并标注 MIME 类型;带外链的图片直接转成标准 Markdown 图片语法。 · 绑定层做得克制:Node.js 侧跑在 libuv 线程池上不阻塞事件循环;Python 侧释放 GIL。TypeScript 类型和 Python stub 都随包发布。 Nicolas Camara @nickscamara_ introducing anydoc now your agents get 100x faster local parsing for pdf, docx, pptx & 10 more formats - sub-5ms md conversion - 500 docx files in 1.7s - top quality across all 13 formats - rust-based - open source already powering @firecrawl /parse https://t.co/fVsRsYFNyC Your browser does not support the video tag. 🔗 View on Twitter 🔗 View Quoted Tweet 💬 0 🔄 0 ❤️ 1 👀 49 ⚡