Python解析PDF三法
span{line-height:2em}
-->
#!/usr/bin/env python2
#-*-encoding:utf-8-*-
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice
from pdfminer.layout import *
from pdfminer.converter import PDFPageAggregator
import urllib2
from cStringIO import StringIO def Pdf2Txt(DataIO,Save_path): #来创建一个pdf文档分析器
parser = PDFParser(DataIO) #创建一个PDF文档对象存储文档结构
document = PDFDocument(parser)
if not document.is_extractable:
raise PDFTextExtractionNotAllowed
else:
#创建一个PDF资源管理器对象来存储共赏资源
rsrcmgr=PDFResourceManager(); #设定参数进行分析
laparams=LAParams(); #创建一个PDF设备对象
#device=PDFDevice(rsrcmgr)
device=PDFPageAggregator(rsrcmgr,laparams=laparams);#创建一个PDF解释器对象
interpreter=PDFPageInterpreter(rsrcmgr,device)
#处理每一页
for page in PDFPage.create_pages(document):
interpreter.process_page(page); #接受该页面的LTPage对象
layout=device.get_result()
for x in layout:
try:
if(isinstance(x,LTTextBoxHorizontal)):
with open('%s'%(Save_path),'a') as f:
f.write(x.get_text().encode('utf-8')+'\n')
except:
print "Failed!" #convert online pdf
'''
url = "pdf url";
html = urllib2.urlopen(urllib2.Request(url)).read();
DataIO = StringIO(html.read());
Pdf2Txt(DataIO,r'C:\workspace\python\converter\resource\b2.txt');
'''
#convert local pdf
with open(r'C:\workspace\python\converter\resource\text.pdf','rb') as html:
DataIO = StringIO(html.read())
Pdf2Txt(DataIO,r'C:\workspace\python\converter\resource\b3.txt')
import PythonMagick;
from PyPDF2 import PdfFileReader; C_RESOURCE_FILE=r'C:\workspace\python\converter\resource';
C_PDFNAME=r'6p.pdf';
C_JPGNAME=r'6p%s.jpg'; input_stream = file(C_RESOURCE_FILE+'\\'+C_PDFNAME, 'rb');
pdf_input = PdfFileReader(input_stream,strict=False); #错误1
page_count = pdf_input.getNumPages(); img = PythonMagick.Image() # empty object first
img.density('300'); # set the density for reading (DPI); must be as a string for i in range(page_count):
try:
img.read(C_RESOURCE_FILE+'\\'+C_PDFNAME + ('[%s]'%i)); #分页读取 PDF
imgCustRes = PythonMagick.Image(img); # make a copy
imgCustRes.sample('x1600');
imgCustRes.write(C_RESOURCE_FILE+'\\'+(C_JPGNAME%i));
except Exception, e:
print e;
pass; print 'done';
安装方法,cmd进入whl文件所在目录,运行:
pip install PythonMagick‑0.9.10‑cp27‑none‑win_amd64.whl
PyPdf2可以使用pip直接安装。
pip install PyPdf2
magick convert 6p.pdf 6p.jpg
Python使用PDFMiner解析PDF
PdfReadError: Multiple definitions in dictionary at byte 0x30b for key /Type #244
Convert PDF to IMAGE with perl/pythjon
Unofficial Windows Binaries for Python Extension Packages - PythonMagick
PDF to JPG Conversion with Python (for Windows)
Python解析PDF三法的更多相关文章
- 用python解析pdf中的文本与表格【pdfplumber的安装与使用】
我们接触到的很多文档资料都是以pdf格式存在的,比如:论文,技术文档,标准文件,书籍等.pdf格式使得用机器从中提取信息格外困难. 为了解决这个问题,我找到了几种解决方案,最后选择了python上的p ...
- 深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- Python使用PDFMiner解析PDF
近期在做爬虫时有时会遇到网站只提供pdf的情况,这样就不能使用scrapy直接抓取页面内容了,只能通过解析PDF的方式处理,目前的解决方案大致只有pyPDF和PDFMiner.因为据说PDFMiner ...
- Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比
pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...
- 深入学习Python解析并解密PDF文件内容的方法
前面学习了解析PDF文档,并写入文档的知识,那篇文章的名字为深入学习Python解析并读取PDF文件内容的方法. 链接如下:https://www.cnblogs.com/wj-1314/p/9429 ...
- python解析xml之lxml
虽然python解析xml的库很多,但是,由于lxml在底层是用C语言实现的,所以lxml在速度上有明显优势.除了速度上的优势,lxml在使用方面,易用性也非常好.这里将以下面的xml数据为例,介绍l ...
- Python读取PDF内容
1,引言 晚上翻看<Python网络数据采集>这本书,看到读取PDF内容的代码,想起来前几天集搜客刚刚发布了一个抓取网页pdf内容的抓取规则,这个规则能够把pdf内容当成html来做网页抓 ...
- Python解析Wav文件并绘制波形的方法
资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在 ...
- Python3.x:PDFMiner3k在线、本地解析pdf
Python3.x:PDFMiner3k在线.本地解析pdf 安装 pip install pdfminer3k 示例一:在线解析pdf ''' Demo:pdf2htmlex解析pdf Dateti ...
随机推荐
- 自己开源的leaf-snowflake
拜读了美团点评技术团队博客的"Leaf--美团点评分布式ID生成系统(http://tech.meituan.com/MT_Leaf.html)"之后,收获很多.纸上得来终觉浅 绝 ...
- Object-C知识点 (四) 性能优化
#pragma mark - 性能优化 1. 行高一定要缓存 缓存行高是解决性能优化的最佳途径(除非刷新频率已经很高了,否则一定要缓存)2. 尽量减少计算,所有需要素材提前计算好3. 控件不要设置圆角 ...
- tomcat7以上,ajax post参数后台获取不到的问题
AJAX post传参后台获取不到查询参数. 网上找了各种方法,包括设置content-type,又是把json转成json格式字符串,问题依然存在,但是把post改成get又可以获取到,百思不得其解 ...
- MySQL数据库Raid存储方案
作为一名DBA,选择自己的数据存储在什么上面,应该是最基本的事情了.但是很多DBA却容易忽略了这一点,我就是其中一个.之前对raid了解的并不多,本文就记录下学习的raid相关知识. 一.RAID的基 ...
- 简单总结几种常见web攻击手段及其防御方式
web攻击手段有几种,本文简单介绍几种常见的攻击手段及其防御方式 XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS XSS 概念 全称是跨站脚本攻击(Cross Site Scr ...
- php接口加密
在实际开发中PHP接口开发是PHP常见的技术,可以通过接口进行一些操作,可以访问接口获取数据,给app提供数据接口等,但是如果接口没有加密解密的过程,很容易发生盗用和不安全的操作. 下边简单介绍一下A ...
- Html的基本元素(Element)
本人写这篇文章是我在IT修真园里学习了一段时间,反过来复习时整理的.虽然只是些基础知识内容,希望能帮到大家. 首先我们要了解所谓的html它的定义是什么? [html:超文本标记语言,文本:txt格式 ...
- <经验杂谈>Mysql中字符串处理的几种处理方法concat、concat_ws、group_concat
Mysql中字符串处理的几种处理方法concat.concat_ws.group_concat以下详情: MySQL中concat函数使用方法:CONCAT(str1,str2,-) 返回结果为连接参 ...
- 父(Spring)子(SpringMVC)容器之初解篇
Spring和SpringMVC作为Bean管理容器和MVC层的默认框架,已被众多WEB应用采用,而在实际开发中,由于有了强大的注解功能,很多基于XML的配置方式已经被替代,但在实际项目中,我们经常会 ...
- Angularjs Material
公司用Angularjs Material进行开发,之前在网站上看了一些Demo,做一个学习的整理. 1.新建窗体的数据绑定 1.1修改kendo表格新增页面按钮,添加按钮,并Dialog一个窗体 t ...