End-to-End модели OCR
Введение
Мы продолжаем наш цикл статей по OCR и сегодня знакомимся с End-to-End решениями — решениями задачи детекции, распознавания и извлечения ключевой информации всего лишь одной моделью.
End-to-End модели OCR
Введение Мы продолжаем наш цикл статей по OCR и сегодня знакомимся с End-to-End решениями — решениями задачи детекции, распознавания и извлечения ключевой информации всего лишь одной моделью. Традиционный OCR — подход с несколькими моделями. Он подразумевает использование минимум двух моделей для детекции текста и его распознавания. Извлечение ключевой информации необязательно или может быть реализовано с […]
- 8
- 928
Differentiable Binarization (DB): text detection
Пререквизиты Данная статья является частью цикла статей об OCR и продолжает тему детекции текста, затронутую в посте про CRAFT. Рекомендуем ознакомиться с ним перед прочтением статьи. Все статьи из цикла про OCR: Введение К 2019 году в домене детекции текста появился тренд на использование сегментационных моделей, которые могли бы более точно идентифицировать текстовые области, а […]
- 1
- 107
Детекторы текста на основе трансформеров. Часть 2
Пререквизиты Данная статья является частью цикла статей об OCR и продолжает тему детекции текста с помощью трансформеров, затронутую в этом посте. Рекомендуем ознакомиться с ним перед прочтением статьи. Все статьи из цикла про OCR: Введение Есть две основные концепции архитектуры детекторов текста — на базе сегментации или на базе регрессии. Первые модели устойчивы к сложным […]
- 1
- 113
CRAFT: метод детекции текста на изображениях
Пререквизиты Эта статья продолжает вводную статью про OCR и дополняет статью про детекторы текста на трансформерах. Рекомендуем сначала ознакомиться с вводной статьёй, затем прочитать эту, а третьей — статью о детекторах текста на трансформерах (если вдруг вы ещё не знакомились с ней 🙂). Введение После появления нейросетевых детекторов ресёрчеры пытались адаптировать их для детекции текста. […]
- 1
- 132
Детекторы текста на основе трансформеров
Введение Сегодня мы поговорим о задаче детекции текста в рамках трансформерных моделей. Во время активного использования трансформеров в компьютерном зрении разработчики не смогли пройти мимо и не попробовать применить их для задачи локализации текста. Возможно, читатель, интересующийся трендами в OCR, спросит: «А есть ли смысл в 2024 году рассматривать детекцию в отрыве от распознавания, особенно […]
- 0
- 218
Введение в OCR. Часть 1
Введение 📌 OCR (Optical Character Recognition) — задача распознавания текста на изображении. OCR — одна из первых задач компьютерного зрения, критически важная во многих технологических и бизнес-процессах: от анализа сканов документов до автономного вождения. С помощью классических методов Computer Vision её научились решать уже довольно давно. Но сегодня мы поговорим главным образом о современных подходах, […]
- 4
- 1889
Традиционный OCR — подход с несколькими моделями. Он подразумевает использование минимум двух моделей для детекции текста и его распознавания. Извлечение ключевой информации необязательно или может быть реализовано с помощью эвристик, в самом сложном случае для этого используется отдельная модель. Здесь могут быть как графовые сети, так и трансформеры — LayoutLM.
Таким образом, для решения задачи, связанной с OCR, необходимо от двух до трёх моделей при традиционном подходе.
Рисунок 1. Архитектура LayoutLM
Допустим, мы извлекаем полезную информацию из документа и в качестве модели используем трансформер LayoutLM (см. рисунок 1).
LayoutLM — трансформерный энкодер (Bert), который решает конкретную даунстрим-задачу, например, классификацию именованных сущностей или документов, извлечение ключевой информации и др. Следовательно, здесь могут возникнуть следующие проблемы:
- решение только одной конкретной задачи;
- отдельный OCR-движок, который может вносить свои ошибки, а значит, влиять на результат.
Эти проблемы можно решить, если применить одну модель как для OCR-части задачи, связанной с детекцией и распознаванием, так и для извлечения ключевой информации. На помощь приходит полноценный трансформер со своей энкодер-декодерной структурой. Энкодер может отвечать за кодирование визуальной информации, а декодер — за генерацию ответа в текстовой форме. То есть использование мультимодального трансформера позволяет решать задачу извлечения полезной информации из документа End-to-End без привлечения дополнительных моделей.
Рисунок 2. Сравнение двухстадийного подхода (OCR-движок + LayoutLM) и End-to-End модели (Donut)
На рисунке 2 приведено сравнение End-to-End модели с LayoutLM и OCR-движком из статьи про Donut, которую мы будем разбирать ниже. Donut на приведенном бенчмарке (b) имеет преимущество как по точности, так и по времени, а ещё — по потребляемым ресурсам за счёт отсутствия OCR-части. Она, в свою очередь, также может вносить как задержки по времени, так и собственные ошибки.
Современный читатель здесь может резонно возразить: зачем в 2025 году иметь какую-то специальную модель для OCR, когда современные Visual Language Model (VLM) отлично с этим справляются? Конечно, отчасти он будет прав: сегодня такие модели теряют актуальность из-за появления множества открытых качественных моделей (как Qwen2.5-VL), которые в том числе можно применять и для задач OCR. Но часто их размер избыточен для решения простых задач OCR, а универсальные инструктивные версии не всегда хорошо справляются с конкретной задачей, когда необходимо распарсить сложную структуру документа. Всё это, а также важность понимания основ, мотивирует нас на небольшой обзор End-to-End моделей для решения OCR-задач 🙂
В нашем обзоре мы рассмотрим модели 2022 года, то есть задолго до появления у ChatGPT функции мультимодальности, но уже во время популярности трансформерной архитектуры. В этом году уже была известна статья про Vision Transformer (ViT), а значит, у исследователей на руках были все инструменты для построения End-to-End модели и мотивация стать первыми в этом направлении.
Dessurt
В июне 2022 года выходит статья End-to-end Document Recognition and Understanding with Dessurt, где предлагается End-to-End модель для решения различных задач Document Understanding:
- вопрос-ответ;
- понимание и распознавание структурированных документов;
- распознавание рукописного текста;
- распознавание именованных сущностей;
- классификация документов.
Архитектура модели приведена на рисунке 3. На входе картинка и промпт с таском, на выходе — текст в авторегрессионном режиме.
Рисунок 3. Архитектура Dessurt
Концептуально Dessurt состоит из трёх потоков токенов: визуальные токены, токены промта и токены ответов (авторегрессионный декодер). Все три потока общаются между собой через кросс-внимание (cross-attention). Поток визуальных токенов кодируется с помощью слоёв Swin-трансформера, а токены промта — с помощью стандартных трансформерных слоёв внимания (self-attention).
Особенность архитектуры — визуальный свёрточный декодер на выходе Swin. Он генерит маску документа, которая подаётся на вход сети как дополнительный канал. Она используется на этапе предобучения: с помощью неё от сети скрывают часть слов и заставляют прогнозировать скрытое под маской.
Dessurt предобучали на документах с частично скрытыми словами под маской, на синтетике, основанной на статьях из Wiki, на рукописной синтетике и на синтетических структурированных документах, сгенерированных с помощью LLM.
Ещё одна интересная особенность обучения модели Dessurt — её дистиллировали с предобученного полного трансформера BART. Это было необходимо, поскольку архитектура Dessurt уникальна, и нельзя было просто взять предобученные веса. Поэтому авторы решили использовать классическую дистилляцию, при этом текст, который подавался на вход учителя BART, рендерили и подавали уже в виде изображения на вход Dessurt. Выходные эмбеддинги учителя BART и ученика Dessurt сводились с помощью стандартной дистилляционной лосс-функции.
Donut
Следующий подход был предложен в статье OCR-free Document Understanding Transformer от лаборатории Clova AI в октябре 2022 года.
Здесь авторы решили не экспериментировать с архитектурами и взяли за основу полноценный трансформер с визуальным энкодером и текстовым декодером. В качестве энкодера использовали Swin-трансформер (на тот момент Swin-энкодер показывал лучшие результаты в бенчмарках среди картиночных трансформеров), а в качестве авторегрессионного декодера — BART.
Входное изображение с помощью визуального энкодера Swin превращалось в последовательность токенов, которые подаются на вход текстового декодера BART. А в качестве стартовых токенов для генерации на вход декодера подавались либо специальные токены, соответствующие конкретным таскам (классификация, парсинг), либо промт с вопросом. На выходе декодера формировалась последовательность из специальных токенов и распознанного текста в формате XML.
Модель обучалась в два этапа. На этапе предобучения ее учили читать текст на изображении без попыток извлечения какой-либо структурной информации. В качестве датасета использовался IIT-CDIP — 11 миллионов сканов документов на английском языке, которые предварительно были распознаны с помощью коммерческой программы CLOVA OCR API. Но поскольку реальный датасет ограничивался английским языком, для обучения модели читать на других языках использовался синтетический датасет. Он был сгенерирован на базе статей из Википедии с помощью ещё одного фреймворка от CLOVA — SynthDOG.
Второй этап обучения (fine-tining) — дообучение модели на конкретные даунстрим-задачи для понимания документов: их классификация, извлечение ключевой информации, ответы на вопросы. На этом этапе в словарь токенайзера добавлялись токены, специфичные для конкретного таска, для удобной конвертации выходной последовательности в json-формат.
Рисунок 5. Влияние стратегии обучения, визуального энкодера (бэкбона) и входного разрешения на качество двух бенчмарков — CORD и DocVQA
Эксперименты с претрейном показывают, что для OCR важен выбор стратегии предобучения. Например, предобучение в стиле CLIP, когда для каждой картинки модель старается предсказать кэпшен, не является эффективным для извлечения ключевой информации или ответов на вопросы по документам.
Как видно из рисунка 5 (а), наиболее эффективная стратегия — обучение модели простому последовательному чтению документа. При этом чтение реального документа более эффективно, чем чтение синтетики от SynthDog. Важно отметить: синтетические документы от SynthDog не особо похожи на реальные документы и почти не имеют структуры. Поэтому если вы хотите обучить Donut под свой какой-то конкретный вид документов — имеет смысл генерировать для этапа предобучения свою синтетику, похожую на ваши целевые документы.
OmniParser
Теперь давайте рассмотрим более современное OCR-решение от Alibaba — OMNIPARSER: A Unified Framework for Text Spotting, Key Information Extraction and Table Recognition.
Описанные выше модели для своего времени неплохо справлялись с задачами понимания документов, но всё же они не могли решать (или решали недостаточно хорошо) ряд специфичных для OCR задач, связанных с анализом структурированных документов — распознавание таблиц и локализация текста (text spotting). Иногда важно не только извлекать информацию из ключевых полей, но и точно локализовать её, то есть находить координаты баундинг-боксов вокруг распознанных слов. Если в классическом OCR этот этап присутствовал обязательно и за него отвечал специально обученный детектор, то у End-to-End модели он «скрыт», и мы не можем в явном виде получить координаты слов.
Рисунок 6. Архитектура OmniParser
OmniParser решает три основные задачи парсинга документов:
- локализация и распознавание текста (text spotting);
- распознавание структуры и содержания таблиц;
- извлечение ключевой информации.
При этом он решает их одновременно — потому модель уникальна. Архитектура OmniParser включает в себя энкодер изображения и двухстадийный декодер.
Энкодер — Swin-трансформер, предобученный на ImageNet 22k, и FPN для извлечения признаков разных масштабов, что является критичным, так как изображения документов часто содержат мелкий текст.
Декодер, как уже упоминалось выше, двухстадийный. На первом этапе с помощью Structured Points Decoder формируются токены ключевых точек для трёх решаемых задач: распознавание текста, распознавание таблиц и извлечение ключевой информации. То есть декодер генерирует координаты центров боксов вокруг слов и их класс (с помощью специальных токенов), представляющих собой целевую извлекаемую информацию из документов.
На втором этапе декодирования формируются полигоны вокруг слов (более точная локализация) и содержание внутри этих полигонов. За формирование полигонов отвечает Region Decoder, а за распознавание — Content Decoder. Все три декодера одинаковы по архитектуре, но с независимыми параметрами.
Давайте рассмотрим стратегии предобучения модели — один из ключевых факторов для успешной работы модели.
В этом пункте мы поговорим о стратегиях обучения для Structured Points Decoder, которые используются для обучения модели понимать структуру текста и семантику отдельных сущностей внутри структурированного документа.
Spatial-Window Prompting — вид промптинга, при котором модели на каждой итерации обучения показывается только определённый фрагмент изображения. Из него ей необходимо прочитать информацию. Такой подход позволяет прочитать весь текст на изображении, не ограничиваясь размером выходной последовательности декодера. Spatial-Window Prompting может осуществляться на основе равномерной сетки, накладываемой на изображение, либо на основе случайно выбранного окна фиксированного размера.
Prefix-Window Prompting — промптинг для семплирования конкретных слов внутри выбранного окна с помощью Spatial-Window Prompting. Этот механизм позволяет с помощью окна заданного размера ограничивать набор символов из словаря, на которые могут начинаться целевые слова и только их координаты необходимо предсказывать.
Таким образом, приведённые выше стратегии учат модель воспринимать как пространственную информацию, так и семантические связи для более точного распознавания сложной тестовой структуры и извлечения ключевой информации.
На этапе файнтюна дообучались уже все декодеры под конкретные задачи — распознавание текста, таблиц и извлечение ключевой информации.
Сравнение моделей
Итак, теперь давайте сравним рассмотренные выше модели на различных бенчмарках. Как уже упоминалось выше, Donut и Dessurt не имеют возможности локализовать текст, поэтому мы сравним модели только на бенчмарках для извлечения ключевой информации и распознавания таблиц.
Рисунок 8. Бенчмарки CORD и SROE для оценки точности извлечения ключевой информации
На рисунке 8 приведены бенчмарки CORD и SROIE — сканы различных чеков. Метрика F1 скорит точность предсказания по ключевым полям, а Accuracy — относительное значение Tree Edit Distance. Мы видим, что результаты OmniParser сопоставимы с Donut, и если речь идёт только о задаче извлечения ключевой информации без извлечения структуры текста, то преимущество OmniParser неочевидно.
В то же время, как видно из сравнения моделей на табличном бенчмарке PubTabNe, OmniParser существенно обгоняет Donut по точности. То есть в задачах, где для точности важно извлечение структуры документа OmniParser, он имеет явное преимущество.
Рисунок 9. Бенчмарк PubTabNet для оценки точности распознавания таблиц
Заключение
Мы рассмотрели несколько End-to-End подходов для решения задач, связанных с OCR. Конечно, их гораздо больше, но сегодня мы получили общее представление о подходах к решению данной задачи 🙂
Если вы решили попробовать что-то кроме традиционного OCR для решения задач, связанных с пониманием документов, то знакомство с Donut позволит вам довольно быстро построить неплохой бейзлайн. Donut не требует многих ресурсов (по сравнению с современными LLM), а главное — имеет множество вариантов предобученных весов на разные языки и готовые пайплайны. А ещё предлагает удобный инструмент для генерации собственной синтетики, которую можно использовать для дообучения более сложных моделей.
Но если вам важно локализовывать объекты на документе, а не просто распознавать, то есть решать задачу text spotting, или же вы хотите попробовать решить задачи распознавания и извлечения сложно структурированной информации из документа одновременно с помощью одной модели — возможно, OmniParser будет для вас хорошей альтернативой 😎