使用下面的代码片段,我试图从thisPDF文件中提取文本数据。
import pyPdf
def get_text(path):
# Load PDF into pyPDF
pdf = pyPdf.PdfFileReader(file(path, "rb"))
# Iterate pages
content = ""
for i in range(0, pdf.getNumPages()):
content += pdf.getPage(i).extractText() + "\n" # Extract text from page and add to content
# Collapse whitespace
content = " ".join(content.replace(u"\xa0", " ").strip().split())
return content
然而,output I obtain在大多数单词之间没有空格。这使得对文本执行自然语言处理变得困难(这里是我的最终目标)。
此外,“手指”一词中的“fi”一直被解释为其他东西。这是相当有问题的,因为这篇论文是关于手指的自发运动。。。
有人知道为什么会这样吗?我都不知道从哪里开始!
作为PyPDF2的替代方案,我建议
pdftotext
:不使用PyPdf2,使用Pdfminer库包,该包与下面的功能相同。我从this那里得到了代码,按照我的要求我对它进行了编辑,这段代码给了我一个文本文件,其中的单词之间有空白。我和anaconda和python 3.6一起工作。对于安装Python3.6的PdfMiner,可以使用这个link。
PDF文件没有可打印的空格字符,它只是将单词放置在需要的位置。您需要做额外的工作来计算空格,可能是假设多个字符的运行是单词,并在它们之间放置空格。
如果您可以在PDF阅读器中选择文本,并使空格正确显示,那么至少您知道有足够的信息来重建文本。
“fi”是一个排版连字,显示为单个字符。你可能会发现这也发生在“fl”、“ffi”和“ffl”上。您可以使用字符串替换用“fi”替换fi连字。
相关问题 更多 >
编程相关推荐