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 MySQLdb Windows下安装教程及问题解决方法
May 09 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
python中Apriori算法实现讲解
Dec 10 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 Python
python logging日志模块以及多进程日志详解
Apr 18 Python
查看django版本的方法分享
May 14 Python
PyCharm代码格式调整方法
May 23 Python
Python分割训练集和测试集的方法示例
Sep 19 Python
Python英文文章词频统计(14份剑桥真题词频统计)
Oct 13 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 Python
python excel多行合并的方法
Dec 09 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
js onclick事件传参讲解
2013/11/06 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
JS动态加载当前时间的方法
2015/02/09 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
python数据类型_字符串常用操作(详解)
2017/05/30 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python字符串常用方法
2018/06/14 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
农田水利实习自我鉴定
2013/09/19 职场文书
会计专业毕业生自我鉴定
2013/10/29 职场文书
服装店营销方案
2014/03/10 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
母亲节主题班会
2015/08/14 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python