Aivaro
  • Оглавление
  • Вопросы
  • Практика
  • Вики
  • Материалы сообщества
  • Тесты
  • Поиск
✈Telegram @ai_varo
RUEN中文
…
Оглавление/Вопросы/#920

Как работает LayoutLMv3? Почему он лучше, чем просто OCR + BERT, для понимания отсканированных документов?

Краткий тезис

LayoutLMv3 — мультимодальная модель от Microsoft (2022), которая объединяет текстовую, визуальную и пространственную (позиционную) информацию на уровне трансформерного энкодера. В отличие от пайплайна «OCR → BERT», где теряется структура документа (колонки, таблицы, относительное расположение), LayoutLMv3 учится одновременно на тексте, изображении и координатах токенов. Это позволяет модели понимать, что «Цена: 100 руб» — это не случайная строка, а значение, стоящее напротив метки «Цена» в конкретной ячейке.

2. Предобучение: MLM, MVM (masked visual modeling)

LayoutLMv3 использует двухцелевую предобученную задачу:

  • MLM (текст): Зашумляем 15% текстовых токенов, модель предсказывает их по контексту (текст + изображение + bbox).
  • Masked Visual Modeling (MVM)) (изображение): Зашумляем 15% визуальных патчей (маскируем их области на изображении), модель предсказывает «правильное» визуальное содержимое (не классификацию патча, а реконструкцию скрытых признаков через contrastive loss между замаскированным и исходным признаком). Это заставляет модель понимать не только текст, но и расположение и визуальное содержимое.

Дополнительно: В LayoutLMv3 нет задачи WPA (word-patch alignment) из v2, так как конкатенация последовательностей уже обеспечивает кросс-модальное обучение. MVM работает по‑своему: берутся скрытые представления замаскированного патча и сравниваются с «изображением» из CNN-бэкбона (ResNet-50) того же патча.

Таким образом, предобучение даёт модель, которая одновременно понимает текст, его позицию и визуальный контекст документа.


3. Зачем: понимает структуру (колонки, таблицы, заголовки)

Классический OCR → BERT (например, Tesseract + BERT) не учитывает взаимное расположение блоков. Например:

СценарийOCR + BERTLayoutLMv3
Двухколоночный текстСмешает колонки в одну строку по горизонталиРазличает колонки, так как bbox и визуальные патчи показывают разделение
Таблица (строка «Цена» слева, значение справа)Видит «Цена 1000» как один текст (если OCR сливает) или теряет связьПонимает, что «Цена» и «1000» находятся на одной линии, в близких ячейках
Заголовок с большим шрифтом, жирныйНе может определить важность (нет визуальной информации)Изображение патча с «крупным/жирным» текстом даёт сигнал внимания

Результат: LayoutLMv3 существенно лучше решает задачи DIA (document image analysis), такие как извлечение информации (IE) из счёт-фактур, понимание форм (DocVQA), анализ макета и классификация документов.


4. Сравнение с OCR → BERT

ХарактеристикаOCR → BERTLayoutLMv3
ТекстТолько текст (без позиции)Текст + 2D-координаты (bbox)
ИзображениеНе используетсяПолное изображение (+ патчи)
ПредобучениеТолько MLMMLM + MVM (реконструкция визуальных признаков)
Структура документаНе учитывается (строка — последовательность)Учитывает колонки, таблицы, вёрстку
АрхитектураДва отдельных компонента (OCR + BERT)Единый трансформер с кросс-модальным вниманием
КонтекстТолько слова слева/справа+ визуальный контекст (шрифт, цвет, фон)
СложностьПростая (быстрый OCR + дообучение BERT)Требовательна к памяти, но точность выше на 5–10% на бенчмарках (FUNSD, CORD, SROIE)

Почему «лучше»? OCR + BERT теряет пространственные отношения: «Цена: 100 руб» и «Цена: 200 руб» могут быть в разных частях документа, но модель увидит их как соседние токены. LayoutLMv3 использует bbox и изображение, поэтому различает, например:

  • «Итого к оплате: 1000 руб» (находится внизу счёта) и «Сумма строки: 500 руб» (в середине таблицы).
  • Заголовки (большой шрифт, жирный) vs обычный текст.

На наборе данных FUNSD (извлечение ключ-значение из форм) LayoutLMv3 достигает F1 ≈ 0.89–0.92, тогда как BERT + OCR — около 0.70–0.75.


Пет-проект для закрепления

Задача: Разработать простой сервис для извлечения полей из типового счёта-фактуры (дата, сумма, номер) с использованием LayoutLMv3 и сравнить с пайплайном Tesseract + BERT.

Инструменты:

  • Python, Hugging Face Transformers (модель microsoft/layoutlmv3-base)
  • Tesseract OCR (для baseline)
  • PyTorch или PaddleOCR (для быстрого получения bbox)
  • Hugging Face Datasets – например, funsd или самодельный датасет из 20 PDF-счёт-фактур.

Шаги:

  1. Подготовить датасет: оцифровать 10–20 скан-копий счётов (PDF). Для каждой вручную разметить поля: дата, сумма, номер документа.
  2. Baseline (OCR → BERT): Получить текст через Tesseract (с bbox, но не использовать для модели), сформировать последовательность токенов, подать в BERT (например, bert-base-uncased), дообучить на задачу токен-классификации.
  3. LayoutLMv3:
    • Для каждого документа получить OCR-боксы (можно через Tesseract или PaddleOCR) и само изображение документа.
    • Использовать LayoutLMv3, подавая на вход:
      {
        'input_ids': ..., 
        'bbox': [[x1,y1,x2,y2] для каждого токена],
        'image': изображение (224x224 или 1120x1120 в зависимости от модели)
      }
      
    • Дообучить (или сразу использовать предобученную для IE) на тех же размеченных полях.
  4. Сравнить точность (F1) на отложенной выборке из 5 документов.

Ожидаемый результат:

  • LayoutLMv3 покажет F1 ≈ 0.85–0.90 (даже без тонкого дообучения), а OCR + BERT — около 0.65–0.75.
  • Выяснится, что сложные случаи (например, дата в разных частях документа, перекрывающиеся строки) LayoutLMv3 различает, а baseline ошибается.

Связь с другими вопросами

ВопросТема
919Архитектура Transformer (основа для LayoutLMv3)

Навигация

  • Предыдущий: 919
  • Следующий: 921
  • Индекс: 00. Индекс разборов