3,583 papers
arXiv:2607.22723 82 22 июля 2026 г. FREE

Classification-Guided Prompting: сначала определи тип задачи, потом дай узкий промпт именно под неё

КЛЮЧЕВАЯ СУТЬ
Обнаружено: один промпт с правилами сразу для 16 типов документов работает хуже, чем 16 отдельных узких инструкций. Модель тратит внимание на правила, которые вообще не относятся к этому документу. Classification-Guided Prompting позволяет автоматически извлекать данные из вперемешку разных бумаг — счета, акты, накладные — без ручной сортировки и без одного раздутого промпта на все случаи. Сначала модель тихо определяет тип документа, потом получает только релевантный кусок правил — общие форматы плюс 2-4 примера именно под этот тип. Остальные 15 наборов правил просто не участвуют в игре.
Адаптировать под запрос

TL;DR

Метод разбивает извлечение данных на два шага: сначала модель определяет тип документа (например, "справка" или "договор"), потом получает узкий промпт именно под этот тип — только нужные поля и 2-4 примера, без инструкций для всех остальных типов. Вместо одного гигантского универсального промпта "на все случаи" — модель работает с чистым, сфокусированным набором правил.

Когда промпт содержит инструкции сразу для 16 разных типов документов, модель распыляет внимание между релевантными и нерелевантными частями. Она видит правила для типов, которые вообще не встретились в этом документе, и это мешает ей точно извлечь нужные поля — путаются форматы, теряются детали, растёт число ошибок. Авторы называют это "размытием внимания": чем больше в промпте лишнего, тем слабее сигнал по-настоящему нужной инструкции.

Метод решает это классификацией до извлечения: сначала пусть модель определит тип задачи из заданного списка, а потом соберите (или попросите модель собрать) промпт только из правил, относящихся именно к этому типу. Модель получает узкий, "заточенный" контекст вместо шведского стола инструкций.

🔬

Схема метода

ШАГ 1: Классификация типа документа/задачи → метка типа (например, "Счёт на оплату")
ШАГ 2: Сборка промпта под этот тип: общие правила формата + специфичные поля для этого типа + 2-4 примера → готовый промпт
ШАГ 3: Извлечение данных LVLM по собранному промпту и изображению → структурированный JSON

В оригинале шаги 1 и 2 выполняются отдельными системами (классификатор + шаблонизатор). В обычном чате это удобно объединить в один запрос, где модель сначала определяет тип "внутри себя", а потом применяет только релевантный блок правил.


🚀

Пример применения

Задача: Предприниматель получает от контрагентов вперемешку разные документы — акты, счета, УПД, накладные — и хочет через ChatGPT/Claude с загрузкой фото автоматически вытаскивать из них ключевые данные в таблицу, без ручного заполнения.

Промпт:

Ты — специалист по обработке документов.

ШАГ 1 — Определи тип документа на фото из списка:
- Счёт на оплату
- Акт выполненных работ
- УПД
- Товарная накладная
Не пиши объяснение, просто определи тип и переходи к шагу 2.

ШАГ 2 — Извлеки данные по правилам ниже.

Общие правила для всех типов:
- Вывод только в формате чистого JSON, без комментариев
- Даты — в формате "год-месяц-день"
- Если поле не найдено или нечитаемо — пиши "не определено"
- Извлекай ТОЛЬКО поля, указанные для того типа, что определён на шаге 1

Правила по типам (используй только те, что соответствуют определённому типу):

Тип "Счёт на оплату": извлеки поля — номер счёта, дата, поставщик, сумма, НДС
Пример вывода: {"номер": "145", "дата": "2024-03-11", "поставщик": "ООО Ромашка", "сумма": "45000", "ндс": "7500"}

Тип "Акт выполненных работ": извлеки поля — номер акта, дата, исполнитель, заказчик, перечень работ, сумма
Пример вывода: {"номер": "22", "дата": "2024-02-01", "исполнитель": "ИП Иванов", "заказчик": "ООО Ромашка", "работы": "монтаж оборудования", "сумма": "80000"}

[добавь аналогично для УПД и Товарной накладной]

Документ для анализа: [прикрепи фото]

Результат: Модель сначала внутри ответа (или скрыто, если попросить не показывать) определит тип документа, затем выдаст чистый JSON только с полями, релевантными этому типу — без попыток впихнуть в ответ поля из других категорий документов.


🧠

Почему это работает

Когда в промпте перемешаны правила сразу для нескольких типов задач, модель распределяет внимание по всему тексту инструкции — включая части, которые вообще не относятся к текущему документу. Это ослабляет "сигнал" от действительно нужных правил.

LLM хорошо выполняет узкие, конкретные инструкции с явными примерами — это её сильная сторона: чем чётче и короче задача, тем точнее исполнение.

Классификация "сужает" задачу до одного конкретного случая до того, как модель начинает извлекать данные. В промпт попадает только релевантная часть инструкции — модель не тратит "внимание" на лишнее.

Рычаги управления: - Список типов на шаге 1 → расширяй под свои задачи (не только документы — можно применять к типам писем, обращений клиентов, форматов отчётов) - Число примеров (2-4) → больше примеров повышает точность, но увеличивает длину промпта - Правило "не определено" → замени на своё поведение с отсутствующими полями (например, "оставь пустым" или "пометь как требующее проверки")


⚠️

Ограничения

⚠️ Зависимость от первого шага: если модель неправильно определила тип документа на шаге 1, весь дальнейший промпт будет "не тот" — извлечение пойдёт по неверным правилам. Метод выигрывает только когда классификация точная.

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

⚠️ Плохое качество фото: метод без дообучения (то, что применимо в обычном чате) заметно слабее справляется с печатями, водяными знаками и низким контрастом, чем версия с дополнительным обучением модели — а это уже требует кода и GPU, недоступно в чате.


🔍

Как исследовали

Исследователи собрали настоящий боевой датасет с портала электронных торгов — почти 100 тысяч фотографий документов 16 типов (лицензии, дипломы, сертификаты соцстраха и другие), с реальными помехами: печати, водяные знаки, искажения от съёмки. Сравнили метод с сильным baseline — отдельно обученным пайплайном OCR + извлечение сущностей, который тренировали специально под каждый тип документа.

Результат удивил: метод без всякого дообучения (просто классификация + узкий промпт на обычной модели Qwen2.5-VL-7B) обошёл специально обученный baseline почти на 18 процентных пунктов точности. Логика простая — обученный пайплайн заточен под каждый тип отдельно, но страдает от переноса между типами и накопления ошибок в цепочке OCR → извлечение. А классификация + узкий промпт даёт модели меньше шума при том же объёме информации.

Дополнительное дообучение самой модели поднимало результат ещё выше и особенно помогало с печатями и низким качеством фото — но это уже требует серьёзной инфраструктуры (8 GPU, несколько дней обучения) и находится за пределами того, что применимо в обычном чате.


📋 Дайджест исследования

Ключевая суть

Обнаружено: один промпт с правилами сразу для 16 типов документов работает хуже, чем 16 отдельных узких инструкций. Модель тратит внимание на правила, которые вообще не относятся к этому документу. Classification-Guided Prompting позволяет автоматически извлекать данные из вперемешку разных бумаг — счета, акты, накладные — без ручной сортировки и без одного раздутого промпта на все случаи. Сначала модель тихо определяет тип документа, потом получает только релевантный кусок правил — общие форматы плюс 2-4 примера именно под этот тип. Остальные 15 наборов правил просто не участвуют в игре.

Принцип работы

Правило простое: классификация до извлечения, а не вперемешку с ним. Это как в поликлинике — регистратура сначала определяет к какому врачу ты идёшь, а не выдаёт сразу все справочники по всем специализациям сразу. Один тип документа — один узкий промпт, без микса правил из других категорий. Модель работает с чистым куском инструкции, а не роется в шведском столе из 16 разделов.

Почему работает

Причина в том, как модель распределяет внимание по тексту инструкции. Если в промпте 16 наборов правил, часть внимания уходит даже на те куски, что не нужны для этого документа. Узкая задача с 2-4 примерами — это то, что LLM делает лучше всего, а не разбор огромного свода правил. Классификация отсекает лишнее до старта извлечения — сигнал от нужного правила становится сильнее, потому что рядом больше нет шума от других типов.

Когда применять

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

Мини-рецепт

1. Составь список типов: перечисли все категории документов, которые у тебя встречаются — счёт, акт, УПД, накладная и так далее.
2. Опиши правила по каждому типу: для каждой категории — свои поля и 2-4 примера в формате JSON.
3. Собери двухшаговый промпт: сначала просишь модель определить тип из списка, потом даёшь словарь правил с пометкой «используй только те, что соответствуют определённому типу».
4. Настрой поведение для пропущенных полей: замени стандартное «не определено» на своё правило — например, «оставь пустым» или «пометь как требующее проверки».

Примеры

[ПЛОХО] : Извлеки из документа номер, дату, сумму, поставщика, исполнителя, перечень работ, НДС, серию, грузоотправителя и другие поля (один промпт с полями сразу от всех типов документов вперемешку)
[ХОРОШО] : Шаг 1 — определи тип документа из списка: Счёт на оплату / Акт выполненных работ / УПД / Товарная накладная. Не объясняй, просто определи тип и переходи к шагу 2. Шаг 2 — извлеки только поля, указанные для этого конкретного типа: [список полей и пример JSON для каждого типа]
Источник: Visual Information Extraction from Documents via Classification-Guided Large Vision-Language Models
ArXiv ID: 2607.22723 | Сгенерировано: 2026-07-28 04:34

Проблемы LLM

ПроблемаСутьКак обойти
Модель путается, когда промпт содержит правила для многих типов задач сразуДаёшь модели один большой промпт с правилами для 10-16 разных типов документов или задач. Модель видит инструкции, которые не относятся к текущему случаю. Внимание распыляется между нужными и лишними правилами. Растёт число ошибок, путаются форматы, теряются деталиРазбей на два шага. Сначала пусть модель определит тип документа из списка. Потом дай узкий блок правил только для этого типа — без остальных 15

Методы

МетодСуть
Классификация перед извлечением — сначала тип, потом узкий промптСделай два шага в одном запросе. Шаг 1: модель определяет тип документа/задачи из закрытого списка (например, "счёт", "акт", "накладная"). Шаг 2: применяет только те правила и поля, что относятся к этому типу, плюс 2-4 примера именно для него. ШАГ 1 — определи тип из списка... ШАГ 2 — извлеки поля только для этого типа. Почему работает: узкая инструкция без лишних правил даёт модели чёткий, несмешанный сигнал — она не тратит внимание на нерелевантные части. Работает: есть закрытый список категорий с понятными полями для каждой (документы, типы обращений, форматы писем). Не работает: задачи без чёткой категоризации, разовые непредсказуемые случаи — там классификация не сузит промпт, а добавит лишний шаг с риском ошибки
📖 Простыми словами

Visual Information Extraction from Documents via Classification-GuidedLargeVision-LanguageModels

arXiv: 2607.22723

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

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

Решение из исследования — метод Classification-Guided Extraction. Суть проста: сначала модель работает как сортировщик писем и просто определяет тип документа. Как только она поняла, что перед ней, например, счет-фактура, ей подсовывают максимально короткий и злой промпт именно под этот тип. Никакой воды, только нужные поля и 2-4 конкретных примера. Модель не отвлекается на правила для актов или накладных, поэтому бьет точно в цель.

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

Короче, хватит кормить AI гигантскими инструкциями «на все случаи жизни» — это путь к ошибкам и тормозам. Раздели задачу на два этапа: сначала пойми, что перед тобой, а потом дай четкую команду без лишнего шума. Двухэтапная архитектура превращает нейронку из растерянного новичка в профи, который знает, куда смотреть. Кто перейдет на такую схему, получит чистые данные без ручного допиливания, остальные продолжат гадать, почему их умный ассистент опять перепутал дату с номером телефона.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с