PDFファイルからのデータ抽出
私は公開されているデータを分析することがありますが、ときどきPDFファイルにある表をデータテーブルにしたいことがあります。特に官公庁等で公開されているデータはExcelやcsv形式でなく、PDFファイルの中にテーブルとして埋め込まれていることが案外多いです。
そんなとき、4,5年前まではPDFファイル上で該当のテーブルを選択してコピーし、ExcelやJMPにペイストしていたのですが、きちんとデータとして認識しないことも多々あり、最悪の場合はあきらめて手入力でデータを作成することもありました。
そんなとき、JMP のバージョン15で追加された「PDF読み込みウィザード」は、私にとって福音でした。今まで時間がかかっていたPDFからのデータ作成を、本の数秒でできてしまうのです!! そのため、データを深く分析することに余った時間を回すことができるのです。
前回、私が書いたブログ記事(ジェンダーギャップ指数)は、PDFの報告書の中にあるテーブルを引用していますが、PDF読み込みウィザードの機能がなかったら、データを作成するのが面倒できっと挫折していたでしょう。
そこで本ブログでは、「PDF読み込みウィザード」のすごいところを紹介してみます。すでにこの機能を使っている方でも意外と知らないことがあるかもしれませんので、是非ともご一読ください。
PDF読み込みウィザードでできること
「PDF読み込みウィザード」は、PDFファイルを読み込む前に、プレビューを参照しながら読み込むデータを調整して読み込んでいく機能です。
JMPのメニューバーから[ファイル] > [開く]を選択し、読み込むPDFファイルを選択すると自動的に「PDF読み込みウィザード」が起動します(*1)。
上図のようにウィザードの左側にはプレビューが表示されます。PDF内にあるテーブルを自動的に認識し、認識されたものが右側の「テーブルのプレビュー」に表示されます。
ここで読み込みたいテーブルが認識できているか確認し、問題ないようであれば [OK] ボタンをクリックすると、JMPのデータテーブルとして開きます。
この例では、論文に記載されている実験データを簡単に読み込むことができています。
この後、実例とともにすごいところを2つピックアップしてご紹介します。
すごいところ その1: 同じ列名のテーブルを自動的に1つに連結してくれる
以下は、内閣官房が公開している一般職国家公務員在職状況統計表のPDFです(*2)。この表から各省庁における非常勤職員の人数、前年差(人)、前年比(%) をJMPのデータテーブルにしたいとします。
自動的にPDF内のテーブルを認識する機能が役立つこともありますが、実務上はPDFの中にあるテーブルすべてを読み込むケースというのはあまりなく、特定のテーブルのみ読み込みたいというケースが多いです。
このようなとき、ウィザードの右上にある[すべてのテーブルを無視] ボタンをクリックし自動選択を解除します。
その後、左側のプレビューで読み込みたいテーブルがあるページに移動し、該当ページ左上にある赤い三角ボタンから [このページを自動検出] を選択すると、そのページにあるテーブルだけを自動検出します。
ただし、テーブルによっては自動検出がうまくいかないものもあります。そのときはテーブルにしたいところをドラッグして長方形を作成すると、長方形の枠の中にあるテーブルを認識します。実務上は、このドラッグしてテーブルを選択する方法が便利です。
該当のテーブルを選択した後、プレビュー右側にある 「列名が一致するテーブルを連結」を選択し、[OK] ボタンをクリックします。
すると、2つに分かれて表示されていたテーブルを1つのテーブルにまとめて読み込まれます。
普通は2つのテーブルが読み込まれ、その後 [連結]を使ってテーブルを1つにまとめる必要があるところを、このウィザードでやってくれているのです。
そのため、作成されたデータテーブルを少し加工するだけで、職員数、前年差、前年比のヒストグラムを作成し、外れ値となる省庁を調べることができました。
すごいところ その2: 複数ページにわたる表も1つに連結してくれる
こちらのPDFファイルは、スキージャンプの国別団体戦の結果を示したものです (*3)。1位~8位までの結果が示されていますが、1ページには収められていなく2ページにわたっています。国別にテーブル形式になっていますが、これらのテーブルもまとめて1つのテーブルにしたいです。
このPDFをプレビュー表示しています。対象となる表を選択し、「すべてのテーブルを1つに連結」をチェックして[OK] ボタンをクリックします。
複数のテーブルを一つにまとめて読み込んでくれました。ここで使用したPDFファイルは、前例とは違い列名がないテーブルもあるので、「すべてのテーブルを1つに連結」を使いました。
この後、若干のデータ加工が必要ですが、あまり時間をかけずにチームごとの得点プロット(4人分)を作ることができました。4人の得点がばらついているチームとばらついていないチームがあり、興味深い結果になっています。
今後も、この素晴らしい機能を駆使し、データ分析に励んでいきます!!
by 増川 直裕(JMP Japan)
PDFファイルの引用
*1 : Rational design of a scalable bioprocess platform for bacterial cellulose production
https://www.sciencedirect.com/science/article/abs/pii/S0144861718312839
*2: 内閣官房 一般職国家公務員在職状況統計表
https://www.cas.go.jp/jp/gaiyou/jimu/jinjikyoku/files/20220701_toukeihyou_gaiyou.pdf
*3: FIS SKI JUMPING WORLD CUP Official Results
https://medias2.fis-ski.com/pdf/2023/JP/3093/2023JP3093RL.pdf
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.