プログラミング

「検索可能PDF」とは何か|画像PDF・テキストPDFとの違いと「テキストレイヤー」の仕組み

自炊やスキャンの話で出てくる「検索可能PDF」の仕組みを整理した記事です。画像PDF・テキストPDF・検索可能PDFの3タイプの違い、透明なテキストレイヤーを重ねた二層構造、OCRが何をしているか、ファイルサイズが軽くならない理由、用途別の使い分けまでをまとめました。

目次

はじめに

「検索可能PDF」という言葉、なんとなく使っていませんか。

自炊やスキャンの話をしていると当たり前のように出てくる用語ですが、「普通のPDFと何が違うのか」「なぜ見た目は同じなのに検索できるのか」「なぜ検索できるのにコピペすると文字が変なのか」をきちんと説明した記事は意外と少ないです。
私自身、電子書籍をPDF化するアプリを自作する過程でこのあたりを一通り整理したので、この記事で仕組みから説明します。

仕組みがわかると、「自分の用途にはどのPDFが正解か」を迷わず選べるようになります。
自炊代行のOCRオプションを付けるべきかどうかも、自分で判断できるようになるかと思います。

PDFには3つのタイプがある

まず全体像です。
同じ「本のPDF」でも、中身は3タイプに分かれます。

タイプ 中身 検索・コピペ サイズ・特徴
画像PDF ページ画像を束ねたもの どちらも不可 元の紙面の見た目がそのまま残る
テキストPDF 文字データだけ どちらも可 極端に小さい。元のレイアウトは失われる
検索可能PDF ページ画像+透明なテキストの二層 見た目はそのままで検索が効く

画像PDFは、スキャンやスクリーンショットで作ったページ画像を束ねたものです。
人間の目には本文が見えていますが、コンピュータから見ると「文字の形をした模様」であって文字ではありません。
だから Ctrl+F を押しても何もヒットしませんし、文章をなぞって選択することもできません。

テキストPDFは逆に、文字データだけでできています。
検索もコピペも効きますし、ファイルサイズも極端に小さくなります。
ただし元の紙面のレイアウト、つまり図表・組版・余白の書き込み欄は失われます。

検索可能PDFは、この2つのいいとこ取りです。
「透明テキスト付きPDF」と呼ばれることもあります。

検索可能PDFの正体は「二層構造」

検索可能PDFは、1ページの中に2つの層を持っています。

  • 見える層:ページの画像(スキャンやスクショそのまま)
  • 見えない層:OCRで読み取った文字データ。画像の文字とだいたい同じ位置に、透明な文字として重ねてある

この見えない層のことをテキストレイヤーと呼びます。
PDFという形式は、もともと1ページの上に「画像を置く」「文字を置く」という命令を何個でも重ねられる作りになっていて、文字には「描画しない(透明にする)」という指定ができます。
検索可能PDFはこれを利用して、画像の上に、目には見えない文字を印字してあるわけです。

人間は上の画像を読み、検索やコピペのときはPDFビューアが下の透明な文字を読む。
だから「見た目は画像のままなのに検索が効く」という、一見不思議な挙動になります。
なんてことのない仕組みですが、よくできていますよね。

「検索できるのにコピペが変」の理由

検索可能PDFで文章をコピーしたら、変な位置で改行されたり、文字の順番がおかしかったりした経験はないでしょうか。
あれもこの二層構造で説明できます。

コピーで取り出されるのは裏側のテキストレイヤーです。
つまりコピペの品質は、OCRがどれだけ正確に「文字の内容と位置と順序」を推定できたかで決まります。
段組みの読み順を取り違えたり、ルビを本文に混ぜ込んだりするのは、OCR段階の推定が外れた結果です。
見た目(表の層)は完璧でも、裏の層の品質は別物、という点は覚えておくと役に立ちます。

テキストレイヤーを作るのがOCR

見えない層の文字データを作るのがOCR(光学文字認識)です。
中で起きていることをざっくり分解すると、こうなります。

  • レイアウト解析:ページのどこが本文で、どこが図や余白かを見分ける
  • 行の検出:本文領域を1行ずつに切り出す(日本語の場合、縦書きか横書きかの判定もここに関わります)
  • 文字認識:各行の画像を文字列に変換する
  • 位置の記録:認識した文字列を「ページ上のどの座標にあったか」とセットで出力する

検索可能PDFを作るときは、この4番の座標情報を使って、画像上の文字とほぼ同じ位置に透明テキストを配置します。
だから検索でヒットした場所にビューアがジャンプできるわけです。

ここで大事なのは、検索の質はOCRの精度で決まるということです。
OCRが「経済」を「絡済」と誤認識していたら、「経済」で検索してもそのページはヒットしません。
見た目は完璧なPDFでも、裏の層がボロボロなら検索可能PDFとしての価値は下がります。
日本語の書籍なら、縦書きに対応した日本語向けOCRエンジンを使うことが精度面での前提になります。
私のアプリでは国立国会図書館製のNDLOCR-Liteを使っていますが、これを選んだのも日本語書籍・縦書き対応・無料の3点を満たすからです。

どうやって作るか:3つの手段

検索可能PDFを作る代表的な手段と、それぞれの位置づけです。

  • Adobe Acrobat:定番で精度も高いですが、有料サブスクです。すでに契約している方はこれで十分だと思います
  • 自炊代行サービスのOCRオプション:紙の本を電子化するなら、スキャンとまとめて頼めます。私が使った業者ではOCR処理込みのプランがあり、納品時点で検索可能PDFになっていました。体験談はこちらの記事にまとめています
  • 自作アプリ kindle_shot(無料):KindleのようなDRM付き電子書籍は、そもそもスキャンできず、Acrobatに渡す元ファイルも取り出せません。そこで私は、画面キャプチャ→OCR→検索可能PDF生成までを1本でやるWindowsアプリを作って無料公開しています。具体的な手順は紹介記事をどうぞ

つまり「紙の本ならAcrobatか代行、電子書籍ならキャプチャ方式のツール」という住み分けになります。

サイズの話:検索可能PDFは軽くならない

もうひとつ誤解されがちな点です。
「テキスト化したんだからファイルは軽くなるのでは」と思われることがありますが、検索可能PDFは軽くなりません。
元の画像を丸ごと抱えたまま、そこにテキストを足しているからです。
むしろ画像PDFより微増します。

どのくらい重いかというと、本1冊の画像PDFは解像度次第で数百MB、高解像度なら1GBを超えることもあります。
透明テキスト自体は数百KB程度なので、全体のサイズは実質「画像の重さ」で決まります。
軽さが欲しい場面では、次の使い分けの話につながります。

用途別・どのタイプを選ぶべきか

私の使い分けはこうです。

用途 選ぶ形式
漫画など、そもそも検索しないもの 画像PDF
勉強用の専門書 検索可能PDF
生成AIに読ませる テキスト / Markdown

漫画のようにそもそも検索しないものは、OCRの時間(CPUで本1冊30分〜1時間かかります)をかけるだけ無駄なので画像PDFで十分です。
勉強用の専門書は、見た目そのまま+検索の検索可能PDFが最適です。

意外かもしれないのが3つ目で、生成AIに読ませる用途なら、実はPDFという容れ物自体が不要です。
AIに必要なのは機械可読なテキストだけなので、OCR結果をテキストやMarkdownで出力してしまうのが正解です。
同じ本でも、検索可能PDFが数百MBのところ、Markdownなら1MB前後。
NotebookLMのように1ソース200MBの上限があるサービスでは、この差が「入るか入らないか」の決定的な違いになります。
しかもMarkdownなら章見出しの構造も持てるので、AI側が「どの章の話か」を掴みやすくなります。

つまり「検索可能PDFは万能の上位互換」ではなくて、人間が読む・書き込むためのフォーマットなんですね。
AI用にはテキスト/Markdown、人間用には検索可能PDF、と出し分けるのが今の私の運用です。

実務での判断に落とし込む

仕組みが分かったところで、よくある3つの判断に当てはめてみます。

判断1:自炊代行に出すとき、OCRオプションは付けるべきか。
後から検索したくなりそうな本(実用書・専門書・資料系)なら付ける価値があります。
納品時点でテキストレイヤーが入っているのが一番楽だからです。
一方、小説や漫画のように検索しない本ばかりなら、オプション分を節約して画像PDFで受け取る判断もあります。
なお、OCRなしで受け取った後でも、手元のツールで後からテキストレイヤーを足すことは可能です。

判断2:手持ちの画像PDFを全部変換すべきか。
全部やる必要はありません。
OCRは本1冊で30分〜1時間かかる重い処理なので、「検索したくなった本から、その都度」で十分です。
私は夜に変換を仕込んで寝る、という運用にしています。

判断3:これから作るなら、どの形で残すべきか。
おすすめは元画像(ページごとのPNG連番)を残しておくことです。
元画像さえあれば、画像PDF・検索可能PDF・Markdownのどれにも後から変換し直せます。
容れ物(PDF)より元データ、という考え方です。
OCRエンジンは年々良くなるので、数年後により高精度で作り直せる余地も残ります。

よくある疑問

Q. 検索可能PDFかどうか、見分ける方法は?

A. PDFを開いて、本文の文章をマウスでなぞってみてください。
文字が選択できれば(青くハイライトされれば)テキストレイヤーがあります。
何も選択できなければ画像PDFです。

Q. あとからテキストレイヤーだけ足せますか?

A. できます。
手元の画像PDFをOCR対応ツールに通せば、画像はそのままで透明テキストが追加されます。
kindle_shotにも既存PDFを読み込んで検索可能PDF化する機能(PDF読込タブ)があります。

Q. 検索でヒットした文字がハイライトされないことがあります

A. ツールによっては、透明テキストを文字単位ではなくページ単位など粗い位置精度で埋め込むことがあります。
その場合「どのページにあるか」までは分かりますが、該当語のハイライトはされません。
kindle_shotの出力もこのタイプです。

Q. OCRの精度はどのくらい期待していいですか?

A. エンジンと元画像の解像度次第ですが、誤認識は必ず残る前提でいてください。
運用としては「検索でヒットしない語もある」と割り切り、重要な語が拾えないときは別の言い回しでも検索してみるのが現実的です。
精度を上げたいなら、元画像を高解像度にする・OCR前の画像処理(拡大・コントラスト強調)を効かせる・規則的な誤認識を置換辞書で潰す、の3点が効きます。

Q. 縦書きの本でも大丈夫ですか?

A. エンジン次第です。
英語圏由来の汎用OCRは日本語の縦書きが苦手なものが多いので、日本語の書籍を扱うなら縦書き対応を明記しているエンジン(NDLOCR系など)を選んでください。

まとめ

いかがでしたか。
今回は「検索可能PDF」の仕組みを整理しました。

  • PDFには画像・テキスト・検索可能の3タイプがある
  • 検索可能PDFは、画像の下にOCRの結果を透明な文字(テキストレイヤー)として重ねた二層構造
  • 検索とコピペの質は裏側のOCR精度で決まる。見た目とは別物
  • 検索可能PDFは軽くならない。人間用は検索可能PDF、AI用はテキスト/Markdownが正解

自炊やPDF化の方針を考えるときの土台になればと思います。

この記事が誰かの役に立てばうれしいです。