1

pypdf を使用して、pdf ファイルからテキストを抽出しています。問題は、pdf ファイル内の表が抽出されないことです。pdfminer も使用してみましたが、同じ問題が発生しています。

4

1 に答える 1

5

問題は、PDF の表は通常、絶対位置の行と文字で構成されており、これを適切な表表現に変換するのは簡単ではないことです。

Python では、PDFMiner がおそらく最善の策です。レイアウト オブジェクトのツリー構造が得られますが、行 (LTLine) とテキスト ボックス (LTTextBox) の位置を見てテーブルを解釈する必要があります。ここに少しのドキュメントがあります

別の方法として、PDFXはこれを試みます (多くの場合成功します) が、Web サービスとして使用する必要があります (理想的ではありませんが、時折の仕事には問題ありません)。これを Python から行うには、次のようにします。

import urllib2
import xml.etree.ElementTree as ET

# Make request to PDFX
pdfdata = open('example.pdf', 'rb').read()
request = urllib2.Request('http://pdfx.cs.man.ac.uk', pdfdata, headers={'Content-Type' : 'application/pdf'})
response = urllib2.urlopen(request).read()

# Parse the response
tree = ET.fromstring(response)
for tbox in tree.findall('.//region[@class="DoCO:TableBox"]'):
    src = ET.tostring(tbox.find('content/table'))
    info = ET.tostring(tbox.find('region[@class="TableInfo"]'))
    caption = ET.tostring(tbox.find('caption'))
于 2013-07-12T16:02:06.167 に答える