2015/11/18

PythonでPDFをさわってみる

ユーザーのハードウェアトラブルで現地に行くとすでに治っている状況を
1日で3度も遭遇したやまやまです。


第21回岡山Python勉強会(通称:おっPy)で発表した内容です。

今回は久々に元?主催者のたけとも(@soudai1025)参加のもと開催しました。
(ホント主催者に久々に会った気がする)

お題目は、PythonからPDFをさわると言った内容で話をしました。

今回の勉強会ネタを考えていた時に仕事で定型的(書式の決まったような)なPDFから
情報を取り出せると何となく仕事でラクができそうな気がしたから…と言った不順な
動機から調べたのが始まり

使ったモジュールは、

Pdfminer(http://www.unixuser.org/~euske/python/pdfminer/)

どうも日本人の方が作られているようで日本語も対応しているモジュール。
できることは、PDFファイルの中にある文字列をテキストファイルに出力したり、
埋め込まれた画像を抽出したりができたりするとのこと。


その時のスライド




インストールはサイトからダウンロードしてきたZipファイルを解凍し、
setup.pyをinstallコマンドで起動するだけ。

これで動くのだが日本語が文字化けするので日本語の環境設定が必要とのこと、
実はここがハマりどこでmacだとmakeコマンドcmapを作ればいいのだがwindowsでは
makeが使えないのでフォルダを作成後、コマンドを発行するがその際のパスを
絶対パスで設定する必要がある(環境によってインストールフォルダが違う場合に
変える必要がある)

powershellでやっていて、ここでエラーが出て気づくまでに結構かかった。
(エラーを読めば確かに指定先が無いと怒られていた…)

実際に触ってみるとコマンド自体も2つ(txt変換用モジュールとデバッグ用モジュール)
なのでかなりシンプル。
文章のみを抜き出したい時がさくっと使えるかと。
縦書きも対応しているようなのだが今回は確認までできていない(出力されるとどうなるんだ?)

所感としては、
ホントさくっとテキストを出力したいときは使えるかと思った。ただ細かいことを
やろうとするとPDFの構造について知識が無いと厳しいかと。

あとは、元のPDFがどういった形で作られているかによりできる/できないことが別れる
ところが大きいのではないかな(スキャナでスキャンしたPDFは、画像なので当然textの
抽出ができないとか)

といったところで今回はここまで。
次回は、なんのネタで話をしようかなと思っているやまやまでした。