Как задать нейросети вопрос по PDF и не получить выдумку
Модель видит не сам файл, а то, что из него извлёк сервис: таблицы разваливаются, скан без распознавания пуст, длинный документ ищется по кускам. Проверка — цитата и номер страницы.
Короткий ответ: в любом чате с PDF модель читает не сам файл, а то, что из него извлёк сервис, — текст, а иногда ещё и снимки страниц. Это содержимое либо целиком кладётся в запрос, либо режется на фрагменты, и модель видит только найденные. Поэтому ответ по документу я сверяю по цитате и номеру страницы, а не по тону.
Извлечение — первое место, где теряется смысл. PDF хранит не абзацы и слова, а символы с координатами, и строки программа собирает заново. Сплошной текст она собирает прилично, таблицу — плохо: столбцы сливаются, и число из одной графы оказывается под заголовком соседней. Скан — это картинка: текста в нём нет, пока его не распознали через OCR. Часть сервисов — так работа с PDF описана в документации Claude и Gemini — показывает модели каждую страницу ещё и изображением, но это зависит от сервиса и способа подключения.
Второе место — что из извлечённого дошло до модели. Документ, который помещается в контекст, отдают целиком, и тогда рискует середина: длинный контекст читается неравномерно. Большой документ режут на куски и подбирают подходящие к вопросу — это уже RAG со всеми его звеньями, и нужная страница может не найтись.
Отсюда два типа промахов, снаружи одинаковых. Модель не видела нужную страницу — и достроила ответ из того, что было. Модель видела разваленную таблицу — и честно прочитала не ту ячейку. Во втором случае выдумки в привычном смысле нет: ошибка случилась до модели.
Рабочее правило. Я прошу к каждому утверждению дословную цитату и номер страницы, потом открываю страницу. Цитаты в документе нет — промах первого типа, ответ не принимаю. Цитата есть, а число расходится с таблицей на странице — второй тип, и переспрашивать бесполезно: таблицу надо дать в другом виде, выгрузкой в Excel или снимком страницы.
Номер страницы тоже ошибается. Напечатанный номер не всегда совпадает с номером листа в файле, а после извлечения границ страниц у модели может не остаться вовсе. Поэтому главное здесь — цитата: её находит обычный поиск в просмотрщике.
Кроме файлов без текстового слоя. В скане поиск по цитате ничего не найдёт, и страницу приходится читать глазами.