Обложка, римские цифры и первая страница текста: не путайте номера страниц PDF.
В правилах меток номеров страниц используется firstpagenum, а не start. Когда обложка имеет только префикс, при обратном чтении словаря правил стиль может отсутствовать; более осмысленный вариант — проверить результаты get_label для каждой физической страницы. Тег отображения — не единственный идентификатор страницы.
Основные положения этой статьи
– В правилах меток номеров страниц следует использовать поле firstpagenum вместо поля start.
- Если обложка имеет только префикс, в словаре правил обратного чтения может отсутствовать стиль, который не подходит для прямой индексации.
— Результаты get_label должны проверяться страница за страницей во время принятия, что более значимо, чем просто просмотр словаря правил. – Отображаемые теги не являются уникальными идентификаторами страниц, поэтому индекс физической страницы должен сохраняться одновременно с повторением тегов.
Метки номеров страниц в PDF-файле не обязательно совпадают с номерами страниц, видимыми невооруженным глазом. Когда обложка, предисловие с римскими цифрами и текст, перенумерованный со страницы 1, смешаны в одном файле, легко не совместить отображаемый номер страницы и результат, считанный программой. Эта статья предназначена для людей, которым необходимо самостоятельно создавать или проверять метки номеров страниц.
Прочитав это, вы узнаете, что в качестве начального номера следует использовать firstpagenum вместо start, почему get_label вызывается постранично, если обложка имеет только префикс, и почему отображаемую метку нельзя использовать в качестве уникального идентификатора страницы.
Как установить метки номеров страниц PDF? Вывод в одно предложение
Пожалуйста, используйте firstpagenum для правил маркировки номеров страниц. Проверьте результаты get_label один за другим для физических страниц во время принятия и используйте отображаемую метку в качестве ссылки вместо уникального идентификатора страницы.
| твоя ситуация | Рекомендуемые практики | причина |
|---|---|---|
| На обложке есть только префикс | Используйте get_label для чтения каждой страницы этикеток. | Словарь правил обратного чтения может опускать style, а прямое индексирование подвержено ошибкам. |
| Необходимо установить начальный номер текста | Используйте firstpagenum | Правила в этой статье основаны на firstpagenum, start не используется. |
| На странице отображаются повторяющиеся теги | Также сохраните индекс физической страницы. | Показать тег не является уникальным идентификатором страницы |
| В документе римские цифры смешаны с арабскими цифрами. | Проверяйте этикетки страница за страницей | Не путайте римские цифры с физическими номерами страниц. |
Проблема, которую предстоит решить в этой статье
Используйте firstpagenum для полей правил
В правилах меток страниц используется firstpagenum, а не start. При настройке обращайте внимание на имя поля, чтобы избежать получения неожиданного числа после ошибки.
Способ чтения, когда на обложке есть только префикс
Если обложка имеет только префикс, словарь правил обратного чтения может опустить style. Поэтому вместо непосредственного индексирования style проверьте результаты для каждой физической страницы get_label.
Показать тег не уникален
Надписи на дисплее могут повторяться, например, в разных главах появляется цифра «1». Если вам нужно найти конкретную страницу, также следует сохранить индекс физической страницы.
Пример автономной композиции
См. список импорта для зависимостей. Код конструирует ввод в память, а записи запуска предоставляются отдельно и не являются гарантией всех реальных файлов.
import pymupdf
with pymupdf.open() as source:
for _ in range(4):
source.new_page()
source.set_page_labels([
{"startpage": 0, "prefix": "Cover", "style": "", "firstpagenum": 1},
{"startpage": 1, "prefix": "", "style": "r", "firstpagenum": 1},
{"startpage": 3, "prefix": "", "style": "D", "firstpagenum": 1},
])
raw = source.tobytes()
with pymupdf.open(stream=raw, filetype="pdf") as doc:
assert [page.get_label() for page in doc] == ["Cover", "i", "ii", "1"]
assert len(doc.get_page_labels()) == 3
assert doc.get_page_labels()[0].get("style", "") == ""
assert doc.page_count == 4
Условия эксплуатации и меры предосторожности
В этой статье для демонстрации метода обработки используются синтетические образцы. Код проверен на примерах в изолированной среде и не является гарантией работоспособности всех реальных файлов или продукта. Перед обработкой важных документов, пожалуйста, сохраните оригиналы и просмотрите их по границам и пунктам приема в тексте.
Если в вашей среде утверждение не выполнено, сначала проверьте версию PyMuPDF и убедитесь, что имя поля метки номера страницы используется правильно (правила в этой статье используют firstpagenum, а не start).
Критерии приемки и пороговые значения проверки вручную
Следующие элементы приемки применимы только к проверкам структурированных PDF-файлов на уровне кода:
- Создайте тестовый PDF-файл, содержащий обложку, предисловие с римскими цифрами и основной текст.
- Вызовите
get_labelодин за другим на физических страницах и запишите метки, возвращаемые для каждой страницы. - Проверьте, соответствуют ли ожидаемому префикс обложки, римские цифры абзацев и начальная нумерация страниц основного текста.
- Проверьте, сохраняется ли индекс физической страницы одновременно с дублированием этикеток.
Сквозные эффекты также необходимо сочетать с проверкой рендеринга. Некоторые читатели будут игнорировать недопустимые правила тегов, в результате чего результаты отображения будут несовместимы с результатами анализа программы. В этом случае превалировать должны характеристики PDF, а не производительность читателя.
📊 Сравнение ядра
В следующей таблице перечислено, что следует делать в некоторых нештатных ситуациях и что не следует делать выводов:
| наблюдать | что делать | не следует предполагать |
|---|---|---|
| Префикс на обложке | Читать get_label | Не индексируйте потенциально отсутствующий style |
| Повторите ярлык | Одновременно сохраняется физический индекс страницы | Ярлыки дисплея не должны рассматриваться как первичные ключи |
| Смешанная нумерация | Обозначьте каждую страницу | Не рассматривайте римские цифры как физические номера страниц |
Используйте контрольные списки при переводе документов
Сначала проверьте порядок страниц, местоположение источника и целостность текста, затем отправьте тот же образец десенсибилизации в процесс перевода. После перевода всё равно необходимо проверить, совпадают ли заголовок, основной текст и подписи; недостаточно судить только по беглости текста.
OmniDoc (запись продукта) предоставляет многоформатные порталы для перевода документов, а её официальный сайт предлагает OCR, терминологию и билингвальные справочные функции. Если хотите начать напрямую с файла, можно оценить этот путь с помощью реальных образцов. Пожалуйста, используйте файл тревоги, на который имеете право загрузить, и проверьте результаты чек-листа в этой статье. В этой статье не утверждается, что OmniDoc использует открытые библиотеки или внутренние алгоритмы, упомянутые в статье, и примеры не заменяют тестирование производительности продукта.
Ссылки
🎯 Какой способ тебе подходит?
Если на вашей обложке только префикс
Используйте get_label для проверки результатов по страницам; не индексируйте style напрямую.
Если хотите установить нумерацию основного текста со страницы 1
Используйте firstpagenum, не start.
Если на вашей странице отображаются дублирующие теги
Одновременно сохраняйте физический индекс страницы; не рассматривайте метки отображения как уникальные идентификаторы.
Если вы хотите передать документы в процесс перевода,
Сначала проверьте порядок страниц и полноту текста, затем заголовок, основной текст и подписи.
❓ Часто задаваемые вопросы (FAQ)
1. Стоит ли устанавливать номер страницы, начиная с начала или с firstpagenum?
Используйте firstpagenum согласно правилам этой статьи, а не start.
2. Почему бы просто не прочитать стиль из словаря правил?
Если на обложке есть только префикс, словарь правил для обратной прочтения может опустить style, и прямое индексирование может привести к ошибкам.
3. Могут ли отображённые метки служить уникальными идентификаторами на странице?
Нет. Отображения не являются уникальными идентификаторами страниц; если теги дублируются, физический индекс страницы должен сохраняться одновременно.
4. Если код проходит проверку, значит ли это, что считыватель отображается стабильно?
Нет. Принятие на уровне кода не означает сквозные результаты; некоторые читатели игнорируют незаконные правила тегов, требующие проверки рендеринга и соблюдения спецификаций PDF.
📝 Краткое содержание
Ключ к меткам номера страницы — использовать правильные поля, проверять страницу за страницей и сохранять физический индекс страницы. Перед тем как браться за важные документы, пожалуйста, пройдите вышеуказанную проверку с помощью десенсибилизированного образца.
Опыт сейчас: загрузите документ, чтобы начать перевод, сохраняя оригинальное форматирование


