Python,pyPdf OCR错误:pyPdf.utils.PdfReadError:找不到EOF标记

时间:2011-05-21 04:28:46

标签: python exception eof pypdf

pyPdf抛出此异常:

pyPdf.utils.PdfReadError:未找到EOF标记

我不需要修复pyPdf,我只需要得到EOF错误导致“except”块执行并跳过文件,但它不起作用。它仍然导致程序停止运行。

背景:

Batch OCR Program for PDFs

Python, pyPdf, Adobe PDF OCR error: unsupported filter /lzwdecode

......传奇继续。

我在一个文件夹中获得了10,000个pdf。一些OCRd,一些不是。无法分辨他们。第1步是找出哪些不是OCRd而OCR只是那些(详见其他线程)。

所以我正在使用pyPdf。当我尝试阅读文本时,我得到一些与无法识别的字符和不支持的过滤器相关的异常。所以我猜想如果它抛出异常,它会有一些文本,然后它就不会进入列表。问题解决了吧?像这样:

      from pyPdf import PdfFileWriter, PdfFileReader
      import sys, os, pyPdf, re

      path = 'C:\Users\Homer\Documents\My Pdfs'

      filelist = os.listdir(path)

      has_text_list = []
      does_not_have_text_list = []

    for pdf_name in filelist:
        pdf_file_with_directory = os.path.join(path, pdf_name)
        pdf = pyPdf.PdfFileReader(open(pdf_file_with_directory, 'rb'))
        print pdf_name
        for i in range(0, pdf.getNumPages()):
            try:
                pdf.write("%%EOF")
                content = pdf.getPage(i).extractText()
                does_it_have_text = re.findall(r'\w{2,}', content) 
                if does_it_have_text == []:
                    does_not_have_text_list.append(pdf_name)
                    print pdf_name
                else:
                    has_text_list.append(pdf_name)
            except:
                has_text_list.append(pdf_name)

print does_not_have_text_list

但后来我收到了这个错误:

pyPdf.utils.PdfReadError:未找到EOF标记

似乎它出现了很多(来自谷歌):

http://pdfposter.origo.ethz.ch/node/31

我认为这意味着pyPdf打开文件,尝试文本处理,提出任何异常,做了除了:阻止,但现在无法进入下一步b / c它不知道文件已经过了。

还有其他类似的线索,他们声称这已经修复,但似乎没有。

然后有人在这里有一个函数,他们首先将EOF字符写入.pdf。

http://code.activestate.com/lists/python-list/589529/

我坚持使用“pdf.write(”%% EOF“)”行试图模仿这个,但没有骰子。

所以我如何得到运行except块的错误?我也使用翼IDE,所以如果有一种方法可以使用调试器来跳过这些文件,那也是可能的。 THX。

1 个答案:

答案 0 :(得分:2)

将你的pyPdf调用放在try / except块中。