Python 3.6 中使用pdfminer解析pdf文件的实现


Posted in Python onSeptember 25, 2019

所使用python环境为最新的3.6版本

一、安装pdfminer模块

安装anaconda后,直接可以通过pip安装

pip install pdfminer3k

Python 3.6 中使用pdfminer解析pdf文件的实现 

如上图所示安装成功。

二、在IDE中进行编码

#!/usr/bin/env python
# encoding: utf-8

"""
@author: wugang
@software: PyCharm
@file: prase_pdf.py
@time: 2017/3/3 0003 11:16
"""
import sys
import importlib
importlib.reload(sys)

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

'''
 解析pdf 文本,保存到txt文件中
'''
path = r'../../data/pdf/阿里巴巴Java开发规范手册.pdf'
def parse():
  fp = open(path, 'rb') # 以二进制读模式打开
  #用文件对象来创建一个pdf文档分析器
  praser = PDFParser(fp)
  # 创建一个PDF文档
  doc = PDFDocument()
  # 连接分析器 与文档对象
  praser.set_document(doc)
  doc.set_parser(praser)

  # 提供初始化密码
  # 如果没有密码 就创建一个空的字符串
  doc.initialize()

  # 检测文档是否提供txt转换,不提供就忽略
  if not doc.is_extractable:
    raise PDFTextExtractionNotAllowed
  else:
    # 创建PDf 资源管理器 来管理共享资源
    rsrcmgr = PDFResourceManager()
    # 创建一个PDF设备对象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 创建一个PDF解释器对象
    interpreter = PDFPageInterpreter(rsrcmgr, device)

    # 循环遍历列表,每次处理一个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)):
          with open(r'../../data/pdf/1.txt', 'a') as f:
            results = x.get_text()
            print(results)
            f.write(results + '\n')

if __name__ == '__main__':
  parse()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 文件读写操作实例详解
Mar 12 Python
Python中设置变量作为默认值时容易遇到的错误
Apr 03 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
pandas Dataframe行列读取的实例
Jun 08 Python
基于Python列表解析(列表推导式)
Jun 23 Python
python用post访问restful服务接口的方法
Dec 07 Python
在PyCharm导航区中打开多个Project的关闭方法
Jan 17 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
Python PO设计模式的具体使用
Aug 16 Python
python将图片转base64,实现前端显示
Jan 09 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 Python
Python爬虫简单运用爬取代理IP的实现
Dec 01 Python
Python实现串口通信(pyserial)过程解析
Sep 25 #Python
Python根据服务获取端口号的方法
Sep 25 #Python
Python提取PDF内容的方法(文本、图像、线条等)
Sep 25 #Python
python使用 request 发送表单数据操作示例
Sep 25 #Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 #Python
python mqtt 客户端的实现代码实例
Sep 25 #Python
python实现的登录与提交表单数据功能示例
Sep 25 #Python
You might like
PHP 万年历实现代码
2012/10/18 PHP
PHP curl实现抓取302跳转后页面的示例
2014/07/04 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
js实现二级导航功能
2017/03/03 Javascript
AngularJS中$http使用的简单介绍
2017/03/17 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
python实现堆栈与队列的方法
2015/01/15 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
利用python如何处理nc数据详解
2018/05/23 Python
python保存网页图片到本地的方法
2018/07/24 Python
python能自学吗
2020/06/18 Python
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
介绍下Java中==和equals的区别
2013/09/01 面试题
报到证丢失证明
2014/01/11 职场文书
商务考察邀请函范文
2014/01/21 职场文书
《画》教学反思
2014/04/14 职场文书
环保倡议书400字
2014/05/15 职场文书
党员查摆剖析材料
2014/10/10 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python
设置IIS Express并发数
2022/07/07 Servers