How firecrawl/anydoc works
anydoc is a Rust document-conversion library: callers provide a file or bytes, the library identifies or accepts a format, parses it into a shared document model, then serializes that model as GitHub-Flavored Markdown. The README also documents Node.js, Python, and browser bindings, embedded assets, and optional hosted OCR for scanned PDFs. Format frontends are grouped by domain; the source excerpts do not establish every dispatch path, so uncertain internal links are omitted.
Main entry points: detect.rs Format detection · lib.rs Rust API · docx/mod.rs Word parsing · pptx/mod.rs Presentation parsing
Components 20
Public interfaces
- Rust API
src/lib.rs - Node binding
node/src/lib.rs - Python binding
python/src/lib.rs - Wasm binding
wasm/src/lib.rs
Format frontends
- Format detection
src/formats/detect.rs - Word parsing
src/formats/docx/mod.rs - Presentation parsing
src/formats/pptx/mod.rs - Spreadsheet parsing
src/formats/sheet/mod.rs - OpenDocument parsing
src/formats/odf/mod.rs - EPUB parsing
src/formats/epub/mod.rs - RTF parsing
src/formats/rtf/mod.rs - CSV parsing
src/formats/csv.rs - PDF parsing
src/formats/pdf.rs
Shared conversion core
- Archive and XML
src/package/mod.rs - Parsing helpers
src/shared/mod.rs - Document model
src/model/mod.rs - Embedded assets
src/shared/assets.rs - Markdown renderer
src/render/markdown/mod.rs
External services
- Firecrawl Parse
Other components
- Application
Connections 30
- Application → Rust API: calls
README.md - Rust API → Format detection: detects format
src/lib.rs - Rust API → Document model: returns document
src/lib.rs - Rust API → Markdown renderer: renders Markdown
src/lib.rs - Node binding → Rust API: exposes conversion
README.md - Python binding → Rust API: exposes conversion
README.md - Wasm binding → Rust API: exposes conversion
README.md - Format detection → Word parsing: selects parser
- Format detection → Presentation parsing: selects parser
- Format detection → Spreadsheet parsing: selects parser
- Format detection → OpenDocument parsing: selects parser
- Format detection → EPUB parsing: selects parser
- Format detection → RTF parsing: selects parser
- Format detection → CSV parsing: selects parser
- Format detection → PDF parsing: selects parser
- Word parsing → Document model: builds model
src/formats/docx/mod.rs - Presentation parsing → Document model: builds model
src/formats/pptx/mod.rs - RTF parsing → Document model: builds model
src/formats/rtf/mod.rs - OpenDocument parsing → Archive and XML: reads package
src/formats/odf/mod.rs - Word parsing → Archive and XML: reads package
src/formats/docx/mod.rs - Presentation parsing → Archive and XML: reads package
src/formats/pptx/mod.rs - Word parsing → Parsing helpers: uses helpers
src/formats/docx/mod.rs - Presentation parsing → Parsing helpers: uses helpers
src/formats/pptx/mod.rs - RTF parsing → Parsing helpers: uses helpers
src/formats/rtf/mod.rs - EPUB parsing → Parsing helpers: uses HTML conversion
- Markdown renderer → Document model: renders from
src/render/markdown/mod.rs - Word parsing → Embedded assets: retains assets
src/shared/assets.rs - Presentation parsing → Embedded assets: retains assets
src/shared/assets.rs - Application → Firecrawl Parse: requests OCR
README.md - Firecrawl Parse → Markdown renderer: returns conversion
README.md