PDF内の全ての表データを自動抽出 Python/Camelot

スポンサーリンク
Python/DeepLearning

こんにちは!みやしんです。

今回もとても便利なライブラリをご紹介します!

みやしん
みやしん

ホントPythonには便利なライブラリがいっぱいですね!

PythonやAIをもっと勉強したい方🤗

Pyサブスクール:サブスク8,030円/月でPythonを始められるプログラミングスクール
サブスク8,030円/月でPythonを始められるプログラミングスクール。現役エンジニアへの質問も自由に出来ます。話題のPythonを学びたいけどスクールに60万円は高すぎる!でも独学だと挫折が恐い。そんな不満と不安を解決するサブスク型のプ...

スポンサーリンク

この記事で出来る事

Pythonのライブラリ「Camelot」を使って、PDFから表データを自動で抽出する方法をご紹介します!

抽出した表データはデータフレーム型で持つことができます!

①PDF内の表を検出

下記のように検出結果を表示できます。

②データフレーム型でデータを抽出

では、早速はじめていきましょう!

camelotとは

Pythonのライブラリの1つです。PDFから表データを抽出してDataFrame形式に変換してデータを扱うことができます。Camelotでは下記のような表データを抽出することができます。

  1. Stream:枠がない表。スペースと文字だけで区切られている表
  2. Lattice:枠がある表。
  3. 抽出対象の表を設定して取得 (表の位置を座標指定、等)

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ファイルをダウンロードします。

Ghostscript : Downloads
Download the latest Ghostcript releases.

今回は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をもっと勉強したい方🤗

Pyサブスクール:サブスク8,030円/月でPythonを始められるプログラミングスクール
サブスク8,030円/月でPythonを始められるプログラミングスクール。現役エンジニアへの質問も自由に出来ます。話題のPythonを学びたいけどスクールに60万円は高すぎる!でも独学だと挫折が恐い。そんな不満と不安を解決するサブスク型のプ...

Python/DeepLearning
スポンサーリンク
記事が良かったらSNSでシェアを宜しくお願いします!
みやしんをフォローすると役立つ情報がいっぱいにゃ!
スポンサーリンク

コメント

タイトルとURLをコピーしました