表のデータベースがそのまま欲しかったのに
PDFという形式は人にデータを渡すときや、報告書などに他の資料とまとめて配布するには便利な形式ですが、FIXされてしまっているのでデータの再利用性という意味ではやっかいなことが多々あります。私自身も報告書に何千行という表をA4フォーマットで落とし込んで提出したのはいいが、後日それを利用したいタイミングで元データがなく、PDFから取り出さなければならない事態になったためこちらを書きました。
作り方
下のコードを書いてください。また別途tabulaというJavaのライブラリをインストールしておく必要があります。Pyhonのモジュールはあくまでもそのラッパです。
import tabula
import PyPDF2
import pandas as pd
FILE_PATH = "./test.pdf"
with open(FILE_PATH, mode='rb') as f:
pages = PyPDF2.PdfFileReader(f).getNumPages()
for i in range(pages+1):
tmp = tabula.read_pdf(FILE_PATH, pages = i, encoding = "utf-8_sig", spreadsheet=True)
df = pd.concat([df, tmp], ignore_index=True)
df = tabula.read_pdf(FILE_PATH, lattice=True, pages = '1' )
df[0].to_csv("./test.csv", encoding="shift_jis")
使い方
上の.pyファイルを実行するだけです。
よいPDFライフを。