一、简单介绍:
1、Pdfplumber是一个可以处理pdf格式信息的库。
2、pdfplumber安装:pip安装即可,可能需要安装pdfminer库,py3.7版本及以上 需安装pdfminer.six
3、常用函数:基于pdf页面的
.extract_text() 用来提页面中的文本,返回字符串
.extract_words() 返回的是所有的单词及其相关信息
.extract_tables() 提取页面的表格,返回列表
.to_image() 用于可视化调试时,返回PageImage类的一个实例
二、PDF文件文本内容提取实例:
import os
import pdfplumber
import pandas as pd
import re
#list元素合并
def concat_text(ls):
a=''
for i in ls:
a = a+i
return a
#获取pdf文本
def get_pdf_text(rootdir,ls):
ls_text = []
for file in range(len(ls)):
ls_txt = []
path = os.path.join(rootdir,ls[file])
with pdfplumber.open(path) as pdf:
for i in range(len(pdf.pages)):
#print(i)
page = pdf.pages[i]
text = page.extract_text()
ls_txt.append(text)
concat = concat_text(ls_txt)
ls_text.append(concat)
return ls_text
#list转为dataframe
def convert_df(ls1,ls2):
df = pd.DataFrame(columns=['文件名称','文件内容'])
for i in range(len(ls1)):
df = df.append(pd.DataFrame({"文件名称":ls2[i],"文件内容":ls1[i]},index = [0]),ignore_index = True)
return df
#读取关键词
def read_keyword(filepath):
df1 = pd.read_excel(filepath)
return df1
#提取结果转为dataframe
def extract_file(df1,df2,outpath):
df3 = pd.DataFrame(columns=['文件名称','关键词','文件中相关语句'])
for i in range(df1.shape[0]):
#print(i)
for word in df2['keyword']:
#print(word)
result = re.findall('({}.*?)\.'.format(word), df1['文件内容'][i], re.S)
for j in result:
#print(j)
df3 = df3.append(pd.DataFrame({"文件名称":df1['文件名称'][i],"关键词":word,"文件中相关语句":j},index = [0]),ignore_index = True)
df3.to_excel(outpath,index=False)
return df3
def main():
rootdir = input('请输入文件夹路径:')
list = os.listdir(rootdir)
filepath = input('请输入keyword文件路径:')
outpath = input('请输入导出文件路径:')
ls_text = get_pdf_text(rootdir,list)
df_pdf = convert_df(ls_text,list)
df_keyword = read_keyword(filepath)
df_extract = extract_file(df_pdf,df_keyword,outpath)
return df_extract
if __name__ == '__main__':
df_extract =main()