【发布时间】:2019-03-22 15:30:40
【问题描述】:
我在 python 3 中使用 pdfminer,我在从 pdf 恢复的文本中得到奇怪的字母。
例如,我得到significant而不是significant(请注意字母f 和I 合并为一个)。
我不知道为什么会这样。这是我正在使用的代码。
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO
from nltk.tokenize import sent_tokenize
def convert_pdf_to_txt(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
fp = open(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()
sentences = sent_tokenize(text)
for s in sentences:
print(s)
print("\n\n")
到目前为止我唯一的猜测是它可能与编码有关,但似乎there is no way to retrieve the encoding of a pdf
【问题讨论】:
-
您是否使用其他方式验证了 PDF 中的文本实际上存储为单独的字符,并且您确实从 pdfminer 获得的结果与通过其他方式不同?
-
在上一条评论的基础上,
fi是一个常见的ligature。 -
@RandomDavis 我已经用几个查看器打开了几个 pdf 文件,而且这个词每次都很好。 “重要”的 Ctrl-F 确实显示了这个词。
-
因为 (1) 它是一种非常 非常 常见的连字,许多(显然是你的所有)“几个观众”都知道,和/或 (2) PDF可以包含明确声明特定字体中字形的正确翻译应该是另一系列字符和/或(3)任何字符串的元数据PDF 可以附加元数据,其中包含字符串“背后”的含义,以便于搜索引擎、屏幕阅读器和其他软件。
-
@usr2564301 那么有什么办法可以避免这个问题呢?
标签: python python-3.x pdf text pdfminer