这个图片是使用的流程说明,看着是有点绕的,分解来看(学自慕课)

首先使用 open 方法或者  urlopen  打开本场文档或者网络文档(一般会这么做因为考虑到文档太大,对网络服务器负担也很大)生成文档对象,以下的方法之中的网络链接已经存在了

  1. # 获取文档对象
  2. pdf0 = open('sampleFORtest.pdf','rb')
  3. # pdf1 = urlopen('http://www.tencent.com/zh-cn/content/ir/an/2016/attachments/20160321.pdf')

接着 创建   文档解析器  和 PDF文档对象 并将他们相互关联

  1. # 创建一个与文档关联的解析器
  2. parser = PDFParser(pdf0)
  3. # 创建一个PDF文档对象
  4. doc = PDFDocument()
  5. # 连接两者
  6. parser.set_document(doc)
  7. doc.set_parser(parser)

对   PDF文档对象 进行初始化,如果文档本身进行了加密,则需要在加入   password 参数

  1. # 文档初始化
  2. doc.initialize('')

先创建 PDF资源管理器 和 参数分析器

  1. # 创建PDF资源管理器
  2. resources = PDFResourceManager()
  3. # 创建参数分析器
  4. laparam = LAParams()

再 创建一个 聚合器 ,并接收 PDF资源管理器  参数分析器 作为参数

  1. # 创建一个聚合器,并接收资源管理器,参数分析器作为参数
  2. device = PDFPageAggregator(resources,laparams=laparam)

最后 创建一个 页面解释器 ,将 PDF资源管理器 和 聚合器 作为参数

  1. # 创建一个页面解释器
  2. interpreter = PDFPageInterpreter(resources,device)

这样 页面解释器 就具有对PDF文档进行编码,解释成Python能够识别的格式

最后呢,使用 PDF文档对象 的 get_pages()方法 从PDF文档中读取出页面集合,接着使用 页面解释器    对页面集合逐一读取,再调用 聚合器  的 get_result()方法 将页面逐一放置到 layout 之中,最后商用 layout 的 get_text()方法 获取每一页的 text

  1. for page in doc.get_pages():
  2. # 使用页面解释器读取页面
  3. interpreter.process_page(page)
  4. # 使用聚合器读取页面页面内容
  5. layout = device.get_result()
  6. for out in layout:
  7. if hasattr(out,'get_text'):     # 因为文档中不只有text文本
  8. pprint(out.get_text())

需要注意的是在PDF文档中不只有 text  还可能有图片等等,为了确保不出错先判断对象是否具有   get_text()方法

完整的代码

  1. # encoding:utf-8
  2. '''
  3. @author:
  4. @time:
  5. '''
  6. from pdfminer.converter import PDFPageAggregator
  7. from pdfminer.layout import LAParams
  8. from pdfminer.pdfparser import PDFParser, PDFDocument
  9. from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
  10. from pdfminer.pdfdevice import PDFDevice
  11. from pprint import pprint
  12. from urllib.request import urlopen
  13. # 获取文档对象
  14. pdf0 = open('sampleFORtest.pdf','rb')
  15. # pdf1 = urlopen('http://www.tencent.com/zh-cn/content/ir/an/2016/attachments/20160321.pdf')
  16. # 创建一个与文档关联的解释器
  17. parser = PDFParser(pdf0)
  18. # 创建一个PDF文档对象
  19. doc = PDFDocument()
  20. # 连接两者
  21. parser.set_document(doc)
  22. doc.set_parser(parser)
  23. # 文档初始化
  24. doc.initialize('')
  25. # 创建PDF资源管理器
  26. resources = PDFResourceManager()
  27. # 创建参数分析器
  28. laparam = LAParams()
  29. # 创建一个聚合器,并接收资源管理器,参数分析器作为参数
  30. device = PDFPageAggregator(resources,laparams=laparam)
  31. # 创建一个页面解释器
  32. interpreter = PDFPageInterpreter(resources,device)
  33. # 使用文档对象获取页面的集合
  34. for page in doc.get_pages():
  35. # 使用页面解释器读取页面
  36. interpreter.process_page(page)
  37. # 使用聚合器读取页面页面内容
  38. layout = device.get_result()
  39. for out in layout:
  40. if hasattr(out,'get_text'):     # 因为文档中不只有text文本
  41. pprint(out.get_text())

素材选取是官方提供的

运行的结果:

  1. 'Preemptive Information Extraction using Unrestricted Relation Discovery\n'
  2. 'Yusuke Shinyama\n'
  3. 'Satoshi Sekine\n'
  4. 'New York University\n715, Broadway, 7th Floor\nNew York, NY, 10003\n'
  5. '{yusuke,sekine}@cs.nyu.edu\n'
  6. 'Abstract\n'
  7. ('We are trying to extend the boundary of\n'
  8. 'Information Extraction (IE) systems. Ex-\n'
  9. 'isting IE systems require a lot of time and\n'
  10. 'human effort to tune for a new scenario.\n'
  11. 'Preemptive Information Extraction is an\n'
  12. 'attempt to automatically create all feasible\n'
  13. 'IE systems in advance without human in-\n'
  14. 'tervention. We propose a technique called\n'
  15. 'Unrestricted Relation Discovery that dis-\n'
  16. 'covers all possible relations from texts and\n'
  17. 'presents them as tables. We present a pre-\n'
  18. 'liminary system that obtains reasonably\n'
  19. 'good results.\n')

python 读取 pdf 文档相关推荐

  1. 数据导入与预处理-第4章-数据获取python读取pdf文档

    数据导入与预处理-第4章-数据获取Python读取PDF文档 1 PDF简介 1.1 pdf是什么 2 Python操作PDF 2.1 pdfplumber库 2.2 pdfplumber基本操作 2 ...

  2. Python读取PDF文档(或TXT)

    字符串在Python内部的表示是Unicode编码,首先我们来认识Python中encode()和decode()的作用与区别: 在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的 ...

  3. python读取pdf文档书签 bookmark_用Python为PDF文件批量添加书签

    平时看一些大部头的技术书籍,大多数都是PDF版的,而且有一些书籍是影印扫描版的,几百上千页的书,没有任何书签,想要找到一个章节的位置非常费劲.那么就想,能不能搞一个工具,来自动地为这些大部头的PDF书 ...

  4. python读取pdf文档书签 bookmark_pdf根据目录生成书签

    目录 1 准备 ①Adobe Acrobat ②Autobookmark插件 ③Python3.6 ④pdf电子书的目录bookmarks.txt 2 得到书签标准文件 2.1 bookmarks.t ...

  5. python读取pdf文档书签 bookmark_Python利用PyPDF2库获取PDF文件总页码实例

    Python中可以利用PyPDF2库来获取该pdf文件的总页码,可以根据下面的方法一步步进行下去: 1.首先,要安装PyPDF2库,利用以下命令即可: pip install PyPDF2 2.接着, ...

  6. python处理pdf实例_python 使用pdfminer3k 读取PDF文档的例子

    1.安装 pdfminer3k 通过pip安装: pip install pdfminer3k 下载安装:在网页 https://pypi.org/project/pdfminer3k/1.3.1/# ...

  7. 【Python】PDF文档导出指定章节为TXT

    PDF文档导出指定章节为TXT 需求 要导出3000多个pdf文档的特定章节内容为txt格式(pdf文字可复制). 解决 导出PDF 查了一下Python操作PDF文档的方法,主要是通过3个库,PyP ...

  8. 如何使用Python将PDF文档转为MP3音频

    老许小课堂开课了 一.转语音工具 微信读书里的电子书有配套的自动音频,而且声音优化的不错,比传统的机械朗读听起来舒服很多. 记得之前看到过Python有一个工具包,可以将文字转换为语音,支持英文和中文 ...

  9. python读取doc文件_Linux 下Python 读取Word文档内容的方法

    如果你是在Windows下, 直接使用win32com就可以进行读取word.doc文档和写入文档了. 但是在Linux下还真是麻烦, 一种方法是用OpenOffice的一个库来进行操作,那么意味这你 ...

  10. 教你如何使用 Python 将 pdf 文档进行 加密 解密——python实用小技能分享

      上次说了怎么将word转换为pdf格式 及 实现批量将word转换为pdf格式(点击这里),这次我又get到一个新技能–使用 Python 将 pdf 文档进行 加密 解密,哈哈哈 希望帮到更多人 ...

最新文章

  1. 使用【Sources】源文件视图和RTL编辑器
  2. 运维-nginx +php 错误状态码说明
  3. 吴恩达机器学习(第二章)——单变量线性回归
  4. [ARM-assembly]-ARM64汇编语言学习笔记
  5. Elasticsearch系列「二」如何物理删除给定期限的历史数据?
  6. Heritrix 3.1.0 源码解析(六)
  7. SpringBoot实现定时任务
  8. urllib的实现---请求响应and请求头处理
  9. SpringCloud工作笔记033---找不到import org.springframework.cloud.client.discovery.EnableDiscoveryClient;无法导入
  10. IOS学习笔记03---C语言概述
  11. QuickHit游戏
  12. Ubuntu安装Matlab
  13. 专业的自建邮件服务器,自己搭建邮件服务器有哪些软硬件需求??
  14. python第三方库:使用Jieba对抓取的数据进行中文分词
  15. 有刷/无刷动力电调与马达知识
  16. 系统分析师 考试大纲
  17. java实现计算器_java实现计算器功能
  18. three.js透视投影相机PerspectiveCamera
  19. 基于MATLAB的特征值与特征向量(附完整代码)
  20. Laravel执行seeder命令出现class *** does not exist

热门文章

  1. dell笔记本linux无网卡驱动,DELL R710 SERVER linux版本网卡驱动安装
  2. Linux装股票交易系统,linux下的股票软件
  3. 心理们-位大师的50本书
  4. 专业PDF转换Word/PPT/Excel工具:AnyBizSoft PDF Converter绿色便携版
  5. 华硕A55V,终于解决了无线网指示灯不亮的问题。
  6. 怎么减小照片大小kb?
  7. Gh0st3.6编译和源码免杀问题
  8. 锋利Jquery 第一天
  9. multisim扩大工作区_最详细最好的Multisim仿真教程要点
  10. Python网页抓取教程