• Python21天学习挑战赛Day(8)·pdfplumber读取PDF写入Excel(应用)



    活动地址:CSDN21天学习挑战赛

    目录

    一,pdfpulmber模块

            1.安装

            2.加载PDF

             3.pdfplumber.PDF类

             1.读取PDF文档信息(.metadata)

            2.输出总页数

             4.pdfplumber.Page类

             1.读取第一页的宽,高等信息

            2.读取文本第二页

            3.读取表格第一页

     三,实战操作

            1.提取单个pdf全部页数

            2.批量提取多个PDF文件


    一,pdfpulmber模块

    功能——

    ·访问有关每个PDF对象的详细信息

    ·用于提取文本和表格的更高级别,可自定义的方法

    ·紧密集成的可视化调试

    ·其它实用功能

            1.安装

    pip install pdfplumber

    导入

    import pdfplumber

    pdf表格测试集pdf文件(Python读取PDF表格测试集).zip 

            2.加载PDF

    格式:

    pdfplumber.open("路径/文件名.pdf",password="",laparams={"line_overlap":=0.7})

    ·password:加载受保护密码保护的PDF,传递password关键字参数

    ·laparams:要将布局分析参数设置为pdfminer.six的布局引擎,需传递laparams关键字参数

            例——

    1. import pdfplumber
    2. with pdfplumber.open("./pdf-files/1.pdf") as pdf:
    3. print(pdf)
    4. print(type(pdf))

            输出——

             3.pdfplumber.PDF类

    该类表示单个PDF,具有两个主要属性——

             1.读取PDF文档信息(.metadata)

    1. import pdfplumber
    2. with pdfplumber.open("./pdf-files/1.pdf") as pdf:
    3. print(pdf.metadata)

            输出——

    {'Author': 'wangwangyuqing', 'Comments': '', 'Company': '', 'CreationDate': "D:20220330113508+03'35'", 'Creator': 'WPS 文字', 'Keywords': '', 'ModDate': "D:20220330113508+03'35'", 'Producer': '', 'SourceModified': "D:20220330113508+03'35'", 'Subject': '', 'Title': '', 'Trapped': 'False'}
    

            2.输出总页数

    1. import pdfplumber
    2. with pdfplumber.open("./pdf-files/1.pdf") as pdf:
    3. print(len(pdf.pages))

            输出——

             4.pdfplumber.Page类

    pdfplumber.Page类是pdfplumber整个的核心——

             1.读取第一页的宽,高等信息

    1. import pdfplumber
    2. with pdfplumber.open("./pdf-files/1.pdf") as pdf:
    3. first_page = pdf.pages[0] # pdfplumber.Page对象的第一页
    4. # 查看页码
    5. print('页码:', first_page.page_number)
    6. # 查看页宽
    7. print('页宽:', first_page.width)
    8. # 查看页高
    9. print('页高:', first_page.height)

                    输出——

    1. 页码: 1
    2. 页宽: 595.3
    3. 页高: 841.9

            2.读取文本第二页

    1. import pdfplumber
    2. with pdfplumber.open("./pdf-files/1.pdf") as pdf:
    3. first_page = pdf.pages[1] # pdfplumber.Page对象的第一页
    4. text = first_page.extract_text()
    5. print(text)

            输出——

    1. 盛隆食品专营店 165 30000 浙江
    2. 保银旗舰店 228 1444 河南
    3. 塞上滩旗舰店 868 903 宁夏
    4. 陆卢缘旗舰店 88 8000 福建
    5. 小仙炖旗舰店 2796 2771 河北
    6. 良品铺子旗舰店 98 600000 湖北
    7. 一哥鲍鱼食品专
    8. 1999 286 广东
    9. 营店
    10. 舍得官方旗舰店 1188 3975 四川
    11. 珍百年旗舰店 128 1931 湖南
    12. 丽皇香旗舰店 128 7000 福建
    13. 轩农谷生鲜专营
    14. 488 1921 浙江

            3.读取表格第一页

    1. import pdfplumber
    2. import xlwt
    3. with pdfplumber.open("./pdf-files/1.pdf") as pdf:
    4. page_one = pdf.pages[0] # PDF第一页
    5. table_1 = page_one.extract_table() # 读取表格数据
    6. # 1. 创建Excel表对象
    7. workbook = xlwt.Workbook(encoding='utf8')
    8. # 2. 新建sheet表
    9. worksheet = workbook.add_sheet('Sheet1')
    10. # 3. 自定义列名
    11. col1 = table_1[0]
    12. # print(col1)# ['店铺名', '价格', '销量', '地址']
    13. # 4. 将列属性元组col写进sheet表单中第一行
    14. for i in range(0, len(col1)):
    15. worksheet.write(0, i, col1[i])
    16. # 5. 将数据写进sheet表单中
    17. for i in range(0, len(table_1[1:])):
    18. data = table_1[1:][i]
    19. for j in range(0, len(col1)):
    20. worksheet.write(i + 1, j, data[j])
    21. # 6. 保存文件分两种格式

            输出——

     三,实战操作

            1.提取单个pdf全部页数

    1. import pdfplumber
    2. import xlwt
    3. with pdfplumber.open("./pdf-files/1.pdf") as pdf:
    4. # 1. 把所有页的数据存在一个临时列表中
    5. item = []
    6. for page in pdf.pages:
    7. text = page.extract_table()
    8. for i in text:
    9. item.append(i)
    10. # 2. 创建Excel表对象
    11. workbook = xlwt.Workbook(encoding='utf8')
    12. # 3. 新建sheet表
    13. worksheet = workbook.add_sheet('Sheet1')
    14. # 4. 自定义列名
    15. col1 = item[0]
    16. # print(col1)# ['店铺名', '价格', '销量', '地址']
    17. # 5. 将列属性元组col写进sheet表单中第一行
    18. for i in range(0, len(col1)):
    19. worksheet.write(0, i, col1[i])
    20. # 6. 将数据写进sheet表单中
    21. for i in range(0, len(item[1:])):
    22. data = item[1:][i]
    23. for j in range(0, len(col1)):
    24. worksheet.write(i + 1, j, data[j])
    25. # 7. 保存文件分两种格式
    26. workbook.save('test.xls')

            2.批量提取多个PDF文件

    1. import pdfplumber
    2. import xlwt
    3. import os
    4. # 一、获取文件下所有pdf文件路径
    5. file_dir = r'pdf-files'
    6. file_list = []
    7. for files in os.walk(file_dir):
    8. # print(files)
    9. # ('E:\\Python学习\\pdf文件', [],
    10. # ['1.pdf', '1的副本.pdf', '1的副本10.pdf', '1的副本11.pdf', '1的副本2.pdf', '1的副本3.pdf', '1的副本4.pdf', '1的副本5.pdf', '1的副本6.pdf',
    11. # '1的副本7.pdf', '1的副本8.pdf', '1的副本9.pdf'])
    12. for file in files[2]:
    13. # 以. 进行分割如果后缀为PDF或pdf就拼接地址存入file_list
    14. if file.split(".")[1] == 'pdf' or file.split(".")[1] == 'PDF':
    15. file_list.append(file_dir + '\\' + file)
    16. # 二、存入Excel
    17. # 1. 把所有PDF文件的所有页的数据存在一个临时列表中
    18. item = []
    19. for file_path in file_list:
    20. with pdfplumber.open(file_path) as pdf:
    21. for page in pdf.pages:
    22. text = page.extract_table()
    23. for i in text:
    24. item.append(i)
    25. # 2. 创建Excel表对象
    26. workbook = xlwt.Workbook(encoding='utf8')
    27. # 3. 新建sheet表
    28. worksheet = workbook.add_sheet('Sheet1')
    29. # 4. 自定义列名
    30. col1 = item[0]
    31. # print(col1)# ['店铺名', '价格', '销量', '地址']
    32. # 5. 将列属性元组col写进sheet表单中第一行
    33. for i in range(0, len(col1)):
    34. worksheet.write(0, i, col1[i])
    35. # 6. 将数据写进sheet表单中
    36. for i in range(0, len(item[1:])):
    37. data = item[1:][i]
    38. for j in range(0, len(col1)):
    39. worksheet.write(i + 1, j, data[j])
    40. # 7. 保存文件分两种格式
    41. workbook.save('test.xls')

  • 相关阅读:
    设计模式——5. 原型模式
    计算机毕业设计ssm餐饮外卖系统v22fo系统+程序+源码+lw+远程部署
    Leetcode_729_我的日程安排表1_线段树/思维
    共享单车数据处理与分析
    mysql数据库管理
    21天学会C++:Day10----类的默认成员函数
    区块链私链搭建出现错误
    中国设备工程杂志中国设备工程杂志社中国设备工程编辑部2022年第18期目录
    大模型扫盲之小白入门手记
    数据管理能力成熟度评估模型_企业如何实施DCMM
  • 原文地址:https://blog.csdn.net/weixin_62599885/article/details/126328865