Когда инженеры NVIDIA проверили первую версию Nemotron OCR на нелатинских языках, результаты оказались неприемлемыми: показатель NED (Normalized Edit Distance, нормализованное редакционное расстояние) для корейского составил 0,923, для японского — 0,723, для китайского упрощённого — 0,784. Это означает, что распознанный текст почти не совпадал с оригиналом. Расширение набора символов с 855 до 14 244 дало лишь незначительный прирост: модель теоретически могла выводить нужные символы, но никогда не видела их в обучающих данных. Узким местом оказались данные, а не архитектура.

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

LanguageNemotron OCR v1 NED
Japanese0.723
Korean0.923
Russian0.564
Chinese (Simplified)0.784
Chinese (Traditional)0.700

Для исходных текстов использовался корпус mOSCAR — многоязычная веб-выборка, охватывающая 163 языковых подмножества, включая латиницу, CJK-скрипты, кириллицу, арабское письмо, деванагари и тайский. Это обеспечивает реалистичное распределение словарного запаса и частотности символов — в отличие от словарных списков или машинно-сгенерированных текстов. Рендеринг построен на модифицированной версии SynthDoG (Synthetic Document Generator) из проекта Donut. Оригинальный инструмент давал только постраничные метки; в NVIDIA расширили его до трёхуровневой аннотации: слово, строка, абзац — каждый с ограничивающими прямоугольниками и четырёхточечными квадами. Дополнительно пайплайн генерирует граф порядка чтения — структуру, которую большинство публичных OCR-датасетов не содержит вовсе.

Для генерации текста использовался корпус mOSCAR, охватывающий 163 языковых подмножества и десятки систем письма.

Nemotron OCR v2 HuggingFace Space demo showing detected text regions and extracted text
Nemotron OCR v2 HuggingFace Space demo showing detected text regions and extracted text · Источник: Hugging Face Blog

Граф порядка чтения критичен для документов с нестандартной структурой: многоколоночные макеты, таблицы, вертикальный текст в японском и китайском. Без него модель, обученная на простом принципе «сверху вниз, слева направо», будет перемешивать колонки и строки таблиц. Пайплайн поддерживает несколько шаблонов макетов: многоколоночный текст, разрозненные слова в стиле сцен, вертикальные колонки, таблицы с заголовками, страницы содержания с отточием, слайды в стиле PowerPoint и документы в стиле Word. При каждой генерации шаблон выбирается случайно.

Архитектура модели основана на принципе FOTS (Fast Oriented Text Spotting): детекция и распознавание объединены в единую сеть с общим свёрточным бэкбоном RegNetX-8GF. Изображение проходит через дорогостоящий свёрточный проход ровно один раз, а полученные карты признаков переиспользуются детектором, распознавателем и реляционной моделью. Распознаватель получает выровненные фрагменты из обнаруженных регионов и декодирует их небольшим Transformer-ом. Реляционная модель рассуждает о взаимосвязях между регионами с помощью компактного Transformer-энкодера. Именно это переиспользование признаков обеспечивает скорость 34,7 страницы в секунду на одном GPU A100.

Итоговые показатели NED для нелатинских языков снизились до 0,035–0,069 — на порядок лучше, чем у первой версии. Датасет nvidia/OCR-Synthetic-Multilingual-v1 и модель nvidia/nemotron-ocr-v2 опубликованы в открытом доступе на Hugging Face. Пайплайн генерации данных достаточно универсален, чтобы распространить его на любой язык, для которого существуют шрифты и корпус текстов.