问题描述
您的PDF文件没有可打印的空格字符,只是将单词放置在需要的位置。您可能需要做一些额外的工作来找出空格,可能是假设多字符运行是单词,然后在它们之间放置空格。
如果您可以在PDF阅读器中选择文本,并正确显示空格,那么至少您知道有足够的信息来重构文本。
“ fi”是印刷的连字,显示为单个字符。您可能会发现“ fl”,“ ffi”和“ ffl”也会发生这种情况。您可以使用字符串替换将“ fi”替换为连字。
解决方法
使用下面的代码片段中,我试图从提取文本数据这个PDF文件。
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
但是,我获得的输出在大多数单词之间没有空格。这使得很难对文本执行自然语言处理(我的最终目标在这里)。
同样,单词“ finger”中的“ fi”始终被解释为其他含义。这是相当有问题的,因为本文是关于手指的自发运动的。
有人知道为什么会这样吗?我什至不知道从哪里开始!