PythonでPDFを画像に変換する(Windows10)
Windows10でPythonを使ってPDFを画像に変換するために、Windows10にPopplerとpdf2imageをインストールします。
目次
PythonでPDFを画像に変換するには
標準モジュールでは変換できないので、pdf2imageというモジュールを使って変換します。
pdf2imageモジュールは、変換の際にPopplerという外部ツールを呼び出します。つまり、pdf2imageモジュールはPopplerのインターフェースになるわけです。
Popplerはpdf2imageモジュールとは別物ですので、Popplerとpdf2imageの両方をそれぞれインストールする必要があります。
Popplerとは
Poppler というのは、PDFの閲覧用のマルチプラットフォームのライブラリです。本投稿時点ではバージョン21で、GPLv2ライセンスです。
マルチプラットフォームなので、Windows用のものが存在します。ソースファイルが配布されているのですが、ビルド済みのものも公開されています。
Popplerのインストール
今回は、PyPlのpdf2imageのページでおすすめされているビルドをインストールします。
まず、こちらのサイト からビルド済みのアーカイブファイル(ZIPファイル)をダウンロードします。
次に、ダウンロードしたZIPファイルを展開して、適当なフォルダにコピーします。ここでは、C:\Program Files (x86)にコピーしました。
そして、binというサブフォルダをPATHに追加します。なじみがない人も多いと思いますので、ここでは少し詳しく解説します。
Windows10では、検索欄にpathと入力するとコントロールパネルのシステム環境変数の編集という項目がタスクバーに表示されます。それを選択すると、システムのプロパティダイアログが開きます。
その中の「環境変数」をクリックすると、環境変数のダイアログが開きます。
環境変数ダイアログでpathという項目を選んで、「編集」をクリックすると、環境変数を編集するダイアログが開きます。
このダイアログで「新規」をクリックして、popplerをコピーしたディレクトリにあるbinフォルダを追加します。
試しにpopplerを動かしてみます。
popplerはいくつかのツールの集合体です。まずは、pdfinfo.exeを使ってみます。
コマンドプロンプトを開いて、pdfinfo -listencを実行すると、下記のように表示されます。
C:\>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
このコマンドは利用可能なエンコードを表示するものですが、リストの内容を見ると日本語はこのままで使えそうですね。
では、PDFをPNGファイルに変換してみましょう。
変換の元になるPDFはこんな感じです。当サイトのあるページを印刷したものです。広告の部分は、印刷後に塗りつぶしました。
popplerのコマンドラインプログラムでPDFをPNGに変換するには、下記のようにします。
> pdftoppm -f 1 -l 1 -png test.pdf test.png
変換したファイルはこのようになります。日本語が日本語でレンダリングされてますね。
pdf2imageのインストール
pipを使ってpdf2imageをインストールします。
> pip install pdf2image
pdf2imageを使ってみます。コードはこんな感じです。
from pdf2image import convert_from_path
images = convert_from_path('test.pdf')
images[0].save('out.png')
先ほどのPDFファイルを画像に変換して、最初のページをPNGファイルとして出力するプログラムです。
正しく出力されました。
公開日
広告
Pythonで画像処理カテゴリの投稿
- Python (Pillow)でグラデーション画像を作る
- PythonでGIFアニメを作る(PILでファイルをつなげる編)
- PythonでOpenCVの画像データをMatplotlibで表示する
- PythonでPDFを画像に変換する(Windows10)
- PythonでPSDファイルをJPEGやPNGに変換する
- Pythonでカラー画像をグレイスケールに変換する(OpenCV編)
- Pythonでフォルダ内に同じ画像がないか検索してみた
- Pythonでマスク画像を作る方法(3選)
- Pythonで図形の外接矩形を描く(OpenCV編)
- Pythonで図形の輪郭の大きさを調べる(OpenCV編)
- Pythonで画像の余白を削除する(OpenCV編)
- Pythonで画像の余白を削除する(Pillow編)
- Pythonで画像の大きさやフォーマットを調べる(Pillow編)
- Pythonで画像の減色をする
- Pythonで画像をトリミングする(Pillow編)
- Pythonで画像を他の画像にペーストする(Pillow編)
- Pythonで画像を回転する(Pillow編)
- Pythonで画像を拡大縮小(リサイズ)する(Pillow編)
- Pythonで画像を読み込み、表示し、保存する(OpenCV編)
- Pythonで画像を読み込み、表示し、保存する(Pillow編)
- Pythonで画像を2値化する(OpenCV編)
- Pythonで記号の輪郭を検出する(OpenCV編)
- PythonとOpenCVで画像をグレースケールに変換してみた
- PythonとOpenCVで画像をネガポジ反転してみた