【Python・tabula】PDFファイルから表テーブルテキストを抽出する方法

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

PDFから指定のテーブル(表)データを抽出したい」という要件について、本記事ではPythonのtabulaライブラリとJava環境で実現する方法を解説します。

目次

【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”
latticeExcelシートのように格子区切りがPDF内にある場合、それを強制抽出lattice=False
streamストリームモードでPDFを強制抽出stream=False
passwordPDFが暗号化されている場合、パスワードを渡す

その他にも引数を詳しくみたい場合は公式ドキュメントをご確認ください。

【参考】Pythonで面倒な作業を自動化!手法一挙公開中!

当サイトでは日々面倒な作業をPythonで自動化する方法を多数配信しております。日々の作業が飛躍的効率化できること間違いなしですので、以下気になった記事があれば併せてご覧ください。

【面倒なタスクをPythonで解決!】作業効率化の人気記事一覧




【参考】Pythonとは?・実現できること

この記事が気に入ったら
フォローしてね!

目次