2015-09-07 96 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)