Прошлой осенью мы выложили в открытый доступ MWS AI Vision Bench — бенчмарк для оценки мультимодальных моделей на русскоязычных документах. За это время модели существенно выросли, а мы нашли несколько проблем в собственной разметке и добавили задачу, которой нам ранее не хватало.

Зимой мы уточнили формулировки части VQA-вопросов и допустимые ответы. Весной собрали датасет и набор заданий Anti-fraud, чтобы проверять модели по их способности выявлять поддельные и сгенерированные документы. Летом и в начале осени ещё раз прогнали свежие модели — последними добавили GPT-6.1 Sol, Claude Opus 5.5 и Qwen3.8 — и посмотрели, где метрики уже упираются в потолок.

С антифродом всё оказалось сложнее, чем мы думали в начале. Про это и хочется рассказать.

Откуда взялась задача

Во входящем потоке документов встречаются сканы, которые кто-то поправил в графическом редакторе. Меняют ФИО, дату, номер, сумму, подпись. Сейчас к ним добавились документы, целиком пересозданные генеративной моделью.

В профессиональных антифрод-системах для выявления таких видов мошенничества используют специальные модели, правила, проверку реквизитов и внешние источники. MWS AI Vision Bench их не заменяет. Нас интересовал более приземлённый вопрос: если разработчик строит обработку документов на одной универсальной мультимодальной LLM, заметит ли она хотя бы очевидную подделку и сможет ли объяснить, что именно её смутило.

Хотелось получить одно число от 0 до 1. Оно должно учитывать правильный класс и качество объяснения.

Что лежит в датасете

Мы собрали 430 изображений и разделили их на три класса:

  • original — 200 изображений, которые в эксперименте считаются исходными и неотредактированными;

  • edited — 130 ручных правок в графических редакторах типа Photoshop;

  • ai_gen — 100 документов, целиком пересозданных генеративной моделью по референсу.

У датасета Anti-fraud — отдельная research-only лицензия. Её условия сформулированы вместе с юридическим отделом MWS AI: датасет можно использовать для исследований и сравнения моделей, но нельзя применять для разработки инструментов подделки документов, обучения генераторов подделок или другой незаконной деятельности.

Модель получает изображение и возвращает JSON:

{
  "label": "edited",
  "arguments": "изменены ФИО и дата выдачи, шрифт и фон в этих полях отличаются"
}

Формулировка вопроса немного меняется от примера к примеру. Всего вариантов 30. Это нужно, чтобы результат меньше зависел от одной удачной фразы в промпте.

Как выглядит одно задание

Ниже одна пара из датасета. Первое изображение — исходное. Во втором после сканирования вручную заменили ФИО сотрудника. Остальная форма почти не изменилась.

Исходный документ; все данные в датасете вымышлены
Исходный документ; все данные в датасете вымышлены

Исходный документ (original). Все персональные данные в датасете вымышлены.

Тот же документ с вручную заменённым ФИО
Тот же документ с вручную заменённым ФИО

Ручная правка (edited). В разметке указаны ФИО в верхней части формы и расшифровка подписи.

А это уже не ручная правка отдельного поля, а документ, целиком пересозданный генеративной моделью:

Документ, целиком пересозданный генеративной моделью
Документ, целиком пересозданный генеративной моделью

Полностью синтетический документ (ai_gen).

К каждому изображению модель получает подробное описание трёх классов. Суть вопроса выглядит так:

Определи класс документа: original, edited или ai_gen.

Верни только JSON:
{"label": "<класс>", "arguments": "<подозрительные элементы>"}

В arguments перечисли конкретные подозрительные реквизиты:
ФИО, даты, номера или визуальные артефакты.
Для original — оставь arguments пустой строкой.

Как считается оценка

Сначала считаем recall для каждого из трёх классов и усредняем. Получается balanced accuracy: класс с парой сотен примеров не задавит класс с одной сотней.

Из balanced accuracy вычитаем одну треть — ожидаемый уровень случайного классификатора для трёх классов. Столько же получает модель, которая всегда отвечает одним классом. Оставшийся диапазон растягиваем от нуля до единицы.

Вторая половина оценки — объяснение для вручную отредактированных документов. Если модель правильно пишет, какое поле изменили, она получает дополнительный балл. Для полностью сгенерированных документов такого эталонного списка полей нет, поэтому explanation score для них сейчас не считается.

Формула в коде выглядит так:

AF = 0.75 × max(0, balanced_accuracy − 1/3)
     + 0.5 × reason_score_edited

У идеальной классификации первая часть даёт 0.5. Идеальное объяснение даёт ещё 0.5.

Антифрод ещё и технически устроен иначе, чем все остальные метрики MWS AI Vision Bench. Обычно evaluator выставляет оценку каждому примеру отдельно, после чего мы просто берём среднее. Здесь сначала нужно прогнать весь сплит и собрать confusion matrix по трём классам. Уже по ней считается balanced accuracy, к которой добавляется средняя оценка объяснений на edited. Поэтому окончательный AF нельзя получить как среднее одинаковых независимых оценок по отдельным примерам.

Половину итогового балла мы отдаём классификации, вторую половину — аргументации. Это наше решение о том, как устроить экспериментальную метрику.

Небольшой Anti-fraud leaderboard

Вот первые семь мест на validation. Таблица отсортирована по AF. Overall здесь старый: среднее пяти исходных категорий без anti-fraud.

Модель

Anti-fraud

Overall

Claude Opus 5.5

0.611

0.819

Claude Fable 5

0.521

0.799

GPT-6.1 Sol

0.487

0.822

GPT-5.5

0.477

0.778

GPT-5.6 Sol

0.467

0.790

GPT-5.4

0.432

0.683

GLM-5.3 Flash

0.420

0.709

Уже по этой таблице видно, что Anti-fraud не повторяет основной рейтинг. Здесь уверенно лидирует Claude Opus 5.5, а GPT-6.1 Sol (первый по Overall) только третий. Модели Google показывают себя хуже среднего: даже Gemini 3.8 Flash с лучшим VQA в лидерборде набирает 0.175.

Почему Anti-fraud не входит в Overall

У похожих зарубежных бенчмарков такой категории обычно нет. OCRBench v2 и его аналоги на других языках — например, ThaiOCRBench — проверяют OCR, восстановление структуры, grounding, извлечение полей и ответы на вопросы. Проверка происхождения документа в эту стандартную линейку не входит. Anti-fraud — наш отдельный эксперимент, который вырос из продуктовой задачи.

С настоящими паспортами, СНИЛС и водительскими удостоверениями есть понятная юридическая проблема. Большую коллекцию реальных документов нельзя взять и выложить в открытый доступ. Поэтому публичный набор неизбежно отличается от продуктового потока и местами подсказывает ответ. Например, если изображение очень похоже на настоящий чувствительный документ, в нашем наборе оно с большой вероятностью окажется синтетическим. Тот, кто захочет специально подстроиться под конкретную линейку, сможет это сделать.

Мы решили не оставлять этот эксперимент внутренним. По нему можно сравнить внешние модели для своей задачи, посмотреть их ответы и понять, умеют ли они замечать подменённые поля. При этом мы не предлагаем считать категорию вечной идеальной линейкой качества anti-fraud-систем и не призываем всех репортиться по ней.

Ранжирование действительно получается другим. Среди моделей, для которых есть оба замера, корреляция места по AF с основным Overall заметная, но далёкая от полной: около 0.64 на validation и 0.53 на test. В десятку лучших одновременно по Overall и anti-fraud попадают семь моделей на validation и шесть на test. Категория ловит отдельное свойство модели, а не просто ещё раз повторяет общий рейтинг.

Поэтому на публичном лидерборде Anti-fraud будет отдельной колонкой. Overall сохранит прежнее значение — среднее пяти исходных категорий. Так полезный эксперимент остаётся виден, а исторический рейтинг не меняет смысл задним числом.

Что мы поменяли в VQA

Зимой мы уточнили 395 из 400 VQA-заданий. В основном скорректировали формулировки вопросов и допустимые формы ответа. Состав датасета и картинки остались прежними.

Вот реальный пример. Было: «Уверенный пользователь каких программ?». Допустимый ответ — Word, Excel, LibreOffice. Из вопроса не было понятно, нужны ли только офисные программы, в каком порядке их перечислять и как оформлять ответ.

Стало: «Уверенный пользователь каких офисных программ? Перечисли программы через запятую в том порядке, в котором они перечислены в документе, больше ничего не пиши и никак не комментируй». Сам допустимый ответ не поменялся. В других заданиях мы так же уточнили падеж, порядок элементов, формат даты, единицы измерения или попросили закончить конкретное предложение.

Так стало меньше случайных совпадений и незаслуженных нулей. В части примеров поменялся сам вопрос, поэтому старые VQA и Overall нельзя напрямую сравнивать с результатами после апдейта.

Взгляд в будущее

По нашему лидерборду видно, что VQA на нормальном документе близок к насыщению. У многих свежих моделей результат выше 0.9. С обычным OCR и извлечением полей ситуация похожая.

Если вам нужно прочитать входящий документ приемлемого качества, достать несколько полей в JSON или ответить на простой вопрос по тексту, я бы уже внимательно смотрел на цену, задержку и лимиты API. Разница между моделями в проде может оказаться менее важной, чем стоимость миллиона таких документов.

Пример из последнего обновления: GPT-6 Luna набирает 0.770 — уровень флагманов полугодовой давности, — а прогон validation-сплита обошёлся меньше чем в доллар. GPT-6.1 Sol с результатом 0.822 стоил около 12 долларов, Claude Opus 5.5 с 0.819 — около 27, а Claude Fable 5.1, по моей прикидке, обошёлся бы в 70–100. Закрытый test примерно такого же размера, так что полный прогон бенчмарка стоит вдвое дороже.

Grounding пока живёт в другом мире. Это задача «покажи, где именно на изображении находится нужный текст». В 2025 году лучшие результаты были около 0.44–0.46, у большинства моделей — сильно ниже 0.2. В 2026 году лидеры впервые поднялись выше 0.6, а GPT-6.1 Sol — и выше 0.7 (0.711). Прогресс есть, до насыщения далеко.

Anti-fraud — второе сложное направление. Здесь пока спорны и сами данные, и то, что разумно требовать от универсальной LLM.

Третьего направления в MWS AI Vision Bench ещё нет. Это восстановление редактируемого вектора из картинки. Например, получить DWG из отсканированного инженерного чертежа. OCR тут мало: нужно восстановить геометрию, связи между объектами и структуру самого формата.

У любого бенчмарка есть ограниченный срок актуальности. Сначала его задания слишком сложны для моделей. Потом модели до них дорастают, результаты упираются в потолок, и таблица всё хуже помогает выбирать между ними. По VQA и части обычных OCR-задач MWS AI Vision Bench уже близок ко второй точке.

За время жизни validation-датасет на Hugging Face скачивали тысячи раз, а результаты использовали для сравнения моделей на русскоязычных документах. В момент, когда OCR-возможности LLM росли буквально по месяцам, у сообщества появилась общая линейка. Кажется, эту задачу бенчмарк выполнил. Поэтому вполне возможно, что это его последний большой апдейт.

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

Метрика не идеальна, и именно поэтому она не входит в Overall. Но если отдельная колонка Anti-fraud сэкономит кому-то несколько вечеров ручного прогона десятка моделей при выборе LLM для своего проекта, значит, этот апдейт тоже был не зря.

Комментарии (0)