Sonata

pdf-inspector: быстрый разбор и конвертация PDF в Markdown без OCR

Библиотека на Rust для классификации PDF и извлечения текста без OCR. Определяет тип документа — текстовый, сканированный, графический или смешанный — за 10–50 мс, возвращая оценку уверенности и список страниц, которым OCR всё же нужен.

Извлечение учитывает позиции символов, шрифты и координаты, автоматически восстанавливая порядок чтения в многоколоночной вёрстке и поддерживая RTL. Результат конвертируется в Markdown: заголовки H1–H4, списки, блоки кода, таблицы, ссылки и разрывы страниц.

Поддерживаются CID-шрифты через ToUnicode CMap, кодировки UTF-16BE, UTF-8 и Latin-1, а также обнаружение сломанных кодировок для отката к OCR. Документ парсится один раз и переиспользуется на этапах детекции и извлечения.

Проект создан командой Firecrawl, чтобы обрабатывать текстовые PDF локально быстрее 200 мс и не платить за OCR примерно для 54% файлов. Есть биндинги для Python, Node.js и WebAssembly — парсер работает прямо в браузере и Web Workers.

На корпусе opendataloader-bench из 200 документов с отключённым OCR результат составил 0.875 общего балла, 0.915 за порядок чтения и 0.814 за таблицы при полном прогоне за 0.470 с — быстрее сравниваемых локальных движков.

Чистый Rust, без ML-моделей и внешних сервисов, с единственной зависимостью для разбора PDF.

GitHub ★ 6,606

Загрузка страницы