当前位置: 首页 > news >正文

`pdfplumber` 是一个用于从 PDF 文件中提取文本、表格和元数据的 Python 库

pdfplumber是一个用于从 PDF 文件中提取文本、表格和元数据的 Python 库,特别擅长处理含复杂布局(如多栏、合并单元格、不规则表格)的 PDF。它基于pdfminer.six,但提供了更友好、更直观的 API。

安装方式:

pipinstallpdfplumber

基本使用示例(提取文本):

importpdfplumberwithpdfplumber.open("example.pdf")aspdf:full_text=""forpageinpdf.pages:full_text+=page.extract_text()or""# extract_text() 可能返回 Noneprint(full_text)

提取表格示例:

withpdfplumber.open("example.pdf")aspdf:forpageinpdf.pages:tables=page.extract_tables()# 返回列表,每个元素是二维列表(表格)fortableintables:print(table)

注意事项:

  • 中文支持需确保 PDF 内嵌字体且编码正确;若乱码,可尝试设置layout=True或配合pdfplumber.open(..., password="xxx")解密。
  • 性能较慢(逐页解析),大文件建议按需处理页码。
  • 不支持直接编辑或生成 PDF,仅用于提取。

pdfplumber中,可以通过page.crop(bbox)方法先裁剪页面指定矩形区域(bounding box),再在该子区域内调用extract_text()extract_words()等方法,从而实现精准提取指定坐标范围内的文本。

坐标系说明(重要)
pdfplumber 使用 PDF 标准坐标系:

  • 原点(0, 0)左下角
  • x向右递增,y向上递增;
  • bbox = (x0, y0, x1, y1)表示矩形区域,其中:
    • x0,y0:左下角横纵坐标;
    • x1,y1:右上角横纵坐标;
    • 要求x0 < x1y0 < y1

📌操作步骤

  1. 打开 PDF,定位目标页;
  2. 使用page.crop((x0, y0, x1, y1))获取裁剪后的CroppedPage对象;
  3. 在裁剪页上调用extract_text()(支持layout=True/Falsekeep_blank_chars等参数);
  4. (可选)用page.debug_tablefinder({})可视化表格区域辅助定位。

🔧 示例代码:

importpdfplumberwithpdfplumber.open("report.pdf")aspdf:page=pdf.pages[0]# 第一页# 示例:提取左上角约 100×50 区域(注意 y 坐标从底向上!)# 假设页面高度为 page.height ≈ 792(如 Letter 尺寸),则顶部区域 y 范围约为 height-50 到 heightbbox=(50,page.height-100,200,page.height-50)# (x0, y0, x1, y1)cropped=page.crop(bbox)text=cropped.extract_text()print("指定区域文本:",textor"[无文本]")

💡 提示:

  • 若不确定坐标,可用page.to_image().draw_rect(bbox).save("debug.png")可视化验证(需安装Pillowopencv-pythonpdfplumber[plot]);
  • 支持链式调用:page.crop(...).extract_text()
  • crop()也适用于extract_tables()extract_words()等,提升精度和性能。
http://www.jsqmd.com/news/1020283/

相关文章:

  • 二次供水泵房多中心数据上报到企业、部门等平台的方案
  • 北京配眼镜去哪好?五种日常场景匹配五种镜片方案 - 配眼镜新资讯
  • 蓝牙产品:蓝牙信标 (BLE Beacon) 深度调研
  • 开短路测试(Open/Short Test)原理
  • 5个生产级Jupyter扩展构建可审计Notebook工作流
  • 2026年一键生成论文工具对比实测:5款神器从初稿到定稿全周期护航
  • 终极指南:如何在5分钟内完成MelonLoader Unity游戏Mod加载器安装
  • 广州配眼镜去哪好?避坑精简指南 - 配眼镜新资讯
  • 细胞核荧光定量分析:从Z-stack图像到可靠GFP强度值的Python全流程
  • 用目标传播训练硬激活神经网络:原理与PyTorch实操
  • Zotero Style插件:终极文献管理效率提升70%的完整指南
  • MSC711x定时器PWM与级联配置实战:从寄存器到波形生成
  • ESP-CSI实战指南:无线信道感知技术的完整应用方案
  • 开源工具完整解析:轻松实现Office订阅版功能解锁
  • JD-AssistantV2:如何通过自动化抢购工具在3分钟内提升京东秒杀成功率500%
  • 别再走弯路!2026亲测靠谱的AI写作辅助网站|实测避坑硬核版
  • 多分类评估指标手算指南:TP/FP/FN/TN与TPR/FPR逐类解析
  • 酒店预订数据的探索性分析实战:EDA与可视化深度指南
  • 你说的应该是‌exFAT注意簇的大小‌吧,簇大小(分配单元大小)是exFAT使用中需要重点权衡的参数,直接影响存储空间利用率和读写性能,核心结论和建议如下:
  • 贝叶斯缺失机制分析:从MNAR识别到Ignorability判断
  • 一周深度学习实战课:知识压缩与认知锚点教学法
  • 2026年 插板门供应厂家:专业密封插板门/耐磨插板门/气动插板门/电动插板门企业考察 - 品牌发掘
  • MyTV-Android 架构解析:面向老旧安卓设备的直播系统性能优化方案
  • 5分钟极速上手:用Open-Lyrics智能生成精准字幕文件
  • 青岛配眼镜去哪好:三个常见误区和正确做法 - 配眼镜新资讯
  • 青岛配眼镜适合什么人:三步搞定配镜决策的快速攻略 - 配眼镜新资讯
  • 2026年聚合氯化铝厂家怎么选?五大维度实测与行业案例深度分析! - 优质品牌商家
  • 深入解析MSC8251 DMA控制器:链表与链接描述符机制详解
  • 【CANdelaStudio-从入门到深入到实战】18 诊断会话管理:会话切换是如何成为ECU的“交通警察”的?
  • 开源网盘直链解析工具LinkSwift:九大平台高效下载的完整解决方案