読者です 読者をやめる 読者になる 読者になる

once upon a time,

Iris Tradをビール片手に聞くのが好きなエンジニアが、機械学習やRubyにまつわる話を書きます

PDFの表をpandasのDataFrameにできる tabula-py 作った

RubyKaigiに参加するとコード書きたいという気持ちが高まって良いのですが、今回はPDFの表を読み込んで pandas の DataFrame に変換できる tabula-pyを作りました。 これをもってRubyKaigiの参加報告とさせていただければと思います。

tabula-pyとは

tabula というJavaで書かれたPDFから表を抽出するライブラリをPythonでうすーくラップしたものです。実装を見てもらえばわかると思いますが、本当にsubprocessでJavaのプログラムを叩いて標準出力で受け取るというだけしかやっていません。

もともとは、Rのtabula実装がかなり色々できるのを知ってPythonがないらしいというので作りました。Rの実装はマジでJavaをごりごり書いていて尊敬の念を抱いています。

tabulizerパッケージによるPDF表データからのデータ取得

github.com

使い方

インストールはpipで入ります。

pip install tabula-py

こんな感じで使えます。

from tabula import read_pdf_table

df = read_pdf_table("data.pdf")

詳細はnotebookを見てください。

RubyKaigiの成果と感想

  • rubyist.clubで@mirakuiさんをゲストに収録した
  • tabula-pyを作った
  • 個人的には、JulianのMIDIをdRubyで制御する話が一番おもしろかった。事前にまつださんに聞いていたからこそ辿りつけたのであった
  • daru周りは色々と頑張っているけど、visualization周りをどうするかが肝だろうなと思いながら作者と飲めたので良かった
  • 機械学習の話は個人的には、sklearnのモデルを読み込んでpredictするとかが良いのかなと思っているので、Apache Arrowとかfeatherとかみたいにinter-languageな方向を強化していくのがいいんじゃないかなと思いながら聞いていた

今後の展望

Py4jを使えばRと同じことができるのは確認ができたのですが、JavaPythonの上で書かされている感が半端無いので困ったら考えようと思います。