Open Source
Explore the latest AI open-source projects from GitHub and HuggingFace.
Explore the latest AI open-source projects from GitHub and HuggingFace.
anydoc is a Rust library from Firecrawl that converts Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV and PDF documents into clean GitHub-Flavored Markdown, with official bindings for Node.js, Python and the browser via WebAssembly alongside the native Rust crate. Every format parses into one shared document model, covering headings with anchors, formatted and code text, links and cross-references, nested and task lists that keep the source's own numbering, tables with merged cells and header rows, block quotes, footnotes and speaker notes, then renders through a single Markdown serializer, so a formatting fix made for one format applies to all of them. Equations from Word and PowerPoint (OMML), OpenDocument and EPUB (MathML), and RTF convert to GitHub-flavored LaTeX math, and the format itself is detected from the file's bytes rather than its extension, so mislabeled files still convert correctly. The library reads text-based PDFs locally but does not perform OCR itself; a scanned or image-only PDF raises a NeedsOcr error unless the caller opts into sending it to Firecrawl's own hosted Parse API for OCR, an option the Rust crate omits, while the Node and Python bindings do offer it. In the project's own published benchmark against six other converters, LibreOffice, Unstructured, MarkItDown, Pandoc, Docling and Mammoth, judged blind by an LLM against page images from LibreOffice, anydoc was the only one of the seven that converted all fourteen tested formats, scored highest on every format it was judged against, and had a median conversion time of 4.4 milliseconds, faster than the other converters by roughly an order of magnitude. It also ships as an Agent Skill, installed with npx skills add firecrawl/anydoc, teaching coding agents such as Claude Code, Codex and Cursor to convert documents through the anydoc CLI, and a browser demo runs the WebAssembly build locally so files never leave the machine. The Node.js binding runs on the libuv thread pool without blocking the event loop and the Python binding releases the GIL during conversion. The project is MIT licensed and releases publish to crates.io, npm and PyPI together via one GitHub Actions workflow.