我正在尝试从PDF中提取文本。
def getPDFContent(path):
p = open(path, "rb")
print(p)
content = ""
pdf_content = PyPDF2.PdfFileReader(p)
print(pdf_content)
pages = pdf_content.numPages
print(pages)
for i in range(0, pages):
content += pdf_content.getPage(i).extractText() + "\n"
#print(content)
content = " ".join(content.replace(u"\xa0", " ").strip().split())
return content
getPDFContent(path_to_sample)
我得到的输出是:
如何解决?
答案 0 :(得分:2)
您的第一个错误是没有将变量分配给您的函数调用,该变量返回已处理的文本。
x = getPDFContent(path_to_sample)
如果仍然不能解决问题,请执行以下操作: 尝试使用模块PDF Miner。(适用于Python 3的PDF Miner.Six)。根据您使用的Python版本,PyPDF2有时可能会出现问题。我遇到了带有某些PDF文件的PyPDF2的问题,这给了我与您相似的oytput。但是,PDFMiner与Python 3.xx一致地使用了以下代码。
使用以下命令下载PDFMiner:pip install pdfminer.six
以实现Python 2 + 3兼容性,并使用下面的以下代码,您应该一切顺利。
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
def getPDFContent(path,pages=None):
pdf_str=""
if not pages:
pagenums = set()
else:
pagenums = set(pages)
output = io.StringIO()
manager = PDFResourceManager()
converter = TextConverter(manager, output, laparams=LAParams())
interpreter = PDFPageInterpreter(manager, converter)
infile = open(path, 'rb')
for page in PDFPage.get_pages(infile, pagenums):
interpreter.process_page(page)
infile.close()
converter.close()
text = output.getvalue()
pdf_str=text
output.close()
return(pdf_str)
x=getPDFContent(path_to_sample)