使用python正则表达式从pdf中提取特定数据

2024-09-27 21:28:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pdf文件,我必须从中提取信息,如ID(六位数)、公司名称、财产地址(从:到所欠税款)、所欠税款(美元)、法律描述(从Ward到下一个ID)从pdf的每个段落,但当我使用PyPdf2模块从pdf读取文本时,文件的每个段落都以单个字符串形式出现

这是我的代码:

import pypdf2, re
pdfObj = open(r'D:\FreeLancing\tax_2019 - PDF to extract the information from.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfObj)
pdfReader.numPages
pdfPageObj = pdfReader.getPage(0)
text = pdfPageObj.extractText()
re.sub(r'\s\n|\s\n.*|\n', ' ', text, flags=re.DOTALL)
re.split(r'^\d{6}.*\d{6}$', text, flags=re.I | re.DOTALL)

从这个代码中我得到了这个 output.

因此,我不得不问你,如果你能指导我如何从长输出屏幕中提取使用正则表达式所需的数据。或者,如果可能的话,你能告诉我如何将从pdf中提取的文本分割成pdf文件中的段落吗

This is the pdf file


Tags: 文件the代码text文本reidpdf
1条回答
网友
1楼 · 发布于 2024-09-27 21:28:15
pattern = re.compile(r"^\s*\d{6}\b\s+(?P<id>.*?)\s*PROPERTY\sADDRESS\s*:\s*(?P<address>.*?)\s*TAXES\sOWED\sARE\s+(?P<taxes_owed>.*?)\s*(?P<legal_description>Ward.*?)\.\s*$")
for company_info in re.split(r'(?<=\.)\s*(?=\d{6}\b)', text) :
    src = pattern.search(company_info)
    for group_name in ["id", "address", "taxes_owed", "legal_description"] :
    print(src.group(group_name))

有关正则表达式的解释,请参见https://regex101.com/r/OtHH5l/1

相关问题 更多 >

    热门问题