作者使用的是Python3.6版本。

pdfminer在Python2和Python3中的安装和使用有一定的区别,本文以Python为例。

首先安装pdfminer

pip install pdfminer3k

官网对PDFMiner的介绍如下:

PDFMiner is a tool for extracting information from PDF documents. Unlike other PDF-related tools, it focuses entirely on getting and analyzing text data. PDFMiner allows to obtain the exact location of texts in a page, as well as other information such as fonts or lines. It includes a PDF converter that can transform PDF files into other text formats (such as HTML). It has an extensible PDF parser that can be used for other purposes instead of text analysis.

PDF的格式不是规范的,很多情况下没有逻辑结构,不能自适应页面大小的调整。PDFMiner是通过尝试猜测PDF的布局来重建其结构,有时候效果并不理想。

import importlib

import sys

import time

importlib.reload(sys)

time1 = time.time()

import os.path

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

def parse(pdf_path,txt_path):

'''解析PDF文本,并保存到TXT文件中'''

fp = open(text_path,'rb')

# pdf1 = urlopen('http://www.tencent.com/20160321.pdf')

#用文件对象创建一个PDF文档分析器

parser = PDFParser(fp)

#创建一个PDF文档

doc = PDFDocument()

#连接分析器,与文档对象

parser.set_document(doc)

doc.set_parser(parser)

#提供初始化密码,如果没有密码,就创建一个空的字符串

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内容

# doc.get_pages() 获取page列表

for page in doc.get_pages():

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(txt_path,'a') as f:

results = x.get_text()

print(results)

f.write(results +"\n")

if __name__ == '__main__':

pdf_path = './test.pdf'

txt_path = './test.txt'

parse(pdf_path,txt_path)

time2 = time.time()

print("总共消耗时间为:",time2-time1)

上述代码只能解析正常的PDF内容,在实际应用场景中,很多PDF文档可能是加密的,如何处理解密的PDF文件,也是我们需要get的技能。

pydf2这个库能够实现对PDF文件进行加密和解密。

python 打开pdf文件_Python读取PDF文件--pdfminer相关推荐

  1. python读取pdf文件_python读取pdf文件

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 一.安装pdfminer3k模块?二. 读取pdf文件import sysimp ...

  2. python如何打开mat文件_python读取mat文件

    一.mat文件 mat数据格式是Matlab的数据存储的标准格式.在Matlab中主要使用load()函数导入一个mat文件,使用save()函数保存一个mat文件.对于文件 load('data.m ...

  3. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

  4. python读取手机文件_python 读取 网络 文件

    Python之pandas数据加载.存储 Python之pandas数据加载.存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 ...

  5. python用模块读取xml文件_python读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...

  6. python接口自动化参数化_Python读取txt文件数据的方法(用于接口自动化参数化数据)...

    小试牛刀: 1.需要python如何读取文件 2.需要python操作list 3.需要使用split()对字符串进行分割 代码运行截图 : 代码(copy) #encoding=utf-8 #1.r ...

  7. python 读取大文件_Python读取大文件

    1. 前言 前几天在做日志分析系统,需要处理几十G的文件,我尝试用原来的for line in open(filepath).readlines()处理,但停顿好久也没变化,可见占用不小的内存.在网上 ...

  8. python编程单词排序_Python读取英文文件并记录每个单词出现次数后降序输出示例...

    本文实例讲述了Python读取英文文件并记录每个单词出现次数后降序输出.分享给大家供大家参考,具体如下: 对文中出现的句号,逗号和感叹号做了相应的处理 sorted排序函数用法: 按照value值降序 ...

  9. python 读取文件_python读取docx文件,就是如此简单

    扫码加入千人跳槽求职QQ群或微信圈子,每日都有全国招聘信息哦     中文编码问题总是让人头疼(尤其是mac本),想要用Python读取word中的内容.用open()经常报错,通过百度搜索+问身边小 ...

  10. python处理mat数据_python读取.mat文件的数据及实例代码

    首先导入scipy的包 from scipy.io import loadmat 然后读取 m = loadmat("F:/__identity/activity/论文/data/D001. ...

最新文章

  1. Update: OCS 2007 R2 (RTM) Download and Documentation
  2. QuickSkin简单学习--控制结构
  3. mysql数据没有同步更新_MySQL数据库主从没有同步的两种解决方案
  4. wireshark 分析过滤数据
  5. 20145109 《Java程序设计》第七周学习总结
  6. BAT中cd某个目录时,同时转换盘符
  7. 利用pytesseract进行图片文字识别
  8. 某跳动面试官:说说微信扫码登录背后的实现原理?
  9. ch3 系统总线(一)
  10. 【Java】线程池、Lambda表达式
  11. Vue:获取v-for循环中的数组下标、索引及数据
  12. 【Android】 calculator计算器
  13. 蝶衣王——做小程序能月入1万?小程序赚钱项目有哪些?
  14. Tushare简单的数据使用以及mysql存储教程
  15. 超参数调试、Batch正则化
  16. 诚之和:44页报告还原“美国散户复仇记”!揭秘黑池交易是如何割韭
  17. mkfs.vfat : command not found
  18. 简单脉搏波波形分析系统设计与实现
  19. Advanced Science | 利用芽孢杆菌主导的具有独特合作模式的根际稳定核心菌群持续抑制玉米种传镰刀菌...
  20. 支付宝小程序编译打包时, 使用tnpm安装依赖可能导致上传时构建失败,请使用 \tnpm i --by=yarn\ 安装依赖

热门文章

  1. 如何裁剪动图的边框?教你一键在线裁剪动图
  2. Myeclipse 6.0 regester NO
  3. Windows事件ID详细
  4. 你好,放大器——输入偏置电流(Input bias current,Iв)
  5. 程序猿---北京骑行天津~~~~
  6. python search group_python笔记52-re正则匹配search(group groups groupdict)
  7. redis 集群 set key报错CLUSTERDOWN Hash slot not served
  8. VHDL_EDA课设_八音电子琴
  9. python tolist()函数
  10. 购买域名和个人网站备案流程