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

こんにちは、Kosei(@kay_diacc2)です!

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

目次

事前準備

Pythonでは「tabula」というPDF内のテーブル情報を抽出できるモジュールがあります。今回はそれを用いてPDFからテーブルテキストを抽出します。

PDFファイルは、サンプルとしてこちらのファイルを用います。ダウンロードして利用してみましょう。

Java

今回はpythonライブラリに加えてJavaの実行環境が必要となります。

tabula

PDFのテーブルテキストを抽出するためのPythonモジュールとして、tabulaモジュールも事前にインストールが必要です。コマンドラインから下記を実行し、インストールしておきましょう。

pip install tabula-py

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()メソッドを利用する際、第二引数以降に下記を用いると、お好みの出力形式でテーブルテキストが取得できます。以下代表的なものを示します。

スクロールできます
引数概要デフォルト値
pages抽出するページを指定(1,2,3,all)pages=1
guessページ毎に分析する部分を変更するかどうか(True/False)guess=True
areaページの分析部分指定(entire,top,left,right,bottom)area=”entire”
latticeExcelシートのように格子区切りがPDF内にある場合、それを強制的に抽出(True/False)lattice=False
streamストリームモードでPDFを強制抽出stream=False
passwordPDFが暗号化されている場合、パスワードを渡す

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

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

本記事をシェア!
URLをコピーする
URLをコピーしました!
目次
閉じる