久幸繙文

PDF内のテキストや画像を抽出する方法のまとめ

はじめに

コンピュータ間で交換される電子文書において、PDFはHTMLに次いで多い規格だと思う。

しかしPDFデータは、そのまま閲読したり印刷したりする分には便利であるが、内容を自分の手で加工するのは難しい。原ファイルが入手出来れば最良であるが、何らかの理由でそれが出来ない場合、自分の手でデータを抽出し、取得し直す必要がある。

本記事は、その方法についてまとめたものである。

事前に確認する事項

PDFについての基本的な知識はPortable Document Format - Wikipediaに譲るとして、まずは事前に確認しておく事が二点ある。

Acrobat Readerは最新のものか

最新の版は公式サイトにて無償で入手出来る。

PDFは動作仕様上セキュリティホールの原因になり得るため、本件に関わらず常に最新版を導入される事を推奨したい。最近のは動作も軽快になっており、随分使いやすくなった。

内容のコピーが許可されているか

Web上に公開されているデータではあまり見かけないが、社内文書などでは内容のコピーが禁止されている場合が多いと思う。この場合は本記事の方法は使えないため、データの作成元に問い合わせなければならない[1]

許可されているかどうかの確認は【ファイル】 →【プロパティ】を開き【セキュリティ】のタブを見れば判る。『内容のコピー』が『許可』であれば問題ない。

表示の例

[註.01] 片っ端からPrintScreenで画像化する方法もあるにはあるが、非常に工数がかかる事を覚悟しなければならない。

テキストを抽出する手順

データがイメージデータの場合

スキャナで取得したイメージをそのままPDF化したものや、画像ソフトによって作成されたPDFではテキスト情報がPDF内に保存されていないため、直接抽出することは出来ない。この場合は『OCRソフト』という別のソフトウェアを使って画像をテキスト化しなければならない。

OCRソフトにはAdobe社による「Adobe Acrobat」の他、パナソニック ソリューションテクノロジー社による「読取革命」などがあり、スキャナなどに附属ソフトとして付いてくることもある。またフリーウェアとしてクセロReader ZEROというものもある[2]ので、各位参考にされたい。

[註.02] 筆者は使ったことが無いので、性能や信頼性等の評価は出来ない。

テキストデータがある場合

一部のテキストのみ抽出する

【ツール】→【選択とズーム】→【選択ツール】にチェックを入れ、抽出したい文章にカーソルを持って行く。Windowsの場合カーソルが「I」になればドラッグで抽出範囲を指定し、【編集】又は右クリックで【コピー】を選択する。

もしカーソルが「I」にならない場合、そこはテキストに見えて実際には画像データしか入っていないため、前述のOCRをかけなければならない。

表示の例

文書全体のテキストを抽出する

【ファイル】→ 【テキストとして保存】で保存すれば良い。

無償で配布されているAcrobat Readerではテキスト形式でしか保存出来ないが、Adobe Acrobatをインストールした環境ではMicrosoft Wordやリッチテキスト形式でも保存出来る。勿論、この場合も画像データしか入っていない場合は利用出来ない。

画像を抽出する手順

基本的な方法

【ツール】→【選択とズーム】→【スナップショットツール】にチェックを入れ、選択したい範囲をドラッグで指定する。ドラッグを離した時点でコピーされるが、再度右クリックして【選択したグラフィックをコピー】を選択してもコピー出来る。

またAdobe Acrobatをインストールした環境では「名前を付けて保存」で直接画像データとして保存することも出来る。

解像度を指定して抽出する方法

スナップショットツールによってコピーされる画像の大きさは、標準では表示されている倍率と解像度に依存する。従って、文書全体をコピーしようと低倍で選択した場合、文字が潰れて読めないデータがコピーされる事になる。

解像度をしっかり指定して抽出したい場合、【編集】→【一般】の「スナップショットツール画像に固定解像度を使用」にチェックを入れ、必要な解像度を指定してやれば良い。

表示の例

一般に、解像度の目安として、Web表示用であれば72dpi[3]、一般向けの印刷物であれば350dipあれば十分と言われている。より詳細な情報については解像度と画素数のお話実用解像度などを参考されたい。

なお、PDF内の画像データをコピーする場合、元データよりも高い解像度でコピーしても無意味なので注意。

[註.03] Macの標準のディスプレイ出力の解像度。Winの場合96dpiが標準となっている。

上手くコピー出来ない場合

例えば、A4文書の1枚全体を解像度350dpiでコピーしようとなると、その大きさはおよそ4090×2890ピクセルにもなる。それに見合うメモリ容量が必要である事は言うまでもないが、場合によってはメインメモリが十分であってもコピーが上手くいかない事がある。

Windowsであれば、一番考えられるのは「デスクトップヒープ」というOSがシステム用に確保しているメモリ領域の枯渇。この場合「クリップボードのエラーです」と言った旨のダイアログが表示される。

対処法としては解像度やコピーする範囲を減らすか、もしくはレジストリ「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems」内にある「Windows」の値「SharedSection=1024,3072,512」の「3072」(3MB)を「6144」(6MB)に増やせば改善される可能性がある。

但しレジストリの操作は、少なくともレジストリの意味を理解している者が自己責任に基づいて行うこと。詳細はプログラム起動時のシステムリソース不足を解消する - デジタル - 日経トレンディネットを参照されたい。

レジストリを操作する自信が無く、またシステムが不安定になったら困る人は、一部のクリップボードの拡張ツールにメモリを操作する機能があるため、そちらの導入を検討されたい。

久樹 輝幸