こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
こんな方におすすめ!
- Pythonのtablaを用いたPDFから指定のテーブル(表)データを抽出する方法を解説!
 
目次
【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で自動化する方法を多数配信しております。日々の作業が飛躍的効率化できること間違いなしですので、以下気になった記事があれば併せてご覧ください。
【面倒なタスクをPythonで解決!】作業効率化の人気記事一覧
Excel操作の自動化
面倒なExcel操作をPythonで自動化する方法について解説中!Excelの「表作成」「計算処理」「グラフ作成」など様々なタスクが飛躍的効率化できます。
メール操作の自動化
「メール送信の自動化」「受信メールの解析」を中心とする自動化貢献記事を多数配信しています。業務効率化だけでなくマーケティングオートメーションにも役立つ内容です。
Webリサーチの自動化(スクレイピング)
Pythonによる「Webスクレイピング」技術を活用してインターネット上でのリサーチを効率化する方法について解説します。
【参考】Pythonとは?・実現できること
Pythonでできること・副業案件の探し方
「Pythonで実現できるお役立ち情報」を多数配信中!Python習熟者向けに「おすすめのPython副業・フリーランス案件の探し方」についてもご紹介してます。






