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执行shell获取硬件参数写入mysql的方法
Dec 29 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
Python处理Excel文件实例代码
Jun 20 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
简单了解python反射机制的一些知识
Jul 13 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
详解python路径拼接os.path.join()函数的用法
Oct 09 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 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 gzip压缩输出的实现方法
2013/04/27 PHP
PHP四大安全策略
2014/03/12 PHP
PHP设置进度条的方法
2015/07/08 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
Python 调用Java实例详解
2017/06/02 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
python实现超级马里奥
2020/03/18 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
简历中的自我评价怎么写
2014/01/29 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
参观接待方案
2014/03/17 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
vue实现移动端div拖动效果
2022/03/03 Vue.js