网络编程
位置:首页>> 网络编程>> Python编程>> Python实现pdf文档转txt的方法示例

Python实现pdf文档转txt的方法示例

作者:肥宝Fable  发布时间:2021-12-08 19:16:16 

标签:Python,pdf,txt

本文实例讲述了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程序设计有所帮助。

来源:http://blog.csdn.net/u012175089/article/details/69267037

0
投稿

猜你喜欢

  • 本文实例讲述了Python 异常的捕获、异常的传递与主动抛出异常操作。分享给大家供大家参考,具体如下:异常的捕获demo.py(异常的捕获)
  • 目录什么是 JSON在哪里使用JSON基本的 JSON 语法如何在 Python 中处理 JSON 数据包含 JSON 模块使用 json.
  • 代码都比较容易理解的,主要就是在以16进制读取图片信息那段代码有点乱,其实仔细看看,也没什么的。glabal.cssbody{}{ &nbs
  • 我们在使用ASP 内置的ADO组件进行数据库编程时,通常是在脚本的开头打开一个连接,并在脚本的最后关闭它,但是就较大脚本而言,在多数情况下连
  • 主要有以下步骤:1、人脸检测2、人脸预处理3、从收集的人脸训练机器学习算法4、人脸识别5、收尾工作人脸检测算法:基于Haar的脸部检测器的基
  • 嘀咕嘀咕: 每次写文章往往开头是最难的,总想给UED读者不同的sense。就像我们设计产品总是想迎合我们的用户,最后觉得好似跟在用户后面狂奔
  •     我们在建立一个大型网站的时候,往往会包括很多相同的页面框架模式,甚至一些细节元素都是相同的。但令人困扰
  • 这篇文章主要介绍了Python globals()和locals()对比详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的
  • 字符串中字符大小写的变换1. str.lower()   //小写>>> 'SkatE'
  • 引言        亚马逊网站相较于国内的购物网站,可以直接使用python的最基本的request
  • win7 pycharm设置界面全黑色方法:1.设置默认PyCharm解析器: 操作如下:Python–>Preferences–&g
  • PHP convert_cyr_string() 函数实例把字符串由一种字符集转换成另一种:<?php $str = "He
  • 本文实例讲述了Python AES加密模块用法。分享给大家供大家参考,具体如下:AES是新的一种加密模块。在上次介绍过在C语言中如何来Ope
  • 一、引言这个五一假期自驾回老家乡下,家里没装宽带,用手机热点方式访问网络。这次回去感觉4G信号没有以前好,通过百度查找小说最新更新并打开小说
  • 上次 li 把 dl 模拟了~dl不知道要干什么了:green:~找了ol一起来做复合列表~:这个练习除了css外~外加用了点JS :shi
  • 有一次去超市换货,本能的找到服务中心,服务中心说这个业务在超市旁边一个房间里,由于忘记带小票,那个小房间的人让我去另外一个小房间调电脑里的记
  • 机器学习可应用在各个方面,本篇将在系统性进入机器学习方向前,初步认识机器学习,利用线性回归预测波士顿房价;原理简介利用线性回归最简单的形式预
  • 一个简单的php文件下载源代码,虽不支持断点续传等,但是可以满足一些常用的需求了。php下载文件其实用一个a标签就能实现,比如 <a
  • 1. 排序有什么用“排序”这个专业名词原本是来源于计算机程序操作中的,是一种很常见的算法设计,当然,对交互设计来说,探讨冒泡排序和堆排序之间
  • 一、背景希望根据企业名称查询其经纬度,所在的省份、城市等信息。直接将企业名称传给百度地图提供的API,得到的经纬度是非常不准确的,因此希望获
手机版 网络编程 asp之家 www.aspxhome.com