PythonでPDFから表データを抽出する方法

本ページはプロモーションが含まれています

Pythonは、データ抽出やデータ分析において非常に強力なツールです。無料で強力なツールなのでどんどん使い倒しましょう。

今回はPDFからの表データを抽出してCSVファイルやエクセルファイルを作成する方法をコードと一緒に紹介します。

Pythonの必要なライブラリ

PythonでPDFからデータを抽出するライブラリは以下のものを使用します

  1. tabula-py: PDF内の表を読み込むためのライブラリ
  2. pandas: データの操作や分析を行うためのライブラリ

これらをインストールするには、以下のコマンドを実行します:

bash

pip install tabula-py pandas

なお、Google collaboratorでははじめからインストールされていて環境が整っているので、こちらを使う方法もオススメです

Javaのインストール

Java Downloads for All Operating Systems

OS毎(Windows,Mac, Linux)にダウンロード可能ですが、Windows環境ではWindows Offline(64bit)をダウンロードしてインストールします

インストールの確認

コマンドプロンプトやターミナルで以下のコマンドを実行します、インストールされていればバージョン情報が表示されます

java -version

Javaの環境変数PATHの設定

Javaを実行できるように実行可能ファイル(java.exe)が環境変数PATHに含まれるように設定します。いわゆる、PATHを通すということです。

環境変数の設定方法:

  • Windowsの場合、コントロールパネルの「システム」→「システムの詳細設定」→「環境変数」でPATHを編集できます。Javaがインストールされているディレクトリ(通常は「C:\Program Files\Java\jdk[バージョン]\bin」)をPATHに追加してください。
  • macOS/Linuxの場合、ターミナルで.bashrc.bash_profile (または使用しているシェルに応じた設定ファイル)を編集し、export PATH=$PATH:/path/to/java/bin の形式でJavaのパスを追加します。

コンピュータを再起動することで設定変更が反映されるようになります

JPypeのインストール

上記でJavaのインストールと実行が可能ですが依存関係のエラーがでることがありサブプロセスを使用することがありました

Error importing jpype dependencies. Fallback to subprocess. No module named 'jpype

JavaプログラムをPythonから直接呼び出して実行することを可能とするライブラリJPypeを利用します

pip install JPype1

PDFファイルからの表データの抽出

以下のステップに従って、PDFから表データを抽出します:

ステップ1: 必要なライブラリのインポート

まず、必要なライブラリをインポートします。

python

import tabula import pandas as pd

ステップ2: PDFファイルの読み込み

Tabulaを使用してPDFファイルを読み込み、表データを取得します。例えば、example.pdfというファイルからデータを抽出する場合、以下のコードを使用します:

python

file_path = 'example.pdf' tables = tabula.read_pdf(file_path, pages='all', multiple_tables=True)

このコードは、PDFファイルのすべてのページから複数の表を読み込みます。

ステップ3: データの操作と保存

読み込んだ表データはPandasのDataFrame形式で返されます。これにより、データの操作や分析が容易になります。以下はデータをCSVファイルに保存する例です:

python

for i, table in enumerate(tables): table.to_csv(f'table_{i}.csv', index=False)

PythonでPDFの表をcsvに

PythonでPDF内の表(テーブル)をcsvやexcelに変換する手順は2ステップです。

ステップ1. PDFから表をpandasのDataFrameとして抜き出す
ステップ2. DataFrameをcsvやexcelとして書き込む

まとめ

PythonとTabula-py、Pandasを使用してPDFファイルから表データを効率的に抽出する方法を紹介しました

  • この記事を書いた人

drーharv

こんにちは、Dr. Harv です。専門医としてのキャリアを積む一方で、資産運用、副業、ポイ活にも取り組んでいます。 このブログ「dr-harv.com」では、日々の日常、投資の知見、趣味など幅広いトピックを扱っています。より良い未来につながることをコンセプトにしています。読者の皆様にとって何か役立つ情報を提供できれば幸甚です。

-Python