python - 从PDF页面提取文本到列表

时间:2015-09-07 03:37:43

标签: python pdf

我正在尝试从PDF中提取文本页面并将文本存储为列表中的每页列表,如

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

我使用了PyPDF2 package

中的extractText()方法
#!/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文件中的文本?

1 个答案:

答案 0 :(得分: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)