python PDFデータ抽出
Python3で下図のようなpdfからデータを取り出したいと考えています。
ネット上のコードを参考にし、pdfminerによってpdfデータを取得することは出来たのですが、データを横方向に読み込むことが出来ず、下記のような塊で関連付いた結果になってしまいました。
最終的には横方向に関連付いたリストを作成したいのですが、どうすればよいか教えて下さい。
宜しくお願い致します。
[PDF file "TEST.pdf"]
https://files.fm/u/7r6rn3eu
[Code]
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfparser import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams
from pdfminer.layout import LTTextBoxHorizontal
# Open a PDF file.
fp = open('TEST.pdf', 'rb')
# Create a PDF parser object associated with the file object.
parser = PDFParser(fp)
document = PDFDocument()
parser.set_document(document)
# Create a PDF document object that stores the document structure.
document.set_parser(parser)
# Create a PDF resource manager object that stores shared resources.
rsrcmgr = PDFResourceManager()
# Set parameters for analysis.
laparams = LAParams()
# Create a PDF page aggregator object.
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
pages = list(document.get_pages())
pagecontents = []
for i in range(len(pages)):
page_1 = pages[i]
interpreter.process_page(page_1)
layout = device.get_result()
for l in layout:
if isinstance(l, LTTextBoxHorizontal):
pagecontents.append(l.get_text())
print(pagecontents)
[結果]
'1.1\n',
'1.2\n',
'1.3\n',
'1.4\n',
'1\n2\n3\n',
'1\n2\n3\n4\n5\n',
'General\nFirst Name\nLast Name\nGender\n',
'Registry\n',
'Number\n',
'Contacts\nTEL number\nFax number\nMobile number\n',
'International number\n',
'Email address\n',
'ABCDE\nXXXXX\n',
'JAPAN\n',
'C6S2076\n',
'123456789 / 123456789 \n123456789\n123456789 XXXX\n123456789\n12345@6789.com\n']
[最終出力イメージ]
List[0] = ["1.1","General"]
list[1] = ["1","First Name","ABCDE"]
....
List[11] = ["5","Email address", "12345@6789.com"]
参考にしたコード
http://cartman0.hatenablog.com/entry/2017/08/26/022957