firecrawl/anydoc

Convert Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, and PDF to clean Markdown. Built in Rust, with Node.js and Python bindings.

anydoc 的功能

anydoc 是一个快速的纯 Rust 库,可将多种办公文件(Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV、PDF)转换为干净的 GitHub 风格 Markdown。无论从哪种格式开始,它都能提供相同的转换结果,保留文档结构(标题、表格、列表、脚注、公式、嵌入式图像等),并输出单一、一致的 Markdown 表示形式。

核心库已针对四种环境打包:

语言 / 平台 使用方式 典型入口点
Rust (crate) cargo add anydoc 然后调用 anydoc::to_markdown… anydoc::to_markdown("file.docx")?
Node.js (npm) npm install @firecrawl/anydoc await toMarkdown("file.pptx")
Python (PyPI) pip install firecrawl-anydoc anydoc.to_markdown("file.xlsx")
Web (Wasm) npm install @firecrawl/anydoc-wasm + await init() toMarkdownBytes(bytes)

一个轻量级 CLI(npx @firecrawl/anydoc …)和一个 Agent Skill 使您可以通过单个命令从命令行或 AI 代理框架中调用转换器。


为何对 AI / LLM 流水线至关重要

大型语言模型在处理纯文本(尤其是保留标题、表格和代码块的 Markdown)时表现最佳。任何需要处理用户上传文档的工作流——知识库构建、检索增强生成、数据提取或聊天助手文件读取——都需要一种可靠的方法,将这些异构格式统一为一致的文本表示。anydoc 提供了:

  • 速度 – 每个文档的中位数 < 5 毫秒(纯 Rust,无机器学习模型)。
  • 覆盖范围 – 支持 14 种格式,是基准测试中唯一支持全部格式的开源工具。
  • 结构保留 – 标题、列表、表格、脚注、LaTeX 公式和嵌入式资源均被保留,使下游 LLM 能够理解文档层级。
  • 本地处理 – 转换在客户端机器上运行;仅需 OCR 的扫描 PDF 会可选地发送至 Firecrawl 的托管 OCR 服务。

这些特性使其成为任何需要从任意办公文件中提供“LLM 就绪”文本系统的坚实构建模块。


工作原理(高层次)

  1. 格式检测 – 读取魔数字节(PDF 头部、OLE 流、ZIP MIME 类型等)以推断文件类型,忽略文件扩展名。
  2. 格式专用解析器 – 每种支持的格式都有专用解析器,提取一个 共享文档模型(块、内联元素、表格、脚注、资源)。
  3. 统一序列化器 – 模型传递给单一的 GitHub 风格 Markdown 序列化器,确保一致的转义、标题锚点、表格格式等。
  4. PDF 处理 – 文本型 PDF 通过 pdf-inspector crate 在本地处理。扫描 PDF 会抛出 NeedsOcr 错误;您可以选择将其发送至 Firecrawl Parse(托管 OCR),返回相同的 Markdown。

由于所有格式都通过同一模型,bug 修复或功能改进会自动惠及所有格式。


快速入门(示例)

CLI(无需安装)

npx @firecrawl/anydoc report.docx          # 将 Markdown 输出到 stdout
npx @firecrawl/anydoc slides.pptx -o out.md
npx @firecrawl/anydoc scan.pdf --ocr hosted   # 为扫描 PDF 使用托管 OCR

Node.js

import { toMarkdown } from '@firecrawl/anydoc';
const md = await toMarkdown('report.docx');

Python

import anydoc
md = anydoc.to_markdown('report.docx')

Rust

let md = anydoc::to_markdown("report.docx")?;

限制与注意事项

  • 无内置 OCR – 纯 Rust 转换仅处理文本型 PDF。扫描 PDF 必须发送至可选的托管 OCR 服务(ocr: "hosted")。
  • 加密 / 密码保护文件 会抛出 Encrypted 错误,无法转换。
  • 资源限制 – 极度嵌套或巨大的归档文件可能触及安全上限(解压、节点数),返回 ResourceLimit。
  • Rust crate 不暴露 OCR;只有 Node/Python 绑定可以转发至托管服务。

谁会使用它?

  • 需要读取用户上传文档的 LLM 驱动助手(如 ChatGPT 插件、Claude 代理)。
  • 从混合办公文件构建可搜索知识库的 RAG 流水线。
  • 将表格、表单或报告转换为结构化文本的数据提取工具。
  • 用于索引、摘要或翻译的文档批量处理自动化脚本。

许可证

MIT – 免费用于商业和非商业用途。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目