使用PDFMiner从PDF提取文本时丢失信息



我在Windows 7上使用Python 3.4,希望我可以使用PDFMiner从PDF文件中提取文本。但是,在我进行测试时,丢失信息非常普遍。对于某些文件,这可能只是一些句子的问题。但是,我遇到的情况无法根据文件格式提取 half feft 。这是我的完整代码:

import io
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams

def convert_pdf(pdfFile, retstr):
    password = ''
    pagenos = set()
    maxpages = 0
    laparams = LAParams()
    rsrcmgr = PDFResourceManager()
    device = TextConverter(rsrcmgr, retstr, laparams=laparams)
    process_pdf(rsrcmgr, device, pdfFile, pagenos, maxpages=maxpages, password=password, check_extractable=True)
    device.close()
    return retstr

def extract_pdf(file_name, language):
    pdfFile = open(file_name, 'rb')
    retstr = io.StringIO()
    retstr = convert_pdf(pdfFile, retstr)
    whole = retstr.getvalue()
    original_texts = whole.split('n')
    pdfFile.close()
    return original_texts

我想知道是否有一种使用PDFMiner提取全文的方法。我听说过Poppler,但我似乎找不到如何将其用作Python库。此外,我不想使用命令行。谁能帮忙?

这是一个示例:论文。使用上面的代码提取时丢失了几段。就像在第二页中一样,我只能提取页面的上半场,直到中间为"佩雷拉,蒂什比和李(1993)"。然后,它只是出于明显的原因跳到下一页。

即使问题已经过时,我仍然会在此处发布测试结果。它可能对某人有用。我刚刚测试了您的文件。

我能够使用以下代码提取所有基于文本的PDF矿工较旧版本,直到20200726。相应地更改文件源路径和输出路径。

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfparser import PDFParser
import io
import os
fp = open('/Users/isanka/Downloads/9809110.pdf', 'rb')
rsrcmgr = PDFResourceManager()
retstr = io.StringIO()
print(type(retstr))
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
page_no = 0
for pageNumber, page in enumerate(PDFPage.get_pages(fp)):
    if pageNumber == page_no:
        interpreter.process_page(page)
        data = retstr.getvalue()
        with open(os.path.join('/Users/isanka/Downloads/tmp', f'pdf page {page_no}.txt'), 'wb') as file:
            file.write(data.encode('utf-8'))
        data = ''
        retstr.truncate(0)
        retstr.seek(0)
    page_no += 1

相关内容

  • 没有找到相关文章