AnyDoc:Rust驱动的万能文档转Markdown引擎

仓库:firecrawl/anydoc  |  ⭐ 17.3k  |  语言:Rust  |  协议:MIT

项目简介

AnyDoc 是由Firecrawl团队开源的Rust高性能文档转换库,能将Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV、PDF等10+种格式快速转换为干净的Markdown文本。凭借Rust的零成本抽象和SIMD优化,AnyDoc在大型文档转换上比Python方案快10倍以上,同时保持输出格式的完整性和结构准确性。它是RAG管道、AI文档处理和数据迁移场景的理想选择。

如果你需要对比其他文档转换方案,推荐阅读 MarkItDown文档转换教程 了解微软的开源替代方案。

核心功能与架构

输入格式支持特性转换速度
.docx/.doc标题、列表、表格、图片引用~2ms/页
.pptx/.ppt幻灯片文本、备注、布局~1ms/页
.xlsx/.xls单元格数据、公式值、命名区域~0.5ms/表
.odt/.ods/.odpOpenDocument全套格式~2ms/页
.rtf富文本格式完整转换~1ms/页
.epub章节结构、元数据提取~1ms/章
.csv/.tsv自动Markdown表格转换~0.1ms/万行
.pdfOCR+结构识别(可选)~5ms/页

安装指南

AnyDoc支持Rust原生集成和CLI两种使用方式:

# 方式一:Cargo安装CLI
cargo install anydoc-cli

# 方式二:Rust项目集成
# 在 Cargo.toml 中添加
# [dependencies]
# anydoc = "0.5"

# 方式三:预编译二进制
curl -L https://github.com/firecrawl/anydoc/releases/latest/download/anydc-linux-x64 -o /usr/local/bin/anydoc
chmod +x /usr/local/bin/anydoc

# 方式四:Python绑定
pip install anydoc-py  # 通过PyO3绑定调用Rust核心

# 验证
anydoc --version
anydoc convert --help

使用示例

以下展示AnyDoc在RAG数据准备管道中的典型用法:

// Rust 项目集成
use anydoc::{Converter, Format, OutputConfig};

fn main() -> Result<(), Box> {
    let converter = Converter::new(OutputConfig {
        markdown_flavor: "GitHub".into(),
        extract_tables: true,
        preserve_links: true,
        image_handling: ImageHandling::ReferenceOnly,
        ..Default::default()
    })?;

    // 转换单个文件
    let result = converter.convert_file("report.docx", Format::Docx)?;
    println!("{}", result.markdown);

    // 批量转换目录
    converter.convert_dir("documents/", "output/")?;

    // 从内存转换(适用于API场景)
    let bytes = std::fs::read("data.xlsx")?;
    let result = converter.convert_bytes(&bytes, Format::Xlsx)?;
    println!("提取到 {} 个工作表", result.metadata.sheet_count);

    Ok(())
}

CLI命令行使用:

# 单文件转换
anydoc convert report.docx -o report.md

# 批量转换(递归目录)
anydoc convert ./docs/ -o ./markdown/ --recursive --format md

# PDF转换(启用OCR)
anydoc convert scan.pdf -o result.md --ocr --lang chi_sim+eng

# 流式转换(管道)
cat input.xlsx | anydoc convert --from xlsx --to md > output.md

# 保留图片到目录
anydoc convert slides.pptx -o slides.md --images ./images/

# 并行批量转换
anydoc convert ./docs/ -o ./out/ --jobs 8 --format md

与同类工具对比

特性AnyDocMarkItDownPandoc
语言RustPythonHaskell
速度极快(10x)中等
PDF支持OCR+结构基础需插件
表格提取✅ 精准部分
二进制大小~5MB~50MB(含依赖)~150MB
输出质量干净结构化良好良好

📚 常见问题

AnyDoc是什么?

AnyDoc 是由Firecrawl团队开源的Rust高性能文档转换库,能将Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV、PDF等10+种格式快速转换为干净的Markdown文本。凭借Rust的零成本抽象和SIMD优化,AnyDoc在大型文档转换上比Python方案快1