РУКОВОДСТВО · ОБНОВЛЕНО 2026-11-01
Цитата ведёт не на ту страницу PDF: физический номер и печатная нумерация
Контракт метаданных, который не путает обложку, римские метки и порядковый номер листа.
В одном PDF могут существовать порядковый номер страницы файла, метка просмотрщика и номер, напечатанный на самом листе. Они не обязаны совпадать: обложка и предисловие сдвигают счёт. При извлечении сохраняйте физический индекс и доступные метки отдельно. Цитату связывайте с версией документа и исходным фрагментом, а не только с числом из ответа модели. Проверяйте реальный переход в используемом просмотрщике. Не исправляйте все ссылки постоянным смещением, если внутри документа нумерация начинается заново.
1. Определите поля метаданных
Для каждой страницы сохраняйте документ, его версию, физический индекс и отображаемую метку, если она доступна. Укажите, начинается ли индекс с нуля или единицы, и преобразуйте его только на границе интерфейса. pypdf описывает page_labels как отдельный список меток в порядке страниц. Это не чтение напечатанного колонтитула по изображению. Если номер на скане распознан OCR, сохраняйте его как отдельное наблюдение, которое может требовать проверки человеком.
2. Сохраните происхождение фрагмента
При разбиении текста связывайте каждый чанк с исходной страницей или диапазоном страниц. Если таблица продолжается на следующем листе, не назначайте всему фрагменту случайный первый номер. После удаления колонтитулов сохраняйте техническую связь с оригиналом. Не просите модель угадывать страницу по порядку присланных абзацев. Если материал получен из объединённого текста без метаданных, честно сообщите об отсутствии точного перехода вместо создания внешне убедительной, но непроверяемой ссылки.
3. Постройте и проверьте переход
Формируйте URL или команду открытия по контракту выбранного просмотрщика. Параметр страницы браузерного PDF и внутренний индекс библиотеки могут использовать разные правила. Для проверки возьмите обложку, предисловие с римскими метками и раздел с новой нумерацией. Убедитесь, что выбран правильный файл, а нужный фрагмент действительно виден. Число, написанное моделью в тексте, не должно самостоятельно управлять открытием другого документа или обходить проверку прав доступа к источнику.
4. Проверьте обновление и отображение
При замене PDF пересоздавайте привязку цитат к версии: вставка одной страницы может сдвинуть все физические позиции. В интерфейсе можно показать оба ориентира, например номер листа файла и печатную метку, если они проверены. Не называйте распознанную метку достоверной без сверки. Для приёмки используйте небольшой синтетический документ с известными разделами и ссылками. Проверяйте не только наличие кликабельного элемента, но и попадание в правильный исходный фрагмент после открытия пользователем.
Частые вопросы
Можно ли считать страницу PDF по порядку чанков?
Нет. Несколько чанков могут относиться к одной странице, а один фрагмент — к нескольким. Нужны метаданные извлечения.
Метка page_labels равна номеру на скане?
Не обязательно. Метка хранится в структуре PDF, а напечатанное число может быть частью изображения и требовать отдельного распознавания.
Почему простое смещение не всегда помогает?
Документ может содержать несколько секций с разной нумерацией. Единого смещения для всех страниц тогда не существует.
Что делать после обновления PDF?
Связывайте ссылки с версией файла и проверяйте привязки заново. Старый физический индекс может указывать уже на другой текст.