由于(质量优质)PDF较好的阅读性,工作当中难免有文件使用PDF格式保存和流通的。但是由于PDF过于追求视觉的享受,所以在编辑其内容元素上相较微软office系列的确困难。不时会碰到看的到内容却难以直接利用编辑的情况,即使拥有Adobe或者国产福昕等软件高级版的加持,批量处理,将其内容变成excel等容易处理的数据形式依然有所不便。所以借用Python超大的模块库当中的pdfplumber来解决这个问题(其主要针对PDF中的表格处理有优势,关于文字和图片等之后再更)
为了方便展示,我仅用跨2页的表格做展示,多页原理相同,单页就更加简单。由于可能涉密我把关键数字隐去,不过跨页的结构明显。我们的目标就是把PDF中的表格内容下载成excel形式保存。
# pdfplumber 获取PDF中的表格和数据import pdfplumber #读取文件pdf = pdfplumber.open("tableTest.pdf")#提取表格自定义函数,模块自带函数pages的参数[代表正在获取的页面] def getTable(pageNumber): #.extract_table()函数代表正在提取目标page中的表格中的数据 table = pdf.pages[int(pageNumber)].extract_table() return table#这就不用解释了import pandas as pd # 建立一个空list来存放提取额数据dataList = [] #你可以把范围设置到任何需要的数字,这里pdf只有两页,故为0和1。for y in (0,1): #利用前述自定义函数对每一页去提取数据 for x in getTable(y): #巧用filter函数--去掉原有格式当中额空值和None。 dataList.append(list(filter(None,x))) #print(list(filter(None,i))) #整理表格,这个只涉及pandas知识故不再赘诉finaleTable = pd.DataFrame(list(dataList))finaleTable.columns = finaleTable.loc[0,:]finaleTable.drop(0,axis=0,inplace=True)finaleTable.to_excel('test.xlsx',encoding='GBK')
运行结果如下,核心代码也就10行,还犹豫啥--人生苦短Python是岸!