Open2
PDFからのデータ抽出
参考資料
まとめ
- Pythonを用いたPDFデータからの情報抽出 / Extraction data from PDF using Python - Speaker Deck
- 【自動化】PDF内の表をPythonで抜き出す - Qiita
ライブラリ
-
Camelot: PDF Table Extraction for Humans
- PDFのテーブル要素を抜き出してPandasのDataFrameに変換してくれるもの
- camelot-dev/excalibur: A web interface to extract tabular data from PDFs というcamelotのラッパーライブラリがあり、Webでcamelotの機能を使える
-
chezou/tabula-py: Simple wrapper of tabula-java: extract table from PDF into pandas DataFrame
- camelotと同じようにPDFからテーブルの情報を抜き出すもの
-
PyMuPDF Documentation — PyMuPDF 1.18.19 documentation
- PDFからテキスト情報を抜き出したり、画像に変換したりできる。多機能
tabula-py
準備
以下の2つが必要。
- Javaのインストール
- tabula-pyのインストール
# Javaのインストール確認
!java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.18.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.18.04, mixed mode, sharing)
# tabula-pyのインストール
!pip install -q tabula-py
基本的な使い方
以下のようにread_pdf
でPDFファイルを指定するとページ数分のDataFrameが入った配列を返してくれるので、それぞれのDataFrameに対して処理をしていけばOK。
import tabula
pdf_path = "https://github.com/chezou/tabula-py/raw/master/tests/resources/data.pdf"
dfs = tabula.read_pdf(pdf_path, stream=True)
read_pdfのオプション
- pages
- 'all'を指定すれば全ページを、個別のページを指定すれば指定したページだけ読み込んでくれる
- lattice
- Trueを指定すれば枠線をテーブルの判定条件として利用する
上記2つのオプションを組み合わせるとこんな感じになる。
dummy = tabula.read_pdf('./dummies/dummy.pdf', lattice=True, pages='all')