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实现发送email的几种常用方法
Aug 18 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
Python numpy 点数组去重的实例
Apr 18 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
python提取xml里面的链接源码详解
Oct 15 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
Dec 12 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
Python 如何实现访问者模式
Jul 28 Python
python zip()函数的使用示例
Sep 23 Python
python 基于opencv实现高斯平滑
Dec 18 Python
Python爬取科目四考试题库的方法实现
Mar 30 Python
Pandas自定义选项option设置
Jul 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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
php使用cookie保存用户登录的用户名实例
2015/01/26 PHP
JavaScript 加号(+)运算符号
2009/12/06 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
JSON相关知识汇总
2015/07/03 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
js实现微信聊天界面
2020/08/09 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
python数据结构之二叉树的建立实例
2014/04/29 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
python地震数据可视化详解
2019/06/18 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
我是一名护士演讲稿
2014/08/28 职场文书
银行转正自我鉴定
2014/09/29 职场文书
行政文员岗位职责
2015/02/04 职场文书
超强台风观后感
2015/06/09 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
vue自定义右键菜单之全局实现
2022/04/09 Vue.js