利用python pdfplumber读取pdf文件内容

一、简单介绍:
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()


你可能感兴趣的:(python)