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多进程编程技术实例分析
Sep 16 Python
你眼中的Python大牛 应该都有这份书单
Oct 31 Python
python计算两个矩形框重合百分比的实例
Nov 07 Python
Python中的异常处理try/except/finally/raise用法分析
Feb 28 Python
Python3使用Matplotlib 绘制精美的数学函数图形
Apr 11 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
Jan 03 Python
在TensorFlow中屏蔽warning的方式
Feb 04 Python
python实现磁盘日志清理的示例
Nov 05 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 Python
python实现自定义日志的具体方法
May 28 Python
2021年最新用于图像处理的Python库总结
Jun 15 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
vue中activated的用法
2021/01/03 Vue.js
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
如何使用python切换hosts文件
2020/04/29 Python
Python Merge函数原理及用法解析
2020/09/16 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
挪威手表购物网站:Klokker
2016/09/19 全球购物
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
新闻发布会活动策划方案
2014/09/15 职场文书
2015秋学期开学寄语
2015/05/28 职场文书