Baidu Unlimited OCR 2: открытая OCR-модель на 3,34 млрд параметров для документов в сотни страниц

Baidu выложила в открытый доступ Unlimited OCR 2 — модель оптического распознавания текста, рассчитанную на очень длинные документы. Это vision-language модель на 3,34 млрд параметров, которая за один запрос разбирает книги, отчёты и бумаги объёмом в сотни страниц. Веса опубликованы под лицензией MIT, код — на GitHub.

Главное изменение по сравнению с прошлой версией — схема разреженного внимания SR-SWA. Именно она позволяет удерживать стоимость декодирования на каждом шаге почти постоянной при росте документа. Предыдущая модель, Unlimited-OCR, вышла в июне 2026 года и развивала подход DeepSeek-OCR.

Что умеет модель и на чём работает

На вход модель получает упорядоченные изображения страниц, на выходе — структурированный текст: собственно текст, таблицы, формулы, иллюстрации, заголовки и порядок чтения. Максимальная длина позиции — 131 072 токена.

Запускается всё на одной CUDA-карте в BF16; Baidu тестировала на NVIDIA A800-80GB. Веса в BF16 занимают около 6,7 ГБ.

Архитектура сохраняет раскладку в стиле DeepSeek-OCR: энкодер SAM ViT-B плюс CLIP-L подаёт данные в 12-слойный декодер типа mixture-of-experts. Каждый токен маршрутизируется к 6 из 64 экспертов плюс 2 общим экспертам. В статье DeepSeek-OCR этот декодер описан как DeepSeek3B-MoE-A570M. Сколько параметров активно в версии 2, Baidu не указывает. В многстраничном режиме каждая страница стоит 273 токена изображения.

SR-SWA: фиксированный набор рабочих ссылок вместо растущего KV-кэша

Полное внимание растёт квадратично от длины последовательности, а при декодировании каждый новый токен просматривает всё более длинный KV-кэш. При 273 токенах на страницу сто страниц дают 27 300 входных токенов ещё до начала вывода.

SR-SWA расшифровывается как Sparse Reference Sliding Window Attention. Схема сжимает тексто-визуальное внимание в фиксированный набор рабочих ссылок. В карточке модели Baidu приводит размер 512 токенов как пример. Конфигурация сочетает локальное окно в 128 токенов с выбором top-16 по блокам в 32 токена — 16 блоков по 32 токена как раз укладываются в бюджет 512 токенов.

В результате задержка на шаг и потребление памяти остаются почти постоянными по мере роста документа. Baidu называет это разбором с «неограниченным горизонтом» в пределах конечного контекстного окна. При этом кодирование изображений и общее время работы всё равно растут с числом страниц.

Результаты: 77,1 на MarathonDocBench

Baidu проверяла модель на двух наборах: MPDocBench, где в документах десятки страниц, и MarathonDocBench — там сотни. MPDocBench-Parse — публичный бенчмарк из 433 документов и 3 246 страниц. Публичного релиза MarathonDocBench найти не удалось.

По таблице лидеров Baidu Unlimited OCR 2 набирает 84,6 на MPDocBench. Следом идут Qwen3.8-Max с 78,3 и Qwen-3.8-Flash-Next с 77,4. На MarathonDocBench результат 77,1, у Kimi-K3 — 33,7, у Gemini-3.8-Flash — 28,6.

Самое интересное — разрыв между бенчмарками. Qwen3.8-Max падает с 78,3 до 22,9 на документах в сотни страниц. Unlimited OCR 2 теряет 7,5 балла. Предыдущая Unlimited-OCR на MarathonDocBench набирает 0,0.

Разбивка по подметрикам (MPDocBench / MarathonDocBench):

  • текст: 94,8 / 89,6;
  • формулы: 89,4 / 87,9;
  • порядок чтения: 92,3 / 85,3;
  • таблицы: 87,8 / 74,8;
  • иерархия заголовков: 60,1 / 48,2.

На MPDocBench отрывы по отдельным метрикам небольшие: Qwen3.8-Max даёт 94,3 по тексту и 89,2 по формулам. Все цифры — самозаявленные Baidu и присутствуют только в виде картинки-графика.

Как запустить

В карточке модели указаны Transformers для быстрых проверок и SGLang для обслуживания. В Transformers метод infer обрабатывает одну страницу с динамической нарезкой на тайлы (режим gundam), а infer_multi разбирает все страницы документа за один запрос, сохраняя межстраничный контекст. Для загрузки нужен trust_remote_code=True — это выполняет Python-код из репозитория.

Для SGLang используется модифицированное колесо от Baidu, а не апстримный SGLang. В примере Baidu планирует по 10 страниц на окно и переиспользует KV-хвост предыдущего окна. Меньшие окна снижают пиковую память, но ослабляют межстраничное склеивание. Baidu предупреждает, что настройка bias по умолчанию может вызвать выделение 462 МиБ и привести к нехватке памяти.

Что это значит для практики

Модель под MIT с весом около 6,7 ГБ и запуском на одной карте — это готовый кандидат для локального конвейера разбора документов: сканов, договоров, отчётности. Для российского админа ценность в том, что распознавание не требует облака и передачи документов наружу, а значит, упрощает работу с чувствительными данными в рамках 152-ФЗ. Ограничение — самозаявленные метрики и слабая иерархия заголовков: на длинных документах это самый низкий подрезультат, 48,2, так что структуру оглавления лучше проверять вручную.

Похожие открытые проекты для локального инференса разбирались в материалах про стек распределённого инференса LLM для Kubernetes и маршрутизатор локального ИИ-инференса NVIDIA PAIR.

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

Кого касается эта новость?

Тех, кто строит локальные конвейеры разбора документов: сканов, договоров, отчётности, книг. Модель открыта под MIT, поэтому её можно ставить в свой контур без облака.

Сколько ресурсов нужно для запуска?

Одна CUDA-карта в BF16; Baidu тестировала на NVIDIA A800-80GB. Веса в BF16 занимают около 6,7 ГБ, максимальная длина позиции — 131 072 токена.

Чем SR-SWA отличается от обычного внимания?

Она сжимает тексто-визуальное внимание в фиксированный набор рабочих ссылок: локальное окно 128 токенов плюс выбор top-16 по блокам в 32 токена, всего 512 токенов. Задержка на шаг и память почти не растут с длиной документа.

Правда ли, что модель обрабатывает документ за один запрос?

Да, режим infer_multi разбирает все страницы документа за один запрос и сохраняет межстраничный контекст. Режим infer обрабатывает одну страницу с динамической нарезкой на тайлы.

Насколько можно доверять цифрам бенчмарков?

Все результаты самозаявленные Baidu и присутствуют только в виде картинки-графика. Публичного релиза MarathonDocBench найти не удалось, а MPDocBench-Parse — публичный набор из 433 документов и 3 246 страниц.

Где слабое место модели?

Иерархия заголовков: 60,1 на MPDocBench и 48,2 на MarathonDocBench — самый низкий подрезультат. Таблицы на длинных документах тоже проседают до 74,8.

Что нужно учесть при загрузке?

Для загрузки требуется trust_remote_code=True, то есть выполнение Python-кода из репозитория. Для SGLang нужен модифицированный wheel от Baidu, а не апстримный SGLang.

Какие подводные камни при обслуживании?

Baidu предупреждает, что настройка bias по умолчанию может вызвать выделение 462 МиБ и привести к нехватке памяти. Уменьшение окна снижает пиковую память, но ослабляет межстраничное склеивание.

Источник: marktechpost.com