[特殊字符] 扫描式处理:Python 自动提取 PDF 中关键词相关表格并导出为 Excel

本文演示如何利用 pdfplumber 批量处理指定文件夹下 PDF 文档:定位关键词(如“主要会计数据”)出现的页码及下一页,提取其中的表格并保存为独立 Excel 文件。适用于财务报告、审计表格、统计报表等场景。


1️⃣ 第一步:批量收集 PDF 文件路径

import ospath = 'PDF'
files = [os.path.join(path, f) for f in os.listdir(path)]
  • 使用 os.listdir() 获取文件夹下所有 PDF;

  • 拼接完整路径后存储到 files 列表,便于批量处理。


2️⃣ 示例脚本:查找关键词并导出表格

import pdfplumber
from openpyxl import Workbookkey_words = "主要会计数据"for file in files:with pdfplumber.open(file) as pdf:wb = Workbook()wb.remove(wb.worksheets[0])pages_wanted = []for idx, page in enumerate(pdf.pages):if key_words in page.extract_text():pages_wanted.extend([idx, idx+1])breakfor i in pages_wanted:page = pdf.pages[i]tables = page.extract_tables()if tables:ws = wb.create_sheet(f"Sheet{i+1}")for table in tables:for row in table:ws.append(row)out_name = os.path.splitext(os.path.basename(file))[0]wb.save(f"Excel/{out_name}.xlsx")
  • .extract_text() 用于查找关键词所在页;

  • .extract_tables() 提取该页表格内容;

  • 使用 openpyxl 写入 Excel,每个表对应一个工作表;

  • 模仿页面编号给 sheet 命名。


📌 技术说明与推荐设置

  • pdfplumber.extract_tables() 默认以页面中水平与垂直线条为依据提取单元格边界,也可使用 table_settings 参数调整策略
    arXiv+10Python 包索引+10Stack Overflow+10

  • 该方法适合扫描式 PDF 或数字 PDF,但若布局复杂可设定 vertical_strategy="text" 等方式
    Stack Overflow+1Python 包索引+1

  • pdfplumber 基于 pdfminer.six,适用于结构化文档提取,对 OCR 文档支持有限
    arXiv+2GitHub+2Python 包索引+2


🖼️ 结果展示区

✅ 优化与扩展建议

功能建议
📦 批量处理可接入 os.walk() 递归处理子目录;
⚙️ 精准提取使用 page.crop(...)table_settings 定位表格区域(示例见pdfplumber文档) arXiv+10Medium+10Python 包索引+10;
🧩 排错机制若某页未提取表格,可记录日志或存储空表;
🗄 合并数据可将多个表格结果汇总到一个 Excel 并生成摘要页;
🚀 更换工具对于更复杂财务表格,可考虑 Camelot 或 Tabula 提供更多控制和效果优化;

 更多实用案例,代码,素材如下:

自取链接:https://pan.quark.cn/s/a46f30accea2


🧠 总结

本文提供了一种 关键词驱动 + 表格提取 + Excel 输出 的自动化脚本流程,适合常见金融、财务、审计类 PDF 报表的快速结构化处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88705.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python3的返回值能返回多个吗?

在Python中,函数可以通过返回一个元组(tuple) 来间接实现返回多个值的效果。以下是具体说明: 实现方式:直接返回逗号分隔的值 Python会自动将这些值打包成一个元组: def multiple_return():a 1b "he…

UE5 Secondary Materials

首先放入材质A材质B放入Secondary Materials两个效果就能融合到一起了动态设置secondary material

AUTOSAR进阶图解==>AUTOSAR_SWS_FlashTest

AUTOSAR Flash Test模块详解与分析 基于AUTOSAR标准的Flash Test模块架构、功能与应用分析目录 1. Flash Test模块概述 1.1 模块作用与功能1.2 适用范围 2. Flash Test模块架构 2.1 模块位置2.2 组件关系 3. 状态管理 3.1 状态定义3.2 状态转换 4. 后台测试执行流程 4.1 测试间…

msf复现永恒之蓝

永恒之蓝(EternalBlue)是利用 Windows 系统的 SMB 协议漏洞(MS17-010)来获取系统最高权限的漏洞,利用 Metasploit 框架(MSF)复现该漏洞是一个复杂且具有一定风险的操作,必须在合法合…

格密码--LWE,DLWE和ss-LWE

格密码–LWE,DLWE和ss-LWE 0.数学符号数学符号含义备注Zq\mathbb{Z}_qZq​模qqq的整数集合,即{0,1,2,...,q−1}\{0,1,2,...,q-1\}{0,1,2,...,q−1}用于定义LWE、DLWE、ss-LWE等问题中矩阵和向量的元素取值范围,是基础整数环x∈RSx \in_R Sx∈…

【闭包】前端的“保护神”——闭包详解+底层原理

目录 一、闭包是什么?概念 二、闭包为什么存在?作用 1. 创建私有变量 2. 实现数据封装与信息隐藏 3. 模拟私有方法 4. 保存函数执行时的状态 5. 回调函数和事件处理 6. 模块化编程 7. 懒加载与延迟执行 三、闭包怎么用?实践业务场景 …

算法学习笔记:19.牛顿迭代法——从原理到实战,涵盖 LeetCode 与考研 408 例题

牛顿迭代法(Newtons Method)是一种强大的数值计算方法,由英国数学家艾萨克・牛顿提出。它通过不断迭代逼近方程的根,具有收敛速度快、适用范围广的特点,在科学计算、工程模拟、计算机图形学等领域有着广泛应用。牛顿迭…

小白学Python,操作文件和文件夹

目录 前言 一、操作文件路径 1.获取当前路径 2.创建文件夹 (1)mkdir()函数 (2)makedirs() 函数 3.拼接路径 4.跳转路径 5.判断相对路径和绝对路径 6.获取文件路径和文件名 二、操作文件和文件夹 1.查询文件大小 2.删除…

015_引用功能与信息溯源

引用功能与信息溯源 目录 引用功能概述支持的模型引用类型API使用方法引用格式应用场景最佳实践 引用功能概述 什么是引用功能 Claude的引用功能允许在回答基于文档的问题时提供详细的信息来源引用,帮助用户追踪和验证信息的准确性。这个功能特别适用于需要高可…

ROS2中的QoS(Quality of Service)详解

ROS2中的QoS(Quality of Service)详解1. 主要QoS参数2. 为什么需要设置QoS3. QoS兼容性规则4. 选择QoS策略的建议5. 调试QoS问题的方法6. 踩坑:订阅话题没有输出可能的原因:调试方法QoS是ROS2中用于控制通信质量和行为的机制。它定…

Cursor三大核心AI功能

一:Tab键:智能小助手 1.1 单行/多行代码补全 在代码中写出要实现的功能,第一次按Tab生成代码,第二次按Tab接受代码。1.2 智能代码重写 对已有代码重新编写。 写个注释告诉AI重构方法,然后鼠标点到方法内部,…

cesium添加原生MVT矢量瓦片方案

项目中需要基于cesium接入mvt格式的服务并支持属性拾取查询,通过一系列预研测试,最后选择cesium-mvt-imagery-provider开源插件完成,关键源码信息如下: npm i cesium cesium-mvt-imagery-provider //安装依赖包// 加载图层import…

AI金融风控:识别欺诈,量化风险的新利器

AI金融风控:识别欺诈,量化风险的新利器深度学习算法穿透海量交易数据,92.5%的不良贷款识别率宣告了金融风险防控新时代的来临。深圳桑达银络科技有限公司在2025年6月申请的“基于人工智能的金融交易反欺诈系统”专利,揭示了金融风…

【unitrix】 5.0 第二套类型级二进制数基本结构体(types2.rs)

一、源码 这是一个使用 Rust 类型系统实现类型级(type-level)二进制数的设计。 //! 类型级二进制数表示方案(第二套方案) //! //! 使用嵌套泛型结构体表示二进制数,支持整数和小数表示。use crate::sealed::Sealed;/// 类型级二进制数结构体 …

DAY01:【ML 第一弹】机器学习概述

一、三大概念 1.1 人工智能(AI) Artificial Intelligence 人工智能AI is the field that studies the synthesis and analysis of computational agents that act intelligently 1.2 机器学习(ML) Machine Learning 机器学习Fi…

AGX Xavier 搭建360环视教程【一、先确认方案】

设备默认自带 NVIDIA 硬件编解码能力(NVDEC/NVENC),但是需要你在 OpenCV 和 FFmpeg 里正确启用 调通 GStreamer 或 nvmpi,才真正能用起来!这里的硬解码是核心:Jetson 平台的硬解码,要么走 GStr…

服务器怎么跑Python项目?

在服务器上运行 Python 项目通常涉及 环境配置、依赖安装、项目部署 和 进程管理。以下是详细步骤:1. 连接服务器确保你能通过 SSH 访问服务器:ssh usernameyour_server_ip(如果是本地测试,可跳过这一步)2. 安装 Pytho…

【软件设计师】

UML 类图中的关系用例图中的关系 关系例子类图用例图顺序图 概念示例通信图活动图泳道图状态图

Java 内部类详解:从基础到实战,掌握嵌套类、匿名类与局部类的使用技巧

作为一名 Java 开发工程师,你一定在实际开发中遇到过这样的场景:想在一个类内部定义另一个逻辑相关的类;需要为某个接口或抽象类提供一个临时实现(比如监听器);想利用面向对象特性来组织代码结构&#xff0…

Java设计模式之行为型模式(观察者模式)介绍与说明

一、模式结构 观察者模式包含以下四个角色: Subject(主题/被观察者) 维护观察者列表,提供注册(registerObserver)、移除(removeObserver)观察者的方法,并定义通知所有观察…