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/.odp | OpenDocument全套格式 | ~2ms/页 |
| .rtf | 富文本格式完整转换 | ~1ms/页 |
| .epub | 章节结构、元数据提取 | ~1ms/章 |
| .csv/.tsv | 自动Markdown表格转换 | ~0.1ms/万行 |
| OCR+结构识别(可选) | ~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
| 特性 | AnyDoc | MarkItDown | Pandoc |
|---|---|---|---|
| 语言 | Rust | Python | Haskell |
| 速度 | 极快(10x) | 中等 | 快 |
| PDF支持 | OCR+结构 | 基础 | 需插件 |
| 表格提取 | ✅ 精准 | ✅ | 部分 |
| 二进制大小 | ~5MB | ~50MB(含依赖) | ~150MB |
| 输出质量 | 干净结构化 | 良好 | 良好 |
AnyDoc 是由Firecrawl团队开源的Rust高性能文档转换库,能将Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV、PDF等10+种格式快速转换为干净的Markdown文本。凭借Rust的零成本抽象和SIMD优化,AnyDoc在大型文档转换上比Python方案快1