利用Python批量转换企业PDF年报为文本
liuian 2025-06-30 17:56 25 浏览
此前,我们介绍过,如何使用Python解析PDF文件:Python解析提取PDF文件的方法简介
现在,我们要对企业年报PDF文件进行批量转换,提出其中的文本。
转换方法:
直接进行转换,保存成对应的txt文本文件:
import pdfplumber
import os
import time
def pdf_to_txt_pdfplumber(pdf_path):
starttime = time.time()
print('开始转换',pdf_path)
output = pdf_path.split('.')[0] +'.txt'
with pdfplumber.open(pdf_path) as pdf:
with open(output, 'w', encoding='utf-8') as txt_file:
for page in pdf.pages:
page_text = page.extract_text()
if page_text:
txt_file.write(page_text + '\n')
print('转换完成,耗时:',time.time()-starttime)
# 获取当前目录下所有的pdf文件
files = [i for i in os.listdir() if '.pdf' in i or '.PDF' in i]
for file in files:
pdf_to_txt_pdfplumber(file)这里我用两个PDF文件进行测试输出如下:
一般企业的年报在200-300页左右,可以转换一个文件的耗时还是较长的,此时,目录下生成了对应的txt文件:
一些想法:
- 转换单个PDF文件的耗时较长,所以如果能够直接获取文本,就可以省去转换这个步骤。这也是为什么之前我提到如果能够获取文本,尽量直接获取文本,实在没有的,再下载PDF进行转换
- 有一些PDF文件会解析失败,可能是因为这个PDF文件是直接由“图片”转换而成的,并非是直接由“文字”模式情况下输出的。
- 转换不了的怎么办?当成缺失值处理,在经管的研究中,现在的样本量越来越大,存在缺失值也是正常的情况,但是能够处理的尽量进行处理。
- 如何更好的管理数据?在这里,我们是将每个年报转换成了txt文件,实际上还是较为分散的。其实可以将他们全部储存到数据库中,在本地,sqlite是一个不错的选择,使用也较为方便。在存储数据库时可以添加一些我们需要的字段,例如企业名称,ID,年份,这样在后续的分析中会更加简单清晰。
关于如何保存到数据库,这里提供当时我的一些做法。
首先:创建数据库,设计好我们需要的字段,例如ID,年份,企业名称等。
import sqlite3
conn = sqlite3.connect('report.db') # 允许多线程访问
sql = '''
create table report(id integer primary key autoincrement,
company varchar, year varchar ,infos varchar)
'''
cursor = conn.cursor()
cursor.execute(sql)
conn.commit()以上几行代码就完成了数据库的创建:
在这里,我仅进行示范,就不添加更多字段了。
其次:改写原本的代码,写入数据库即可。
import pdfplumber
import os
import time
import sqlite3
conn = sqlite3.connect('report.db')
def pdf_to_txt_pdfplumber(pdf_path):
company = pdf_path.split('-')[0]
year = ''.join([i for i in pdf_path.split('-')[1] if i.isdigit()])
starttime = time.time()
print('开始转换',pdf_path)
all_page_text = ''
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
page_text = page.extract_text()
if page_text:
all_page_text = all_page_text + page_text
# 写入SQLITE
sql = ''' insert or replace into report(company,year,infos)
values("%s","%s","%s")
''' % (company, year, all_page_text.strip())
cursor = conn.cursor()
cursor.execute(sql)
conn.commit()
print('写入完成,耗时:',time.time()-starttime)
files = [i for i in os.listdir() if '.pdf' in i or '.PDF' in i]
for file in files:
pdf_to_txt_pdfplumber(file)
conn.close()执行结果:
可以看到,保存到数据库中更为简洁,更利于数据的管理和后续数据分析。
由于我们是读取文件目录下的所有PDF进行转换,所以可以将转换完成后的pdf文件移动或者删除,这样即使因为特殊原因需要重新转换的时候,也不会重复转换相同的文件。例如:
import shutil
# 移动到当前目录下done文件下
shutil.move(file_dir + '\/' + file, file_dir + '/done')相关推荐
- 搭建一个20人的办公网络(适用于20多人的小型办公网络环境)
-
楼主有5台机上网,则需要一个8口路由器,组网方法如下:设备:1、8口路由器一台,其中8口为LAN(局域网)端口,一个WAN(广域网)端口,价格100--400元2、网线N米,这个你自己会看了:)...
- 笔记本电脑各种参数介绍(笔记本电脑各项参数新手普及知识)
-
1、CPU:这个主要取决于频率和二级缓存,频率越高、二级缓存越大,速度越快,现在的CPU有三级缓存、四级缓存等,都影响相应速度。2、内存:内存的存取速度取决于接口、颗粒数量多少与储存大小,一般来说,内...
- 汉字上面带拼音输入法下载(字上面带拼音的输入法是哪个)
-
使用手机上的拼音输入法打成汉字的方法如下:1.打开手机上的拼音输入法,在输入框中输入汉字的拼音,例如“nihao”。2.根据输入法提示的候选词,选择正确的汉字。例如,如果输入“nihao”,输...
- xpsp3安装版系统下载(windowsxpsp3安装教程)
-
xpsp3纯净版在采用微软封装部署技术的基础上,结合作者的实际工作经验,融合了许多实用的功能。它通过一键分区、一键装系统、自动装驱动、一键设定分辨率,一键填IP,一键Ghost备份(恢复)等一系列...
- 没有备份的手机数据怎么恢复
-
手机没有备份恢复数据方法如下1、使用数据线将手机与电脑连接好,在“我的电脑”中可以看到手机的盘符。 2、将手机开启USB调试模式。在手机设置中找到开发者选项,然后点击“开启USB调试模式”。 3、...
- 电脑怎么激活windows11专业版
-
win11专业版激活方法有多种,以下提供两种常用的激活方式:方法一:使用激活密钥激活。在win11桌面上右键点击“此电脑”,选择“属性”选项。进入属性页面后,点击“更改产品密钥或升级windows”。...
- 华为手机助手下载官网(华为手机助手app下载专区)
-
华为手机助手策略调整,已不支持从应用市场下载手机助手,目前华为手机助手是需要在电脑上下载或更新手机助手到最新版本,https://consumer.huawei.com/cn/support/his...
- 光纤线断了怎么接(宽带光纤线断了怎么接)
-
宽带光纤线断了可以重接,具体操作方法如下:1、光纤连接的时候要根据束管内,同色相连,同芯相连,按顺序进行连接,由大到小。一般有三种连接方法,分别是熔接、活动连接和机械连接。2、连接的时候要开剥光缆,抛...
- win7旗舰版和专业版区别(win7旗舰版跟专业版)
-
1、功能区别:Win7旗舰版比专业版多了三个功能,分别是Bitlocker、BitlockerToGo和多语言界面; 2、用途区别:旗舰版的功能是所有版本中最全最强大的,占用的系统资源,...
- 万能连接钥匙(万能wifi连接钥匙下载)
-
1、首先打开wifi万能钥匙软件,若手机没有开启WLAN,就根据软件提示打开WLAN开关;2、打开WLAN开关后,会显示附近的WiFi,如果知道密码,可点击相应WiFi后点击‘输入密码’连接;3、若不...
- 雨林木风音乐叫什么(雨林木风是啥)
-
雨林木风的创始人是陈年鑫先生。陈年鑫先生于1999年创立了雨林木风公司,其初衷是为满足中国市场对高品质、高性能电脑的需求。在陈年鑫先生的领导下,雨林木风以技术创新、产品质量和客户服务为核心价值,不断推...
- aics6序列号永久序列号(aics6破解序列号)
-
关于AICS6这个版本,虽然是比较久远的版本,但是在功能上也是十分全面和强大的,作为一名平面设计师的话,AICS6的现有的功能已经能够应付几乎所有的设计工作了……到底AICC2019的功能是不是...
- 手机可以装电脑系统吗(手机可以装电脑系统吗怎么装)
-
答题公式1:手机可以通过数据线或无线连接的方式给电脑装系统。手机安装系统需要一定的技巧和软件支持,一般需要通过数据线或无线连接的方式与电脑连接,并下载相应的软件和系统文件进行安装。对于大部分手机用户来...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
