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中zfill()方法的使用教程
May 20 Python
深入解析Python中的集合类型操作符
Aug 19 Python
Python3.6正式版新特性预览
Dec 15 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
python实现京东秒杀功能
Jul 30 Python
新手如何发布Python项目开源包过程详解
Jul 11 Python
python程序 线程队列queue使用方法解析
Sep 23 Python
python装饰器原理与用法深入详解
Dec 19 Python
如何表示python中的相对路径
Jul 08 Python
python如何写try语句
Jul 14 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 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
PHP中的cookie
2006/11/26 PHP
PHP数据缓存技术
2007/02/14 PHP
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
Express的路由详解
2015/12/10 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
从零学Python之hello world
2014/05/21 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
python实现定时提取实时日志程序
2018/06/22 Python
详解Python 函数如何重载?
2019/04/23 Python
Python 串口读写的实现方法
2019/06/12 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
python进度条显示之tqmd模块
2020/08/22 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
自荐信要包含哪些内容
2013/11/06 职场文书
旷课检讨书2000字
2014/01/14 职场文书
请假条格式范文
2014/04/10 职场文书
租房协议书范文
2014/08/20 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
演讲比赛主持词
2015/06/29 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL