pythonでPDFをjpgやpng画像に変換(pdf2image)

スポンサーリンク
スポンサーリンク

pythonでPDFをjpgやpng画像に変換する方法

pdf2imageというモジュールを使う。
Popplerという外部ツールも必要。
Popplerは、PDFの閲覧用のマルチプラットフォームのライブラリ。

エラー表示

Unable to get page count. Is poppler installed and in PATH?
(ページ数を取得できません。popplerはインストールされていますか?PATHにありますか?)

pdfinfo.exeのあるフォルダにパスを通す必要がある。

poppler-windowsのダウンロード
https://github.com/oschwartz10612/poppler-windows/releases/

「poppler-22.01.0」フォルダを下記ディレクトリに移動させる

C:\Program Files (x86)

PATHを通す。
システム環境変数の編集を開く。

環境変数をクリック

システム環境変数のPathを選んで編集

「新規」を押して、先程移動したpopplerフォルダの中のbinフォルダまでのパスを追加する。

C:\Program Files (x86)\poppler-22.01.0\Library\bin

popplerの動作確認方法
コマンドプロンプトを開いて、pdfinfo -listencを実行する。

実行結果

>pdfinfo -listenc
Available encodings are:
.
..
ASCII7
Big5
Big5ascii
EUC-CN
EUC-JP
GBK
ISO-2022-CN
ISO-2022-JP
ISO-2022-KR
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9
KOI8-R
Latin1
Latin2
Shift-JIS
Symbol
TIS-620
UTF-16
UTF-8
Windows-1255
ZapfDingbats

以下を実行。pdf2imageはpipでインストールしておく。

from pdf2image import convert_from_path
images = convert_from_path('test.pdf')
images[0].save('out.png')

test.pdfと同じフォルダ内にout.pngファイルを出力することができた。
試しにout.png⇒out.jpgに変更して実行してみたら、jpgファイルが出力できた。
しかしこれだと解像度が低い。

convert_from_path()の第二引数に解像度を指定できる。

images = convert_from_path('test.pdf',350)

これで高解像度で画像化できた。

複数枚のPDFをすべてjpgやpng画像に変換する方法

配列imagesの長さをlen()で取得してforで回す。
.save()でimgフォルダにjpg画像として保存する。

from pdf2image import convert_from_path
images = convert_from_path('test.pdf')
for i in range(len(images)):
          images[i].save('img/img'+str(i)+'.jpg', 'JPEG')

参考サイト

PythonでPDFを画像に変換する(Windows10)
Winodws10にPDFツールのPopplerをインストールする方法と、pdf2imageをインストールする方法を解説します。PDFのページを画像に変換するサンプルコード付きです。
python
スポンサーリンク

コメント

タイトルとURLをコピーしました