目的と元資料の有無で方法を選ぶ
元文書があり、見える文言を変えたい
- 作成元文書のコピーを編集して新しい PDF を出力します。スキャンの上に文字を追加しても、原文の置換にはなりません。
- 新しい PDF を開き直し、変更した文、改行、ページ数を表示・検索・コピーで確認します。元文書から出力しても、フォントや構造が同一になる保証はありません。
PDF しかなく、検索や文字の再利用をしたい
- 1文を選択してコピーしてみます。実際の文字がページと一致すれば抽出し、数値、表、読む順序を元と照合してください。
- 画像のみのページには OCR が必要です。認識した文字を画像と1行ずつ比較し、数値や名前の誤りを修正します。認識だけでは見えるスキャン画素を編集できず、元のレイアウトも保証されません。
- 既存の非表示 OCR テキストも再確認してください。この実験は手作業で挿入した非表示の日付を使っており、OCR 製品の認識精度を測定していません。
PDF しかなく、見えるスキャン内容を変更したい
- 可能なら作成者に編集可能な元文書を依頼します。それができなければ、必要な内容を新しい文書に作り直し、原本とは区別した再作成物として確認してください。
- OCR で文字を得ても、見える文言、フォント、レイアウトを作り直す必要がある場合があります。非表示テキストだけの変更は画像の変更を意味しません。
元の内容を保って説明を加えたい
- PDF 編集の互換性ガイドを読み、作業室の「PDF を開く → 新しいテキストボックス」を使います。構造チェックを回避する目的で、制限された文書を変換しないでください。
- 空いている場所に説明を置きます。「結果を確認 → 検査済み PDF をダウンロード」し、開き直してください。独立した説明文の追加であり、OCR や原文の置換ではありません。
これらは作業を見分けるための選択肢です。特定の外部 OCR・再作成製品、バージョン、価格、アップロードの扱いを検証・推奨したものではありません。使用前に公式の処理方式と料金情報を確認してください。実測したのは自作 PDF の表示と抽出の違いであり、外部 OCR の成功例は含みません。
問題と条件
文字を選べない、またはコピー内容がページと違う場合は、表現方法を確認します。text-source はテキスト命令と図、scan-only はそのページの画像、scan-ocr は OCR 模擬用の見えない日付1行を追加したものです。OCR サービスは使用していません。
観測した違い
独立した解析器は実際の文字から日付を抽出し、スキャンからは文字を抽出しません。OCR 模擬資料からは日付の行だけを抽出します。最後のファイルでも見える日付は画像のままで、非表示テキストだけを変えても表示は変わりません。PDF Desk はこの非表示原文の置換に対応していません。
違いを確認する
- 3つのファイルで Delivery date を検索し、日付を選択・コピーします。
- スキャンを拡大し、文字も画像の画素であることを確認します。
- 作業室の原文一覧を比較します。スキャンは編集可能な文字として表示されません。
- 抽出した数値と句読点を見えるページと照合します。
検証範囲と公式説明
検索できることは、アクセシビリティタグ、正しい読む順序、OCR の正確さを証明しません。pypdf の公式ガイドは認識と既存テキストの抽出を区別しています。今回の資料はその違いを示しますが、元文書の再作成や外部 OCR 処理の成功を検証するものではありません。
自分で調べられるファイル
独立検査の結果と方法(JSON) · 作成者情報とファイルハッシュ切り出し座標・倍率・元ファイルのハッシュ・再抽出結果 · 再確認日:2026-10-24 · pdftoppm 26.07.0 · pypdf 6.10.0 · pdfplumber 0.11.9。元の PDF は変更していません。
環境・日付・確認範囲
確認日:2026-10-23 · Windows / Chrome 155 · pdf-lib 1.17.1 · PDF.js 6.4.299 · fontkit 1.1.1 · pypdf 6.10.0 · pdftoppm 26.07.0。PDF と図は独自制作で、NanumGothic は OFL-1.1 です。表とファイルは直接観測した結果、説明文はその構造の解釈です。実際の OS キーボード入力、実機のスマートフォン、すべての PDF 閲覧ソフトは検査対象外です。
公式の参考説明(実測結果とは別): pypdf:テキスト抽出と OCR
再現コード:scripts/lab-inputs.py、lab-outputs.mjs、lab-derived.py、tests/readiness-browser.mjs、tests/lab-pdf.py。

