Как подавить анализ макета для PDFMiner в Python - PullRequest
0 голосов
/ 12 июня 2018

PDFMiner.six застревает на некоторых файлах с разрешением изображения и текстом, поэтому я подумал, что если я смогу подавить анализ макета, он может пропустить эти страницы и двигаться дальше.

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO

abspath_pdf = r'C:\\Users\\shricharan.arumugam\\Desktop\\Baraka East_1 Ichron REPORT Final.pdf'



def convert_pdf_to_txt2(path):   
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8' 
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = open(path, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0
    caching = True
    pagenos=set()
    i=1
    #test_pages=PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True)
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):

        interpreter.process_page(page)
        print(i)
        i=i+1

    text = retstr.getvalue()

    fp.close()
    device.close()
    retstr.close()
    return text

convert_pdf_to_txt2(abspath_pdf)

Документацияговорит использовать -n, чтобы подавить анализ макета, но может кто-нибудь показать мне, как это использовать?

1 Ответ

0 голосов
/ 24 февраля 2019

H Shricharan - попробуйте установить laparams = None сразу после вызова laparams = LAParams ().(Я оставил вызов LAParams () там только на тот случай, если он вызовет какой-то код инициализации, который мне нужен, но затем переписал лапарамы с None в следующей строке).Это то, что код в pdf2txt.py, кажется, делает.У меня была та же проблема, что и у вас, и до сих пор (пальцы скрещены), которая, кажется, исправила ее(то есть - кажется, что он работает намного быстрее и не застревает на определенных файлах, но недостатком является то, что теперь кажется, что он просто возвращает преобразованный текст в виде одной длинной строки, без абзацев, разрывов строк и т. д., поэтому не уверен, что еслиэто будет работать у вас или нет) -Марк

...