pdftotext无法读取某些文档

2024-10-05 10:15:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用pdftotext使用以下代码将PDF文件读入python

import pdftotext
bill_full = []

with open('sample.pdf', "rb") as f:
    pdf = pdftotext.PDF(f)
    bill = ''
    for page in pdf:
        bill = bill + page
    bill_full.append(bill)

前面的代码似乎主要适用于我的完整数据集,但我似乎遇到了看似随机的错误。应用于以下PDF https://legiscan.com/WI/text/AB649/id/456434/Wisconsin-2009-AB649-Introduced.pdf的前一段代码将导致

2011 − 2012 LEGISLATURE LRB−1478/1 2011 SENATE BILL 27\r\n\r\n\r\n\r\n\r\n    March 1, 2011 − Introduced by JOINT COMMITTEE             ON   FINANCE. Referred to Joint\r\n        Committee on Finance.\r\n\r\n\r\n\r\n\r\n1   AN ACT         relating to: state finances and appropriations, constituting the\r\n\r\n2        executive budget act of the 2011 legislature.\r\n\r\n\r\n                      Analysis by the Legislative Reference Bureau\r\n                                        INTRODUCTION\r\n          

但是,当应用于其他人(例如https://legiscan.com/WI/text/AB408/id/423828/Wisconsin-2009-AB408-Introduced.pdf)时,我会得到以下字符序列:

 \x08\x08\x11 \x06 \x08 \x08 \x1c\x18\x1a\x1b"\x1c\x14#$!\x18 

这两个PDF有什么不同?理想情况下,我希望检测到“不可读”的PDF,并将其从分析中删除


Tags: the代码texthttpscompdfpagefull
1条回答
网友
1楼 · 发布于 2024-10-05 10:15:25

为了回答这个直接的问题,不同之处在于CID数据,所以让我们只看一下每一页1上的一个对象。 在这里,我选择你问题的主题,第一个文本包括数字1 2 9 0、字母L E G I S A T U R和标题中的其他字母 enter image description here

在这里,我们看到好的或坏的,它们都存储为相同的字体类型?????+PSOwstnewcspsb,我不清楚,但似乎是按照PSO WeSTern NEW Courier的思路命名的???大胆的

那么,为什么会有一些像OCR那样正确映射的工作,而另一些则不是呢?这对我来说是未知的,通常没有明确的押韵或原因,但我们可以看到结果的不同,因为好的开始于可打印空间(/FirstChar 32/LastChar 116),而两个非工作的开始(/FirstChar 0/LastChar#约66),即包括非标准打印范围。然而,这并不是一个糟糕字体的指标,在其他糟糕的例子中,我看到/FirstChar 2暗示了一个定义糟糕的字体。Search/FirstChar的问题是它可能被加密或编码,因此在分解之前无法在许多PDF中查找

坏字符的唯一好指示是好的纯文本提取包含无效的打印字符

您说希望避免使用结构不好的文件,但许多文件可能只有页面的不好部分,有关此问题的更广泛示例,请参见How to identify likely broken pdf pages before extracting its text?

相关问题 更多 >

    热门问题