利⽤Python处理PDF⽂件,进⾏关键词的识别与提取
【项⽬⽬标】
对⼤量的公司年报(PDF⽂件)进⾏关键词的识别与提取,判断⽂件是否含有“增值税留抵税额:XXXX”,并将这份⽂件的名字和此内容写⼊表格
【项⽬实现】
1.导⼊处理PDF的python库
1import pdfplumber
2import PyPDF2
3import re
4import os
5import csv
6import json
2.定义函数,得到PDF⽂件的页数
def get_pages(filename):
with open(filename, 'rb', ) as fb:
pages = PyPDF2.PdfFileReader(fb).getNumPages()
return pages
3.因为增值税留抵税额这条信息⼀般出现在⽂件的后半部分,所以循环查从100页开始,利⽤正则表达式查关键词,并提取
def get_text(filename, pages):
with pdfplumber.open(filename) as pdf:
for i in range(100, pages-10):
find = re.findall('增值税留抵税额(.*)', pdf.pages[i].extract_text())
if find:
return find[0].strip().split("")
4.保存表格
def save(company_name, report_date, end_balance, start_balance):
with open('annual_report.csv', 'a', newline="", encoding='utf-8') as f_csv:
正则匹配关键词
writer = csv.writer(f_csv)
writer.writerow([company_name, report_date, end_balance, start_balance])
5.运⾏代码
if__name__ == '__main__':
file_list = os.listdir()
ve('.idea')
ve('pdf6.py')
ve('annual_report.csv')
file_list_copy = file_list[::]
for file in file_list_copy:
name = re.findall(r'\d+(.*?):', file)[0]
date = re.findall(r'(\d+年)年度报告', file)[0]
pages_num = get_pages(file)
if get_text(file, pages_num) is not None:
try:
end, start = get_text(file, pages_num)
save(name, date, end, start)
ve(file)
except Exception as e:
print(e)
with open('', 'a', encoding='utf-8') as f:
f.write(json.dumps(file_list, ensure_ascii=False))

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。