2016-07-31 6 views
1

不十分に配置されたpdf(次のコードのURL)からデータを削り取ろうとしています。意味のあるデータレコードを作成するために、テーブルの行/罫線の位置に関する情報を使用する必要があります。不正な形式のpdfテーブルのデータを削る

url="http://www.cmc.gv.ao/sites/main/pt/Lists/CMC%20%20PublicaesFicheiros/Attachments/89/Lista%20de%20Institui%C3%A7%C3%B5es%20Registadas%20(actualizado%2004.07.16).pdf" 

import scraperwiki, urllib2, re 
u = urllib2.urlopen(url) 
xml=scraperwiki.pdftoxml(u.read()) # interpret pdf as xml 

XMLの行は、テーブル行がどのように情報を分割するかを示していません。典型的な行は次のようになります。私のブラウザの要素インスペクタで

<text top="678" left="493" width="103" height="12" font="6">Besa Património </text> 

、HTMLはもう少し詳しいですが、私はまだ、テーブルの行の配置についての情報が表示されません。

私はこれに対処しようとかなりの時間を費やしています。だから投機的な回答を最初に試してみると分かります。問題は、どうやってテーブルラインの位置を得るのですか?あなたがする必要があるテーブルのボーダーを取得する

+1

を働きますsa [タグ付きPDF](https://pdftables.com/upload/view/x1ho0izxoubk977uyzcopiytx/Lista%20de%20Institui%C3%A7%C3%B5es%20Registadas%20%28actualizado%2004.07.16%29.pdf) – dwarring

+0

主な関心事は、最初の列がどのように39レコードをグループ化するかについての情報を失っていることです。このフォームにpdfを入手すると便利かもしれませんが、タグ付きpdfをPythonで出力できますか? – Astrophe

+0

再現可能な既知のPDF構造から情報を取得しようとする(多分)可能性があります。元のデータを取得します。 –

答えて

0

  • 解凍PDFをと(わからないが、おそらくpdfrwobjectsを反復処理していきます)オブジェクトを反復処理
  • PDF内の直線や長方形の検索。あなたはpdfrwで(PDFを解凍するために管理する場合

270.17 749.85 182.81 20.67 re

または

270.17 414.16 182.81 20.76 re

:この特定のPDFには、次の長方形(reコマンドに続く4つの値)としてラインを表し、または他のツール)、単純なパーサを作成しようとしたり、すべてのオブジェクトに対して正規表現を実行したりしてください:

  • は同様のXによって全ての矩形
  • グループ矩形を収集し、Yは、最終的にY座標注意(特定の列または行の境界に対してテキストのスニペットを一致がPDFで反転され、XおよびY境界
  • の座標を見つける
  • 座標、pdf specification

を参照してくださいこれは基本的にどのようにByteScout PDF Multitoolユーティリティ(残念ながらWindowsでのみ動作します)であり、他は、この私

関連する問題