Python : PDF表のExcel化、メモ
install tabula-py
PDFファイルから表を読み取るためには、テキストベースのPDFファイルからテキストを抽出するのではなく、表の構造を解析してデータを抽出する必要があります。これにはtabula-py
などの専用ライブラリが有効です。
!pip install tabula-py
!pip install JPype1
Javaのインストール
jre-1.8 インストール
jdk-21だけで良いかもだけど、備忘録で記載
環境変数
C:\Program Files\Java\jdk-21\bin
は、Java Development Kit (JDK) のバージョン21がインストールされた場所を示しています。このパスには、Javaの実行ファイルや開発ツールが含まれており、これをシステムの環境変数に追加する必要があります。
環境変数にこのパスを追加する手順は以下の通りです:
-
コントロールパネルを開く:スタートメニューから「コントロールパネル」を開きます。
-
システムとセキュリティに移動:コントロールパネルで「システムとセキュリティ」を選択します。
-
システムを開く:「システム」をクリックします。
-
システムの詳細設定を開く:左側のメニューから「システムの詳細設定」を選びます。
-
環境変数を開く:「詳細」タブの「環境変数」ボタンをクリックします。
-
PATH環境変数を編集:
- 「システム環境変数」セクションで「Path」を見つけて選択し、「編集」をクリックします。
- 「新規」ボタンをクリックし、
C:\Program Files\Java\jdk-21\bin
を入力して「OK」をクリックします。
-
全てのウィンドウを閉じて変更を保存:すべてのウィンドウで「OK」をクリックして閉じ、変更を保存します。
これでJDKのbin
ディレクトリが環境変数に追加されました。変更を有効にするために、コンピュータを再起動してください。再起動後、コマンドプロンプトでjava -version
を実行して、Javaが正しくインストールされていることを確認してください。
Pythonコード
import tabula
import pandas as pd
import tkinter as tk
from tkinter import filedialog
def pdf_to_excel_tabula():
# ファイル選択ダイアログを開く
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename(filetypes=[("PDF Files", "*.pdf")])
if not file_path:
return
# PDFファイルから表を読み取る
dfs = tabula.read_pdf(file_path, pages='all', multiple_tables=True)
# 読み取った表を一つのExcelファイルに保存する
with pd.ExcelWriter(file_path.replace('.pdf', '.xlsx')) as writer:
for i, df in enumerate(dfs):
df.to_excel(writer, sheet_name=f'Sheet{i+1}', index=False)
print(f"Excelファイルが保存されました: {file_path.replace('.pdf', '.xlsx')}")
pdf_to_excel_tabula()