ГАЙД 2026

Локальный OCR для документов: какие модели выбрать в 2026 и как запустить

Распознавание документов перестало быть задачей Tesseract: открытые VLM-модели выдают markdown с разметкой блоков. Сравниваем реальные загрузки и размеры весов и показываем два пути запуска — 76 МБ на CPU и 6,7 ГБ на GPU.

ГайдOCRЛокальный запуск
Уровень СреднийВремя настройки 10–40 минутОбновлено 21.10.2026

Два года назад «OCR локально» означало Tesseract с ручной предобработкой. В 2026 году открытые модели распознают страницу целиком и возвращают markdown с заголовками, таблицами, порядком чтения и координатами блоков — причём часть из них работает на CPU без PyTorch. Ниже — карта моделей по фактическим загрузкам и размерам весов, требования к железу и команды запуска.

2,13 млн
Лидер по загрузкам
Unlimited-OCR
76 МБ
Самая маленькая
Indra OCR
6,67 ГБ
Веса Unlimited-OCR
bf16
80+
Языков у Indra OCR
включая кириллицу
Как мы это проверяли
Загрузки, лайки, размеры файлов и лицензии сняты 21.10.2026 через Hugging Face API (api/models/<repo>?blobs=true), бенчмарк Indra OCR — из карточки модели и её репозитория. Своих замеров точности мы не делали: там, где вендор цифр не публикует, это прямо написано.

01Почему OCR стал задачей визуальных моделей

Классический OCR — конвейер из трёх независимых моделей: детекция строк, распознавание символов, разметка структуры. Ошибка на любом шаге не исправляется дальше. VLM-подход решает задачу одним проходом: страница подаётся как изображение, модель возвращает текст вместе с разметкой, а порядок чтения и таблицы она выучила на разметке документов, а не на правилах.

Практическая разница видна на сложных страницах. Таблица с объединёнными ячейками, колонтитул, рукописная пометка на полях, повёрнутый скан — для конвейера это отдельные флаги и костыли, для VLM — часть одной задачи. Цена — требования к памяти и склонность моделей иногда «додумывать» текст, особенно на повреждённых сканах.

Главный риск VLM-OCR
Языковая модель может выдать правдоподобный, но неверный фрагмент: цифру в счёте, пункт в договоре. Для юридических и финансовых документов обязательна выборочная сверка с исходником или второй проход по критичным полям.

02Карта моделей: что реально скачивают

Загрузки OCR-моделей за последний месяцтысячи загрузок, снято 21.10.2026 через Hugging Face API
0тыс.1 250тыс.2 500тыс.Unlimited-OCR2 128тыс.DeepSeek-OCR2 093тыс.GLM-OCR1 700тыс.surya-ocr-21 478тыс.chandra-ocr-21 453тыс.dots.ocr583тыс.DeepSeek-OCR-2550тыс.GOT-OCR2_0348тыс.
Учитываются модели с тегом ocr в названии и pipeline image-to-text; загрузки включают автоматические пайплайны и CI.

Расклад сил понятен: два лидера примерно равны — байдусовский Unlimited-OCR (2,13 млн загрузок, 4852 лайка) и DeepSeek-OCR (2,09 млн, 3450 лайков). Третья строка у GLM-OCR от zai-org с 2,65 ГБ весов — заметно компактнее лидеров при 1,7 млн загрузок. Ниже идут две модели Datalab: surya-ocr-2 (686 млн параметров) и chandra-ocr-2 (5,3 млрд), обе под лицензией OpenRAIL.

МодельПараметрыВесаЛицензияЗагрузки / лайки
baidu/Unlimited-OCR3,34 млрд6,67 ГБMIT2,13 млн / 4852
deepseek-ai/DeepSeek-OCR———2,09 млн / 3450
zai-org/GLM-OCR1,33 млрд2,65 ГБMIT1,70 млн / 2168
datalab-to/surya-ocr-2686 млн—OpenRAIL1,48 млн / 132
datalab-to/chandra-ocr-25,30 млрд—OpenRAIL1,45 млн / 568
deepseek-ai/DeepSeek-OCR-23,39 млрд6,78 ГБApache-2.0550 тыс. / 1139
dots-studio/dots.ocr3,04 млрд—MIT583 тыс. / 1341
nanonets/Nanonets-OCR2-3B3,75 млрд—не указана278 тыс. / 517
datalab-to/indra-ocr7,3 млн (все модели)76 МБOpenRAIL-M (веса)3,6 тыс. / 338
Открытые OCR-модели на 21.10.2026
Параметры и размеры — из safetensors-метаданных и файлового списка репозитория; «—» означает, что метаданных нет или формат не safetensors.
Лайки моделей: сколько людей отметили модель полезнойснято 21.10.2026 через Hugging Face API
02 5005 000Unlimited-OCR4 852DeepSeek-OCR3 450GLM-OCR2 168GOT-OCR2_01 573dots.ocr1 341DeepSeek-OCR-21 139chandra-ocr-2568Indra OCR338
Лайк ставит человек, поэтому это более честный сигнал интереса, чем счётчик загрузок.
Лайки важнее загрузок
Загрузки легко завышаются автоматикой: одна CI-сборка ComfyUI или демо на Hugging Face Spaces даёт тысячи скачиваний. Соотношение лайков к загрузкам честнее показывает, сколько людей реально попробовали модель и остались довольны: у Unlimited-OCR это 1 к 438, у surya-ocr-2 — 1 к 11 200.

03Как устроен локальный пайплайн

Любая из этих моделей работает не с PDF напрямую, а с изображениями страниц. Поэтому пайплайн всегда одинаковый по структуре, отличается только шаг распознавания — CPU-модель на ONNX или VLM на GPU.

Путь страницы до структурированных данных
1Рендер PDFстраницы в PNG, 200–300 dpi (Indra по умолчанию берёт 200)2Анализ раскладкидетекция блоков, порядка чтения, поворота3Распознаваниемодель выдаёт текст построчно или сразу markdown4Постобработкасборка markdown/JSON, нормализация таблиц, разбивка на чанкиДля цифровых PDF шаг распознавания можно пропустить: Indra OCR читает текстовый слой и досканирует только картинки
Слои локального OCR-стека
Рендерpypdfium2 или PyMuPDF, dpi и поворотвходМодельONNX на CPU либо transformers/vLLM на GPUраспознаваниеСтруктураmarkdown, JSON с блоками и координатамивыходПайплайночередь файлов, ретраи, запись в хранилищеоркестрация

04Сколько нужно железа

Считаем от фактических размеров файлов, а не от маркетинговых обещаний. Веса в bf16 занимают столько же, сколько весит файл модели, плюс запас на активации и кэш внимания — для длинного документа он растёт вместе с числом токенов.

ВариантВесаRAM / VRAMСкоростьКогда выбирать
Indra OCR (ONNX, CPU)76 МБединицы ГБ RAM≈44 стр/с на 32 ядрахмассовая оцифровка, нет GPU, десятки языков
GLM-OCR2,65 ГБ≈6–8 ГБ VRAMзависит от батчакомпромисс между качеством и памятью
DeepSeek-OCR-26,78 ГБ≈8–12 ГБ VRAMодин проход на страницусложные таблицы и формулы
Unlimited-OCR6,67 ГБ≈8–12 ГБ VRAM, vLLM — большеvLLM для потокадлинные документы, пачки страниц
chandra-ocr-25,30 млрд параметров≈12–16 ГБ VRAMмедленнее лидероврукописный текст, деградировавшие сканы
Требования к памяти: расчёт от размера весов, а не официальные минимумы
Вендоры почти не публикуют минимальные требования к VRAM, поэтому диапазоны — инженерная оценка; проверяйте на своей карте.
CPU-путь недооценён
Indra OCR заявляет около 44 страниц в секунду на 32 ядрах и примерно 210 мс на страницу на 4 ядрах — при 76 МБ моделей и без PyTorch. Для архива сканов это дешевле, чем держать GPU, а качество на текстовых страницах у него выше, чем у Tesseract, по собственным замерам вендора.

05Запуск: CPU за минуту, GPU за полчаса

Начните с CPU-варианта, если задача — текст, сканы и печатные документы. Он ставится одной командой и не требует ни видеокарты, ни PyTorch: внутри ONNX Runtime, OpenCV и pypdfium2.

Indra OCR: установка и первый прогон
1
Поставьте пакет
Нужен Python 3.10+; поддерживаются Linux x86_64/aarch64 и macOS на Apple silicon.
terminalcopy
pip install indra-ocr
2
Распознайте PDF в markdown
Первый запуск скачает модели (около 76 МБ) с Hugging Face и закэширует их.
terminalcopy
indra-ocr paper.pdf
3
Сохраните результат по файлам
По одному .md на каждый входной файл, обработка на всех доступных ядрах.
terminalcopy
indra-ocr *.pdf --out results/
4
Отдайте разметку в JSON
Строки, боксы, блоки раскладки, уверенность и тайминги — если документ идёт дальше в пайплайн.
terminalcopy
indra-ocr scan.png --format json

GPU-путь нужен, когда документы сложные: формулы, таблицы с объединёнными ячейками, плохие сканы. Ниже — минимальный пример для Unlimited-OCR из официальной карточки модели, с режимами gundam (одна страница, кроп) и base (многостраничный документ).

ocr_gpu.pypython
from transformers import AutoModel, AutoTokenizer
import torch

name = 'baidu/Unlimited-OCR'
tok = AutoTokenizer.from_pretrained(name, trust_remote_code=True)
model = AutoModel.from_pretrained(name, trust_remote_code=True,
                                 use_safetensors=True, torch_dtype=torch.bfloat16).eval().cuda()

# одна страница: base_size=1024, image_size=640, crop_mode=True
model.infer(tok, prompt='<image>document parsing.', image_file='page.jpg',
            output_path='out/', base_size=1024, image_size=640, crop_mode=True,
            max_length=32768, save_results=True)

# многостраничный PDF: сначала рендер страниц в PNG (PyMuPDF, 300 dpi)
model.infer_multi(tok, prompt='<image>Multi page parsing.', image_files=pages,
                  output_path='out/', image_size=1024, max_length=32768,
                  no_repeat_ngram_size=35, ngram_window=1024, save_results=True)
Продовый запуск — через vLLM
У Unlimited-OCR есть официальный рецепт для vLLM и готовые Docker-образы (vllm/vllm-openai:unlimited-ocr, отдельный тег под Hopper с CUDA 12.9). Для потока документов это правильнее, чем скрипт на transformers: батчи, очередь и совместимый с OpenAI API.

06Типичные ошибки

СимптомПричинаЧто делать
Мелкий текст распознаётся с ошибкаминизкий dpi при рендере PDFподнять dpi до 250–300, проверить поворот страницы
Таблицы превращаются в кашумодель уровня текстового OCR без разметки блоковбрать VLM-модель или просить JSON с блоками
Процесс падает по памяти на длинном PDFкэш внимания растёт с числом страниц в одном проходерезать на пачки по 3–5 страниц, снижать max_length
В выводе появляются выдуманные фразыVLM достраивает текст на повреждённом сканесверять критичные поля с исходником, снижать температуру
Модель не ставится из-за кастомного коданужен trust_remote_code для архитектуры из репозиториядоверять только проверенному репозиторию и фиксировать ревизию
Что чаще всего ломается при локальном OCR

07Что с точностью на самом деле

Единого публичного лидерборда OCR-моделей нет, и это главная сложность выбора. Официальные цифры публикует Datalab для Indra OCR: 66,7 балла на OmniParseBench (71,4 с флагом --math), тогда как полный пайплайн PP-StructureV3 от PaddleOCR набирает 58,4. По текстовому компоненту Indra даёт 46,7 против 35,8 у текстовых моделей PP-OCR и 19,3 у Tesseract. Это данные вендора на его собственном наборе — читать их как «в среднем по рынку» нельзя.

Метрика OmniParseBenchIndra OCRPP-StructureV3PP-OCR (текст)Tesseract
Общий балл66,758,4——
Общий балл с --math71,4———
Текстовый компонент46,7—35,819,3
Handwriting25,2———
Замеры Datalab на OmniParseBench (данные авторов)
Цифры опубликованы вендором Indra OCR и не воспроизводились нами независимо.

Для остальных моделей карточки на Hugging Face содержат описание, формат и лицензию, но не воспроизводимый прогон по единому набору. Поэтому при выборе разумно делать собственный мини-тест: 20–30 страниц именно ваших документов, с ручной проверкой чисел, дат и таблиц. Это дешевле, чем перебирать модели по обзорам.

Частые вопросы

Какая OCR-модель лучше для русского текста?
Из открытых вариантов практичны Unlimited-OCR и GLM-OCR: обе заявляют мультиязычность и работают с кириллицей. Indra OCR отдельно указывает русский и кириллические языки среди 80+ поддерживаемых и распознаёт наклон до 45 градусов, но по рукописному тексту его собственный результат скромный — 25,2 балла на OmniParseBench.
Можно ли сделать OCR без видеокарты?
Да. Indra OCR — ONNX-модель на 76 МБ, ей нужен только CPU: по замерам вендора около 44 страниц в секунду на 32 ядрах и примерно 210 мс на страницу на 4 ядрах. VLM-модели на 2,6–6,8 ГБ весов без GPU запускать не стоит: скорость упадёт на порядок.
Сколько видеопамяти нужно для Unlimited-OCR?
Веса в bf16 занимают 6,67 ГБ, поэтому практический минимум — карта на 8–12 ГБ с запасом на активации и кэш внимания. Для потока документов вендор даёт рецепт vLLM и Docker-образы, там требования выше, чем при одиночном запуске через transformers.
Чем VLM-OCR лучше Tesseract?
Tesseract распознаёт строки и не понимает структуру: таблицы, порядок чтения и колонтитулы приходится разбирать отдельно. VLM-модели возвращают готовый markdown или JSON с блоками и координатами. По заявленным замерам Indra текстовый компонент даёт 46,7 против 19,3 у Tesseract, а по скорости — до 15 раз быстрее на той же машине.
Можно ли использовать эти модели в коммерческом продукте?
Зависит от лицензии. Unlimited-OCR, GLM-OCR и dots.ocr — MIT, DeepSeek-OCR-2 — Apache-2.0. У Datalab веса под модифицированной OpenRAIL-M: бесплатно для исследований, личного использования и стартапов с выручкой или финансированием до 20 млн долларов, но нельзя использовать в конкуренции с их API. Для остальных случаев нужен отдельный договор.
Что делать с распознанным текстом дальше?
Стандартный путь — разбить markdown на чанки, посчитать эмбеддинги и положить в векторную базу, чтобы поиск отвечал по документу. Готовые схемы разобраны в гайдах по RAG: от ручной сборки до платформ вроде RAGFlow, которые включают разбор документов внутрь себя.

Источники и документация

  • datalab-to/indra-ocrhuggingface.co/datalab-to/indra-ocr
    Карточка модели: 76 МБ, CLI, лицензии, бенчмарки OmniParseBench
  • baidu/Unlimited-OCRhuggingface.co/baidu/Unlimited-OCR
    Карточка модели: параметры, режимы infer/infer_multi, vLLM-рецепт
  • Unlimited OCR Works (arXiv)arxiv.org/abs/2606.23050
    Статья Baidu о модели, на которую ссылается карточка
  • PaddlePaddle/PaddleOCRgithub.com/PaddlePaddle/PaddleOCR
    PP-OCR и PP-StructureV3 — базовая линия для сравнения
  • datalab-to/markergithub.com/datalab-to/marker
    Открытый пайплайн разбора документов от Datalab
  • Hugging Face APIhuggingface.co/api/models?search=ocr&sort=downloads
    Загрузки, лайки, параметры и размеры файлов — снято 21.10.2026
Итог гайда
8,3/ 10
Для массовой оцифровки печатных документов начинайте с Indra OCR: 76 МБ, CPU, markdown и JSON из коробки. Для сложных страниц — таблиц, формул, плохих сканов — берите VLM на 3–7 ГБ весов (Unlimited-OCR, GLM-OCR, DeepSeek-OCR-2) и проверяйте качество на своих документах, а не на чужих бенчмарках.
Собираете пайплайн обработки документов?
В каталоге Qantcore — обзоры платформ RAG, OCR и агентов для работы с документами.