pdftotext 无法读取某些文档
pdftotext cannot read certain documents
我目前正在使用 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 数据有什么不同,所以让我们只看一下每个页面上的一个 object 1。
在这里我选择你的问题的主题,第一个文本包括数字 1 2 9 0,字母 L E G I S A T U R 和其他标题
在这里我们看到好的或坏的它们都存储为相同的字体类型??????+PSOwstnewcspsb,我不清楚,但似乎按照 PSO WeSTern NEW Courier 的方式命名 ???加粗
那么,为什么会有一些像 OCR 那样正确映射而另一些却没有呢?这对我来说是未知的,通常没有明确的押韵或原因,但我们可以看到结果的差异,因为好的结果以可打印的 space (/FirstChar 32/LastChar 116) 开头,而两个都不起作用那些开始(/FirstChar 0/LastChar ## of approx 66)即包括非标准打印范围。然而,这并不表示字体不好,在其他不好的例子中,我看到 /FirstChar 2 暗示字体定义不当。搜索 /FirstChar 的问题是它可能被加密或编码,因此在反汇编之前无法在许多 pdf 中查找。
错误字符的唯一指示是良好的纯文本提取包含无效打印字符。
您说您希望避免使用结构错误的文件,但许多文件可能只有页面的错误部分,有关此问题的更广泛示例,请参见 How to identify likely broken pdf pages before extracting its text?
我目前正在使用 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 数据有什么不同,所以让我们只看一下每个页面上的一个 object 1。
在这里我选择你的问题的主题,第一个文本包括数字 1 2 9 0,字母 L E G I S A T U R 和其他标题
在这里我们看到好的或坏的它们都存储为相同的字体类型??????+PSOwstnewcspsb,我不清楚,但似乎按照 PSO WeSTern NEW Courier 的方式命名 ???加粗
那么,为什么会有一些像 OCR 那样正确映射而另一些却没有呢?这对我来说是未知的,通常没有明确的押韵或原因,但我们可以看到结果的差异,因为好的结果以可打印的 space (/FirstChar 32/LastChar 116) 开头,而两个都不起作用那些开始(/FirstChar 0/LastChar ## of approx 66)即包括非标准打印范围。然而,这并不表示字体不好,在其他不好的例子中,我看到 /FirstChar 2 暗示字体定义不当。搜索 /FirstChar 的问题是它可能被加密或编码,因此在反汇编之前无法在许多 pdf 中查找。
错误字符的唯一指示是良好的纯文本提取包含无效打印字符。
您说您希望避免使用结构错误的文件,但许多文件可能只有页面的错误部分,有关此问题的更广泛示例,请参见 How to identify likely broken pdf pages before extracting its text?