栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

工具--读取PDF文档中的表格生成EXCEL文件【支持页面范围哟】

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

工具--读取PDF文档中的表格生成EXCEL文件【支持页面范围哟】

背景

最近在实际工作中,项目中的需求文档是PDF格式,但PDF文档中有大量的表格,如需求数据、需求清单等,
大家也知道在PDF文档中查看、操作表格都不方便,就想着写一个小工具:读取PDF文档中的表格生成EXCEL文件
这样,在EXCEL文件中就可以随心所欲的操作了。

开发工具 pdfplumber简介

综合比较后,觉得pdfplumber可以满足我的要求。
源码地址
基于pdfminer.six 开发,目前已在Python 3.6、3.7和3.8上测试通过。

pdfplumber可以方便地获取pdf的各种信息,包括文本、表格、图表、尺寸等。

针对pdfplumber,只需要记住如下:

  • 是一个纯python第三方库,适合python 3.x版本
  • 用来查看pdf各类信息,能有效提取文本、表格
  • 不支持修改或生成pdf,也不支持对pdf扫描件的处理
  • pdfplumber作者持续在维护该库,其它的如pdfminer、PyPDF2可能不再被维护
pdfplumber安装

安装方式如下:

pip install pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple/
pdfplumber功能介绍

详细功能介绍 请参见 https://github.com/jsvine/pdfplumber

顶级的pdfplumber.PDF类表示一个PDF文档,具有如下两个主要属性:

  • .metadata是一个包含pdf信息的字典,通常包括“CreationDate”、“ModDate”、“Producer”等等
  • .pages是一个包含页面信息的列表。

pdfplumber.Page类是pdfplumber的核心。使用pdfplumber做的大多数事情都将围绕这个类进行。它有以下主要属性:

  • .page_number 页码, 按顺序排列的页码,第一页为1,第二页为2,依此类推。
  • .width 页面宽度
  • .height 页面高度
  • .objects/.chars/.lines/.rects
    • 每个属性都是一个列表,并且每个列表包含页面中嵌入的每个对象的一个字典
    • 每个字典用于说明页面中的对象信息, 包括直线,字符, 方格等位置信息。

常用方法

  • .extract_text() 用来提页面中的文本,将页面的所有字符对象排序为单个字符串
  • .extract_words() 返回的是所有的单词及其相关信息
  • .extract_tables() 提取页面的表格
  • .to_image() 用于可视化调试时,返回PageImage类的一个实例
实用小工具源码
import pdfplumber
import pandas as pd

# 将换行符替换为空
def trip(content):
    if content is None:
        return ''
    return content.replace('n', '').replace('r', '')


path = '/文档路径/文档名称.pdf'
pdf = pdfplumber.open(path)

#定义表格的header: 字段名称集合,需要替换为实际的
colNames = ['序号', '姓名', '性别', '地址', '民族', '国籍', '收货地址']
df = pd.Dataframe(columns=colNames)

# 定义要读取的表格在文档中的页码范围,注意范围是(..] 前开后闭区间
for page in pdf.pages[1720:1762]:
    for table in page.extract_tables():
        df = df.append(pd.Dataframe(table[1:], columns=colNames), ignore_index=True)

#去除内容中换行符
for colName in colNames:
    df[colName] = df[colName].apply(trip)

df.to_excel("xxx表格.xlsx")
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号