Как превратить хаос из PDF в идеальный Markdown с помощью dots.ocr
Знакомая ситуация: у вас есть пачка PDF-файлов — научные статьи, финансовые отчеты или старые сканы — и вам нужно вытащить из них текст, таблицы и формулы. Вы пробуете обычный OCR, но на выходе получаете «кашу», где колонки текста перемешаны, таблицы развалились, а математические формулы превратились в набор случайных символов.
Традиционные инструменты часто пасуют перед сложной версткой. Но что, если я скажу, что теперь есть модель, которая «видит» документ так же, как человек, и сразу понимает, где заголовок, где ячейка таблицы, а где сложный интеграл? Знакомьтесь — dots.ocr.
Что это за зверь и почему он круче других?
dots.ocr — это проект от команды Rednote (Xiaohongshu), который переосмысляет подход к распознаванию документов. Вместо того чтобы строить сложный конвейер из пяти разных моделей (одна ищет блоки, другая распознает текст, третья — таблицы), разработчики использовали одну компактную Vision-Language Model (VLM) на 1.7 миллиарда параметров.
Интересно, что при таком скромном размере (по современным меркам ИИ), она обходит в тестах гигантов вроде GPT-4o и Gemini 2.5 Pro в специфических задачах парсинга документов. В моей практике часто встречались модели, которые хорошо читают английский, но «плывут» на других языках. dots.ocr же изначально затачивалась под мультиязычность.
Главные фишки: за что стоит полюбить этот проект
1. Единая архитектура вместо «зоопарка» моделей
Обычно процесс OCR выглядит так: сначала детектор (например, YOLO) ищет области, потом классификатор определяет их тип, и только потом в дело вступает движок распознавания. В dots.ocr всё делает одна нейронка. Вы просто даете ей картинку и промпт, а она возвращает структурированный JSON. Это на порядок упрощает деплой и поддержку.
2. Мастерство в таблицах и формулах
Если вы когда-нибудь пытались парсить таблицы в Markdown, вы знаете, какая это боль. dots.ocr умеет выдавать таблицы сразу в формате HTML, что сохраняет структуру ячеек даже при сложном объединении строк. А формулы? Они превращаются в аккуратный LaTeX.
3. Понимание порядка чтения (Reading Order)
Это критически важная штука для многоколоночных документов. Обычный OCR может прочитать сначала левую колонку, потом правую, а потом внезапно перескочить на сноску внизу. dots.ocr восстанавливает логическую последовательность текста, как если бы его читал человек.
4. Настоящая мультиязычность
Проект поддерживает более 100 языков. На примерах в репозитории видно, как модель справляется с тибетским, каннада, русским и, конечно, китайским языками. Причем делает это не «для галочки», а с сохранением высокого качества на низкоресурсных языках.
Техническая начинка: как это работает?
В основе лежит LLM с 1.7B параметров, обученная понимать визуальную разметку. Разработчики подготовили веса и интегрировали модель с популярными фреймворками.
Кстати, отличная новость для тех, кто не хочет возиться с настройкой окружения: модель официально интегрирована в vLLM (начиная с версии 0.11.0). Это значит, что вы можете поднять высокопроизводительный сервер одной командой и обращаться к нему через стандартный API.
Как быстро запустить?
Если у вас есть GPU с поддержкой CUDA, установка займет пару минут:
git clone https://github.com/rednote-hilab/dots.ocr.git
cd dots.ocr
pip install -e .
python3 tools/download_model.py
Для инференса через Hugging Face код выглядит вполне стандартно. Вы просто загружаете процессор и модель, а затем отправляете изображение с промптом, в котором указываете, что именно хотите получить: только текст, разметку или всё сразу.
Где это применить на практике?
- RAG-системы: Если вы строите базу знаний по внутренним документам компании, качество извлеченного текста напрямую влияет на то, как будет отвечать ваш чат-бот. dots.ocr обеспечит чистый Markdown без мусора.
- Оцифровка архивов: Старые газеты, журналы или финансовые отчеты с кучей колонок — идеальный полигон для этой модели.
- Автоматизация бухгалтерии: Извлечение данных из таблиц в JSON для последующей загрузки в базу данных.
Есть ли нюансы?
Как и любой инструмент, dots.ocr не идеален. Сами авторы честно предупреждают:
- С очень сложными, «навороченными» таблицами модель может иногда ошибаться.
- Картинки внутри документов пока не описываются текстом (модель просто понимает, что там картинка).
- Для обработки огромных массивов PDF (сотни тысяч страниц) на одной видеокарте скорость может быть бутылочным горлышком.
Итог: стоит ли пробовать?
Если ваша работа связана с обработкой документов и вам надоело бороться с кривым форматированием после обычных OCR-библиотек — однозначно да. dots.ocr подкупает своей простотой: одна модель, один промпт и на выходе готовый структурированный документ.
Проект активно развивается, у него уже более 7.5 тысяч звезд на GitHub, а живое демо позволяет пощупать возможности модели прямо в браузере.
Полезные ссылки:
Попробуйте прогнать через неё свой самый «вредный» PDF-файл — результат может вас приятно удивить!