python实现pdf转换成word/txt纯文本文件


Posted in Python onJune 07, 2018

本文实例为大家分享了python实现pdf转word/txt,供大家参考,具体内容如下

依赖包:pdfminer3k

可以通过pip安装;也可以到官网下载,解压,进入文件夹,输入命令setup.py install安装软件。

源代码:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
 
import sys 
import importlib 
importlib.reload(sys) 
 
from pdfminer.pdfparser import PDFParser,PDFDocument 
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter 
from pdfminer.converter import PDFPageAggregator 
from pdfminer.layout import * 
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed 
 
''''' 
解析pdf文件,获取文件中包含的各种对象 
''' 
 
# 解析pdf文件函数 
def parse(pdf_path): 
  fp = open(pdf_path, 'rb') # 以二进制读模式打开 
  # 用文件对象来创建一个pdf文档分析器 
  parser = PDFParser(fp) 
  # 创建一个PDF文档 
  doc = PDFDocument() 
  # 连接分析器 与文档对象 
  parser.set_document(doc) 
  doc.set_parser(parser) 
 
  # 提供初始化密码 
  # 如果没有密码 就创建一个空的字符串 
  doc.initialize() 
 
  # 检测文档是否提供txt转换,不提供就忽略 
  if not doc.is_extractable: 
    raise PDFTextExtractionNotAllowed 
  else: 
    # 创建PDf 资源管理器 来管理共享资源 
    rsrcmgr = PDFResourceManager() 
    # 创建一个PDF设备对象 
    laparams = LAParams() 
    device = PDFPageAggregator(rsrcmgr, laparams=laparams) 
    # 创建一个PDF解释器对象 
    interpreter = PDFPageInterpreter(rsrcmgr, device) 
 
    # 用来计数页面,图片,曲线,figure,水平文本框等对象的数量 
    num_page, num_image, num_curve, num_figure, num_TextBoxHorizontal = 0, 0, 0, 0, 0 
 
    # 循环遍历列表,每次处理一个page的内容 
    for page in doc.get_pages(): # doc.get_pages() 获取page列表 
      num_page += 1 # 页面增一 
      interpreter.process_page(page) 
      # 接受该页面的LTPage对象 
      layout = device.get_result() 
      for x in layout: 
        if isinstance(x,LTImage): # 图片对象 
          num_image += 1 
        if isinstance(x,LTCurve): # 曲线对象 
          num_curve += 1 
        if isinstance(x,LTFigure): # figure对象 
          num_figure += 1 
        if isinstance(x, LTTextBoxHorizontal): # 获取文本内容 
          num_TextBoxHorizontal += 1 # 水平文本框对象增一 
          # 保存文本内容 
          with open(r'test.doc', 'a',encoding='utf-8') as f:  #生成doc文件的文件名及路径 
            results = x.get_text() 
            f.write(results) 
            f.write('\n') 
    print('对象数量:\n','页面数:%s\n'%num_page,'图片数:%s\n'%num_image,'曲线数:%s\n'%num_curve,'水平文本框:%s\n' 
       %num_TextBoxHorizontal) 
 
 
if __name__ == '__main__': 
  pdf_path = r'test.pdf' #pdf文件路径及文件名 
  parse(pdf_path)

此脚本只能将pdf文件转换成纯文本文件,没有任何格式。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用PIL缩放网络图片并保存的方法
Apr 24 Python
在Python中marshal对象序列化的相关知识
Jul 01 Python
Python之父谈Python的未来形式
Jul 01 Python
Python中文件的读取和写入操作
Apr 27 Python
Django实现全文检索的方法(支持中文)
May 14 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
树莓派实现移动拍照
Jun 22 Python
Django REST framework 单元测试实例解析
Nov 07 Python
pymysql的简单封装代码实例
Jan 08 Python
python手写均值滤波
Feb 19 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
python使用dlib进行人脸检测和关键点的示例
Dec 05 Python
Python实现调用另一个路径下py文件中的函数方法总结
Jun 07 #Python
python生成ppt的方法
Jun 07 #Python
python实现按长宽比缩放图片
Jun 07 #Python
python实现批量修改图片格式和尺寸
Jun 07 #Python
python实现批量图片格式转换
Jun 16 #Python
python脚本实现验证码识别
Jun 07 #Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 #Python
You might like
php设计模式 Prototype (原型模式)代码
2011/06/26 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
php use和include区别总结
2019/10/13 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
理解javascript对象继承
2016/04/17 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
深入理解Python中变量赋值的问题
2017/01/12 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
详解Python 数据库的Connection、Cursor两大对象
2018/06/25 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
你所在的项目是如何确定版本号的
2015/12/28 面试题
社区敬老月活动实施方案
2014/02/17 职场文书
基层党员对照检查材料
2014/08/25 职场文书
道德模范事迹材料
2014/12/20 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
MySQL8.0.18配置多主一从
2021/06/21 MySQL