2015-09-07 95 views
0

我想提取文本頁面從PDF和存儲文本每頁清單明智列表中的像蟒蛇 - 從PDF頁面明智提取文本列出

[['This', 'is', 'one', 'page'] , ['I', 'am', 'page', 'TWO'] , ['Three', 'that\'s', 'me'] , ['and', 'so', 'on'] , ['...']]

我用extractText()PyPDF2 package方法:

#!/usr/bin/python 

from PyPDF2 import PdfFileReader 

# open PDF 
myPDFpath = 'test.pdf' 
myPDF = PdfFileReader(open(myPDFpath, "rb")) 

# initialize page list 
pagelist = [] 

# grab all text from PDF per page and put into page list  
for page in range(0, myPDF.getNumPages()): 
    currentPage = myPDF.getPage(page) 
    myText = currentPage.extractText() 
    thispage = myText.split() 
    pagelist.append(thispage) 

上面的代碼在技術上有效,但該方法是不可靠的(按照自己doc),拋出輸出像:

[u'!"#$"%#&\'"()"', u'"!"#$"%#&\'"()"', u'"!"#$"%#&\'"()"', u'"!"#$"%#&\'"()"', u'"!"#$"%#&\'"()"', u'"!"#$"%#&\'"()"', u'"!"#$"%#&\'"()"', u'"!"#$"%#&\'"()"', u'"!"#$"%#&\'"()"', 

所以我想知道是否有其他可靠的方法來解析Python中的PDF文件中的文本?

+0

你的意思是那句「這非常適用於某些PDF文件,但對其他人不好,這取決於使用的發電機。」?這是真的。不是*全部*全部*全部*文本可以*總是*被提取。發佈一個鏈接到您有問題的PDF,我們可以判斷這是否是這樣的。 – usr2564301

+0

我使用的文件位於:http://a.uguu.se/yefsbf_testdocx-pdf.pdf它是使用MSx中的Print/Pdf ...函數從docx文檔生成的。如果有一種方法可以從docx生成一個不會引發這些問題(但保持頁面完好)的pdf的方法,那將會很棒 – birgit

+0

非常令人驚訝:我自己的工具比PyPDF2更好,但是在解碼字體時出錯: '% - 純文本轉儲---------------- 我「是」頁面「1」。「我」是「頁面」1。「」我「是」頁面「 1。「」(等),空格字符被翻譯成'''!儘管如此,使用Adobe Acrobat複製文本時也會出現同樣的情況,這就是能夠複製文本的試金石。檢查PDF顯示我們都是正確的,根據嵌入的'/ ToUnicode','空間'確實轉化爲雙引號。 – usr2564301

回答

0

好了,你可以試試這個:

import PyPDF2 

pages = [] 
pdf_file = <Enter your file path> 
read_pdf = PyPDF2.PdfFileReader(pdf_file) 
number_of_pages = read_pdf.getNumPages() 
for page_number in range(number_of_pages): # use xrange in Py2 
    page = read_pdf.getPage(page_number).extractText().split(" ") # Extract page wise text then split based on spaces as required by you 
    pages.append(page)