Python 3.x PDFMiner:如何仅提取主文本

Python 3.x PDFMiner:如何仅提取主文本,python-3.x,pdfminer,pdf-manipulation,Python 3.x,Pdfminer,Pdf Manipulation,我使用以下代码将PDF转换为文本文件。然而,我只对文件的正文感兴趣,没有数字、页码、表格、标题、公式等 但它给了我一堆文本,其中一些是从表格或公式中提取的短线。我希望生成的文本对于用户来说是可读的,而不需要在文本模式下显示的内容 另一个问题是,它将句子分成多行,因此我将放宽句子边界。我想要完整的句子,不间断 我玩了一些选项,比如'all_text=False',但没有成功 import sys from tqdm import tqdm from pdfminer.pdfparser impor

我使用以下代码将PDF转换为文本文件。然而,我只对文件的正文感兴趣,没有数字、页码、表格、标题、公式等

但它给了我一堆文本,其中一些是从表格或公式中提取的短线。我希望生成的文本对于用户来说是可读的,而不需要在文本模式下显示的内容

另一个问题是,它将句子分成多行,因此我将放宽句子边界。我想要完整的句子,不间断

我玩了一些选项,比如'all_text=False',但没有成功

import sys
from tqdm import tqdm
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
from pdfminer.layout import LAParams
import io


def pdfparser(pdf_file):

    fp = open(pdf_file, 'rb')
    rsrcmgr = PDFResourceManager()
    retstr = io.StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    laparams.all_texts = False
    laparams.detect_vertical = False
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    # Create a PDF interpreter object.
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    # Process each page contained in the document.
    password = ""
    maxpages = 3
    caching = True
    pagenos=set()
    imagewriter = None
    for page in tqdm(PDFPage.get_pages(fp)):
        interpreter.process_page(page)
        text =  retstr.getvalue()

    text = text.replace("\\n","\n")
    return text

if __name__ == '__main__':
    text = pdfparser(sys.argv[1])
    print(text)

一般来说,这在PDF中是不可能直接实现的

与docbook、markdown和restructuredtext等不同,PDF文件不包含有关文档内容的语义信息

也就是说,内容没有标记为e.q.“图像”、“公式”、“页眉”、“页脚”、“章节标题”、“正文”等

因此,你必须试着根据文本中的线索来重建这些语义信息。不幸的是,这是否可能取决于文件

例如,如果文档的结构使页眉和页脚与主文本明显分开,则可以从字符串的起始位置推断它是否是页眉、页脚或主体的一部分


例如,字体系列和大小可能使您能够区分正文和章节标题以及图像或表格标题。但这是假设这些特性被一致地应用。

一般来说,这在PDF中是不可能直接实现的

与docbook、markdown和restructuredtext等不同,PDF文件不包含有关文档内容的语义信息

也就是说,内容没有标记为e.q.“图像”、“公式”、“页眉”、“页脚”、“章节标题”、“正文”等

因此,你必须试着根据文本中的线索来重建这些语义信息。不幸的是,这是否可能取决于文件

例如,如果文档的结构使页眉和页脚与主文本明显分开,则可以从字符串的起始位置推断它是否是页眉、页脚或主体的一部分

例如,字体系列和大小可能使您能够区分正文和章节标题以及图像或表格标题。但这是假设这些特征得到了一致的应用