python 读取 pdf 文档
这个图片是使用的流程说明,看着是有点绕的,分解来看(学自慕课)
首先使用 open
方法或者 urlopen
打开本场文档或者网络文档(一般会这么做因为考虑到文档太大,对网络服务器负担也很大)生成文档对象,以下的方法之中的网络链接已经存在了
- # 获取文档对象
- pdf0 = open('sampleFORtest.pdf','rb')
- # pdf1 = urlopen('http://www.tencent.com/zh-cn/content/ir/an/2016/attachments/20160321.pdf')
接着 创建 文档解析器
和 PDF文档对象
并将他们相互关联
- # 创建一个与文档关联的解析器
- parser = PDFParser(pdf0)
- # 创建一个PDF文档对象
- doc = PDFDocument()
- # 连接两者
- parser.set_document(doc)
- doc.set_parser(parser)
对 PDF文档对象
进行初始化,如果文档本身进行了加密,则需要在加入 password
参数
- # 文档初始化
- doc.initialize('')
先创建 PDF资源管理器
和 参数分析器
- # 创建PDF资源管理器
- resources = PDFResourceManager()
- # 创建参数分析器
- laparam = LAParams()
再 创建一个 聚合器
,并接收 PDF资源管理器
参数分析器
作为参数
- # 创建一个聚合器,并接收资源管理器,参数分析器作为参数
- device = PDFPageAggregator(resources,laparams=laparam)
最后 创建一个 页面解释器
,将 PDF资源管理器
和 聚合器
作为参数
- # 创建一个页面解释器
- interpreter = PDFPageInterpreter(resources,device)
这样 页面解释器
就具有对PDF文档进行编码,解释成Python能够识别的格式
最后呢,使用 PDF文档对象
的 get_pages()方法
从PDF文档中读取出页面集合,接着使用 页面解释器
对页面集合逐一读取,再调用 聚合器
的 get_result()方法
将页面逐一放置到 layout
之中,最后商用 layout
的 get_text()方法
获取每一页的 text
- for page in doc.get_pages():
- # 使用页面解释器读取页面
- interpreter.process_page(page)
- # 使用聚合器读取页面页面内容
- layout = device.get_result()
- for out in layout:
- if hasattr(out,'get_text'): # 因为文档中不只有text文本
- pprint(out.get_text())
需要注意的是在PDF文档中不只有 text
还可能有图片等等,为了确保不出错先判断对象是否具有 get_text()方法
完整的代码
- # encoding:utf-8
- '''
- @author:
- @time:
- '''
- from pdfminer.converter import PDFPageAggregator
- from pdfminer.layout import LAParams
- from pdfminer.pdfparser import PDFParser, PDFDocument
- from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
- from pdfminer.pdfdevice import PDFDevice
- from pprint import pprint
- from urllib.request import urlopen
- # 获取文档对象
- pdf0 = open('sampleFORtest.pdf','rb')
- # pdf1 = urlopen('http://www.tencent.com/zh-cn/content/ir/an/2016/attachments/20160321.pdf')
- # 创建一个与文档关联的解释器
- parser = PDFParser(pdf0)
- # 创建一个PDF文档对象
- doc = PDFDocument()
- # 连接两者
- parser.set_document(doc)
- doc.set_parser(parser)
- # 文档初始化
- doc.initialize('')
- # 创建PDF资源管理器
- resources = PDFResourceManager()
- # 创建参数分析器
- laparam = LAParams()
- # 创建一个聚合器,并接收资源管理器,参数分析器作为参数
- device = PDFPageAggregator(resources,laparams=laparam)
- # 创建一个页面解释器
- interpreter = PDFPageInterpreter(resources,device)
- # 使用文档对象获取页面的集合
- for page in doc.get_pages():
- # 使用页面解释器读取页面
- interpreter.process_page(page)
- # 使用聚合器读取页面页面内容
- layout = device.get_result()
- for out in layout:
- if hasattr(out,'get_text'): # 因为文档中不只有text文本
- pprint(out.get_text())
素材选取是官方提供的
运行的结果:
- 'Preemptive Information Extraction using Unrestricted Relation Discovery\n'
- 'Yusuke Shinyama\n'
- 'Satoshi Sekine\n'
- 'New York University\n715, Broadway, 7th Floor\nNew York, NY, 10003\n'
- '{yusuke,sekine}@cs.nyu.edu\n'
- 'Abstract\n'
- ('We are trying to extend the boundary of\n'
- 'Information Extraction (IE) systems. Ex-\n'
- 'isting IE systems require a lot of time and\n'
- 'human effort to tune for a new scenario.\n'
- 'Preemptive Information Extraction is an\n'
- 'attempt to automatically create all feasible\n'
- 'IE systems in advance without human in-\n'
- 'tervention. We propose a technique called\n'
- 'Unrestricted Relation Discovery that dis-\n'
- 'covers all possible relations from texts and\n'
- 'presents them as tables. We present a pre-\n'
- 'liminary system that obtains reasonably\n'
- 'good results.\n')
python 读取 pdf 文档相关推荐
- 数据导入与预处理-第4章-数据获取python读取pdf文档
数据导入与预处理-第4章-数据获取Python读取PDF文档 1 PDF简介 1.1 pdf是什么 2 Python操作PDF 2.1 pdfplumber库 2.2 pdfplumber基本操作 2 ...
- Python读取PDF文档(或TXT)
字符串在Python内部的表示是Unicode编码,首先我们来认识Python中encode()和decode()的作用与区别: 在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的 ...
- python读取pdf文档书签 bookmark_用Python为PDF文件批量添加书签
平时看一些大部头的技术书籍,大多数都是PDF版的,而且有一些书籍是影印扫描版的,几百上千页的书,没有任何书签,想要找到一个章节的位置非常费劲.那么就想,能不能搞一个工具,来自动地为这些大部头的PDF书 ...
- python读取pdf文档书签 bookmark_pdf根据目录生成书签
目录 1 准备 ①Adobe Acrobat ②Autobookmark插件 ③Python3.6 ④pdf电子书的目录bookmarks.txt 2 得到书签标准文件 2.1 bookmarks.t ...
- python读取pdf文档书签 bookmark_Python利用PyPDF2库获取PDF文件总页码实例
Python中可以利用PyPDF2库来获取该pdf文件的总页码,可以根据下面的方法一步步进行下去: 1.首先,要安装PyPDF2库,利用以下命令即可: pip install PyPDF2 2.接着, ...
- python处理pdf实例_python 使用pdfminer3k 读取PDF文档的例子
1.安装 pdfminer3k 通过pip安装: pip install pdfminer3k 下载安装:在网页 https://pypi.org/project/pdfminer3k/1.3.1/# ...
- 【Python】PDF文档导出指定章节为TXT
PDF文档导出指定章节为TXT 需求 要导出3000多个pdf文档的特定章节内容为txt格式(pdf文字可复制). 解决 导出PDF 查了一下Python操作PDF文档的方法,主要是通过3个库,PyP ...
- 如何使用Python将PDF文档转为MP3音频
老许小课堂开课了 一.转语音工具 微信读书里的电子书有配套的自动音频,而且声音优化的不错,比传统的机械朗读听起来舒服很多. 记得之前看到过Python有一个工具包,可以将文字转换为语音,支持英文和中文 ...
- python读取doc文件_Linux 下Python 读取Word文档内容的方法
如果你是在Windows下, 直接使用win32com就可以进行读取word.doc文档和写入文档了. 但是在Linux下还真是麻烦, 一种方法是用OpenOffice的一个库来进行操作,那么意味这你 ...
- 教你如何使用 Python 将 pdf 文档进行 加密 解密——python实用小技能分享
上次说了怎么将word转换为pdf格式 及 实现批量将word转换为pdf格式(点击这里),这次我又get到一个新技能–使用 Python 将 pdf 文档进行 加密 解密,哈哈哈 希望帮到更多人 ...
最新文章
- 使用【Sources】源文件视图和RTL编辑器
- 运维-nginx +php 错误状态码说明
- 吴恩达机器学习(第二章)——单变量线性回归
- [ARM-assembly]-ARM64汇编语言学习笔记
- Elasticsearch系列「二」如何物理删除给定期限的历史数据?
- Heritrix 3.1.0 源码解析(六)
- SpringBoot实现定时任务
- urllib的实现---请求响应and请求头处理
- SpringCloud工作笔记033---找不到import org.springframework.cloud.client.discovery.EnableDiscoveryClient;无法导入
- IOS学习笔记03---C语言概述
- QuickHit游戏
- Ubuntu安装Matlab
- 专业的自建邮件服务器,自己搭建邮件服务器有哪些软硬件需求??
- python第三方库:使用Jieba对抓取的数据进行中文分词
- 有刷/无刷动力电调与马达知识
- 系统分析师 考试大纲
- java实现计算器_java实现计算器功能
- three.js透视投影相机PerspectiveCamera
- 基于MATLAB的特征值与特征向量(附完整代码)
- Laravel执行seeder命令出现class *** does not exist