Как превратить хаос из PDF в идеальный Markdown с помощью dots.ocr

24 Mar, 2026
9,064
🔱 801
👥 53

Знакомая ситуация: у вас есть пачка 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 код выглядит вполне стандартно. Вы просто загружаете процессор и модель, а затем отправляете изображение с промптом, в котором указываете, что именно хотите получить: только текст, разметку или всё сразу.

Где это применить на практике?

  1. RAG-системы: Если вы строите базу знаний по внутренним документам компании, качество извлеченного текста напрямую влияет на то, как будет отвечать ваш чат-бот. dots.ocr обеспечит чистый Markdown без мусора.
  2. Оцифровка архивов: Старые газеты, журналы или финансовые отчеты с кучей колонок — идеальный полигон для этой модели.
  3. Автоматизация бухгалтерии: Извлечение данных из таблиц в JSON для последующей загрузки в базу данных.

Есть ли нюансы?

Как и любой инструмент, dots.ocr не идеален. Сами авторы честно предупреждают:

  • С очень сложными, «навороченными» таблицами модель может иногда ошибаться.
  • Картинки внутри документов пока не описываются текстом (модель просто понимает, что там картинка).
  • Для обработки огромных массивов PDF (сотни тысяч страниц) на одной видеокарте скорость может быть бутылочным горлышком.

Итог: стоит ли пробовать?

Если ваша работа связана с обработкой документов и вам надоело бороться с кривым форматированием после обычных OCR-библиотек — однозначно да. dots.ocr подкупает своей простотой: одна модель, один промпт и на выходе готовый структурированный документ.

Проект активно развивается, у него уже более 7.5 тысяч звезд на GitHub, а живое демо позволяет пощупать возможности модели прямо в браузере.

Полезные ссылки:

Попробуйте прогнать через неё свой самый «вредный» PDF-файл — результат может вас приятно удивить!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.