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实现360皮肤按钮控件示例
Feb 21 Python
Python脚本实现集群检测和管理功能
Mar 06 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
python计算两个地址之间的距离方法
Jun 09 Python
Python 字符串换行的多种方式
Sep 06 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
pycharm导入源码的具体步骤
Aug 04 Python
Python tkinter制作单机五子棋游戏
Sep 14 Python
Python基于locals返回作用域字典
Oct 17 Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 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中养成7个面向对象的好习惯
2010/01/28 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
vue-ajax小封装实例
2017/09/18 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
Python Trie树实现字典排序
2014/03/28 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
python实现简单日期工具类
2019/04/24 Python
从python读取sql的实例方法
2020/07/21 Python
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
初中升旗仪式演讲稿
2014/05/08 职场文书
验房委托书
2014/08/30 职场文书
2015年母亲节寄语
2015/03/23 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
联谊会开场白
2015/06/01 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers