こんにちは!みやしんです。
今回もとても便利なライブラリをご紹介します!
ホントPythonには便利なライブラリがいっぱいですね!
PythonやAIをもっと勉強したい方🤗
この記事で出来る事
Pythonのライブラリ「Camelot」を使って、PDFから表データを自動で抽出する方法をご紹介します!
抽出した表データはデータフレーム型で持つことができます!
①PDF内の表を検出
下記のように検出結果を表示できます。
②データフレーム型でデータを抽出
では、早速はじめていきましょう!
camelotとは
Pythonのライブラリの1つです。PDFから表データを抽出してDataFrame形式に変換してデータを扱うことができます。Camelotでは下記のような表データを抽出することができます。
- Stream:枠がない表。スペースと文字だけで区切られている表
- Lattice:枠がある表。
- 抽出対象の表を設定して取得 (表の位置を座標指定、等)
Camelotをインストール
pip install camelot-py
pip install camelot-py[cv]
pip install camelot-py[all]
Ghostscriptをインストール
Ghostscriptとは?(以下Wikioedia抜粋)
Ghostscript(ゴーストスクリプト)は、PostScriptやPortable Document Format (PDF) などアドビのページ記述言語用のインタプリタおよび、それを基にしたソフトウェアパッケージのことである。デュアルライセンスで配布されている。
こんなマーク!
下記リンクからEXEファイルをダウンロードします。
今回はWindowsのPCを使っているので下記の赤枠をクリックします。
すると、gs1000w64.exeをダウンロードできます。
EXEファイルを実行してGhostscriptをインストールします。
これで準備OKです!
今回使うPDF
今回はこちらのPDFをダウンロードして使いたいと思います。
2020年基準 消費者物価指数(総務省)
https://www.stat.go.jp/data/cpi/sokuhou/tsuki/pdf/zenkoku.pdf
サンプルコード
今回はJupyter Notebookを使っていきます。
まずは、camelotをインポートします。
import camelot
カレントディレクトリへ移動します。
!cd ディレクトリへのパス
PDFから全てのページの表データを抽出してtablesに格納
tables = camelot.read_pdf("zenkoku.pdf", pages='all')
抽出結果を確認
tables
<TableList n=18>
18個の表を抽出できたことが確認できました。
切り取った表を確認
camelot.plot(tables[0], kind='contour').show()
次の表を確認
camelot.plot(tables[2], kind='contour').show()
抽出した表データをデータフレーム化
tables[0].df.__class__
pandas.core.frame.DataFrame
データフレームを表示
tables[0].df
こんな感じでPDF内の表データを抽出できました!
あとはデータフレームを使って必要な計算を実施していきましょう!
PythonやAIをもっと勉強したい方🤗
コメント