はやぶろ

俺やで

pypdfで画像の抽出

Pythonでautomationの勉強をしているため覚書.

PyPdfとは

オープンソースpythonライブラリ. PDFファイルに対していろんな操作ができる.  pypdf.readthedocs.io

多分PyPDF2からPyPDFに戻ったんだと思う. 

pip install pypdfで利用可能

最初の躓き

なぜかModuleNotFoundErrorが出てpypdfがインポートできない. ドキュメントのとおりにインストールしたのだが....?

原因

ライブラリのインストールの箇所が読み込まれていないらしい. Pythonに関しては未だ無知なのでこちらをまるまる参考にした.

qiita.com

import sys
sys.path.append("/usr/local/lib/python3.9/site-packages")

本当にこの記述だけで動くようになった. ドキュメント通りにやったのに差異があるのが悔しい.

実装

実は画像を抽出するのはドキュメントのコードを真似すればいいだけなので簡単. 一応CLIでファイル名とページ番号を指定できるようにしてみた. GUIもつければ楽しいかもしれないが, 自分用なので....

import sys
sys.path.append("/usr/local/lib/python3.9/site-packages")
import pypdf
from pypdf import PdfReader
name = input('input your file name: ')
reader = PdfReader(name)
num = input('Which page do you want to look into? : ')
num= int(num)
page = reader.pages[num]

count = 0

for image_file_object in page.images:
    with open(str(count) + image_file_object.name, "wb") as fp:
        fp.write(image_file_object.data)
        count += 1

こんな感じ. pdf限定なので拡張子はjoinすればよかったかもしれないが, それはそれで紛らわしい. pyodfではいろんなことができるっぽいので遊び倒したい.