使用python查找搜索字符串在pdf文档中的哪个页面

时间:2012-09-24 19:50:37

标签: python pdf pypdf

我可以使用哪些python包来找出特定“搜索字符串”所在的页面?

我查看了几个python pdf包,但无法弄清楚应该使用哪一个。 PyPDF似乎没有此功能,PDFMiner似乎对这样简单的任务来说太过分了。 有什么建议?

更精确: 我有几个PDF文档,我想提取字符串“Begin”和字符串“End”之间的页面。

3 个答案:

答案 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