こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
【Python】PDFファイルからテーブル情報抽出|事前準備
Pythonではtabula
というPDF内のテーブル情報を抽出できるモジュールがあります。今回はそれを用いてPDFからテーブルテキストを抽出します。
PDFファイルは、サンプルとしてこちらのPDFサンプルファイルを用います。ダウンロードして利用してみましょう。
Java
今回はpythonライブラリに加えてJavaの実行環境が必要となります。
Javaのインストールは(https://www.java.com/ja/download/help/download_options_ja.html)から実施できます。
tabula
PDFのテーブルテキストを抽出するためのPythonモジュールとして、tabula
モジュールも事前にインストールが必要です。コマンドラインから下記を実行し、インストールしておきましょう。
pip install tabula-py
【参考】PDFタスク自動化の学習におすすめの教材
Pythonを活用してPDFタスクの自動化手法を深く学びたい方向けに、おすすめの教材も併せてご紹介します。
【Python】PDFのテーブルテキスト取得
それでは実際にPythonを活用してプログラムを記述していきましょう!コード自体は非常にシンプルに記述できます。
import tabula
# PDFファイル
pdf_file = "sample.pdf"
# テキストテーブル取得
df = tabula.read_pdf(pdf_file)
dfを出力すると、下記のような結果が得られます。
# 出力結果
# [ 田中 90 78 67 21 256
# 0 佐藤 69 77 66 23 235
# 1 鈴木 99 70 54 46 269
# 2 山本 49 86 89 77 301
# 3 石田 59 40 82 86 267
# 4 太田 69 90 75 63 297
# 5 工藤 82 100 100 97 379]
引数
tabula.read_pdf()
メソッドを利用する際、第二引数以降に下記を用いると、お好みの出力形式でテーブルテキストが取得できます。以下代表的なものを示します。
ひな型コード
import tabula
# PDFファイル
pdf_file = "sample.pdf"
# テキストテーブル取得
df = tabula.read_pdf(pdf_file, # PDFファイル
pages='all', # 抽出ページ
guess=True, # 分析部分の変更有無
area="entire", # ページの部分指定
lattice=False, # 格子区切りがPDF内にある場合の対応
stream=False, # ストリームモード
password=None, # パスワード
)
引数
引数 | 概要 | デフォルト値 |
---|---|---|
pages | 抽出するページを指定(1,2,3,all) | pages=1 |
guess | ページ毎に分析する部分を変更するかどうか(True/False) | guess=True |
area | ページの分析部分指定(entire,top,left,right,bottom) | area=”entire” |
lattice | Excelシートのように格子区切りがPDF内にある場合、それを強制抽出 | lattice=False |
stream | ストリームモードでPDFを強制抽出 | stream=False |
password | PDFが暗号化されている場合、パスワードを渡す | – |
その他にも引数を詳しくみたい場合は公式ドキュメントをご確認ください。
【参考】Pythonで面倒な作業を自動化!手法一挙公開中!
当サイトでは日々面倒な作業をPythonで自動化する方法を多数配信しております。日々の作業が飛躍的効率化できること間違いなしですので、以下気になった記事があれば併せてご覧ください。