python正则匹配提取pdf中的数据,数据都在文本表格中,匹配的数据是Cm 1.9<3<3.3,Cmk 8.4<9<9.6,还有Char.Descr. intapple 8999N(有数字和字母),pdf一共4页,每一页的Cm,Cmk和Char.Descr后的数据不同
但是他们中间相隔距离较远,需要提取其后面的数据,数据都在不规则表格中,用group存储
python正则匹配repdf数据
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
要从PDF中提取特定格式的数据,我们可以使用Python的
PyPDF2库来读取PDF内容,并结合正则表达式进行匹配。然而,由于PDF文件结构复杂且包含图形、图像等元素,直接解析文本可能并不容易。对于复杂的PDF,可能需要借助第三方工具如tabula-py来识别表格。首先,请确保安装了所需的库:
pip install PyPDF2 tabula-py接下来是一个基本的示例,展示了如何使用
tabula-py来提取表格数据,然后通过正则表达式匹配所需的关键字和数据。这个例子假设所有的数据都在表格中,如果不在表格中,你可能需要探索其他方法来定位这些文本。import re import tabula # 定义要匹配的模式 patterns = [ r"Cm\s+(\d+\.\d+)<\d+<\d+\.\d+", r"Cmk\s+(\d+\.\d+)<\d+<\d+\.\d+", r"Char\.Descr\..*?(\w+\s+\d+[\w\d]+N)", ] def extract_data(pdf_path): # 使用tabula提取所有表格内容为DataFrame tables = tabula.read_pdf(pdf_path, pages="all") data_dict = {} for table in tables: for i, row in table.iterrows(): for pattern in patterns: match = re.search(pattern, str(row)) if match: key, value = match.groups() if key not in data_dict: data_dict[key] = [] data_dict[key].append(value) return data_dict pdf_path = "your_pdf_file.pdf" data = extract_data(pdf_path) print(data)将
your_pdf_file.pdf替换为你的PDF文件路径。这段代码会读取PDF中的所有表格,对每一行进行正则匹配,找到匹配的模式后将其添加到字典中。字典的键是匹配模式的一部分,值是一列表,存储每一页找到的所有对应值。注意:这种方法依赖于
tabula-py库正确识别表格。如果PDF中的表格结构复杂,可能需要调整正则表达式以适应不同的文本格式,或者尝试其他PDF处理库,如pdfplumber或pdfminer.six。如果你的PDF中表格不明显或者数据分布非常不规律,那么你可能需要使用OCR(光学字符识别)技术来转换PDF为可搜索的文本,然后再进行分析。在这种情况下,可以考虑使用
pytesseract库与Google的Tesseract OCR引擎结合。但这也增加了复杂性,因为OCR结果可能会有误识率。解决 无用评论 打赏 举报 编辑记录