Sobes.tech
Назад к вопросам
Senior
8

Что такое DocVQA и какие модели там популярны?

Компании, где спрашивали
Автомакон
Sensemitter
НейроЛаб

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

DocVQA — это задача визуального вопрос-ответа по документам: нужно ответить на вопрос, опираясь не только на текст, но и на структуру, разметку и изображение документа. На практике это важный класс задач для чеков, форм, счетов, договоров и сканов. Обычно ожидают понимания, что здесь мало просто OCR: нужна связка зрения, языка и расположения элементов на странице.

Определение:

DocVQA (Document Visual Question Answering) — это задача, где системе подают документ в виде изображения или набора страниц и текстовый вопрос, а модель должна извлечь или сгенерировать ответ, используя содержимое документа. В отличие от обычного VQA, здесь критичны layout, порядок блоков, таблицы, поля форм и качество OCR. Часто решение строится как мультимодальная модель: изображение документа, распознанный текст и координаты токенов обрабатываются совместно.

Среди популярных подходов и моделей в DocVQA часто встречаются:

  • OCR-free модели, например Donut, которые учатся работать с документом напрямую как с изображением.
  • Layout-aware модели, например LayoutLM, LayoutLMv2/v3, которые используют текст и его пространственные координаты.
  • Подходы на базе vision-language моделей и encoder-decoder архитектур, адаптированные под документы.
  • Для практических систем также важны OCR-пайплайны и постобработка ответов, особенно если ответ должен быть точной строкой из документа.

Пример использования:

Например, в банковском приложении пользователь загружает счет, а затем задаёт вопрос: «Какой итоговый к оплате?» Система должна найти нужное значение в документе, учесть таблицу и форматирование, и вернуть точный ответ.

# Упрощённая схема DocVQA-пайплайна
document_image = load_image("invoice.png")
question = "Какой итоговый к оплате?"

ocr_result = run_ocr(document_image)  # текст + координаты
answer = docvqa_model.predict(
    image=document_image,
    text=ocr_result.text,
    boxes=ocr_result.boxes,
    question=question
)

print(answer)

Пояснение кода:

Код показывает типичный пайплайн DocVQA, где модель получает не только саму картинку, но и результат OCR. Сначала документ загружается как изображение. Затем OCR извлекает текст и координаты блоков, после чего мультимодальная модель объединяет вопрос, текст и layout и возвращает ответ.

Если используется OCR-free подход, этот шаг с OCR может отсутствовать: модель принимает изображение и вопрос напрямую. Но в реальных продуктивных системах OCR часто остаётся полезным для контроля качества, извлечения точных значений и объяснимости результата.

Ключевые моменты:

  • DocVQA решает задачу ответа на вопрос по документу, а не по обычной фотографии сцены.
  • Важны не только текст, но и пространственная структура: таблицы, поля, колонки, порядок чтения.
  • Популярны два класса решений: OCR-based layout-aware модели и OCR-free модели.
  • Среди известных семейств моделей часто упоминают LayoutLM-подобные архитектуры и Donut.
  • Для продакшена критичны качество OCR, обработка длинных документов и точность извлечения сущностей.
  • Часто задача сводится либо к извлечению span из документа, либо к генерации краткого ответа.