1. 程式人生 > >python 將pdf轉換成txt

python 將pdf轉換成txt

由於上篇中的一個模組要求是將pdf中的文字內容給讀取出來,因為大部分的畢設文件都是pdf格式的,而python自帶的file I/O是沒法實現從pdf格式的檔案中讀取內容的,因此需要匯入第三方的package來完成。
起初,google出來的結果是用pyPdf的,但是看了官方文件後,另外通過實驗,發現效果不佳,主要原因是其對pdf檔案的操作主要還是停留在page階段。 後來,繼續google,發現有人用pdfminer,看了後效果不錯,不過那篇blog的程式碼實現部分有點小問題,就是轉換完成後得到的txt檔案未保留原來pdf中的格式,導致閱讀效果不佳,但是,pdfminer本身有個小工具是pdf2txt,通過其實現的效果卻是很理想的。想了很久,最後看了下pdf2txt的原始碼,加上官方文件的說明,總算是得到較好的效果,具體實現如下: ''' Created on 2011-12-27 @author: zhufeng ''' from pdfminer.pdfinterp import PDFResourceManager, process_pdf from pdfminer.converter import TextConverter from pdfminer.layout import LAParams def convert(filename):     outfile = filename+'.txt'     args = [filename]     rsrcmgr = PDFResourceManager()     outfp = file(outfile,'w')     device = TextConverter(rsrcmgr,outfp,codec='utf-8',laparams=LAParams())     for fname in args:         fp = file(fname, 'rb')         process_pdf(rsrcmgr, device, fp, pagenos = set(), maxpages = 0, password = '', check_extractable=True)         fp.close()     device.close()     outfp.close() if __name__ == '__main__':     convert('g:/a.pdf') ps.    希望繼續深入,爭取把圖片也給摳出來,當然這樣就得轉換成doc檔案,這裡就需要涉及到編碼問題,昨晚將出來的設定為doc格式,結果word識別就出現警告,好在用的是utf-8,沒有影響最後的結果,但是畢竟還是出了個警告。 另外,有個想法,但是還沒實現,因為用處不大,可以先用pyPdf將一篇pdf中的某幾頁截取出來存到一個新的pdf檔案,然後再用pdfminer進行轉換,這樣就可以彌補pdfminer不能只讀取某一部分的pdf的缺陷。
pyPdf轉換效率極低!!! 有興趣的可以去pdfminer的官網瞧瞧哈,http://www.unixuser.org/~euske/python/pdfminer/index.html