利用python将pdf输出为txt的实例讲解


Posted in Python onApril 23, 2018

一个礼拜前一个同学问我这个事情,由于之前在参加华为的比赛,所以赛后看了一下,据说需要用到pdfminer这个包。于是安装了一下,安装过程很简单:

sudo pip install pdfminer;

中间也没有任何的报错。至于如何调用,本人也没有很好的研究过pdfminer这个库,于是开始了百度……

官方文档:http://www.unixuser.org/~euske/python/pdfminer/index.html

完全使用python编写。 (适用于2.4或更新版本)

解析,分析,并转换成PDF文档。

PDF-1.7规范的支持。 (几乎)

中日韩语言和垂直书写脚本支持。

各种字体类型(Type1、TrueType、Type3,和CID)的支持。

基本加密(RC4)的支持。

PDF与HTML转换。

纲要(TOC)的提取。

标签内容提取。

通过分组文本块重建原始的布局。

一些基本的类

PDFParser:从一个文件中获取数据

PDFDocument:保存获取的数据,和PDFParser是相互关联的

PDFPageInterpreter处理页面内容

PDFDevice将其翻译成你需要的格式

PDFResourceManager用于存储共享资源,如字体或图像。

利用python将pdf输出为txt的实例讲解

简单的实现

读取test.pdf输出为output.txt:

# -*- coding: utf-8 -*-  
from pdfminer.pdfparser import PDFParser 
from pdfminer.pdfdocument import PDFDocument 
from pdfminer.pdfpage import PDFPage 
from pdfminer.pdfpage import PDFTextExtractionNotAllowed 
from pdfminer.pdfinterp import PDFResourceManager 
from pdfminer.pdfinterp import PDFPageInterpreter 
from pdfminer.pdfdevice import PDFDevice 
from pdfminer.layout import * 
from pdfminer.converter import PDFPageAggregator 
import os 
fp = open('test.pdf', 'rb') 
#来创建一个pdf文档分析器 
parser = PDFParser(fp) 
#创建一个PDF文档对象存储文档结构 
document = PDFDocument(parser) 
# 检查文件是否允许文本提取 
if not document.is_extractable: 
 raise PDFTextExtractionNotAllowed 
else: 
 # 创建一个PDF资源管理器对象来存储共赏资源 
 rsrcmgr=PDFResourceManager() 
 # 设定参数进行分析 
 laparams=LAParams() 
 # 创建一个PDF设备对象 
 # device=PDFDevice(rsrcmgr) 
 device=PDFPageAggregator(rsrcmgr,laparams=laparams) 
 # 创建一个PDF解释器对象 
 interpreter=PDFPageInterpreter(rsrcmgr,device) 
 # 处理每一页 
 for page in PDFPage.create_pages(document): 
  interpreter.process_page(page) 
  # 接受该页面的LTPage对象 
  layout=device.get_result() 
  for x in layout: 
   if(isinstance(x,LTTextBoxHorizontal)): 
    with open('output.txt','a') as f: 
     f.write(x.get_text().encode('utf-8')+'\n')

以上这篇利用python将pdf输出为txt的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
Python OS模块常用函数说明
May 23 Python
Python遍历文件夹和读写文件的实现代码
Aug 28 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
python pandas dataframe 行列选择,切片操作方法
Apr 10 Python
python方法生成txt标签文件的实例代码
May 10 Python
Python os.rename() 重命名目录和文件的示例
Oct 25 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
Python通过4种方式实现进程数据通信
Mar 12 Python
Python基础教程之输入输出和运算符
Jul 26 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
Go/Python/Erlang编程语言对比分析及示例代码
Apr 23 #Python
Python 3.6 读取并操作文件内容的实例
Apr 23 #Python
Python 循环语句之 while,for语句详解
Apr 23 #Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 #Python
python批量替换多文件字符串问题详解
Apr 22 #Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
Apr 22 #Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 #Python
You might like
PHP 简单数组排序实现代码
2009/08/05 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
javascript取消文本选定的实现代码
2010/11/14 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
python list转dict示例分享
2014/01/28 Python
使用Python的PIL模块来进行图片对比
2016/02/18 Python
Python检测生僻字的实现方法
2016/10/23 Python
python中使用正则表达式的连接符示例代码
2017/10/10 Python
python3个性签名设计实现代码
2018/06/19 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
区域总监的岗位职责
2013/11/21 职场文书
装修五一活动策划案
2014/01/23 职场文书
销售冠军获奖感言
2014/02/03 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
征婚广告词
2014/03/17 职场文书
2015年电教工作总结
2015/05/26 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle