近頃は資料の表がPDFで届くことも増えています。
PDFは容易に書き換えされないといったリットもありますが、何かの資料に使う場合はExcelなどの形式に変換しなければいけません。
今回はPythonを使ってPDFからExcelに変換する⽅法を紹介します。
サンプルPDFファイルは下のボタンからダウンロードすることができます
このパッケージを利⽤するには、PythonのほかにJavaというプログラミング⾔語の実⾏環境も必要です。
https://www.java.com/ja/download/
PDFから表を抜き出すためにtabulaパッケージを使っています。
tabulaパッケージとは?
tabula は、PDF ファイルから CSV および Excel ファイルにデータを抽出するための無料のオープンソース ツールです。 これは Java で記述されており、コマンド ラインから、または Java アプリケーション内のライブラリとして使用できます。 Tabula を使用すると、クリック アンド ドラッグしてデータを強調表示するか、テーブル構造を自動的に検出して、PDF ファイルのテーブルから特定のデータを選択できます。 これは、明確で構造化されたレイアウトを持たない PDF ファイルからデータを抽出する場合に特に便利です。
このパッケージ は 標 準ではインストールされないので、 AnacondaNavigatorを使うか、以下のコマンドでインストールしてください。
conda install tabula-py
to_ex.py
import pandas as pd
import tabula
import os
tabula.convert_into("旅行スケジュール.pdf","作業ファイル.csv",output_format="csv",pages='all')
df=pd.read_csv("作業ファイル.csv",encoding="shift-jis")
with pd.ExcelWriter("旅行スケジュール.xlsx") as writer:
df.to_excel(writer,index=False)
os.remove(“作業ファイル.csv")
tabulaのconvert_into関数を使うと、PDFファイル内の表をCSVやTSV、JSON などの形式で書き出せます。
CSVファイルで書き出す
CSV(Comma Separated Values)ファイルとは、データをカンマで区切って保存するテキストファイルのことです。CSVファイルは、ExcelやGoogleスプレッドシートなどのスプレッドシートアプリケーションで使用されることが多く、データを交換するときによく使われます。
CSVで書き出したい場合 は「output_format=”csv”」と指定します。また、PDFのページを指定したい場合は「pages=”1-2,3″」のように指定します。
convert_into関数を実⾏すると、カレントディレクトリ内にCSVファイルが作成されます。
convert_into関数とは
convert_into関数は、Pandas パッケージに含まれる関数です。Pandas は、Python でデータを効率的に処理するためのライブラリです。指定したパスにある Excel ファイルを読み込んで、その内容を CSV ファイルに変換して保存することができます。これにより、Excel ファイルを CSV ファイルに変換することができます。
それをread_csv関数で読み込み、to_excelメソッドでExcelファイルを保存します。
read_csv関数とは
read_csv関数は、Pandas パッケージに含まれる関数です。Pandas は、Python でデータを効率的に処理するためのライブラリです。指定したパスにある CSV ファイルを読み込んで、その内容を Pandas のデータフレームとして扱えるようにすることができます。これにより、CSV ファイルを Pandas で処理できるようになります。