OCRで作成されたPDFから透明テキストを抽出・可視化 2026年6月9日更新

 

PDFの加工はPythonでライブラリーを利用して行うことが定番のようだがWindows用既成CUIプログラムを使ったバッチファイルを作ってみた。使用するプログラムは qpdfsdCPDF の3つ。

PDFから抽出と書いたが やっていることは透明テキスト付きPDFから画像を削除して透明テキストを残すこと。

  1. qpdf --qdf --object-streams=disable を使ってPDFをテキストエディターで編集可能なQDF形式に変換。
  2. sd でQDF中の "/XObject" 等を削除。
  3. その状態ではPDFとしては不正な状態なので cpdf -squeeze を使ってファイルを修復・圧縮を行うという簡便な方法で透明テキストPDFを作成。フォントが埋め込まれていればそのまま残る。

何らかのツールを使ってPDFから画像を抽出して自分の好きなように圧縮して画像のみのPDFを作成し、
cpdf -combine-pages 画像.pdf 透明テキスト.pdf -o 出力.pdf
として透明テキストを重ねてPDFを作り直すことができる。

可視化するバッチファイルがやっていることは・・・

  1. qpdf --qdf --object-streams=disable を使ってPDFをテキストエディターで編集可能なQDF形式に変換。
  2. sd でQDF中の不可視にしている部分を書き換え。
  3. cpdf -squeeze を使ってファイルを修復・圧縮してPDF化。

OCRソフトによって不可視の方法は違っているので、 2. はいくつかに対応させ、手元にあるOCRソフトいくつかで動作確認した。可視化できないものがあれば どうすればよいか調べてバッチファイルの書き換えが必要。

可視化した透明テキストPDFは、OCRの精度が高く、小説等文章中心で、表示も気にならなければ、極小の書籍ファイルコレクションとして保存できるかも。PDFリーダーは意外と優秀で行をまたいで検索もできるし、SumatraPDF ではページをまたいでの検索もできる(ただしヘッダー・フッター・ノンブルは取り除く必要あり)。

バッチファイルの引数はいずれも
バッチファイル 入力ファイル 出力ファイル

※qpdf.exe と sd.exe と cpdf.exe にはパスを通すかバッチファイルをフルパスに書き換えて下さい。

 

<ホーム>