PDFは改変されづらいフォーマットですが、書かれている情報を抜き出したいと思うことは良くあります。その多くが帳票や一覧データからのデータ抜き出しです。便利なフォーマットの反面、目的のデータがシステム的に処理しづらいのが難点です。 そこで使ってみたいのがtabula-javaです。コマンド一つで表形式のデータを抜き出せます。

tabula-javaの使い方

AWSの請求書からデータを抜き出してみます。形式はJSONとしてみました。

$ java -jar tabula-1.0.4-jar-with-dependencies.jar  -f JSON pdf/hoge.pdf
[{"extraction_method":"lattice","top":340.04214,"left":35.97931,"width":540.0157470703125,"height":101.99786376953125,"right":575.99506,"bottom":442.04,"data":[[{"top":340.04214,"left":35.97931,"width":449.9739074707031,"height":22.400726318359375,"text":"AWS Service Charges"},{"top":340.04214,"left":485.95322,"width":90.04183959960938,"height":22.400726318359375,"text":"JPY 000"}],[{"top":362.44287,"left":35.97931,"width":540.0157470703125,"height":19.9471435546875,"text":"Charges (excl. JCT)JPY 000"}

tabula-javaはJSONの他、CSVやTSVでデータを抜き出せます。日本語の帳票が手元になかったので、日本語対応できるかは不明です。パスワードがかけられたPDFにも対応するなど、ビジネス上での便利に使えそうです。

tabula-javaはJava製のオープンソース・ソフトウェア(MIT License)です。

tabulapdf/tabula-java: Extract tables from PDF files