如何在Python中获取PDF文件中指定文本的下一行内容
从PDF文本中提取指定行的下一行内容
需求说明
从PDF读取的文本中,获取指定文本**“井盖电压 井盖位置 井盖等级”(对应原英文:Voltage on Manhole Cover Manhole Location Manhole Grade)的下一行内容,期望输出为“无道路 与地面齐平/找平”**(对应原英文:No Roadway To Grade/Flush)。
示例文本
井盖是否可检查 是 井盖电压 井盖位置 井盖等级 无道路 与地面齐平/找平 井盖类型 井盖尺寸 入口数量 1 单动实心款 24英寸 井盖长度 2英尺 井盖宽度 2英尺 净空深度(D/C) 3英尺 顶部到地面高度(C/S) 6英寸 井盖内容物 次级(低于4kV)、路灯 主电缆数量 0 环境控制
实现方案(以Python为例)
思路
- 将读取到的PDF文本按行拆分,过滤无效空行(可选)
- 遍历行列表,定位到目标行
- 若目标行存在下一行,提取该行内容
代码示例
# 假设已将PDF文本读取到变量pdf_text中 pdf_text = """ Manhole Available for Inspection Yes Voltage on Manhole Cover Manhole Location Manhole Grade No Roadway To Grade/Flush Manhole Cover Type Manhole Cover Size Number of Entrances 1 Single Action Solid 24" Manhole Length 2 ft Manhole Width 2 ft Depth Clearance (D/C) 3 ft Ceiling to Surface (C/S) 6 inches Manhole Content Secondary (Less than 4kV), Streetlight # of Primary Cables 0 Environmental Controls """ # 按行分割并过滤空行 lines = [line.strip() for line in pdf_text.split('\n') if line.strip()] # 指定目标文本(根据读取的文本语言选择) target_line = "Voltage on Manhole Cover Manhole Location Manhole Grade" result = None for idx, line in enumerate(lines): if line == target_line: if idx + 1 < len(lines): result = lines[idx + 1] break print(result) # 输出:No Roadway To Grade/Flush
注意事项
- 若读取的是中文翻译后的文本,将
target_line替换为对应的中文语句即可 - 部分PDF可能存在文本换行异常,需根据实际输出调整行分割或匹配逻辑
- 必须判断下一行索引是否有效,避免出现索引越界错误
内容的提问来源于stack exchange,提问作者Vignesh Vangala
相关产品推荐
相关产品推荐

