Обкладинка, римські цифри та перша сторінка тексту: не плутайте номери сторінок PDF

Правила мітки сторінки використовують номер першої сторінки, а не початок. Якщо обкладинка містить лише префікс, словник правил, який читається назад, може опускати стиль; більш значущою перевіркою є перевірка результатів 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-файлів:

  1. Створіть тестовий PDF-файл, який містить обкладинку, передмову римськими цифрами та основний текст.
  2. Викличте get_label одну за одною на фізичних сторінках і запишіть мітки, повернуті для кожної сторінки.
  3. Перевірте, чи відповідає очікуванням префікс обкладинки, абзаци з римськими цифрами та нумерація початкових сторінок основного тексту.
  4. Перевірте, чи зберігається індекс фізичної сторінки під час дублювання міток.

Наскрізні ефекти також потрібно перевіряти за допомогою рендерингу. Деякі читачі ігнорують незаконні правила тегів, через що результати відображення не відповідають результатам парсингу програми. У таких випадках стандартом мають бути специфікації PDF, а не продуктивність читача.

📊 Порівняння ядра

У таблиці нижче наведено кілька виняткових ситуацій і що не слід робити в таких випадках:

СпостереженняЩо слід зробитиі не слід судити
Префікс на обкладинціЧитати get_labelНе індексуйте потенційно відсутній style
Повторіть етикеткуВодночас зберігається фізичний індекс сторінкиЕтикетки дисплея не слід вважати первинними ключами
Змішана нумераціяПозначте кожну сторінкуНе сприймайте римські цифри як фізичні номери сторінок

Використовуйте контрольні списки в перекладі документів

Спочатку перевірте порядок сторінок, розташування джерела та цілісність тексту, а потім подайте той самий зразок десенсибілізації до процесу перекладу. Після перекладу все одно необхідно перевірити, чи правильно співпадають заголовок, основний текст і підписи; недостатньо оцінювати лише те, чи є текст вільним.

OmniDoc (Запис продукту) надає багатоформатні портали перекладу документів, а її офіційний вебсайт пропонує OCR, термінологію та двомовні довідкові функції. Якщо хочете почати безпосередньо з файлу, можна оцінити цей шлях за допомогою реальних семплів. Будь ласка, скористайтеся тривожним файлом, який маєте право завантажити, і перевірте результати чек-листа в цій статті. Ця стаття не стверджує, що OmniDoc використовує відкриті бібліотеки або внутрішні алгоритми, згадані в статті, і приклади не замінюють тестування продуктивності продукту.

Джерела

🎯 Який метод тобі підходить?

Якщо на обкладинці є лише префікс

Використовуйте get_label для перевірки результатів сторінка за сторінкою; не індексуйте style безпосередньо.

Якщо хочете встановити нумерацію основного тексту зі сторінки 1

Використовуйте firstpagenum, не start.

Якщо на вашій сторінці відображаються дублікати тегів

Водночас зберігайте фізичний індекс сторінки; не розглядайте мітки відображення як унікальні ідентифікатори.

Якщо ви хочете передати документи на процес перекладу,

Спочатку перевірте порядок сторінок і повноту тексту, потім заголовок, основний текст і підписи.

❓ Поширені запитання (FAQ)

1. Чи варто встановлювати номер сторінки, починаючи з start, чи firstpagenum?

Використовуйте firstpagenum відповідно до правил цієї статті, а не start.

2. Чому б просто не прочитати стиль із словника правил?

Якщо на обкладинці є лише префікс, словник правил backread може опустити style, а пряме індексування може спричинити помилки.

3. Чи можуть відображені мітки слугувати унікальними ідентифікаторами на сторінці?

Ні. Відображені теги не є унікальними ідентичностями сторінок; якщо теги дублюються, фізичний індекс сторінки слід зберігати одночасно.

4. Якщо код проходить перевірку, чи означає це, що зчитувач відображається стабільно?

Ні. Прийняття на рівні коду не означає наскрізний результат; деякі читачі ігнорують незаконні правила тегів, які вимагають перевірки рендерингу та дотримання специфікацій PDF.

📝 Резюме

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

Досвід зараз: завантажте документ, щоб почати переклад, зберігаючи оригінальне форматування

Оновлено 2026-11-14