BookTranslator
BookTranslator

PDFのページ番号が本と一致しない?まずはページラベルを確認しよう

印刷されたページと一致しないPDFのナビゲーションを修正しましょう。ローマ数字の前付け、挿入図版、37ページから始まる抜粋に対応した6つのサンプルファイルをご覧ください。

BookTranslator

BookTranslator Team

20 分で読了

PDFリーダーで「4ページ」と表示されているのに、本自体のページ表記が「1」になっている場合は、まずファイルの ページラベルを確認してください。表紙やローマ数字の導入部があると、本の内容が不足していなくても物理的な位置がずれることがあります。ページの上に無理やり新しい番号を印字したり、導入部を削除したりするのではなく、ファイルのコピーを作成してナビゲーションラベルを修正しましょう。

ただし、この修正には限界があります。ラベルを変更しても、スキャン漏れを復元したり、ページの順序を直したり、不鮮明で読めない番号を特定したりすることはできません。まずは実際にどのページが存在しているかを確認し、その上でナビゲーションがそれを正確に指し示すように設定してください。

この違いを分かりやすく示すため、ダウンロード可能な3組の修正前・修正後サンプルを作成しました。7ページのノートブック、ノンブルのない挿絵が挟まれたバージョン、印刷上の37ページから始まる抜粋の3種類です。いずれのペアも、レンダリングされるページはピクセル単位で同一のまま、ラベルのみが変更されています。

修正に着手する前に3つの「番号」を整理する

本ガイドでは、 ファイル上の位置 をPDFの先頭から数えた1番目、2番目、3番目のページを指すものとします。 印刷された番号 は、ページ上に視覚的に印字されている番号を意味します。 ページラベル とは、ナビゲーション用に保持されている論理的な識別子のことで、 ii や A-1.

などが該当します。これらの値が互いに異なるのは自然なことです。PDF Associationの ページラベルに関する解説 では、付番シーケンス、プレフィックス、そしてページインデックス・番号・ラベルの違いについて詳しく説明されています。ファイルにローマ数字の前付け、リセットされた本文のページ番号、プレフィックス付きの付録が含まれていても、総ページ数が誤っているわけではありません。

以下は、解説用7ページファイルにおける対応関係です。

ファイル上の位置視認できる印刷番号修正前のナビゲーションラベル修正後のラベル
1なし: 表紙1Cover
2i2i
3ii3ii
4141
5252
6A-16A-1
7A-27A-2

Cover は表紙に印刷された数字ではなく、わかりやすく割り当てたラベルです。総ページ数は7ページのままです。リーダーによっては、ラベルと通し番号の両方(例: 1 (4 of 7))が表示されることがありますが、両方が表示されていても問題ありません。

ラベル設定前の 7ページのファイル と ラベル設定済みのファイルをダウンロードしてください。それぞれで本文の1ページ目を開き、ページ自体の表記とナビゲーションコントロールの表示を比較してみましょう。

解説用の7ページ(ファイル内の通し位置と論理ラベルをページ画像の外側に注記したもの): Cover、i、ii、1、2、A-1、A-2。

これは、ページ画像の外側にラベルを追加した独自作成ページのプレビューであり、特定のPDFアプリケーションのスクリーンショットではありません。

作業用コピーでセクションの境界を整理する

編集する前に、変更前のオリジナルを保存した上で、実際のページを確認しながら切り替わり箇所を特定します。番号が振られた前付の最初のページ、本文の1ページ目、挿入ページ、各付録や番号の振り直し箇所などをチェックしてください。そして、目に見えるページ表記の横にファイル内の通し番号をメモしておきます。

本文の最初のページだけでなく、他の部分も確認してください。上記の例では、「3を足す」ことで本文の1ページ目には辿り着けますが、ローマ数字の前付や A- の付録には当てはまりません。単一のオフセットは連続したセクション内での一時的な近道にすぎず、書籍全体を正確に表すものではありません。

ページの連続性が予期せず飛んでいる場合(たとえば、表示されているページ番号が38から40に飛んでいる場合)は、その間の画像を確認し、可能であれば元の版と照合してください。スキャン漏れ、意図的な差し込み、元々の変則的なページ番号付け、あるいは別の並び順の問題などが考えられます。見た目の連番を整えるためだけに、無関係なページに「39」を割り当てないようにしてください。

電子署名付きまたは権限が制限されたPDFの場合は、許可された正規のワークフローを使用するか、文書の提供元に修正済みの閲覧用コピーを依頼してください。本記事のテスト用スクリプトは、そうした保護機能を維持したり回避したりするためのものではありません。

印刷される紙面内容ではなく、ナビゲーション用のラベルを変更する

Adobeの公式ドキュメントに記載されているデスクトップでの手順

Adobeの最新の Acrobatのページラベルに関する手順 では、 すべてのツール → ページを整理 → ページラベルを開くよう案内されています。ページ範囲を選択して新しいシーケンスを開始し、番号のスタイル、開始番号、任意のプレフィックス(接頭辞)を設定します。セクションごとにこの作業を繰り返します。連続するセクションでは、前のシーケンスをそのまま引き継ぐことも可能です。

今回の例に当てはめると、導入部にはローマ数字、本文には1から振り直すアラビア数字、そして付録にはプレフィックス「 A- 」を付けたアラビア数字を設定します。各変更を適用する前に、特に既存のラベルがすでにファイル上の物理位置とずれている場合は、選択されている実際のページを必ず確認してください。

Adobeでは、これらのナビゲーション用ラベルと、紙面上に視覚的に配置されるヘッダー/フッター番号とを明確に区別しています。リーダーのページ操作UIを本と一致させたいだけであれば、視覚的なフッターを追加する作業とは別物になります。

上記の手順は公式ドキュメントに基づいたものです。本記事のために実際にAcrobatでの修復処理を実行したり、特定のAcrobatインターフェースをテストしたりしたわけではありません。

pypdfを使って実際に検証した方法

テスト用のファイルはReportLabで作成し、pypdf 6.10.0で複製した上で、各ページのコンテンツストリームを変更することなくラベルを割り当てました。 7ページのサンプルのみを対象とした中核の処理は以下のとおりです。

from pypdf import PdfReader, PdfWriter
from pypdf.constants import PageLabelStyle

reader = PdfReader("seven-page-before.pdf")
writer = PdfWriter(clone_from=reader)
writer.set_page_label(0, 0, prefix="Cover")
writer.set_page_label(1, 2, style=PageLabelStyle.LOWERCASE_ROMAN, start=1)
writer.set_page_label(3, 4, style=PageLabelStyle.DECIMAL, start=1)
writer.set_page_label(5, 6, style=PageLabelStyle.DECIMAL, prefix="A-", start=1)

with open("seven-page-labeled-copy.pdf", "xb") as output:
    writer.write(output)

assert PdfReader("seven-page-labeled-copy.pdf").page_labels == [
    "Cover", "i", "ii", "1", "2", "A-1", "A-2"
]

このAPIは 0始まりのインデックスを使用します。ファイル上の4ページ目はインデックス3となります。上記の範囲指定は両端を含みます。排他出力モード「 xb」により、既存ファイルの上書きを防止しています。厳密な実装については、バージョン管理された pypdfのページラベルAPIドキュメント および ジェネレーターの完全なコード を参照してください。

これらの範囲を無関係な書籍にそのまま貼り付けないでください。まずはその書籍のセクションマップを確定させましょう。テスト済みのスクリプトは、ユーザーや外部のPDFを受け付けるものではなく、スクリプト内で定義された独自のサンプルのみを生成します。

固定オフセットが通用しない2つのケース

ノンブルのない図版によって本文のオフセットが変化する場合

2つ目のサンプルでは、印刷された本文の1ページ目と2ページ目の間に図版(口絵)を挿入しました。この図版にはページ番号が印刷されていません。そこで、わかりやすいラベルとして Plate-A を割り当て、その次の本文ページから再び「2」として再開しました。

ファイル内の位置目に見えるページ番号・表記ラベル
411
5ノンブルのない図版Plate-A
622

挿入前は、印刷上の1ページ目はファイル内の4番目にあり、オフセットは3でした。挿入後は、印刷上の2ページ目がファイル内の6番目となり、オフセットは4に変わります。最初のオフセットをそのまま使い続けると、図版のページが表示されてしまいます。

ぜひ ラベル設定前の8ページのバージョン と ラベル設定後のバージョンを比較してみてください。この修正では、挿入箇所にラベルセクションを追加し、その直後から本文の番号シーケンスを再開させています。図版を番号付きの元ページに変更したり、ファイルから削除したりすることはありません。

抜粋版が印刷上の37ページ目から始まる場合

3つ目のサンプルには、目視で37、38、39と番号が振られた3ページが含まれています。これらはファイル内では1番目、2番目、3番目の位置にあります。この場合、適切なラベルは1からではなく、37から始まります。

この 修正前のファイル と 修正後のファイル はいずれも、まったく同じこれら3ページのみで構成されています。最初のページにラベル「 37 」を付けたからといって、そのPDFに前述の36ページ分が含まれていることを意味するわけではありません。

実際の抜粋文書を扱う場合は、原本で確認できる番号を使用してください。最初の印刷ノンブルが見当たらない、または裁断されて欠けている場合は、割り当てる前に裏付けとなる原本の証拠を入手しましょう。安易に推測した連番は、単なるファイル位置のカウントよりもかえって誤解を招く恐れがあります。

編集ダイアログだけでなく、保存したファイル自体を検証する

これら3組のサンプルについて、全6つのPDFを再度開き、すべてのラベルをチェックしました。Poppler 26.08.0を用いて両バージョンを144 dpiでレンダリングしています。 対応する全18組のページはピクセル単位で完全に一致し、18のページコンテンツストリームはすべてバイト単位で一致していました。このテストにおいて、ページコンテンツへの追加スタンプや削除は一切行われていません。

こちらの ページごとの検証結果 には、ファイルハッシュ、ラベル、ピクセル比較が含まれています。また、 ダウンロード可能なページマップ には、ファイル位置、0始まりのインデックス、印刷ノンブルが記録されています。 再現手順 では、依存パッケージのバージョンと、新しいディレクトリでサンプルを再生成する方法を説明しています。

これにより私たちのファイル自体は検証されますが、すべてのビューアでの動作が保証されるわけではありません。PDF Associationはアプリケーション間でのラベル対応の差異を文書化しています(公開されているビューア調査は2024年のものであり、今回独自に再テストしたものではありません)。実際に使用するリーダーで以下を確認してください。

  1. 保存したコピーを開き直し、総ページ数が変わっていないことを確認します。
  2. 各ノンブルセクションの最初と最後のページを確認します。
  3. ページ移動機能で ii, 1 や A-1、またはお使いの文書における該当ページへの移動を試してください。
  4. ジャンプした先が、単に数字が一致しているカウンターではなく、意図した通りの印刷ページであることを確認します。
  5. リーダーがラベルを認識しない場合は、位置とページの明確な対応マップを手元に残すか、ラベルに対応したリーダーを使用してください。非対応のUIに合わせようとして、正しいラベルを無理に書き換えるべきではありません。

見た目が一致してレンダリングされていても、アクセシビリティ、有効な電子署名、リンクの機能、あるいは抽出テキストの正確さまでは証明されません。見た目が正しくてもコピーしたテキストが崩れている場合は、個別の PDFテキストレイヤーの診断手順を参照してください。この問題はページラベルでは修復できません。

文書を後から翻訳する場合は元のマップを保持する

正確なページ移動だけが問題だったのであれば、作業はここまでで十分です。ページラベルを変更するのにOCRや翻訳は必要ありません。

依然として言語が壁となっている場合は、元のファイルとページ対応表を手元に残したうえで、 スキャン済みPDFの翻訳ワークフロー や PDFの翻訳とフォーマットに関するガイドに進んでください。出力結果をより幅広く確認したい場合は、 PDF翻訳の品質管理(QA)チェックリスト.

を活用してください。 BookTranslatorのPDF翻訳機能 をご利用の際は、再構築された出力ファイルに元のページラベルがそのまま引き継がれるとは限らない点にご注意ください。OCRモードでは、元のレイアウト、フォント、フォントサイズが変更されることがあります。出力結果のテキストがリフロー(再配置)された場合は、重要な記述を原文と照合してください。改ページ位置が変わったドキュメントに以前のページ番号マッピングをそのまま適用しても、正しい対応関係は維持されません。

目指すべきは、すべての数値を機械的に一致させることではありません。そのファイル内でページがどこにあるのか、原文で何ページと呼ばれているのか、そして読者がそこにどうやってたどり着けるのか、各番号の意味を誰にとっても明確にすることです。

関連記事