PDF・OCRコピーで改行がガタガタになる理由と対処法
「貼り付けたら1行ごとに改行されてしまった」――その背景には、PDFの構造とOCRの仕様があります。
参照した一次情報
- ・ISO 32000-2:2020「Portable Document Format」(PDFのテキストオブジェクト仕様)
- ・Adobe PDF Reference 1.7(Tj / TJ オペレーター、テキスト配置モデル)
- ・Tesseract OCR Documentation「Improving Quality – Page Segmentation Modes」(PSM 1-13の行検出仕様)
PDFは「文字を座標で配置する」構造
PDFは「文字列」を保存しているのではなく、「この位置にこの文字を描く」という描画命令の集合として保存されています。 ISO 32000仕様では、各文字はTj/TJオペレーターで指定座標に配置され、改行という概念は明示的に存在しません。
そのためPDFリーダーがテキストをコピーする際、「次の文字が前の文字より大きく下にあれば改行とみなす」というヒューリスティック処理を行います。 段組み・脚注・ヘッダーフッターの座標差により、本文の中でも「物理的な行末で改行」が挿入されてしまうのです。
PDFコピーの典型パターン
- ・1行ごとに改行が入る:物理行末で改行と判定(最頻出)
- ・段組みで列が混ざる:左列の続きの後に右列の冒頭が紛れ込む
- ・合字(fi/fl)が分解される:1グリフが2文字に展開
- ・濁点が結合形式になる:「が」が「か+U+3099」で抽出(NFD相当)
- ・句読点だけ次の行へ:句読点の物理座標が改行位置をまたぐ
- ・ヘッダーフッターが本文に混入:ページごとのページ番号や見出し
OCRはまず「行」を見つける
OCRエンジンは画像を文字列に変換する前に、「どこからどこまでが1行か」を検出します。 Tesseractはこの段階をPage Segmentation Mode(PSM)で制御し、PSM 1〜13まで13種類のモードを提供。
代表的な行検出アルゴリズムは2種類:
- ・射影プロファイル法:横方向の黒画素ヒストグラムで谷を行の境界とみなす
- ・連結成分法:近接する画素塊をグループ化し、Y座標が近いものを同じ行とする
いずれも「画像上の物理的な行」を1行として扱うため、文章としての段落構造は失われ、行末ごとに改行が挿入されたテキストが出力されます。
OCRの典型エラー
- ・段組み・脚注・キャプションが本文に混入
- ・2段組左右が交互にコピーされる
- ・表組がスペース区切りの平文に変換される
- ・濁点・半濁点が「、」「。」と誤認識
- ・傾いたスキャンでは行検出が乱れ、行が混ざる
- ・裏写りや汚れがノイズとして文字化される
整形ツールでの修復ロジック
PDF・OCRから出てくる「1行ごとに改行」テキストを文章に戻すには、以下のヒューリスティックが有効です。
- 連続する改行を保持:2行以上の空行は段落区切りとして残す
- 段落内の単独改行を削除:1つだけの改行は前後の行を結合
- 句読点直後の改行を優先削除:「。」「、」の後ろは前の行末とみなす
- 箇条書きマーカーは保持:「・」「-」「①」等で始まる行は改行を残す
- NFC正規化を適用:濁点の結合形式を統一
- ホワイトスペースを統一:全角空白・タブ・連続空白を整理
Before / After 例
Before(PDFコピー直後)
本日の議題は、来期の事 業計画について議論する ことです。 各部署から提案を集めた うえで、最終決定を行い ます。
After(整形後)
本日の議題は、来期の事業計画について議論することです。 各部署から提案を集めたうえで、最終決定を行います。
段落間の空行は保持しつつ、段落内の不要な改行だけが除去されました。
表組・コードブロックは要注意
PDF内の表組やコードブロックは、本文と同じヒューリスティックで処理すると改行が消えて読めなくなります。 整形対象から表・コード部分を除外する、または整形後に手動で改行を補うのがおすすめです。
重要書類(契約書・公文書)の場合、改行位置の変更が解釈に影響することもあります。 原本を別途保管した上で、整形版を「読みやすい参考版」として活用してください。
本ツールでの位置づけ
本ツールは「改行統合」処理で上記ロジック(空行保持・段落内改行除去)を実装。 さらにNFC正規化と不可視文字除去を組み合わせることで、PDF・OCR由来のテキストを文章として読める形に戻します。
OCRから始める場合は、姉妹ツール「画像の文字起こし(OCR)」で画像をテキスト化してから、本ツールに貼り付けるとスムーズです。