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 就绪”文本系统的坚实构建模块。
工作原理(高层次)
- 格式检测 – 读取魔数字节(PDF 头部、OLE 流、ZIP MIME 类型等)以推断文件类型,忽略文件扩展名。
- 格式专用解析器 – 每种支持的格式都有专用解析器,提取一个 共享文档模型(块、内联元素、表格、脚注、资源)。
- 统一序列化器 – 模型传递给单一的 GitHub 风格 Markdown 序列化器,确保一致的转义、标题锚点、表格格式等。
- PDF 处理 – 文本型 PDF 通过
pdf-inspectorcrate 在本地处理。扫描 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 – 免费用于商业和非商业用途。
相关
- 项目
- 项目
- 项目
- 项目
- 项目