如何在python中压缩PDFMiner的布局分析

时间:2018-06-12 12:19:58

标签: python python-3.x automation pdfminer

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 :(得分:0)

H Shricharan-尝试在调用laparams = LAParams()之后立即设置laparams = None。 (我将对LAParams()的调用留在那里,以防万一它调用了我需要的一些初始化代码,但是在下一行中用None覆盖了laparams)。这就是pdf2txt.py中的代码似乎所做的。我遇到了与您相同的问题,到目前为止(手指交叉)似乎已经解决了该问题。 (即-似乎速度更快,并且不会卡在某些文件上,但是缺点是它现在似乎只是将转换后的文本作为一个长字符串返回,没有段落,换行符等。因此不确定是否不管您是否满意)-Mark