Как работает 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 + BERT | LayoutLMv3 |
|---|---|---|
| Двухколоночный текст | Смешает колонки в одну строку по горизонтали | Различает колонки, так как bbox и визуальные патчи показывают разделение |
| Таблица (строка «Цена» слева, значение справа) | Видит «Цена 1000» как один текст (если OCR сливает) или теряет связь | Понимает, что «Цена» и «1000» находятся на одной линии, в близких ячейках |
| Заголовок с большим шрифтом, жирный | Не может определить важность (нет визуальной информации) | Изображение патча с «крупным/жирным» текстом даёт сигнал внимания |
Результат: LayoutLMv3 существенно лучше решает задачи DIA (document image analysis), такие как извлечение информации (IE) из счёт-фактур, понимание форм (DocVQA), анализ макета и классификация документов.
4. Сравнение с OCR → BERT
| Характеристика | OCR → BERT | LayoutLMv3 |
|---|---|---|
| Текст | Только текст (без позиции) | Текст + 2D-координаты (bbox) |
| Изображение | Не используется | Полное изображение (+ патчи) |
| Предобучение | Только MLM | MLM + 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-счёт-фактур.
Шаги:
- Подготовить датасет: оцифровать 10–20 скан-копий счётов (PDF). Для каждой вручную разметить поля: дата, сумма, номер документа.
- Baseline (OCR → BERT): Получить текст через Tesseract (с bbox, но не использовать для модели), сформировать последовательность токенов, подать в BERT (например,
bert-base-uncased), дообучить на задачу токен-классификации. - LayoutLMv3:
- Для каждого документа получить OCR-боксы (можно через Tesseract или PaddleOCR) и само изображение документа.
- Использовать LayoutLMv3, подавая на вход:
{ 'input_ids': ..., 'bbox': [[x1,y1,x2,y2] для каждого токена], 'image': изображение (224x224 или 1120x1120 в зависимости от модели) } - Дообучить (или сразу использовать предобученную для IE) на тех же размеченных полях.
- Сравнить точность (F1) на отложенной выборке из 5 документов.
Ожидаемый результат:
- LayoutLMv3 покажет F1 ≈ 0.85–0.90 (даже без тонкого дообучения), а OCR + BERT — около 0.65–0.75.
- Выяснится, что сложные случаи (например, дата в разных частях документа, перекрывающиеся строки) LayoutLMv3 различает, а baseline ошибается.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 919 | Архитектура Transformer (основа для LayoutLMv3) |
Навигация
- Предыдущий: 919
- Следующий: 921
- Индекс: 00. Индекс разборов