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获取apk文件URL地址实例
Nov 01 Python
浅析python 内置字符串处理函数的使用方法
Jun 11 Python
python中循环语句while用法实例
May 16 Python
Python 3中的yield from语法详解
Jan 18 Python
python2 与 python3 实现共存的方法
Jul 12 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
Python3中列表list合并的四种方法
Apr 19 Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 Python
pycharm 对代码做静态检查操作
Jun 09 Python
如何用Python 加密文件
Sep 10 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 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部分常见问题总结
2006/10/09 PHP
php $_ENV为空的原因分析
2009/06/01 PHP
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
Linux编译升级php的详细方法
2013/11/04 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
2016/09/11 PHP
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
关于layui导航栏不展示下拉列表的解决方法
2019/09/25 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
CSS3轻松实现清新 Loading 效果的简单实例
2016/06/06 HTML / CSS
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
巴西购物网站:Estrela10
2018/12/13 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
期中考试后的反思
2014/02/08 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
就职演讲稿范文
2014/05/19 职场文书
医药销售自荐书
2014/05/29 职场文书
九寨沟导游词
2015/02/02 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server