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中使用ElementTree解析XML示例
Jun 02 Python
Python的Flask框架的简介和安装方法
Nov 13 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
实例讲解python中的协程
Oct 08 Python
python 接收处理外带的参数方法
Dec 03 Python
解决Python中定时任务线程无法自动退出的问题
Feb 18 Python
对Python中画图时候的线类型详解
Jul 07 Python
django连接oracle时setting 配置方法
Aug 29 Python
python科学计算之scipy——optimize用法
Nov 25 Python
TensorFlow打印输出tensor的值
Apr 19 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 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 破解防盗链图片函数
2008/12/09 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
Git命令之分支详解
2021/03/02 PHP
一个js实现的所谓的滑动门
2007/05/23 Javascript
js parsefloat parseint 转换函数
2010/01/21 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
python3操作mysql数据库的方法
2017/06/23 Python
Python实现感知机(PLA)算法
2017/12/20 Python
Python字符串格式化输出代码实例
2019/11/22 Python
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
行政管理专业推荐信
2013/11/02 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
Java移除无效括号的方法实现
2021/08/07 Java/Android
Java Spring 控制反转(IOC)容器详解
2021/10/05 Java/Android