2011-05-21 50 views
2

pyPdf拋出此異常:的Python,pyPdf OCR錯誤:pyPdf.utils.PdfReadError:未找到EOF標記

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,一些沒有。不能告訴他們分開。第一步是找出哪些不是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打開文件,嘗試在文本處理中引發任何異常,除了:block,但現在無法進入下一步B/C它不知道該文件已經被支持。

還有像這樣的其他線程,他們聲稱這已被修復,但它似乎並沒有。

然後有人有一個功能,在這裏他們先將EOF字符寫入.pdf。

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

我停留在 「pdf.write(」 %% EOF 「)」 行,試圖模擬天生這一點,但沒有骰子。

所以我怎麼得到那個錯誤來運行except塊呢?我也使用wing IDE,所以如果有一種方法可以使用調試器跳過這些文件,那也是可能的。謝謝。

回答

2

也把您的pyPdf調用放在try/except塊中。

+0

單詞,兒子!謝謝。爸爸:^) – PatentDeathSquad 2011-05-21 04:39:22

+2

沒問題, – 2011-05-21 04:40:36