当前位置: 首页 > 知识库问答 >
问题:

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

叶冥夜
2023-03-14

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

我研究了几个python pdf包,但不知道我应该使用哪一个。PyPDF似乎没有这个功能和PDFMiner似乎是一个过度杀这样简单的任务。有什么建议吗?

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

共有3个答案

翟越
2023-03-14

我能够使用下面的代码成功地获得输出。

代码:

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
邓英卓
2023-03-14

除了@user1043144提到的,

与python 3. x一起使用

使用PyPDF2

import PyPDF2

open代替file

PdfFileReader(open(xFile, 'rb'))
司马宏茂
2023-03-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()

我希望这对其他人有帮助

 类似资料:
  • 问题 我试图通过搜索文本来确定文档是什么类型(例如恳求、通信、传票等),最好使用python。所有的PDF都是可搜索的,但是我还没有找到用python解析它并应用脚本搜索它的解决方案(除了先将它转换为文本文件,但是对于n个文档来说,这可能是资源密集型的)。 到目前为止,我所做的 我已经研究了pypdf、pdfminer、adobe pdf文档,以及我能在这里找到的任何问题(尽管似乎没有一个能直接解

  • 问题内容: 我今天需要从一堆字符串中删除中文,并且正在寻找一个简单的Python正则表达式。有什么建议? 问题答案: 对于狭窄的Unicode构建的python的简短但相对全面的答案(不包括> 65535的常规,只能通过代理对在狭窄的Unicode构建中表示): 用于构建RE的代码,以及是否需要在辅助平面中检测汉字以进行广泛构建:

  • 问题内容: 我正在寻找将某些字符串搜索到某些文件夹结构中的最快方法。我知道可以使用file_get_contents从文件中获取所有内容,但是我不确定是否很快。也许已经有一些可以快速运行的解决方案。我正在考虑使用scandir获取所有文件,并使用file_get_contents读取其内容,并使用strpos来检查字符串是否存在。 您认为这样做有更好的方法吗? 或者也许试图与grep一起使用php

  • 我正在使用DocX库来替换word文档中的文本。我想以某种方式找到模板docx文件中“[]”之间的所有字符串,例如[Name]、[LastName]、[Date]等...并将其替换为我以前加载到datagridview中具有相同列名(name、LastName、Date)的值。以下是我目前掌握的信息:

  • 我要使用集合中包含的日期字段查找文档 我想找到以'2018-01-03T11:00:'开头的所有文档 我想忽略Millesecobde和ISOtype..等的部分 无论第二个只是核实日期,小时和分钟。

  • 如何获取搜索查询匹配的文档中的所有字段?关于<code>字段</code>的ES文档指出,使用<code>*</code>,可以获得所有字段:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html 有了这个文档和这个查询,我得到了结果,但没有返回任何字段: 放置