Anydoc от Firecrawl: документы в Markdown за 4 мс

Anydoc от Firecrawl: конвертирует документы в Markdown за 4 миллисекунды
Anydoc - опенсорсная библиотека на Rust от команды Firecrawl, которая переводит Word, PDF, презентации, таблицы и ещё несколько офисных форматов в чистый Markdown. Медиана конверсии - 4.4 миллисекунды на документ, всё крутится локально, без внешних API и ML-моделей. Лицензия MIT, 4 300+ звёзд на GitHub за первые двое суток после релиза. Основной сценарий - подготовить документы, чтобы скормить их нейросети: RAG, агенты, кастомные пайплайны обучения.
Что делает anydoc и зачем он вообще нужен
Любая работа с документами через LLM упирается в одну задачу: превратить .pdf / .docx / .pptx в текст, который модель поймёт без потерь. Готовые обёртки типа LangChain-парсеров либо дорогие, либо теряют структуру: заголовки становятся обычным абзацем, таблицы плывут, footnotes пропадают.
Anydoc решает это одним бинарником. На входе - файл или байты, на выходе - GitHub-Flavored Markdown с сохранённой структурой: заголовки с якорями, жирный/курсив, инлайн-код, ссылки, вложенные списки с оригинальной нумерацией, таблицы с объединёнными ячейками, сноски, комментарии докладчика в презентациях. Картинки внутри документа сохраняются как alt-текст, а сырые байты доступны через объектную модель - если понадобится, можно достать и отдельно.
Сайд-эффект: он быстрый настолько, что его не жалко звать хоть в цикле. Медианное время - 4.4 мс, это на порядок быстрее ближайшего конкурента.
Какие форматы поддерживает anydoc
Восемь семейств, 14 расширений - весь мейнстрим офисной документации:
| Семейство | Расширения |
|---|---|
| Word | .doc, .docx, .docm |
| PowerPoint | .ppt, .pps, .pot, .pptx, .pptm, .ppsx, .ppsm |
| Excel | .xls, .xlsx, .xlsm, .xlsb |
| OpenDocument | .odt, .ods, .odp |
| Rich Text Format | .rtf |
| EPUB | .epub |
| CSV | .csv |
| .pdf (текстовые, без OCR) |
Важный нюанс про PDF: anydoc парсит только текстовые PDF - те, где текст живёт в файле как текст. Отсканированные страницы, где картинка вместо букв, он не тянет: для них нужен OCR. У Firecrawl для этого есть платный хостед-сервис Firecrawl Parse, но это уже другая история.
Формат определяется не по расширению, а по содержимому - по сигнатурам внутри байтов (PDF-хедер, RTF open group, ZIP mimetype). То есть если файл называется "report.txt", но внутри реально .docx - anydoc всё равно поймёт.
Как установить и запустить anydoc за минуту
Самый быстрый способ - через npx, без глобальной установки:
npx @firecrawl/anydoc report.docx # markdown в stdout
npx @firecrawl/anydoc slides.pptx -o slides.md # или в файл
npx @firecrawl/anydoc - --format csv < data.csv # чтение из stdin
На первом запуске npx скачает бинарник под твою платформу и закеширует. Если хочешь постоянную команду anydoc в системе:
npm install -g @firecrawl/anydoc
Есть биндинги под Node.js, Python и Rust. Пример на Node.js:
import { toMarkdown, toMarkdownBytes } from '@firecrawl/anydoc';
const markdown = await toMarkdown('report.docx');
const fromBytes = await toMarkdownBytes(bytes);
На Python:
import anydoc
markdown = anydoc.to_markdown("report.docx")
Если лень что-то ставить - открывай firecrawl.github.io/anydoc, там WASM-версия прямо в браузере. Файл никуда не улетает, всё считается локально в твоей вкладке. Я туда закинул скачанный PDF на 60 страниц с таблицами и списками - результат вставился в буфер за секунду, таблицы и заголовки на месте.
Как быстро на самом деле - бенчмарк против других конвертеров
Авторы прогнали anydoc против шести известных парсеров на 100 реальных документах и 14 форматах. Судья - LLM (Claude Sonnet 5) сравнивал вывод вслепую с эталонным рендером страниц. Итоговый балл усредняется по всем поддерживаемым форматам:
| Инструмент | Форматов | Медиана, мс | Балл |
|---|---|---|---|
| anydoc | 14/14 | 4.4 | 81 |
| mammoth | 1/14 | 52.5 | 69 |
| markitdown | 6/14 | 134.8 | 64 |
| unstructured | 8/14 | 572.9 | 62 |
| docling | 4/14 | 513.6 | 57 |
| pandoc | 5/14 | 102.1 | 56 |
| libreoffice | 12/14 | 1129.5 | 39 |
Цифра "медиана мс" - время одной тёплой конверсии на Ryzen 9 9950X3D. Разница между anydoc и вторым местом по скорости (mammoth) - на порядок, между anydoc и libreoffice - в 256 раз. По качеству anydoc обошёл всех на каждом формате, где сравнение было корректным.
Самооценка бенчмарка через LLM-судью - не идеальная методика, но фейковый выигрыш в 15+ баллов на одном формате всё равно бы не проехал. И плюс мой личный тест на WASM: у markitdown таблицы в моём .docx поехали, у anydoc - стоят как в оригинале.
Как подключить anydoc как навык к Claude Code, Cursor или Codex
Авторы выкатили anydoc сразу как Agent Skill - формат, который понимают Claude Code, Codex, Cursor, OpenCode. Одна команда - и агент сам знает, как читать любой офисный документ:
npx skills add firecrawl/anydoc
После этого агент понимает: "если пришёл .docx / .pdf / .pptx - вызови CLI anydoc, получи Markdown, работай с текстом". Тебе не надо руками писать в промпте, чем открывать файл.
Если пишешь агента с нуля через SDK - самый простой путь: попросить Claude Code сгенерить обёртку.
В Claude Code вставь запрос:
Добавь в мой агент функцию parseDocument(filepath), которая:
1. Запускает `npx @firecrawl/anydoc <filepath>` через child_process
2. Возвращает stdout как строку markdown
3. Кидает ошибку, если формат не поддерживается (список форматов - в docs anydoc)
4. Обрабатывает stdin-вариант для in-memory байтов
5. Пишет юнит-тест с одним sample.docx в /fixtures
Дальше вставляешь эту функцию в свой RAG или пайплайн - и получаешь готовый корм для эмбеддингов из любого офисного мусора.
Когда anydoc - в самый раз, а когда - overkill
Бери anydoc, если:
- Нужен локальный конвертер без API и без пересылки файлов наружу (компливэнс, чувствительные данные).
- В пайплайне текстовые документы разных форматов, нужен единый Markdown на выходе.
- Скорость критична: обрабатываешь тысячи файлов, надо укладываться в минуты, а не часы.
- Ты собираешь RAG или дообучение и не хочешь платить за парсинг.
Не бери anydoc, если:
- Нужен OCR - твои PDF это сканы, а не текст. Тут либо Firecrawl Parse платно, либо связка Tesseract → anydoc.
- Тебе нужны 3-5 файлов в неделю руками - открой firecrawl.github.io/anydoc и не парься.
- Работаешь с .doc из 1997 года с макросами и полями - тесты на них у авторов есть, но покрытие не идеальное, лучше проверить на своих файлах.
FAQ
Anydoc бесплатный? Да, MIT-лицензия. Можно использовать в коммерческих проектах, форкнуть, вкорячить в свой продукт - никаких ограничений. Отдельно платный хостед-сервис Firecrawl Parse - но он опционален, для случаев с OCR.
Умеет ли anydoc в OCR отсканированных PDF? Нет, только текстовые PDF. Для сканов нужен внешний OCR, и его результат уже можно передать в anydoc или обработать отдельно. Хостед-версия у Firecrawl OCR включает.
Работает ли anydoc на Windows / Mac / Linux? Да, кроссплатформенно. npx автоматически подтянет бинарник под твою систему на первом запуске. Rust-бинарники собраны под все три платформы.
Как anydoc сравнивается с markitdown от Microsoft? По бенчмарку авторов - anydoc в 30 раз быстрее (4.4 мс против 134.8 мс медианы) и на 17 баллов выше по качеству (81 против 64). Markitdown покрывает 6 форматов из 14, anydoc - все 14. Судья - Claude Sonnet 5, вслепую.
Куда девать вывод anydoc, чтобы нейросеть его "поняла"? Markdown из anydoc - готовый корм. Разбивай на чанки по заголовкам (H1/H2), считай эмбеддинги, клади в векторную базу. Или отдавай агенту как context напрямую - модели типа Claude или GPT читают Markdown лучше, чем сырой HTML или PDF-текст.
Вывод
Anydoc - тот редкий случай, когда опенсорс не догоняет коммерческие решения, а обгоняет их и по скорости, и по качеству. Локально, бесплатно, MIT, 8 форматов из коробки, встраивается за минуту в любой пайплайн через CLI или биндинги.
Если ты собираешь что-то на нейросетях и работаешь с документами - выкидывай костыли, ставь anydoc. Если только присматриваешься - открой WASM-демо и брось туда свой самый уродский .pptx, всё сразу станет понятно.
Что дальше
Если хочешь собрать такую систему у себя - у меня есть курс по вайбкодингу и работе с нейросетями в клубе Мандарин Лаб: mandarinedu.ru. Первые уроки открыты бесплатно.
Если нужно внедрить ИИ в бизнес - процессы, агентов, автоматизацию под вашу задачу - пишите мне напрямую: t.me/Philigranchik. Разберу задачу и скажу, что реально автоматизируется, а что нет.

Вайбкодер-разработчик и маркетолог с 9-летним опытом, основатель «Мандарин Лаб». Собирает на ИИ то, за что раньше платили подрядчикам сотни тысяч: CRM, ботов, автоматизации, монтаж. Одну из систем строил под агентство недвижимости с базой в 400 000 лидов. Теперь учит этому с нуля - как за вечер собрать свой инструмент через Claude Code и зарабатывать на нейросетях.
Telegram @mike_cmo →