2012-02-18 65 views
3

私はGoogleと数時間前からPDFMinerの限定されたドキュメントと戦っていますが、私は近いと感じていますが、私は必要なものを手に入れません。私はhttp://www.unixuser.org/~euske/python/pdfminer/とすべての3つのYouTube動画を使ってPDFについての理解を深めることができました。生のテキストをうまく出力することができました。PythonでPDFの物理座標からテキスト文字列を返します

私は複数のPDFページを解析するためのスクリプトを作成しています。残念ながら、このプロジェクトでは、低品質のPDFファイルを扱っています。テキスト文字列の物理的な位置はまったく同じです。テキスト文字列を物理的な座標で抽出できるというヒントを読んだことがありますが、実際の例はまだありません。

これはPDFMinerでどのように行われているかを明らかにしてくれる人がいますか?明らかに優れた選択肢があれば他のモジュールも公開していますが、スクリプトのためにPythonを使う必要があります。

さらに、私はPyPdfも(基本的なテキスト出力以外の)成功しないようにしました。

ありがとうございます!

答えて

2

私は、Denis Papathanasiouのコードのおかげで、pdfminerの周りに自分の道を見つけることができました。コードはhis blogで議論されています。ここでソースを見つけることができます:layout_scanner.py

特にparse_lt_objs()メソッドを見てください。最後のループでは、kはテキストのそのビットの座標を含むペアでなければなりません(そして、それは破棄されます)。私はここに投稿する作業座標エクストラクタを持っていません(私はそれらに興味がありませんでした)が、そこからあなたの道を見つけるのに苦労しないように聞こえます。

幸いです!

+0

リンクありがとうございます!私は最後のループから素敵なソートされたハッシュテーブルを引き出すことができました。私は、品質は、ドキュメント上でより良いと思う。正確な文字列抽出の点でPDFのように恐ろしいですね。特に、テキストバージョン/イメージバージョンを数回含む間に変換されたときは特にそうです。あなたがより良い提案をしているならば、私はすべて耳であり、そうでなければ、これは致命的な終わりだと思います。 – user1145643

+0

私は別のツールを知りません。 PDFは、知っていたキャンバスレベルの形式には近すぎます。あなたの問題が単語の境界を検出している場合は、キャンバスを自分でモデル化しようと思います。文字の平均幅を見積もり、x座標のジャンプがスペースを意味するのを確認してください。他に考えられるのは、PDFを(有益に)PDFをタグ付きPDFに変換するツールを探すことだけです。おそらくAdobeが何かを提供しているかもしれませんが、あなたのファイルでも失敗する可能性があります。 – alexis

4

私はこのプロセスを簡略化するためにライブラリを作成しました。pdfquery。特定のページ内の特定の場所からテキストを抽出するには、どうなる:代わりに、完全にそのボックス内のテキスト行の

pdf = pdfquery.PDFQuery(file) 
# load first, third, fourth pages 
pdf.load(0, 2, 3) 
# find text between 100 and 300 points from left bottom corner of first page 
text = pdf.pq('LTPage[page_index=0] :in_bbox("100,100,300,300")').text() 
# save tree as XML to try to figure out why the last line didn't work the way you expected :) 
pdf.tree.write(filename, pretty_print=True) 

あなたはそのボックス内の個々の文字を検索したい場合は

は、(PDFQueryへ= Noneをmerge_tagsを渡しませんデフォルトでは、連続する文字を1つの要素にマージしてツリーを馬鹿馬鹿しくするので、行全体がボックス内になければなりません)。部分的にボックスと重複するものを探したい場合は、in_bboxの代わりに:overlaps_bboxを使用してください。

これは基本的にPyQueryセレクタ構文を使用してPDFMinerレイアウトのテキストを取得するため、ドキュメントがPDFMinerにとってあまりにも面倒であれば、これもあまりにも面倒かもしれませんが、少なくともそれはもっと速く再生できます。

関連する問題