gpt4 book ai didi

python - 在 python 中使用 pdfminer 处理连字

转载 作者:太空宇宙 更新时间:2023-11-04 01:17:04 33 4
gpt4 key购买 nike

我有一个 Python 脚本,它使用 PDFminer 从 pdf 文档中读取文本,如下所示:

def convert_pdf_to_txt(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
file_pointer = file(path, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
password = ""
maxpages = 0
caching = True
pagenos=set()
for page in PDFPage.get_pages(file_pointer, pagenos, maxpages=maxpages, password=password, caching=caching, check_extractable=True):
interpreter.process_page(page)
file_pointer.close()
device.close()
str = retstr.getvalue()
retstr.close()
return str

当打印字符串 str 时显示的文本看起来效果很好。然而,在仔细检查生成的文本时,有许多字符 double (即“ff”、“fi”、“fl”和“ff”)变成了“!”。

经过一些研究,我发现这些字符都有“连字”,这意味着它们可以替换为两个字符的连接版本。

这些连字显然无法在 ASCII 中找到,但我发现它们可以通过 unicode 表示。

我开始尝试使用不同的字符编码,以使文本中的“!”变成正确的连字,但我没有成功。

也许这与我的 PDF 文件或 PDFminer 本身有关?

最佳答案

所以我最后给 PDFMiner 的创建者 Yusuke Shinyama 发了邮件。我在下面总结了他的回复。

  • 有问题的 PDF 使用特殊的连字字体。
  • 像“fi”、“ff”或“fl”这样的字母有时在英文排版中会被特殊处理,它们通常被组合成一个字形以使其看起来更好。
  • 有问题的 PDF 正是这样做的,并使用“!”作为组合字母,当使用该专用字体呈现时,它可能看起来像“fi”或“ff”。
  • 由于 PDFMiner 没有该信息,它总是尝试提取文档中的文字文本。

根据 Shinyama 博士的说法,除了将所有内容都放入 OCR 软件之外,没有好的解决方案。


我没有时间实现 OCR,因此我编写了一个非常简单的拼写检查器。拼写检查器遍历我的文本,找到带有“!”的词(使用正则表达式),然后将它们与已知连字列表进行比较。

根据 Shinyamas 博士的说法,世界上还有很多这样的 PDF,将 PDF 转换为文本总是以“尽力而为”的结果告终。

关于python - 在 python 中使用 pdfminer 处理连字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23750863/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com