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

pdf表格读取和筛选

为了从 PDF 文件中读取表格,并筛选出“注册单位”中包含“建工”的数据,可以使用 PyPDF2、pdfplumber、tabula-py 等库来解析 PDF 文件,然后再进行筛选。由于表格处理更复杂,由于表格在 PDF 文件中通常会以一种表格的形式存在,这些库可以直接读取表格并提取内容。

import pdfplumber
import pandas as pd

def extract_sxjg_from_pdf(file_path):
    # 用于存储所有筛选出的数据
    selected_rows = []
    header =['序号', '人员姓\n名', '身份证号码', '注册类别', '注册单位']    
    # 打开 PDF 文件
    with pdfplumber.open(file_path) as pdf:
        for page in pdf.pages:
            # 提取每一页的表格数据
            tables = page.extract_tables()
            for table in tables:
                print(table)
                if not table or len(table) < 3:
                    continue

                # 创建 DataFrame(跳过前两行标题)
                df = pd.DataFrame(table[2:], columns=header)
                print(df)
                filtered_df = df[df['注册单位'].str.contains('建工第五', na=False) | df['注册单位'].str.contains('建工集团', na=False)]

          
                # 如果有符合条件的行,则添加到结果列表中
                if not filtered_df.empty:
                    selected_rows.append(filtered_df)
    
    # 合并所有符合条件的 DataFrame
    if selected_rows:
        result_df = pd.concat(selected_rows, ignore_index=True)
        return result_df
    else:
        return pd.DataFrame()  # 返回空的 DataFrame

# 读取 PDF 文件路径
file_path = "/debug/20241023.pdf"  # 替换为实际的 PDF 文件路径
result_df = extract_sxjg_from_pdf(file_path)

# 检查并输出结果
if not result_df.empty:
    print("筛选出的包含'建工'的注册单位名单:")
    print(result_df)
    result_df.to_excel(r'/debug/result_df.xlsx',index=None)
else:
    print("没有找到包含'建工'的注册单位的记录。")

http://www.kler.cn/news/367433.html

相关文章:

  • HarmonyOS 相对布局(RelativeContainer)
  • esp32学习:语音识别教程esp-skainet库的使用
  • 【HTML】之form表单元素详解
  • 一个可以调节笔记本亮度的程序
  • 用kali入侵 DarkHole_2测试
  • 【WebGis开发 - Cesium】三维可视化项目教程---图层管理拓展图层顺序调整功能
  • Git process for submit and download
  • 传输层TCP
  • Flutter鸿蒙next 中如何实现 WebView【跳、显、适、反】等一些基础问题
  • 使用无线方式连接Android设备进行调试的两种方法
  • 基于Spring boot+Vue 网吧管理系统(源码+LW+部署讲解+数据库+ppt)
  • Rancher2.6管理k8s1.23
  • SQL实战训练之,力扣:1831. 每天的最大交易
  • C++网络编程之C/S模型
  • 服务器数据恢复—EXT3文件系统下邮件数据被误删的数据恢复案例
  • [网络协议篇] ICMP协议
  • 4-petalinux2018.3 摸索记录 -linux 驱动 (交叉编译)
  • QHeaderView添加复选框以及样式
  • R语言机器学习算法实战系列(十四): CatBoost分类算法+SHAP值 (categorical data gradient boosting)
  • LeetCode练习-删除链表的第n个结节
  • 医院信息化与智能化系统(10)
  • Nuxt.js交流社区,欢迎加入!
  • 报表工具怎么选?山海鲸VS帆软,哪个更适合你?
  • “循环购模式:革新消费体验,解锁收益新篇章“
  • 单值集合总复习
  • MySQL-DQL练习题