如何在PDF提取的嵌套列表文本中删除首个“Information”前的所有内容
实现方案
核心处理逻辑
- 对单份PDF提取得到的行文本列表,遍历查找首个包含关键词
Information的行索引 - 从该索引位置对列表做切片,仅保留关键词及之后的所有文本行
- 增加兼容逻辑,若PDF未匹配到
Information关键词则默认保留全部内容,避免报错
修改后完整代码
from io import StringIO from pdfminer.pdfparser import PDFParser, PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from pdfminer.pdfpage import PDFPage pdf = [] # 存储所有PDF提取结果的外层列表 for k in range(1,90): output_string = StringIO() with open(f"G:/File ({k}).pdf", 'rb') as in_file: parser = PDFParser(in_file) doc = PDFDocument(parser) rsrcmgr = PDFResourceManager() device = TextConverter(rsrcmgr, output_string, laparams=LAParams()) interpreter = PDFPageInterpreter(rsrcmgr, device) for page in PDFPage.create_pages(doc): interpreter.process_page(page) # 提取文本并按行拆分 text = output_string.getvalue().split('\n') # 查找首个Information关键词的起始位置 start_index = 0 for idx, line in enumerate(text): if "Information" in line: start_index = idx break # 切片保留关键词及之后的内容,加入外层列表 processed_text = text[start_index:] pdf.append(processed_text) # 打印结果验证 print(pdf)
补充说明
如果需要严格匹配全词Information而不是子串匹配,可以把判断条件替换为:if any(word == "Information" for word in line.split())
内容的提问来源于stack exchange,提问作者Sissi
相关产品推荐
相关产品推荐

