みなさん、こんにちは。
突然ですが、みなさんは普段会社や学校で配布される資料の、ファイル形式をご存知でしょうか?
資料をプリントアウトして配布するにしても、PDF形式の場合が多いと思います。
そんな中、PDFファイルというのは編集するのが少し面倒なことってありませんか?
編集するにしても、PDFから文字を一気に抽出するにしても、なんとなく不便さがあると思います。
そこで今回は、PDF形式のファイルから文字列のみを抽出する方法をご紹介します。
さらに文字列を抽出する方法は、エンジニアらしく自作コマンドにしてしまおうという一石二鳥的な記事にしていこうと思います。
エンジニア以外の方は以下の記事で手動ではありますが、割と手軽にPDFからテキストのみを抽出する方法があるので、チェックしてみてください!
この記事を完読した頃には、コマンド一発でPDFファイルから文字列のみを抽出できるようになっているはずです。
また、今回はMacOS環境を前提に話を進めていきますが、WindowsやLinuxでも同じツールを使うことができるので、ぜひ読み替えて挑戦してみてください。
PDFからテキストを抽出する方法
手順1:popplerをインストール
まず、最初にPDFファイルを操作するために、「poppler」というフリーのライブラリをインストールしましょう。
今回なぜ「poppler」というライブラリが必要なのかというと、popplerの「pdftotext」という機能を使えるようにするためです。
この「pdftotext」が、今回のPDFからテキストを抽出する役割を担うわけです。
それでは、早速以下のコマンドを実行して、「poppler」をインストールしてみましょう。
インストールができましたら、「pdftotext」コマンドが実行できる環境になりましたので、次の手順へ進みましょう。
手順2:コマンドを作成する
さて次は、PDFからテキストを抽出するコマンドを作成していきましょう。自作コマンドです!
コマンドを作ると言っても、難しいことはほぼないと思います。ですので、肩の力を抜いて余裕を持ち進めていきましょう。
先ほどpopplerをインストールしたことにより、お使いのPCで「pdftotext」というコマンドが使えるようになっているはずです。
このコマンドを操作すると、PDFファイルからテキストのみを抽出すことができるのですが、少し長いコマンドを打ち込む必要があります。
そこで、今回は自作コマンドと称して、短いコマンドで「pdftotext」コマンドと同じ操作ができるように設定しようというわけです。
それではまず、今回コマンドを作成するディレクトリに移動しましょう。
移動するディレクトリは/usr/local/bin
です。
移動できたら以下のような操作を順にやってください。
上のコマンドを軽く説明しますと、まず今回作成するコマンド「pdfextract」のファイルを作成しました。
「pdfextract」コマンドが実行された時に、実行される「pdftotext」コマンドをpdfextractファイルの中に記入しています。
pdftotextコマンドの内容も一応まとめておきます。どのような操作が行われているか、わからないまま使うのは怖いですからね。
オプション | オプション説明 |
---|---|
-nopgbrk | ページ間にページ区切りを挿入しない |
-layout | オリジナルの物理レイアウトを維持する |
-raw | 縦書きPDFを整形 |
– | 出力先を標準出力に設定 |
もし、縦書きのpdfをほとんど開かず、かつ画像などが含まれていてpdfの描画に対応する形でテキストを出力したい場合は、-raw
オプションは外した方がいいかもしれません。
手順3:ファイルのパーミッションを設定
ここまでできましたら、「pdfextract」コマンド(ファイル)のパーミッションを755に設定します。
以下のコマンドを実行して、ファイルに権限を与えましょう。
パーミッション755というのは、どういう状況かざっくりいうと、「所有者は読み出し+書き込み+実行権限があり、他のユーザーは書き込み権限以外もっている」という感じです。
「書き込みできるのは、所有者だけだよ」ということです。
chmodコマンドを今のうちに再確認しておきたい方は、以下の記事をどうぞ。
手順4:実行確認
最後に、サンプルのPDFファイルを用意して、いざ実行してみてください。
実行方法は以下のようにやればいいかと、パイプ(|)で「lessコマンド」を設定したので、少しずつテキストが出力されると思います。
また、PDFファイルをテキストファイルとして出力したいという方は、上記に示した(>コマンド)を使ってみてください。
まとめ
今回は、PDFファイルからテキストを抽出するコマンドを作成するという、かなりマニアックでニッチな記事になってしまいましたが、いかがだったでしょうか?
今まで自作コマンドを作ったことがない方は、これを機にルーティンワークなどをコマンドにしてみるのはどうでしょうか?
自動化・簡略化できると便利なことは、意外と日常生活に溢れています。
PDFからテキストのみを抽出することで、編集しにくいPDF形式ファイルを、編集しやすいテキスト形式ファイルに変換することも「意外と便利なことじゃないかな」と個人的の思っています。
本日も読んでいただきありがとうございました。
コメントを残す