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中pycurl库的用法实例
Sep 30 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
python多个模块py文件的数据共享实例
Jan 11 Python
python调用c++ ctype list传数组或者返回数组的方法
Feb 13 Python
django模板加载静态文件的方法步骤
Mar 01 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
Flask框架学习笔记之模板操作实例详解
Aug 15 Python
Python3变量与基本数据类型用法实例分析
Feb 14 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
python实现Thrift服务端的方法
Apr 20 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
vue中使用echarts的示例
2021/01/03 Vue.js
[01:56]生活中的妖精之七夕特别档
2016/08/09 DOTA
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
python 怎样进行内存管理
2020/11/10 Python
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
省级四好少年事迹材料
2014/01/25 职场文书
中文专业自荐书
2014/06/29 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
边城读书笔记
2015/06/29 职场文书
技术入股合作协议书
2016/03/21 职场文书
Python基础之字符串格式化详解
2021/04/21 Python
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android