小编Nat*_*han的帖子

在 python 中使用 pdfminer 处理连字

我有一个 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
Run Code Online (Sandbox Code Playgroud)

这看起来效果很好,因为当打印这个字符串 str 时文本就会显示出来。然而,经过仔细检查,有许多双精度字符(即“ff”、“fi”、“fl”和“ff”)在查看生成的文本时会变成“!”。

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

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

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

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

python unicode encoding utf-8 pdfminer

3
推荐指数
1
解决办法
1860
查看次数

标签 统计

encoding ×1

pdfminer ×1

python ×1

unicode ×1

utf-8 ×1