如何在Python中使用PDFMiner抑制布局分析

3

在处理具有高分辨率图像和文本的某些文件时,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
H Shricharan - 尝试在调用laparams = LAParams()之后立即将laparams设置为None。(我保留了对LAParams()的调用,以防它调用了我需要的一些初始化代码,但是在下一行中用None覆盖了laparams)。这似乎是pdf2txt.py中的代码所做的。我遇到了与您相同的问题,到目前为止(手指交叉),这似乎已经解决了问题。(即-它似乎更快,并且不会卡在某些文件上,但缺点是它现在似乎只返回转换后的文本作为一个长字符串,没有段落、换行等等...所以不确定这是否适合您)-马克

谢谢您的回复。我会测试一下并尽快给您反馈。 - Shricharan Arumugam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接