Есть ли код, который позволяет мне использовать координаты для извлечения текста из региона в PDF? - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь извлечь некоторый текст из определенной области в PDF.Всего в PDF 10 разделов, и я хочу извлечь все под заголовком Раздела 8.У меня есть следующий код, который будет извлекать ВЕСЬ текст в PDF и давать мне его координаты, но я не знаю, как его отфильтровать, чтобы просто дать мне нужную область после того, как у меня есть координаты.

Может кто-нибудь помочьмне написать код или направить меня куда-нибудь на этот форум, пожалуйста?

Это код, который у меня есть:

from pdfminer.layout import LAParams, LTTextBox
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator

fp = open('1234.pdf', 'rb')
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
pages = PDFPage.get_pages(fp,check_extractable=False)

for page in pages:
    print('Processing next page...')
    interpreter.process_page(page)
    layout = device.get_result()
    for lobj in layout:
        if isinstance(lobj, LTTextBox):
            x, y, text = lobj.bbox[0], lobj.bbox[3], lobj.get_text()
            print('At %r is text: %s' % ((x, y), text))

Это часть результата, который я хочу:

At (50.4, 605.326) is text: 8. ClAIMS

At (48.0, 574.222) is text: (a) Transport Claims

At (48.0, 557.182) is text:  

At (48.0, 539.76088) is text: Cover: 

At (48.0, 522.7208800000001) is text: Period: 

At (48.0, 504.72088) is text: Type: 

At (48.0, 487.44088) is text: Premium: 

At (133.46, 556.942) is text:  

At (133.46, 539.64088) is text:  

At (133.46, 522.6008800000001) is text:  

At (133.46, 504.60088) is text:  

At (133.46, 487.32088) is text:  

At (169.46, 539.64088) is text: Transport - Liabilities 

At (169.46, 522.6008800000001) is text: 03/07/2017 until 31/03/2018 

At (169.46, 504.60088) is text: Mutual 

At (169.46, 487.32088) is text: Minimum and Deposit Premium of USD 400,000 per annum 

Кто-то, ПОЖАЛУЙСТА, ПОМОГИТЕ!Это сводит меня с ума

...