業務効率化・自動化の事例として、PythonでPDFを読み込む方法を解説します。
Pythonでは外部ライブラリを使用することで、PDFを読み込んで様々な操作をする事が可能です。
操作できる例として、テキスト抽出、画像取得、目次取得、ページ毎に分割、複数ファイルを結合などがあります。
PDF用ライブラリ一覧
PythonでPDFを操作するライブラリはPyMuPDF
, PyPDF2
, PDFminer
などがあります。
各ライブラリの特徴をまとめると以下のようになります。
日本語のテキストを抽出したい場合や、画像を抽出したい場合は PyMuPDF
がおすすめです。PyPDF2
では日本語に対応していないため文字化けしてしまいますし、PDFminer
はコードが長くなってしまいます。(PyMuPDF 6行:PDFminer 17行)
ファイルの結合や分割などのファイル操作を行いたい場合は PyPDF2
の使用をおすすめします。
サンプルファイル
ここではサンプルファイルとして、統計局の『高等学校における「情報II」のためのデータサイエンス・データ解析入門』の第1章テキストを利用させていただきます。
ファイル名は sample.pdf
としています。
PyMuPDFで読み込む
PyMuPDFで読み込む方法です。
個人的におすすめのライブラリです。
ライブラリのインストール
インストール:必要
PDFを読み込みテキストを抽出する
以下がサンプルプログラムです。
1 2 3 4 5 6 7 8 9 10 11 | # ライブラリ設定 import fitz # PDFを読み込む filename = 'sample.pdf' doc = fitz.open(filename) # 1ページずつテキストを抽出して出力 for page in range(len(doc)): text = doc[page].get_text() print(text) |
– 1 –
第 1 章
データサイエンス(機械学習のアルゴリズム)による
データ解析が社会にもたらす変化
はじめに(社会における変化)
社会における技術の進化とデータサイエンスの活用
人工知能(AI)、ロボティクスなどをはじめ、技術がめざましい進歩を遂げ、私たちの生活に大きな変化を与え
ています。
PyMuPDFでPDFを操作する方法は以下の記事を参照してください。
・関連記事:PythonでPDFのテキストを抽出する(PyMuPDF)
・関連記事:PythonでPDFの画像を抽出する(PyMuPDF)
PyPDF2で読み込む
PyPDF2でPDFを読み込む方法です。
このライブラリでは日本語のテキストは文字化けして抽出できませんが、結合や分割などのファイル操作は簡単にできます。
ライブラリのインストール
インストール:必要
PDFを読み込みテキストを抽出する
以下がサンプルプログラムです。
1 2 3 4 5 6 7 8 9 10 11 | # ライブラリ設定 import PyPDF2 # PDFを読み込む filename = 'sample.pdf' reader = PyPDF2.PdfFileReader(filename) # テキストを抽出する for page in range(reader.numPages): text = reader.getPage(page).extractText() print(text) |
結果は以下のように文字化けしてしまい、抽出できません。
– 1
– 1
(
)
AI
1
×AI
AI
/Ü 5G
PyPDF2でPDFを操作する方法は以下の記事を参照してください。
・関連記事:PythonでPDFファイルを結合する(PyPDF2)
・関連記事:PythonでPDFファイルを分割する(PyPDF2)
・関連記事:PythonでPDFのページサイズを取得(PyPDF2)
PDFminerで読み込む
PDFminerでPDFを読み込む方法です。
コードが長くなるため、個人的におすすめはしません。
ライブラリのインストール
インストール:必要
PDFを読み込みテキストを抽出する
以下がサンプルプログラムです。
PDFの読み込みは標準関数openのバイナリモードで読み込みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # ライブラリ設定 from pdfminer.pdfinterp import PDFResourceManager from pdfminer.converter import TextConverter from pdfminer.pdfinterp import PDFPageInterpreter from pdfminer.pdfpage import PDFPage from pdfminer.layout import LAParams from io import StringIO # PDFを読み込む filename = 'sample.pdf' pdf = open(filename, 'rb') # テキスト抽出のための準備 outpdf = StringIO() rmgr = PDFResourceManager() lprms = LAParams() device = TextConverter(rmgr, outpdf, laparams=lprms) iprtr = PDFPageInterpreter(rmgr, device) # ページを読み込む for page in PDFPage.get_pages(pdf): iprtr.process_page(page) # テキストを抽出して出力 text = outpdf.getvalue() print(text) |
出力結果です。
– 1 –
第 1 章
データサイエンス(機械学習のアルゴリズム)による
データ解析が社会にもたらす変化
はじめに(社会における変化)
社会における技術の進化とデータサイエンスの活用
人工知能(AI)、ロボティクスなどをはじめ、技術がめざましい進歩を遂げ、私たちの生活に大きな変化を与え
ています。
PythonでPDFを読み込む方法を解説しました。
PDFを読み込むライブラリを特徴に応じて使い分けて、自動化を上手に行いましょう。