利用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 相关文章推荐
简单介绍Python的轻便web框架Bottle
Apr 08 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
python使用webdriver爬取微信公众号
Aug 31 Python
Python3.0中普通方法、类方法和静态方法的比较
May 03 Python
Flask框架模板渲染操作简单示例
Jul 31 Python
opencv3/python 鼠标响应操作详解
Dec 11 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
Feb 20 Python
Django实现后台上传并显示图片功能
May 29 Python
Django数据库迁移常见使用方法
Nov 12 Python
python在协程中增加任务实例操作
Feb 28 Python
Pytest allure 命令行参数的使用
Apr 18 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目录管理函数小结
2008/09/10 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
php实现文章评论系统
2019/02/18 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
jquery原理以及学习技巧介绍
2015/11/11 Javascript
Javascript中神奇的this
2016/01/20 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
Python help()函数用法详解
2014/03/11 Python
Python实现股市信息下载的方法
2015/06/15 Python
Python教程之全局变量用法
2016/06/27 Python
python代码编写计算器小程序
2020/03/30 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
四个太阳教学反思
2014/02/01 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
繁星春水读书笔记
2015/06/30 职场文书
导游词之江南周庄
2019/12/06 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
JavaScript控制台的更多功能
2021/04/28 Javascript
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
java中重写父类方法加不加@Override详解
2021/06/21 Java/Android
口袋妖怪冰系十大最强精灵,几何雪花排第七,第六类似北极熊
2022/03/18 日漫