【问题标题】:extracting text from a pdf in Python在 Python 中从 pdf 中提取文本
【发布时间】:2019-06-26 15:59:45
【问题描述】:
我正在尝试从 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)
我得到的输出是:
如何解决?
【问题讨论】:
标签:
python-3.x
pdf
text-extraction
【解决方案1】:
您的第一个错误是没有为您的函数调用分配一个变量,它返回处理后的文本。
x=getPDFContent(path_to_sample)
如果仍然不能解决问题:
尝试使用 PDF Miner 模块。(适用于 Python 3 的 PDF Miner.Six)。根据您使用的 Python 版本,PyPDF2 有时可能会出现问题。我在 PyPDF2 中遇到了某些 PDF 文件的问题,这给了我与你类似的 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)