如何从 PDF 上的特定位置/跨度提取文本 (PyPDF2)

问题描述 投票:0回答:1

我已经将 PDF 页面中的文本提取到文本变量中。 我正在寻找提取字符串“您的号码是”之后的数字(14 长度的字符串在跨度(982,996)上匹配:

object=PyPDF2.PdfFileReader(filename)
Text = PageObj.extractText()
PageObj = object.getPage(0) 
ResSearch = re.search(String, Text)

我得到一个结果:span = (982, 996) match = 'your number is'。现在我需要的是抓取后面的三位数文本(“您的号码是105”),因为文件每天都在变化,并且获取应该是动态的。
谢谢大家!!

python pdf text pypdf pdf-scraping
1个回答
0
投票

问题在于正则表达式而不是 pdf 本身。假设每页最多有一个匹配项,您可以使用

search
,否则使用
findall
。查看 doc 关于如何使用组的部分,带有
(...)
的部分。

import PyPDF2, re

filename = '' # 

pdf_r = PyPDF2.PdfFileReader(open(filename, 'rb'))
text = pdf_r.getPage(0).extractText() # from 1st page or make a loop

if p := re.search(r'your number is (\d{3})', text):
   my_number = int(p.groups()[0]) # as int

使用PyPDF4,语法是相同的,并且它不“有”这样的

extractText
问题:

  • 来自文档这对于某些 PDF 文件效果很好,但对于其他文件效果不佳,具体取决于所使用的生成器。 [...] 不要依赖此函数中文本的顺序,因为如果此函数变得更加复杂,它会发生变化。
© www.soinside.com 2019 - 2024. All rights reserved.