LoginSignup
0
2

Python : PDF表のExcel化、メモ

Posted at

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の実行ファイルや開発ツールが含まれており、これをシステムの環境変数に追加する必要があります。

環境変数にこのパスを追加する手順は以下の通りです:

  1. コントロールパネルを開く:スタートメニューから「コントロールパネル」を開きます。

  2. システムとセキュリティに移動:コントロールパネルで「システムとセキュリティ」を選択します。

  3. システムを開く:「システム」をクリックします。

  4. システムの詳細設定を開く:左側のメニューから「システムの詳細設定」を選びます。

  5. 環境変数を開く:「詳細」タブの「環境変数」ボタンをクリックします。

  6. PATH環境変数を編集

    • 「システム環境変数」セクションで「Path」を見つけて選択し、「編集」をクリックします。
    • 「新規」ボタンをクリックし、C:\Program Files\Java\jdk-21\bin を入力して「OK」をクリックします。
  7. 全てのウィンドウを閉じて変更を保存:すべてのウィンドウで「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()
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2