web-dev-qa-db-ja.com

PDFファイルのコレクションからテーブルの内容を抽出する

PDFのスタックがあります-潜在的に数百または数千。それらはすべて同じようにフォーマットされているわけではありませんが、それらのいずれかが、個別のデータベースに収集したい興味深い情報を持つ1つ以上のテーブルを持っている場合があります。

もちろん、これを行うには何かを書かなければならないことを知っています。 Perlは、私にとってはオプションです。おそらくJavaです。私は、それが無料である限り(または、私の目的に合っていることを保証するための無料の試用期間で安価である限り)、どの言語を本当に気にしません。

CAM :: Parse(strawberry Perlを使用)を見ていますが、それを使用してファイルからテーブルを見つけて抽出する方法がわかりません。私はPerlを好むと思いますが、本当に信頼でき、文字列操作を合理的に簡単に行えるものが欲しいのです。

このようなものに対する良いアプローチは何ですか?私は正真正銘だから、もしJava(またはpythonなど)がより良いフックを持っているなら、今はそれについて知る良い機会だ。一般的なポインタ良い;スターターコードが強く推奨されます。

26
elbillaf
  1. PDF形式は当初から(20年以上前)抽出可能な意味のある構造化されたデータのホストになることは意図されていませんでした

  2. その目的は、ドキュメント内のテキスト、画像、図の信頼性の高い視覚的表現であるということでした-一種のデジタルペーパー(印刷によって実際の紙にも確実に転送される)。開発後期になってから、データを再度抽出するのに役立つ機能が追加されました(Google forTagged PDF)。

  3. PDFからテーブルをデータスクレイピングするときに発生する問題の例については、この記事を参照してください。

  4. 私のポイント「1」の矛盾above、今私はこう言います:PDFから表形式のデータを抽出するために週ごとにどんどん良くなる驚くべきツールファミリーのために(スキャンされたページでない限り)、これらのリンクを参照してください:

だから:タブラを探しに行きます。必要なツールを使用できるツールがある場合、現時点ではTabulaが最適です。


更新

最近、 ASCiinemaスクリーンキャスト を作成しました。PDFからCSVとして大きなテーブルを抽出するためのTabulaコマンドラインインターフェイスの使用を示しています。

asciicast

(実行中の画像を見るには上の画像をクリックしてください。すべてのテキストを読むには速すぎる場合は、 "Pause"ボタン(||-記号)。

ここでホストされています:

38
Kurt Pfeifle