基本操作

#pdfplumber对表格的处理能力强于pdfminer
import pdfplumber
import repath = r'E:\py_shiyan\Pycharm备份\Financial-data-collection-from-web--master\original_data/test3.pdf'
pdf = pdfplumber.open(path)
for page in pdf.pages:print(page.extract_text())print((len(pdf.pages))for pdf_table in page.extract_tables():print(pdf_table)for row in pdf_table:print(row)

进阶操作

对解析的pdf进行整理加工,逐行读取,去掉完全空白的行,将不完全空白的行合并

import pdfplumber
import repath = r'E:\py_shiyan\Pycharm备份\Financial-data-collection-from-web--master\original_data/test3.pdf'
pdf = pdfplumber.open(path)
for page in pdf.pages:table = []cells = []print(page.extract_text())for pdf_table in page.extract_tables():for row in pdf_table:if not any(row):# 如果一行全为空,则视为一条记录结束if any(cells):table.append(cells)cells = []elif all(row):# 如果一行全不为空,则本条为新行,上一条结束if any(cells):table.append(cells)cells = []table.append(row)else:if len(cells) == 0:cells = rowelse:for i in range(len(row)):if row[i] is not None:cells[i] = row[i] if cells[i] is None else cells[i] + row[i]# cells[i] = cells[i] + row[i]# print(table)for row in table:print([re.sub('\s+', '', cell) if cell is not None else None for cell in row])print(f'---------- 分割线----------------')pdf.close()

解析年报案例

解析单个财报某一页的表格,寻找关键字对应的数据

import pdfplumber
import repath2 = r'E:\py_shiyan\Pycharm备份\Financial-data-collection-from-web--master\original_data/东阿阿胶:2017年年度报告(更新后).pdf'   #124
pdf = pdfplumber.open(path2)
find_table=0
find_pre_table=0
#for page in pdf.pages:#print(page.extract_text())
#for i in range(int(len(pdf.pages)/2),len(pdf.pages)):
if 1:if find_table:find_pre_table=1else:find_pre_table=0find_table=0page=pdf.pages[124]i=124#print(page.extract_text())data=page.extract_text()#DF中的表格有的是封闭式的,有的是开放式的,对开放式的表格的处理不是很准确,识别不出来是table
所以就进不去table的判断,因此最终使用直接解析text数据的方式if '经营活动' in data or '税金' in data:    # 判断界面中是否含有关键词,接下来才是表格find_table=1if find_table or find_pre_table:    #print('--------------- 分割线 ---------------')for pdf_table in page.extract_tables():print(pdf_table)table = []cells = []for row in pdf_table:#print('rows: {}' .format(row))#print('cells: {}' .format(cells))if not any(row):# 如果一行全为空,则视为一条记录结束if any(cells):table.append(cells)cells = []elif all(row):# 如果一行全不为空,则本条为新行,上一条结束if any(cells):table.append(cells)cells = []table.append(row)else:if len(cells) == 0:cells = rowelse:for i in range(len(row)):if row[i] is not None:cells[i] = row[i] if cells[i] is None else cells[i] + row[i]for row in table:# print([re.sub('\s+', '', cell) if cell is not None else None for cell in row])if '审计' in row or '咨询' in row or '折旧费' in row:print("*************find*******************{}".format(row))print("*************find page*******************{}".format(i))print("*************find*******************")#print('--------------- 分割线 ---------------')pdf.close()

Python解析PDF文本相关推荐

  1. python读取pdf表格_[转]Python 解析 PDF 文本和表格的四大方法介绍

    Python 解析 PDF 文本和表格的四大方法介绍 == code for paper and NSFC Proj. parsing==: https://gitee.com/sonica/pdf_ ...

  2. python解析pdf,读取文字,可识别两栏pdf等

    python解析pdf,读取文字,可识别两栏pdf等 一.解析我们的pdf文件,首先第一步是解析普通类别的pdf(只有一栏) 代码中包含注释(不懂得可以留言) 二.处理拥有两栏等类型的pdf 为什么要 ...

  3. python解析pdf文件

    加载pdf文件,获取pdf的每一页对象: import pdfplumber path = "" with pdfplumber.open(path) as pdf_obj:pag ...

  4. python读取pdf表格_【Python 库】解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比...

    pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...

  5. Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比

    pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...

  6. Python解析pdf转为TXT格式

    #完成pdf到TXT转变了,无法完成TXT到Excel转变import xlwt # 写入文件 import xlrd # 打开excel文件 from xlutils.copy import cop ...

  7. io python 读取pdf_python自动化办公之 Python 解析 PDF

    上次给大家介绍了 Python 如何操作 Word 和 Excel ,而今天想为大家再介绍下,用 Python 如何解析 PDF ,PDF 格式不像前面两个那么规范,从它的表现来看,它更像是一张图片, ...

  8. python interpreter 中没有torch_python自动化办公之 Python 解析 PDF

    上次给大家介绍了 Python 如何操作 Word 和 Excel ,而今天想为大家再介绍下,用 Python 如何解析 PDF ,PDF 格式不像前面两个那么规范,从它的表现来看,它更像是一张图片, ...

  9. python解析pdf中文乱码_解析PDF文件以及解决编码问题

    1.解析pdf文件 最近需要将pdf中文本提取出来,于是就了解了一下pdfminer 首先安装:pip3 install pdfminer3k 之后就是用pdfminer解析,不多说,直接上代码,这些 ...

最新文章

  1. NeurIPS 2021论文放榜!清华投稿90篇排名第5,北大第9
  2. Win10光驱不见了
  3. boost::cv_status相关的测试程序
  4. Spring Aware接口
  5. SAP 电商云 Spartacus UI 出现 breaking change 时,如何用文字来描述
  6. Eclipse——恢复的默认窗口设置篇
  7. java 按钮怎么透视_【手把手教你Eclipse插件开发】之Eclipse透视图开发
  8. java构造函数传参_java 构造函数 , 参数传递 , lamda表达式
  9. mockito 外部接口_原创 |使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (五)第一个单元测试...
  10. 电子信息工程跨保计算机、生物医学工程保研经验分享~
  11. 基于单片机的自动追日系统设计_基于单片机控制的简易逐日式太阳能发电系统...
  12. windows“你尚未连接代理服务器可能有问题”解决方法
  13. 2021年韩国经济发展研究报告
  14. 3D体验平台(3DExperience)介绍---达索系统
  15. 海豚php框架漏洞,代码审计 - dolphin.pro cms SQL注入漏洞,Bypass过滤规则
  16. html实现正方体原理,CSS3 实现正方体
  17. 高分口碑神作《诡秘之主》《剑来》是第四届橙瓜网络文学奖大热门
  18. 南昌航空计算机复试题,【计算机考研】院校信息-南昌航空大学
  19. 数据类型的作用及基本数据类型分类
  20. 计算机和计算机之间如何传送文件,两台电脑实现互传文件:多种方法可选择

热门文章

  1. 【Unity Shader】Special Effects(三)Shiny 闪亮(UI)
  2. UpdateWrapper,批量修改
  3. 英文书信,称谓等格式
  4. xorm reverse mysql_xorm 工具
  5. WMS 智能分拣系统的种类及发展趋势
  6. 复旦计算机英语面试问题,2017复旦大学考研复试:英语口语面试常见问题汇总...
  7. ES空字符串和null值查询
  8. acwing-378. 骑士放置(最小独立集)
  9. 每天晨跑五公里,膝盖有点儿疼,不想中断,有什么办法缓解吗?
  10. GWAS - plink介绍与安装(Mac)