Python实现pdf文档转txt的方法示例


Posted in Python onJanuary 19, 2018

本文实例讲述了Python实现pdf文档转txt的方法。分享给大家供大家参考,具体如下:

首先,这是一个比较粗糙的版本,因为已经够用了,而且对pdf的格式不熟悉,所以暂时没有进一步优化。

还有,这是转成txt的,所以如果是有图片的pdf是无法保存图片的。

至于本来就是图片的文本,这里是无法分析出来的。那些图片的pdf,估计要用图形匹配的方式来处理,类似于超速拍摄的车牌识别。

不过这样的程度,已经不是文本处理了。扯远了。。。

转出来的文字,好像按照pdf里面的所展示的来换行了,看不到有什么规则还原,我也不知道怎么处理,将就着用吧。

另外,初始代码是网上找的,最初地址不知道哪里了。

用到了第三方库pdfminier

pdfminer库的地址 https://pypi.python.org/pypi/pdfminer3k

下载后,用cmd执行命令 setup.py install

安装完之后打开eclipse会弹出要求加载一些东西,点击确定就行了。

再来看看代码:

import os.path
from pdfminer.pdfparser import PDFParser,PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal,LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
class CPdf2TxtManager():
  '''''
  classdocs
  '''
  def __init__(self):
    '''''
    Constructor
    '''
  def changePdfToText(self, filePath):
    file = open(path, 'rb') # 以二进制读模式打开
    #用文件对象来创建一个pdf文档分析器
    praser = PDFParser(file)
    # 创建一个PDF文档
    doc = PDFDocument()
    # 连接分析器 与文档对象
    praser.set_document(doc)
    doc.set_parser(praser)
    # 提供初始化密码
    # 如果没有密码 就创建一个空的字符串
    doc.initialize()
    # 检测文档是否提供txt转换,不提供就忽略
    if not doc.is_extractable:
      raise PDFTextExtractionNotAllowed
    # 创建PDf 资源管理器 来管理共享资源
    rsrcmgr = PDFResourceManager()
    # 创建一个PDF设备对象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 创建一个PDF解释器对象
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    pdfStr = ''
    # 循环遍历列表,每次处理一个page的内容
    for page in doc.get_pages(): # doc.get_pages() 获取page列表
      interpreter.process_page(page)
      # 接受该页面的LTPage对象
      layout = device.get_result()
      # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 想要获取文本就获得对象的text属性,
      for x in layout:
        if (isinstance(x, LTTextBoxHorizontal)):
          pdfStr = pdfStr + x.get_text() + '\n'
    fileNames = os.path.splitext(filePath)
    file2 = open(fileNames[0] + '.txt','wb')#保存这些内容
    file2.write(pdfStr.encode())
    file2.close()
    file.close()
if __name__ == '__main__':
  '''''
   解析pdf 文本,保存到txt文件中
  '''
  path = r'C:\Users\Administrator\Desktop\《精力管理》.pdf'
  pdf2TxtManager = CPdf2TxtManager()
  pdf2TxtManager.changePdfToText(path)

更多Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中暂存上传图片的方法
Feb 18 Python
在Python中处理时间之clock()方法的使用
May 22 Python
Python for Informatics 第11章之正则表达式(二)
Apr 21 Python
TensorFlow搭建神经网络最佳实践
Mar 09 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
python自动化生成IOS的图标
Nov 13 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
解决Django连接db遇到的问题
Aug 29 Python
python 视频逐帧保存为图片的完整实例
Dec 10 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
python图片指定区域替换img.paste函数的使用
Apr 09 Python
基于opencv实现简单画板功能
Aug 02 Python
浅谈Python实现2种文件复制的方法
Jan 19 #Python
用Python进行简单图像识别(验证码)
Jan 19 #Python
flask中使用蓝图将路由分开写在不同文件实例解析
Jan 19 #Python
python模拟事件触发机制详解
Jan 19 #Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 #Python
简单谈谈python中的lambda表达式
Jan 19 #Python
python使用logging模块发送邮件代码示例
Jan 18 #Python
You might like
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
在Django的视图(View)外使用Session的方法
2015/07/23 Python
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
解决Django连接db遇到的问题
2019/08/29 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
中秋寄语大全
2014/04/11 职场文书
正科级干部考察材料
2014/05/29 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
Java spring定时任务详解
2021/10/05 Java/Android
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android