目次
PDFをtextに変換したい。
大量のpdfファイルの中身をtext形式で利用したい。
ファイルを一つ一つ開いてコピー&ペーストしても良いが時間も無い
なんとか楽してpdfをtext化出来ないかなぁとgoogle先生で調べてみると
pdfをtextに変換するコマンドがある!
コマンド名はそのまんま"pdftotext"
早速使ってみる
pdftotextコマンドでpdfファイルをテキスト化
変換元ファイルの確認
まずは変換したいファイルの確認
[root@CentOS6 pdf]# ls -l 合計 12 -rw-r--r--. 1 root root 10524 4月 16 13:34 2016 input.pdf [root@CentOS6 pdf]#
拡張子は確かにpdf。実際にPDFファイルかを確認してみる。
PDFファイルであれば"PDF-1.x"(xは1〜7)のコメントが含まれるとの事
[root@CentOS6 pdf]# strings input.pdf|grep ^%PDF-1.[0-7] %PDF-1.3 [root@CentOS6 pdf]#
このへんのPDF構造については
itchynyさんがブログ”プログラムモグモグ”でPDFの構造を詳しく説明してくれています。
itchyny.hatenablog.com
itchynyさんにに感謝。しかし、すごい分量。尊敬します。
PDFファイルをテキストファイル化
PDFファイルをテキストファイルに変換してみる。 コマンド構文は
pdftotext インプットファイル アウトプットファイル
[root@CentOS6 pdf]# pdftotext input.pdf output.txt [root@CentOS6 pdf]# ls -l 合計 16 -rw-r--r--. 1 root root 10524 4月 16 13:34 2016 input.pdf -rw-r--r--. 1 root root 61 4月 16 14:01 2016 output.txt
変換したテキストファイルを表示してみる
変換したテキストファイルを表示してみる。
[root@CentOS6 pdf]# cat output.txt pdftotext input file 1 byte abcdefg 2 byte あいうえお [root@CentOS6 pdf]#
1バイト文字も2バイト文字もしっかり変換されている。
便利ですね。
pdftotext(poppler,poppler-utils)のインストール
もし、pdftotextコマンドがインストールされていなかった場合
poppler,poppler-utilsの2つのパッケージをインストールする事で利用可能になる。
試したところ,pdftotextコマンドはpoppler-utilsパッケージに含まれているため
popplerパッケージのインストールだけでは利用できない。
それぞれパッケージをyumでインストールした結果を記載するので参考にしてほしい
popplerのインストール
[root@CentOS6 pdf]# yum install poppler 読み込んだプラグイン:etckeeper, fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: mirror.premi.st * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package poppler.x86_64 0:0.12.4-5.el6_7.1 will be インストール --> 依存性の処理をしています: poppler-data >= 0.4.0 のパッケージ: poppler-0.12.4-5.el6_7.1.x86_64 --> 依存性の処理をしています: libopenjpeg.so.2()(64bit) のパッケージ: poppler-0.12.4-5.el6_7.1.x86_64 --> 依存性の処理をしています: liblcms.so.1()(64bit) のパッケージ: poppler-0.12.4-5.el6_7.1.x86_64 --> トランザクションの確認を実行しています。 ---> Package lcms-libs.x86_64 0:1.19-1.el6 will be インストール ---> Package openjpeg-libs.x86_64 0:1.3-11.el6 will be インストール ---> Package poppler-data.noarch 0:0.4.0-1.el6 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: poppler x86_64 0.12.4-5.el6_7.1 updates 556 k 依存性関連でのインストールをします。: lcms-libs x86_64 1.19-1.el6 base 100 k openjpeg-libs x86_64 1.3-11.el6 base 60 k poppler-data noarch 0.4.0-1.el6 base 2.2 M トランザクションの要約 ================================================================================ インストール 4 パッケージ 総ダウンロード容量: 2.9 M インストール済み容量: 14 M これでいいですか? [y/N]y パッケージをダウンロードしています: (1/4): lcms-libs-1.19-1.el6.x86_64.rpm | 100 kB 00:00 (2/4): openjpeg-libs-1.3-11.el6.x86_64.rpm | 60 kB 00:00 (3/4): poppler-0.12.4-5.el6_7.1.x86_64.rpm | 556 kB 00:00 (4/4): poppler-data-0.4.0-1.el6.noarch.rpm | 2.2 MB 00:03 -------------------------------------------------------------------------------- 合計 631 kB/s | 2.9 MB 00:04 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています etckeeper: pre transaction commit インストールしています : lcms-libs-1.19-1.el6.x86_64 1/4 インストールしています : poppler-data-0.4.0-1.el6.noarch 2/4 インストールしています : openjpeg-libs-1.3-11.el6.x86_64 3/4 インストールしています : poppler-0.12.4-5.el6_7.1.x86_64 4/4 etckeeper: post transaction commit Verifying : openjpeg-libs-1.3-11.el6.x86_64 1/4 Verifying : poppler-data-0.4.0-1.el6.noarch 2/4 Verifying : poppler-0.12.4-5.el6_7.1.x86_64 3/4 Verifying : lcms-libs-1.19-1.el6.x86_64 4/4 インストール: poppler.x86_64 0:0.12.4-5.el6_7.1 依存性関連をインストールしました: lcms-libs.x86_64 0:1.19-1.el6 openjpeg-libs.x86_64 0:1.3-11.el6 poppler-data.noarch 0:0.4.0-1.el6 完了しました!
poppler-utilsのインストール
[root@CentOS6 pdf]# yum install poppler-utils 読み込んだプラグイン:etckeeper, fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: mirror.premi.st * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package poppler-utils.x86_64 0:0.12.4-5.el6_7.1 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: poppler-utils x86_64 0.12.4-5.el6_7.1 updates 73 k トランザクションの要約 ================================================================================ インストール 1 パッケージ 総ダウンロード容量: 73 k インストール済み容量: 189 k これでいいですか? [y/N]y パッケージをダウンロードしています: poppler-utils-0.12.4-5.el6_7.1.x86_64.rpm | 73 kB 00:00 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています etckeeper: pre transaction commit インストールしています : poppler-utils-0.12.4-5.el6_7.1.x86_64 1/1 etckeeper: post transaction commit Verifying : poppler-utils-0.12.4-5.el6_7.1.x86_64 1/1 インストール: poppler-utils.x86_64 0:0.12.4-5.el6_7.1 完了しました!
まとめ
- Linuxであれば簡単にpdfファイルをテキストファイルに変換できる
- 変換は"pdftotext"コマンドを利用する
- "pdftotext"コマンドはpoppler,poppler-utilsパッケージに含まれる
- "poppler"パッケージのみではpdftotextコマンドは利用できない
試した環境
ゲストOS
[root@CentOS6 ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@CentOS6 ~]# uname -a Linux CentOS6.6 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
ホストOS
OS X El Capitan OS X 10.11.4(15E65) VirtualBox バージョン 5.0.16 r105871 Oracle_VM_VirtualBox_Extension_Pack-5.0.16-105871