[特殊字符] 掃描式處理: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
英文地址,請注明出處:http://en.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)觀察者的方法,并定義通知所有觀察…