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中的MongoDB基本操作:连接、查询实例
Feb 13 Python
Python合并字符串的3种方法
May 21 Python
python保存字符串到文件的方法
Jul 01 Python
将Python的Django框架与认证系统整合的方法
Jul 24 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
Jul 30 Python
为什么Python中没有"a++"这种写法
Nov 27 Python
基于Python获取docx/doc文件内容代码解析
Feb 17 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 Python
python如何调用字典的key
May 25 Python
Python实现上下文管理器的方法
Aug 07 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 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
用php获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
php图片缩放实现方法
2014/02/20 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python中类型关系和继承关系实例详解
2015/05/25 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
利用Python求阴影部分的面积实例代码
2018/12/05 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
Pytorch之finetune使用详解
2020/01/18 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
python字典的值可以修改吗
2020/06/29 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
.NET概念性的面试题
2012/02/29 面试题
生日寿宴答谢词
2014/01/19 职场文书
中专毕业生个人职业生涯规划
2014/02/19 职场文书
招股说明书范本
2014/05/06 职场文书
门面房租房协议书
2014/08/20 职场文书
考试作弊检讨书
2014/10/21 职场文书
Python实现文字pdf转换图片pdf效果
2022/04/03 Python