我可以使用哪些python包来找出特定“搜索字符串”所在的页面?
我查看了几个python pdf包,但无法弄清楚应该使用哪一个。 PyPDF似乎没有此功能,PDFMiner似乎对这样简单的任务来说太过分了。 有什么建议?
更精确: 我有几个PDF文档,我想提取字符串“Begin”和字符串“End”之间的页面。
答案 0 :(得分:14)
我终于发现pyPDF可以提供帮助。我发布它,以防它可以帮助别人。
(1)定位字符串的功能
def fnPDF_FindText(xFile, xString):
# xfile : the PDF file in which to look
# xString : the string to look for
import pyPdf, re
PageFound = -1
pdfDoc = pyPdf.PdfFileReader(file(xFile, "rb"))
for i in range(0, pdfDoc.getNumPages()):
content = ""
content += pdfDoc.getPage(i).extractText() + "\n"
content1 = content.encode('ascii', 'ignore').lower()
ResSearch = re.search(xString, content1)
if ResSearch is not None:
PageFound = i
break
return PageFound
(2)提取感兴趣页面的功能
def fnPDF_ExtractPages(xFileNameOriginal, xFileNameOutput, xPageStart, xPageEnd):
from pyPdf import PdfFileReader, PdfFileWriter
output = PdfFileWriter()
pdfOne = PdfFileReader(file(xFileNameOriginal, "rb"))
for i in range(xPageStart, xPageEnd):
output.addPage(pdfOne.getPage(i))
outputStream = file(xFileNameOutput, "wb")
output.write(outputStream)
outputStream.close()
我希望这会对其他人有所帮助
答案 1 :(得分:1)
除了@ user1043144提到的内容外,
要与python 3.x一起使用
使用PyPDF2
import PyPDF2
使用open
代替file
PdfFileReader(open(xFile, 'rb'))
答案 2 :(得分:0)
我能够使用下面的代码成功获得输出。
代码:
import PyPDF2
import re
# Open the pdf file
object = PyPDF2.PdfFileReader(r"C:\TEST.pdf")
# Get number of pages
NumPages = object.getNumPages()
# Enter code here
String = "Enter_the_text_to_Search_here"
# Extract text and do the search
for i in range(0, NumPages):
PageObj = object.getPage(i)
Text = PageObj.extractText()
if re.search(String,Text):
print("Pattern Found on Page: " + str(i))
示例输出:
Pattern Found on Page: 7