Pdfminer是一个Python库,用于从PDF文件中提取文本和元数据。它可以在Python 3.5及更高版本中使用。

11 浏览
0 Comments

Pdfminer是一个Python库,用于从PDF文件中提取文本和元数据。它可以在Python 3.5及更高版本中使用。

我已经按照一些教程尝试过了,但是我无法运行这个代码块,我已经从StringIO切换到了BytesIO(我相信是这样的?)\n我不确定为什么\'banana\'没有输出任何东西,我认为错误可能是干扰项?是因为我在跟随一个Python 2.7教程并尝试将其翻译成Python 3吗?\n

错误:文件“/ Users / foo / PycharmProjects / Try / Pdfminer.py”的第28行,在中
    banana = convert(“A1.pdf”)
  文件“/ Users / foo / PycharmProjects / Try / Pdfminer.py”的第19行,在convert中
    infile = file(fname, 'rb')
NameError: name 'file' is not defined

\n脚本\n

from io import BytesIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
def convert(fname, pages=None):
    if not pages:
        pagenums = set()
    else:
        pagenums = set(pages)
    output = BytesIO()
    manager = PDFResourceManager()
    converter = TextConverter(manager, output, laparams=LAParams())
    interpreter = PDFPageInterpreter(manager, converter)
    infile = file(fname, 'rb')
    for page in PDFPage.get_pages(infile, pagenums):
        interpreter.process_page(page)
    infile.close()
    converter.close()
    text = output.getvalue()
    output.close
    return text
banana = convert(“A1.pdf”)
print(banana)

\n同样的情况也发生在这个变体中:\n

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import BytesIO
def convert_pdf_to_txt(path):
    rsrcmgr = PDFResourceManager()
    retstr = BytesIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = file(path, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0
    caching = True
    pagenos=set()
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
        interpreter.process_page(page)
    text = retstr.getvalue()
    fp.close()
    device.close()
    retstr.close()
    return text
Banana = convert_pdf_to_txt(“A1.pdf”)
print(Banana)

\n我已经尝试搜索了这个问题(pdfminer的大部分代码来自于这个这个),但没有成功。\n非常感谢任何帮助。\n谢谢。

0
0 Comments

在Python 3.5上使用Pdfminer出现问题的原因是Pdfminer库不支持Python 3。然而,在Python 3.7上尝试使用该库是成功的。下面是我使用的代码:

def convert_pdf_to_txt(path_to_file):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = open(path_to_file, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0
    caching = True
    pagenos=set()
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
        interpreter.process_page(page)
    text = retstr.getvalue()
    fp.close()
    device.close()
    retstr.close()
    return text

如果你安装的是经典的pdfminer库,它不支持Python 3。你需要安装pdfminer.six来支持Python 3。你可以在euske.github.io/pdfminer/index.html找到更多详细信息。你可以在github.com/pdfminer/pdfminer.six找到pdfminer.six的安装方法。

0
0 Comments

Pdfminer是一个用于从PDF文件中提取文本和其他信息的Python库。然而,在Python 3.5版本中,使用Pdfminer时可能会遇到问题。

问题的主要原因是Pdfminer库在Python 3.5中的一些变化。在该版本中,Pdfminer库的一些模块和类的名称发生了变化,导致旧版本的代码无法正常运行。

为了解决这个问题,可以使用更新的解决方案。在2016年12月,有人提出了一个改进的解决方案。该解决方案使用了新的Pdfminer库模块和类的名称。下面是改进的解决方案的代码示例:

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import HTMLConverter,TextConverter,XMLConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
import io
def convert(case,fname, pages=None):
    if not pages: pagenums = set()
    else:         pagenums = set(pages)
    manager = PDFResourceManager() 
    codec = 'utf-8'
    caching = True
    if case == 'text':
        output = io.StringIO()
        converter = TextConverter(manager, output, codec=codec, laparams=LAParams())     
    if case == 'HTML':
        output = io.BytesIO()
        converter = HTMLConverter(manager, output, codec=codec, laparams=LAParams())
    interpreter = PDFPageInterpreter(manager, converter)   
    infile = open(fname, 'rb')
    for page in PDFPage.get_pages(infile, pagenums,caching=caching, check_extractable=True):
        interpreter.process_page(page)
    convertedPDF = output.getvalue()  
    infile.close()
    converter.close()
    output.close()
    return convertedPDF
filePDF  = 'myDir//myPDF.pdf'     # input
fileHTML = 'myDir//myHTML.html'   # output
fileTXT  = 'myDir//myTXT.txt'     # output
case = "HTML"
if case == 'HTML':
    convertedPDF = convert('HTML', filePDF, pages=[0,1])
    fileConverted = open(fileHTML, "wb", encoding="utf-8")
if case == 'text':
    convertedPDF = convert('text', filePDF, pages=[0,1])
    fileConverted = open(fileTXT, "w", encoding="utf-8")
fileConverted.write(convertedPDF)
fileConverted.close()

通过使用改进的解决方案中的更新的Pdfminer库模块和类的名称,可以解决在Python 3.5中使用Pdfminer库时遇到的问题。这样,我们就能够正常地从PDF文件中提取文本和其他信息了。

0
0 Comments

Pdfminer是一个用于提取PDF文档内容的Python库。但是,在Python 3.5版本中,使用Pdfminer存在问题。然而,解决方法是使用pdfminer.six库。可以通过以下步骤进行安装:

1. 在Windows 10系统中打开命令提示符。

2. 输入以下命令并按回车键安装pdfminer.six库:

   pip install pdfminer.six
   

安装完成后,可以使用以下命令检查已安装的pdfminer.six库的版本:

pdfminer.__version__

此外,pdfminer.six库在2018年11月之后仍在维护更新。

原文中提到可以运行以下代码将PDF转换为文本或HTML格式,但并未提供具体代码。然而,可以在Stack Overflow上的一个回答中找到一个有效的代码示例。该代码示例可在2020年5月找到,具体链接为:[stackoverflow.com/a/61857301/7483211](https://stackoverflow.com/a/61857301/7483211)。

总结起来,解决Pdfminer在Python 3.5中的问题的方法是安装pdfminer.six库,并使用相应的代码示例进行PDF转换操作。

0