Pdfminer是一个Python库,用于从PDF文件中提取文本和元数据。它可以在Python 3.5及更高版本中使用。
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谢谢。
在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的安装方法。
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文件中提取文本和其他信息了。
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转换操作。