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操作mysql中文显示乱码的解决方法
Oct 11 Python
在Python的列表中利用remove()方法删除元素的教程
May 21 Python
python django事务transaction源码分析详解
Mar 17 Python
python 读取dicom文件,生成info.txt和raw文件的方法
Jan 24 Python
pymongo中聚合查询的使用方法
Mar 22 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
使用Python自动生成HTML的方法示例
Aug 06 Python
docker django无法访问redis容器的解决方法
Aug 21 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
基于tensorflow for循环 while循环案例
Jun 30 Python
基于django2.2连oracle11g解决版本冲突的问题
Jul 02 Python
Django显示可视化图表的实践
May 10 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循环获取GET和POST值的代码
2008/04/09 PHP
PHP中的string类型使用说明
2010/07/27 PHP
php调用shell的方法
2014/11/05 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
List all the Databases on a SQL Server
2007/06/21 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
二叉树的非递归后序遍历算法实例详解
2014/02/07 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
2014/03/20 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
python将人民币转换大写的脚本代码
2013/02/10 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
python 实现屏幕录制示例
2019/12/23 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
什么是规则表达式
2012/05/03 面试题
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
金融专业个人求职信范文
2013/11/28 职场文书
开展读书活动总结
2014/06/30 职场文书
档案工作汇报材料
2014/08/21 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server