我目前正在使用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,并将其从分析中删除
为了回答这个直接的问题,不同之处在于CID数据,所以让我们只看一下每一页1上的一个对象。 在这里,我选择你问题的主题,第一个文本包括数字1 2 9 0、字母L E G I S A T U R和标题中的其他字母
在这里,我们看到好的或坏的,它们都存储为相同的字体类型?????+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?
相关问题 更多 >
编程相关推荐