pdfplumber的extract_text提取表格内容,如何仅提取表格外文本
pdfplumber分离提取表格外文本和表格内容的方案
核心实现逻辑是先识别页面所有表格的坐标范围,裁剪排除这些区域后再提取文本,就能避免文本提取结果混入表格内容。
实现代码
import pdfplumber with pdfplumber.open("目标文件.pdf") as pdf: for page in pdf.pages: # 第一步:单独提取所有表格内容 tables = page.extract_tables() # 此处可添加你处理表格数据的逻辑 # 第二步:获取所有表格的坐标边界 table_bboxes = [table.bbox for table in page.find_tables()] # 第三步:裁剪页面排除所有表格区域 non_table_page = page for bbox in table_bboxes: # invert=True表示保留裁剪框外的区域,即排除表格范围 non_table_page = non_table_page.crop(bbox, relative=False, invert=True) # 第四步:提取表格外的纯文本 non_table_text = non_table_page.extract_text() # 此处可添加你处理非表格文本的逻辑
注意事项
- 若运行时提示
crop方法不支持invert参数,先升级pdfplumber到最新版本:pip install --upgrade pdfplumber - 若存在表格识别误差,可以调整
find_tables()的table_settings参数优化识别精度,常用配置包括修改vertical_strategy、horizontal_strategy调整横竖线识别规则,避免非表格内容被误判为表格 - 提取到的非表格文本如果存在大量多余空行,可以用
non_table_text.strip()配合正则替换多余换行符做简单清洗
内容的提问来源于stack exchange,提问作者Deepam
相关产品推荐
相关产品推荐

