長いPDFを分割して要約する方法:ページと出典を失わない確認手順

PDFを追跡できる単位に分け、元のページ番号と変更履歴を保って要約します。24ページの練習資料、分割スクリプト、実際の検証結果を掲載。

別々に固定された区間を一本の連続したロープがつなぐイラスト。

PDF全体を一度で確実に処理できない場合は、識別できるまとまりに分け、各まとまりから根拠を抽出し、根拠を統合してから要約します。 ファイルを分割するだけでは不十分です。元のどのページが届き、どの事実が残り、後の修正が以前の記述を置き換えるのかを追う必要があります。

この記事では、著者作成の24ページの練習用報告書とローカル分割スクリプトを使います。確認しやすい小さな資料です。ページ管理と改訂の照合を示すもので、24ページがモデルのコンテキスト上限を超えるという実験でも、長文記憶のベンチマークでもありません。

分割前に何の制限か見分ける

「長すぎる」には複数の原因があります。ファイル容量でアップロードが失敗する、スキャンに抽出可能なテキストがない、モデルの入力上限を超える、出力枠が足りず回答が切れる、といった違いです。受け取ったPDFから検索で一部を取り出すツールもあるため、全体が一回のモデル要求に入ったとは限りません。

対策も別です。画像圧縮はバイトを減らしても抽出テキストを減らさない場合があります。短い要約を求めるのは出力の変更で、入力削減とは限りません。PDF非対応のアップロード経路はモデル名だけ変えても直りません。

正確なエラー、テキスト検索の可否、ページ数、依頼した作業を確認します。制限や対応入力は変わるのでモデルと日付も記録してください。コンテキストウィンドウの解説はコンテキストと出力上限を分けています。MBやページ数に共通の定数を掛けて厳密なトークン上限を算出しないでください。

正解を照合できる資料を用意する

24ページの報告書、分割スクリプト、確認用の正解データを取得します。正解データは抽出結果を評価するまでアシスタントに渡しません。

1ページに初期予算USD 120,000、12ページに2026年12月15日の開始日、17ページに開始日の修正、22ページに予算の修正があります。9ページは識別の注記を除いて意図的な空白だと明記しています。「確認したが関連内容なし」と「処理していない」を区別する練習です。

求める成果物は、現在の開始日と予算、以前の値、それぞれの出典ページ、試行開始を妨げる可能性のある前提条件を示す意思決定表です。改訂を落とした自然な概説では完了しません。

送信前にページ対応表を作る

Python 3とPyMuPDFを分離した環境で使います。

python3 -m venv .venv
source .venv/bin/activate
python -m pip install pymupdf
python split_report.py sample-project-report.pdf report-batches \
  --max-pages 6 --max-chars 12000

スクリプトは新しい出力ディレクトリにPDF4個、テキスト4個、manifest.jsonを作ります。準備済みの分割資料も取得できます。これはモデルではなくスクリプトによる生成物です。既存ディレクトリを再利用しないため、以前の試験を黙って上書きしません。各テキストページの先頭には原本名と元のページ番号があります。マニフェストには元ファイルのSHA-256、全ページ数、各まとまりに含まれる元ページを記録します。

文字数の閾値は運用上の目安でありトークナイザーではありません。6ページの上限もこの練習を確認しやすくする設定です。モデル、情報密度、出力枠に合わせて調整してください。一ページだけで文字数目標を超えた場合は切り捨てず超過として記録します。そのページを意味のある節で分け、各節に元ページ参照を残します。

スクリプト内の検査は、元ページが一度ずつ割り当てられたことを確かめます。これはファイルの網羅性であり、モデルが全ページを読んだ証拠ではありません。 後述の根拠と最終照合が必要です。

テキストがないページや順序が崩れたページを確認する

抽出テキストが空のページはneeds-visual-review-or-OCRになります。自動で白紙扱いしないでください。スキャンした表、図、手書きメモかもしれません。原本を開いて関連性を判断し、対応するインターフェースから画像またはOCR結果を渡します。

PyMuPDFのページAPIドキュメント(英語)では、テキスト抽出とOCRは別処理です。この入門スクリプトは抽出のみで、自動でOCRを実行したり図表理解を保証したりしません。テキスト付きPDFでも読む順序が崩れる場合があります。段組み、脚注、表は描画されたページで確かめます。

表が境界をまたぐなら自然な切れ目へ移すか、隣接ページを明示的に重複させます。重複はマニフェストに記録し、元ページと事実に基づいて根拠を整理します。似た文を無差別に削除しないでください。配布スクリプトは重複のないページ単位の分割で、節や表の境界を自動認識しません。

分割単位ごとに根拠を抽出する

レイアウトが重要なら分割PDFを、テキスト経路が適切ならページ表示付きのテキストを使います。どの入力の出力か分かるよう管理します。対象資料とmanifest.jsonを添付するか、ページ対応を依頼に貼り付けてください。たとえば3番目は元の13〜18ページなので、分割PDFの5ページは元の17ページです。テキストには元番号が既に付いています。正解JSONは添付しません。

Ofox Chatなどファイル対応のアシスタントでは添付を確認し、分割後のカウンターではなく元の対応表を使います。次を各まとまりに適用してください。再現性のため英語の原文を保っています。

Read only this attached batch of the synthetic project report.
The supplied manifest maps batch pages to original PDF pages.

Return two tables:
1. Coverage: every assigned original page, status (reviewed, no relevant
   content, unreadable, or missing), and a short reason.
2. Evidence: decision/risk, exact value or date, approval/effective date
   if stated, original source page, a short supporting excerpt, and whether
   the source says it supersedes another value.

Extract the pilot launch date, budget, blocking dependencies and their
amendments. Preserve old and new values; do not silently reconcile them.
Do not guess facts from another batch. A blank page is reviewed only after
you inspect it. Report unreadable pages and missing attachments explicitly.
Do not use web sources or invent page references.

各応答を番号付きで保存します。最後の段落しかなければ、ページが飛ばされたとき照合できません。非公開報告書は処理権限のある内容だけを使い、無関係な機密部分を除いてください。

文章を書く前に根拠を統合する

4組の根拠表ができたら、その表を統合します。四つの長い会話を覚えていると期待しないでください。裏付けられた主張ごとに記録を残し、文書が置き換えを示している場合にのみ新しい値を採用します。時系列が新しいだけでは不十分なことがあります。

Merge these four evidence tables for the same source report.
For each current decision, retain the earlier value, the amendment,
approval date, original pages and supporting excerpts. Mark unresolved
conflicts instead of choosing silently. Identify missing batch outputs.

Produce:
- A current-decisions table.
- A superseded-values table.
- A page coverage table for original pages 1 through 24.
- A short summary supported only by the reconciled evidence.
List any claim that still requires checking against the original PDF.

この資料の現在の開始日は2027年1月12日です。17ページが12ページを明示的に置き換えます。予算はUSD 135,000で、22ページが1ページを置き換えます。8ページには開始前にベンダーのセキュリティレビューを完了する必要があると記載されています。主張の横に出典を残してください。

これらの正解を抽出要求に入れた後でモデルが発見したと報告してはいけません。評価のみに使い、間違えた場合は初回結果を残して修正を別に示します。

三種類の網羅性を確認する

入力の網羅性: 24ページすべてがマニフェストに割り当てられ、予定の分割ファイルが存在します。アップロード成功はすべての処理を示しません。

処理の網羅性: 各出力に割り当てページが並び、9ページも「関連する内容なし」として残ります。自己申告は管理に役立ちますが、それだけで証明にはなりません。中身を独立して確認します。

回答の網羅性: 必要な日付、予算、依存条件が正しい改訂と出典付きで含まれます。冒頭だけでなく序盤・中盤・終盤の事実を照合してください。実文書では、依頼していないが重要な例外も確認し、要約が制限を隠していないか調べます。

三層がそろって初めて通過です。24/24の表示があっても古い日付なら誤答です。日付が正しくても存在しない25ページを出典にすれば失敗です。

実際に4分割資料を処理した結果

2026年11月7日、4つのPDFとmanifest.jsonをOfox Chatの一つの会話に添付しました。正解も未分割PDFも渡していません。統合前に分割ごとの根拠シート、元ページごとの行、引用、旧値、例外シートを要求しました。一つの会話で四つの準備済み資料を処理した実験で、四つの独立セッションでも最大コンテキスト試験でもありません。実行言語は英語で、日本語版で新しく試験したという意味ではありません。

実際の監査用ExcelとMarkdownの意思決定レポートを取得できます。Excelには4つの分割シートとCoverage、Decisions、Exceptionsがあります。

検収項目観測し、独立して確認した結果
元ページの網羅1〜24ページそれぞれ一行、番号の欠落・重複なし
根拠引用29件すべて、空白文字の正規化後に指定元ページと一致
開始日の修正17ページの2027年1月12日と、12ページの旧2026年12月15日を保持
予算の修正22ページのUSD 135,000と、1ページの旧USD 120,000を保持
セキュリティ条件8ページを前提条件として保持、完了状況は不明のまま
9ページ実質的内容なしとして保持し、無断で省略せず

元ページ対応と文字数差異が見える実際の英語Ofox Chatのシート。

モデルは二つの監査上の限界も挙げました。未分割PDFが添付されていないためそのハッシュを検証できず、後で著者が原本とローカル照合しました。また全ページの抽出文字数がマニフェストと異なりました。再現すると、準備スクリプトはget_text(sort=True).strip()を数え、監査値は前後の空白を除かないget_text()に対応していました。順序や空白表現の違いはページ欠落がなくても文字数を変えます。モデル自身が解決したように書き換えず、元出力の注意書きを残しました。

差異は自動削除や全面的な失敗判定ではなく調査の対象です。抽出方法を記録し、正規化をそろえてから数を比較します。引用元テキストは別に確認してください。数が一致しても解釈の正しさは証明できません。

サンプルは短く検索可能なページと明示的な改訂を含みます。出典管理と照合の実演であり、すべての長大・スキャン・複雑な報告書を確実に読む証拠ではありません。実文書で承認権限が不明なら、意思決定表に不確実性を残します。

全体を再実行せず復旧する

失敗対象を絞った復旧
一組丸ごと欠落その組を処理し、根拠統合を更新
事実は正しいがページが違う原本を開き、元ページ対応を修正
古い予算を採用両方の根拠と改訂文を渡し、旧値も保持
スキャン一ページにテキストがないそのページを描画・OCRし、同じ元番号で追加
回答が途中で止まる未完了と記録し、入力単位や出力範囲を減らして当該組のみ再実行
統合要求が大きすぎる出典付きの節別根拠表へ先に統合し、その表を再統合。原本は保存

「元17ページの12ページに関する記述を再確認し、現在の開始日を直し、以前の値は旧値表に残して」のように問題の根拠を指定します。「もっと正確に要約して」だけでは検証目標がありません。

別の人が監査できる状態で渡す

原本PDF、ハッシュ、マニフェスト、各出力、統合根拠、最終要約、未解決事項をまとめて残します。レポートをPDF化するなら納品ファイルの検証手順(英語)でプレビューではなく実ファイルを確認してください。一本の長い文書ではなく独立した複数文書なら複数PDFの比較手順を使います。

Ofox Chatで練習資料から始め、どの改訂でも出典ページ列を残してください。目的はファイルを要求に収めることだけではありません。同僚が作業全体をやり直さずに回答を確認できるだけの根拠を保つことです。