PythonでPDFからjpeg画像を抽出する方法

PythonでPDFからjpeg画像を抽出する方法

0.English sample

Extract jpeg from PDF using Python.
https://github.com/patch0000/Python3-PDF2TXT-sample

1.PythonでPDFからjpeg画像を抽出する方法まとめ

・PythonでPDFからjpeg画像を抽出するサンプルコードの紹介
・jpeg以外の画像はpdfminerが非対応
・PDFの回転や結合はPyPDF2で実現可能

2.pdfminerを使ってPDFからjpeg画像を抽出する方法

PythonでPDFからテキストを抽出する方法は、日本語で書かれているページにも関わらず、アメリカ、イギリス、ギリシャ、ベルギー、スウェーデンなど世界中から多くのアクセスがある。やはりPythonでのPDFの取り扱いに苦戦するのは私だけではなかったのだな、との思いと同時に世界の人から見られるのに中途半端なままで放置するのも躊躇われたので

1)PDFから画像の抽出(jpegフォーマットのみ)
2)LtFigureはLtFigureを含むときがあるようなので再帰的に確認するように修正

したものをGithubに再アップ。
https://github.com/patch0000/Python3-PDF2TXT-sample

arxivsからダウンロードした1000を超える人工知能関連論文PDFに対して「エラーを吐かずに何らかのテキストを抽出できている事」までは確認済。

1)はpdfminer本体がjpegにしか対応していないための制限で、他の画像フォーマットも抽出できるようにするためには、pdfminer本体を改良する心意気が必要。単純に画像が格納されているのではなく、ZLIBで圧縮された何かが格納されているケースなどもあるようなのでチャレンジ精神溢れる方は是非ともチャレンジして頂ければと思う。

Python程メジャーなスクリプト言語でPDFを扱うライブラリが残念な事になっているのは意外ではあったが、敢えてPythonを使わずとも他のプログラム言語やWebアプリ、商用ツール、様々な手段でPDFは扱う事が出来るので何が何でもPythonでPDFを扱おうとこだわる人がいないのと、Python2.xからPython3.xへの移行に伴う混乱が重なっているのかもしれない。

なお、昨年出版された良書と聞いているオライリーの本、

「退屈なことはPythonにやらせよう」――ノンプログラマーにもできる自動化処理プログラミング

でもPythonでPDFを扱う方法が書かれているようだが、そこではpdfminerではなくPyPDF2と言うモジュールを使っているそうです。PyPDF2は日本語対応がイマイチとも聞いていますが、PDFからページの抽出、結合、回転などができるらしいので場合によってはそちらを使う方も検討するとよろしいかもしれません。

3.PythonでPDFからjpeg画像を抽出する方法まとめ

1)github.com
mstamy2/PyPDF2

2)oreilly.co.jp
退屈なことはPythonにやらせよう――ノンプログラマーにもできる自動化処理プログラミング