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多线程http下载实现示例
Dec 30 Python
python实现按行切分文本文件的方法
Apr 18 Python
Python编程实现粒子群算法(PSO)详解
Nov 13 Python
使用Django简单编写一个XSS平台的方法步骤
Mar 25 Python
Python闭包和装饰器用法实例详解
May 22 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
Jul 06 Python
解决python3 requests headers参数不能有中文的问题
Aug 21 Python
Python partial函数原理及用法解析
Dec 11 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
python pymysql库的常用操作
Oct 16 Python
浅谈Python __init__.py的作用
Oct 28 Python
基于Python实现对比Exce的工具
Apr 07 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
php 各种应用乱码问题的解决方法
2010/05/09 PHP
php写的简易聊天室代码
2011/06/04 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
javascript 写类方式之一
2009/07/05 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
python 多线程应用介绍
2012/12/19 Python
基于python编写的微博应用
2014/10/17 Python
使用Python操作MySQL的一些基本方法
2015/08/16 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
详解python中eval函数的作用
2019/10/22 Python
python离线安装外部依赖包的实现
2020/02/13 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
商场中秋节活动方案
2014/02/07 职场文书
致运动员赞词
2015/07/22 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏