Jina OCR v1: MoE-парсер документов на 3.4B параметров с ускорением FastMTP

Jina AI, входящая в состав Elastic, выпустила jina-ocr-v1 — сквозной визуальный парсер документов. Он принимает PDF, сканы, таблицы, графики и счета и за один проход возвращает чистый Markdown. Всего в модели 3.4B параметров, из которых около 570M параметров декодера активны на каждый токен. Голова спекулятивного декодирования поставляется прямо внутри чекпоинта. Модель рассчитана на работу на недорогих GPU, таких как NVIDIA L4.

В техническом отчёте указаны результаты 91.14 на OmniDocBench v1.6 и 83.4 на olmOCR-Bench.

Что внутри: DeepEncoder и MoE-декодер

Модель дообучает DeepSeek-OCR и сохраняет два его компонента эффективности. DeepEncoder содержит около 380M параметров и объединяет SAM, 16-кратный свёрточный компрессор и CLIP-L. Он превращает страницу 1024×1024 из 4096 патчей в 256 визуальных токенов. Режим динамического разрешения добавляет до 9 локальных тайлов по 100 токенов каждый. Так страница ограничивается 1 156 визуальными токенами.

Декодер — это DeepSeek-3B-MoE с 12 слоями, 64 маршрутизируемыми экспертами и 2 общими экспертами. Маршрутизация Top-6 активирует около 570M параметров на токен. Ограничение позиции — 32 768. Выход — Markdown, таблицы в HTML, формулы в LaTeX.

Как работает спекулятивное декодирование FastMTP

Вывод OCR почти детерминирован и локально структурирован, что делает его хорошим кандидатом для спекулятивного декодирования. Jina AI добавляет голову FastMTP: один плотный черновой блок, применяемый рекурсивно на K=3 шага. Параметры черновика остаются постоянными по мере роста глубины.

Затем декодер жадно проверяет черновики. Он принимает самый длинный префикс, совпадающий с его собственным выбором, и сам фиксирует ещё 1 токен. Если все 3 черновика совпали, этот дополнительный токен идёт бонусом. Зафиксированный текст всегда равен обычному жадному декодированию, поэтому ускорение не теряет качества. При K=3 модель фиксирует в среднем 2.73 токена за шаг.

Дообучение на плотных проверяемых наградах

Посттренировка объединяет выравнивание по инструкциям, дообучение на устойчивость к деградировавшим страницам и GRPO. Каждый член награды — детерминированный код, который оценивается против эталонной транскрипции. Члены покрывают содержимое, формулы, таблицы, структурную валидность, юнит-тесты, повторы и формат.

Члены перемножаются, и каждый оценивается, поэтому частично верные страницы получают частичный зачёт. Структурный член, член юнит-тестов и член формата имеют нижнюю границу 0.2, а член таблиц — 0.1. У члена повторов нижней границы нет, потому что циклы могут завышать оценку содержимого.

На естественных страницах награды за формулы и таблицы применяются к малому числу образцов. Поэтому Jina AI построила JinaOCRSynth — синтетические страницы, плотно заполненные и тем и другим, каждая с юнит-тестами в стиле olmOCR-Bench. Агент также объединяет чекпоинты-кандидаты в рамках фиксированного бюджета оценки. Черновая голова обучается последней, против замороженного финального верификатора.

Бенчмарки и пропускная способность

Модель Параметры из статьи OmniDocBench v1.6 olmOCR-Bench
jina-ocr-v1 3B/570M 91.14 83.4
DeepSeek-OCR 3B/570M не указано 76.0
DeepSeek-OCR-2 3B/570M 90.25 не указано
PaddleOCR-VL-1.6 0.9B 96.34 не указано
chandra-ocr-2 4B не указано 85.8
Qwen3-VL-235B 235B/22B 89.78 не указано

Для MoE-моделей параметры показывают общее и активное число декодера. Вся модель jina-ocr-v1 — около 3.4B.

По точности модель не лидирует. PaddleOCR-VL-1.6 и HunyuanOCR-1.5 (94.74) набирают больше на OmniDocBench. chandra-ocr-2 и dots.mocr (83.9) выше на olmOCR-Bench. Посттренировка добавляет 7.4 балла к базе DeepSeek-OCR на olmOCR-Bench.

Главный результат — пропускная способность. На одной A100 40 GB при параллелизме 32 модель jina-ocr-v1 разбирает 2.57 страницы в секунду. Это самый высокий показатель из 14 измеренных систем Jina AI против 1.22 у olmOCR-2 и 0.38 у chandra-ocr-2. Модель выдаёт 1 085 выходных токенов на страницу — самый короткий вывод среди систем с оценкой выше 83.

На NVIDIA L4 при размере батча 1 обычное декодирование растёт с 42.7 до 83.1 токена в секунду. Это ускорение в 1.95 раза при уровне принятия 57.6%. С графами CUDA базовая линия уже составляет 158.3 токена в секунду. Там лучше работает K=1 — 185.6 токена в секунду, прирост в 1.17 раза.

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

Самый быстрый путь — Jina Reader. Отправьте URL на r.jina.ai с заголовком X-Respond-With: jina-ocr-v1. Reader забирает страницу или PDF, запускает модель и возвращает Markdown. Заголовок X-Page транскрибирует 1 страницу длинного документа.

Jina AI также размещает эндпоинт, совместимый с OpenAI, по адресу api.jina.ai/v1/chat/completions. Для быстрых тестов доступно размещённое демо.

Для самостоятельного хостинга веса и кастомный код поставляются в 1 репозитории и загружаются с trust_remote_code=True. FastMTP требует vLLM 0.21 или новее и однократного вызова register(). Путь через Transformers запускает только MoE-декодер и игнорирует веса черновика.

Лицензия и ограничения

Модель доступна для исследований и некоммерческого использования. Открытые веса занимают около 6.8 ГБ в BF16 и работают на Transformers или vLLM. Лицензия CC BY-NC 4.0 означает, что для коммерческого использования нужно связаться с Jina AI.

Стоит помнить, что для российских компаний, которым нужна коммерческая эксплуатация OCR-конвейера, лицензия CC BY-NC 4.0 станет ограничением: придётся либо договариваться с вендором, либо искать модель с разрешительной лицензией. Для внутренних исследований и тестов на недорогой GPU вроде L4 модель подходит без дополнительных условий.

Если вы уже используете энкодер для извлечения данных без генерации токенов вроде GLiFormer от Knowledgator, jina-ocr-v1 решает смежную задачу — разбор визуальных документов в Markdown. А тем, кто разворачивает локальный инференс на нескольких типах железа, пригодится опыт маршрутизации локального ИИ-инференса между RTX, DGX Spark и Mac из проекта NVIDIA PAIR.

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

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

Тех, кто строит конвейеры обработки документов: PDF, сканы, счета, таблицы. Модель рассчитана на недорогие GPU вроде NVIDIA L4, поэтому интересна и небольшим командам без кластера A100.

Какие бенчмарки у jina-ocr-v1?

91.14 на OmniDocBench v1.6 и 83.4 на olmOCR-Bench. По точности она не первая: PaddleOCR-VL-1.6 и HunyuanOCR-1.5 выше на OmniDocBench, chandra-ocr-2 и dots.mocr — на olmOCR-Bench.

В чём главное преимущество модели?

В пропускной способности: 2.57 страницы в секунду на одной A100 40 GB при параллелизме 32 — лучший результат из 14 измеренных систем. Достигается за счёт спекулятивного декодирования FastMTP.

Теряется ли качество из-за ускорения?

Нет. Зафиксированный текст всегда равен обычному жадному декодированию, поэтому ускорение объявлено lossless. При K=3 модель фиксирует в среднем 2.73 токена за шаг.

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

Открытые веса занимают около 6.8 ГБ в BF16. Модель работает на Transformers или vLLM; для FastMTP нужен vLLM 0.21 или новее и однократный вызов register().

Можно ли использовать модель коммерчески?

Нет, лицензия CC BY-NC 4.0 разрешает только исследовательское и некоммерческое использование. Для коммерческого применения нужно связаться с Jina AI и получить отдельное разрешение.

Как попробовать без установки?

Отправьте URL на r.jina.ai с заголовком X-Respond-With: jina-ocr-v1 — Reader вернёт Markdown. Есть также размещённое демо и эндпоинт api.jina.ai/v1/chat/completions, совместимый с OpenAI.

Что такое FastMTP?

Это голова спекулятивного декодирования: один плотный черновой блок применяется рекурсивно на K=3 шага, а декодер жадно проверяет черновики и принимает самый длинный совпадающий префикс. Параметры черновика не растут с глубиной.

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