3.5.1
pdfから表を抽出
camelotを使う場合 #
必要なライブラリをインストール #
今回はCamelotというライブラリを使ってpdfからテーブルを抽出します。
opencv-contrib-python、camelot、tabula-pyが必要なので適宜インストールします。
poetry add opencv-contrib-python camelot tabula-py ghostscript
Ghostscriptというソフトウェアも必要なのでインストールします。 OSによってインストール方法が異なるので注意してください。 インストール方法はこちらを参照してください。
ghostscriptがインストールされているか確認する #
| |
'/usr/local/lib/libgs.dylib'
pdfからテーブルを抽出する #
例として総務省のページで公開されている「政策ごとの予算との対応について」のpdfからテーブルを抽出します。テーブルがパースできたことがわかります。
※jupyterbookでエラーが出る場合があるためコメントアウトしています
| |
今度はFLEX LNGという会社の決算情報をパースしてみます。 データはFLEXLNG|Investor Homeで取得したファイルで実行しています。 今後はテーブルのパースに失敗してしましました。
| |
パースできたテーブル数 0
tabula-py を使う場合 #
poetry add tabula-pyなどとしてtabulaをインストールしてください。
tabulaはバックグラウンドでtabula-java
を使用していますが、Javaのバージョンが古い場合こちらがエラーになる場合があるようです。
参考文献:subprocess.CalledProcessError While extracting table from PDF using tabula-py
| |
| ASSETS | Unnamed: 0 | Unnamed: 1 | Unnamed: 2 | Unnamed: 3 | |
|---|---|---|---|---|---|
| 0 | Current assets | NaN | NaN | NaN | NaN |
| 1 | Cash and cash equivalents | 4 | 138,116 | 144,151 | 128,878 |
| 2 | Restricted cash | 4 | 47 | 56 | 84 |
| 3 | Inventory | NaN | 5,915 | 4,075 | 3,656 |
| 4 | Other current assets | 5 | 12,503 | 8,886 | 25,061 |
パースしたテーブルを可視化する #
tabulateでパースしたテーブルは文字列になっているので、そこから数値を読み取ります。
| |
