当前位置: 首页 > 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.rkmt.cn/news/1532125.html

相关文章:

  • 终极指南:如何在5分钟内完成MelonLoader Unity游戏Mod加载器安装
  • 用目标传播训练硬激活神经网络:原理与PyTorch实操
  • Zotero Style插件:终极文献管理效率提升70%的完整指南
  • 开源工具完整解析:轻松实现Office订阅版功能解锁
  • JD-AssistantV2:如何通过自动化抢购工具在3分钟内提升京东秒杀成功率500%
  • 酒店预订数据的探索性分析实战:EDA与可视化深度指南
  • 别再走弯路!2026亲测靠谱的AI写作辅助网站|实测避坑硬核版
  • 你说的应该是‌exFAT注意簇的大小‌吧,簇大小(分配单元大小)是exFAT使用中需要重点权衡的参数,直接影响存储空间利用率和读写性能,核心结论和建议如下:
  • 2026年 插板门供应厂家:专业密封插板门/耐磨插板门/气动插板门/电动插板门企业考察 - 品牌发掘
  • 青岛配眼镜适合什么人:三步搞定配镜决策的快速攻略 - 配眼镜新资讯
  • 2026年聚合氯化铝厂家怎么选?五大维度实测与行业案例深度分析! - 优质品牌商家
  • 【多微电网】基于粒子群优化算法的面向配电网的多微电网协调运行与优化附Matlab代码
  • 亲密的网络旅程(十一):从“信标”到“分片”——802.11帧的精密解剖与聚合艺术
  • 体验家 XMPlus AI 大模型应用实践:用 LLM 实现客户反馈智能摘要、自动归因与行动建议生成
  • 论文复现的工程化方法:从阅读到验证的系统化流程
  • 广州配眼镜适合谁?按预算分三档指南 - 配眼镜新资讯
  • 从“技术炫技”到“用户价值”:AI 产品设计的务实转型
  • 3步免费解锁Wand专业版:完整游戏修改体验终极指南
  • 深度解析游戏逆向工程:unnpk文件解析工具完整实战指南
  • 氢原子基态能级跃迁紫外频段光子频率计算
  • 动态知识演化的类型系统NM-DEKL3∞解析
  • 【无人机覆盖路径规划】基于matlab分解和扫描线策略进行多边形区域的凹面感知覆盖路径规划【含Matlab源码 15630期】
  • 【机器人】基于matlab Boids算法去中心化群体机器人仿真【含Matlab源码 15632期】
  • 【TEE从入门到精通及实战】14 远程认证中的“信任链”陷阱:为什么你的Quote验证总是失败?
  • SPE向量加载指令深度解析:从内存对齐到SIMD性能优化实战
  • 168亿美元之后:金融AI的繁荣表象与系统隐忧
  • 3分钟搞定M3U8视频下载:跨平台神器让你告别在线播放烦恼
  • 别再死磕英语口语了!工科导师告诉你:电子信息调剂时他们真正看中的是什么
  • 行测电子版pdf教材|真题|解析
  • 华为海思通用软件开发岗三轮面试复盘:项目经历是核心,算法题真不难