背景:最近刚好需要将一个pdf的内容打出来,这是个比较枯燥的内容,而且pdf里面的文字明显是规范的,所以想写个脚本读取内容,直接复制粘贴。刚好,python的理念就是不重复造轮子,这样的包自然是有的,这个脚本最主要的包就是pdfminer3k。

1.思路

解析出文档,按页存储进txt文件即可。

2.完整代码

from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
from pdfminer.pdfparser import PDFParser, PDFDocumentdef parse_pdf(filepath):# 创建文件流fp = open(filepath, 'rb')# 从文件中获取数据,得到一个解析对象parser = PDFParser(fp)# 连接文档和分析器pdoc = PDFDocument()parser.set_document(pdoc)pdoc.set_parser(parser)# 没有密码,初始化密码为空pdoc.initialize()# 检测文档是否提供文本提取if not pdoc.is_extractable:raise PDFTextExtractionNotAllowedelse:# 创建PDf资源管理器对象来管理共享资源,catching=False表示不缓存pm = PDFResourceManager(caching=False)# 创建一个PDF参数分析器laparams = LAParams()# 创建页面聚合对象device = PDFPageAggregator(pm, laparams=laparams)# 创建一个PDF解析器对象interpreter = PDFPageInterpreter(pm, device)# 获取page列表pages = pdoc.get_pages()# 循环遍历page列表,按页处理for page in pages:# 使用页面解释器来读取interpreter.process_page(page)# 使用聚合器获取内容layout = device.get_result()# 这里layout是一个LTPage对象 里面存放着解析出的各种对象for item in layout:# 获取文本if isinstance(item, LTTextBoxHorizontal):rst = item.get_text()with open("test.txt", 'a', encoding='utf-8') as f:f.write(rst)if __name__ == '__main__':filepath = 'test.pdf'parse_pdf(filepath)

3.错误可能

我在写脚本时遇到了一个问题,这个问题还比较常见。

pdfminer.pdfparser.PDFEncryptionError: Unknown algorithm: param={'CF': {'StdCF': {'AuthEvent': /DocOpen, 'CFM': /V2, 'Length':16}},'Filter':/Standard,'Length':128,'O':b':\r\x18\xf4\xe7i\x1ca\x80\xc9UqX\xdb\xdf\xa4\xaa\x0e\x80J,Xqra\xac\xe8\r\xf1\xb94\xf5','P':-3392,'R':4,'StmF':/StdCF,'StrF':/StdCF,'U':b'\xbc7/j\xc4\xc2)\xe6g\xebX\xc2\x81\x10n\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'V': 4}

这段错误的原因主要是默认现在的pdf文件就算你打开就能看,但是其实还是设置了一个空密码,而pdfminer3k是不认的,它认为就算需要密码,这里可以随便找个在线网站处理一下空密码解锁pdf文件。

其实这样的空密码加密表面上对读者没有影响,但是其实是为了防止复制粘贴而已。

4.源文件

5. 运行结果

python实战-pdf文件转txt相关推荐

  1. 如何用python修改pdf内容_如何利用python将pdf文件转化为txt文件?

    https://www.wukong.com/answer/6579491774144708872/?iid=15906422033&app=news_article&share_an ...

  2. Python绘制PDF文件~超简单的小程序

    Python绘制PDF文件 项目简介 这次项目很简单,本次项目课,代码不超过40行,主要是使用 urllib和reportlab模块,来生成一个pdf文件. reportlab官方文档 http:// ...

  3. python读取pdf文件_深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  4. 8、【办公自动化】Python实现PDF文件的批量操作

    说明 平时工作中,经常会和 PDF 文件打交道,比如,合并.拆分.加解密.添加和去除水印.提取指定内容.转换成其他文件格式等操作.如果只是处理单个 PDF 文件的话,有些操作是比较简单的,而如果需要批 ...

  5. 【word2vec】python读取pdf文件,通过词向量寻找相关词语

    1. 什么是Word2vec 对于自然语音处理而言,首先要做的就是将文字转换为计算机能看懂的数字,也就是说,将词语进行数字化. (1)one-hot编码,比较常用的一种编码方式,又叫独热编码. 对于一 ...

  6. python 从PDF文件中读取书签/目录

    python 从PDF文件中读取书签/目录 代码介绍 需要使用到的函数 代码部分 有时候需要将PDF文件中的书签读取出来进行处理,因此写这篇博客记录具体的处理过程(某些pdf文件会出现打不开报错的情况 ...

  7. python读取pdf文件_python读取pdf文件

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 一.安装pdfminer3k模块?二. 读取pdf文件import sysimp ...

  8. gnuradio上怎么使用python文件_使用Python从PDF文件中提取数据

    前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都应该了 ...

  9. pdf exe如何提取pdf文件_python应用:如何用python提取pdf文件中的文字

    从pdf中提取文字,相信很多人都干过这事,怎么在python中实现呢,今天带大家看看. 第一步导入库 import PyPDF2 第二步导入pdf文件 pdf_file =open('dataset/ ...

最新文章

  1. Nature:功能微生物组研究典范—采用甘露糖苷选择性抑制尿路致病性大肠杆菌...
  2. vue页面绘图_利用vue制作在线涂鸦板
  3. 看BAT技术面试官如何挑选Java程序员
  4. 车联网服务non-RESTful架构改造实践
  5. ubuntu 14.04 环境下打开xls、pdf与png文件
  6. k8s各类yaml文件
  7. 苹果2021年WWDC大会可能继续采用线上方式举办
  8. eclipse android 服务端,Eclipse搭建服务器,实现与Android的简单通信
  9. lte基站可以做ntp server吗?_你手机信号强吗?学会这几招快速提升你的手机信号...
  10. java计算机毕业设计直播购物平台源码+数据库+系统+lw文档
  11. 计算机用户名显示TEMP,Windows 下Temp帐号处理
  12. dotnet 使用 Obsolete 特性标记成员过时保持库和框架的兼容性
  13. 若a,b互素,则a必然存在模b的逆元;若a,b不互素,则a必然不存在模b的逆元
  14. 精英科技GearReleases视频培训,以帮助​​客户避免损坏他们的触摸屏
  15. 2021年全国在映影院数量、观影人次及平均票价走势分析[图]
  16. 李现助阵定格夜色之美,荣耀最强自拍手机亲民开售
  17. 马化腾:微信与电信运营商合作是大势所趋
  18. html 标签中的 alt 和 title 的作用
  19. CVPR-Disgusied faces in wild 2018 开放环境下对伪装的面部进行识别 --面部识别的一个子领域
  20. 【python学习】数据预处理-如何归一化?

热门文章

  1. Curator实现分布式锁的基本原理-LockInternals.attemptLock
  2. Spring 中的隔离级别
  3. ActiveMQ入门-发送消息机制的介绍
  4. 常用的函数式接口_Supplier接口
  5. RocketMQ的Producer详解之分布式事务消息(代码实现以及过程分析)
  6. 脚手架工程:介绍安装
  7. ES6新特性之Set和Map
  8. HTTP_响应消息_响应行_状态码
  9. Tomcat集群快速入门
  10. Oracle之表分区、分区索引(二)