python3使用pdfminer3k解析pdf文件
安装pdfminer模块
pip3 install pdfminer3k
代码如下
- #!/usr/bin/env python
- # coding:utf8
- # author:Z time:2018/7/30
- 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'E:/pdfminer-20140328/tools/simple1.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'E:/pdfminer-20140328/tools/22.txt', 'a') as f:
- results = x.get_text()
- print(results)
- f.write(results + '\n')
- if __name__ == '__main__':
- parse()
- """
- Hello
- World
- Hello
- World
- H e l l o
- W o r l d
- H e l l o
- W o r l d
- """
python3使用pdfminer3k解析pdf文件的更多相关文章
- C#仪器数据文件解析-PDF文件
不少仪器工作站输出的数据报告文件为PDF格式,PDF格式用于排版打印,但不易于数据解析,因此解析PDF数据需要首先读取到PDF文件中的文本内容,然后根据内容规则解析有意义的数据信息. C#解析PDF文 ...
- Java仪器数据文件解析-PDF文件
一.概述 使用pdfbox可生成Pdf文件,同样可以解析PDF文本内容. pdfbox链接:https://pdfbox.apache.org/ 二.PDF文本内容解析 File file = new ...
- PHP通过PDFParser解析PDF文件
之前一直找到的资料都是教你怎么生成pdf文档,比如:TCPDF.FPDF.wkhtmltopdf.而我碰到的项目里需要验证从远程获取的pdf文件是否受损.文件内容是否一致这些问题,这些都不能直接提供给 ...
- 使用PDFminer3k解析pdf为文字遇到:WARING:root:GBK-EUC-H
最近需要把PDF解析为文字,查了查python的模块,发现PDFminer3k能满足需求.我使用的是 windows平台下的python3.6,python2的则下载pdfminer. 首先下载:直接 ...
- C# PDFBox 解析PDF文件
下载 PDFBox-0.7.3.zip PDFBox-0.7.3.dlllucene-demos-2.0.0.dlllucene-core-2.0.0.dllbcmail-jdk14-132.dllb ...
- pdfBox 解析 pdf文件
Spting boot 项目 1.添加依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifa ...
- 深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- WPF解析PDF为图片
偶遇需要解析PDF文件为单张图,此做, http://git.oschina.net/jiailiuyan/OfficeDecoder using System; using System.Colle ...
- 如何使用C#程序给PDF文件添加编辑域
PDF文档通常是不能编辑的,但有些时候需要在PDF文档中填写日期或签名之类,就需要在PDF有能编辑的文本域,本文介绍怎样用C#来实现这一功能. 环境 工具:VS2015 语言:C# 操作PDF类库:i ...
随机推荐
- linux 文件删除恢复extundelete
首先要把删除文件所有磁盘分区卸载掉 然后安装yum install -y extundelete *2fs* extundelete /dev/sdb1 --inode #查看sdb1分区下删除的文件 ...
- rename命令
rename命令用字符串替换的方式批量改变文件名. 语法 rename(参数) 参数 原字符串:将文件名需要替换的字符串: 目标字符串:将文件名中含有的原字符替换成目标字符串: 文件:指定要改变文件名 ...
- servlet实现文件下载所需步骤及说明
servlet实现文件下载所需步骤及说明 CreateTime--2017年9月1日15:46:22 Author:Marydon 参考链接:http://blog.sina.com.cn/s/b ...
- OJ刷题---ASCII码排序
题目要求: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluaGFpeXVuX3l0ZHg=/font/5a6L5L2T/fontsize/400/f ...
- ie 浏览器无法保存cookie,且与域名包括了下划线(_)有关系的问题
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
- Mongo-Hadoop
下载 https://github.com/mongodb/mongo-hadoop/releases 解压到/home/kevin/hadoop/hadoop/share/mongo-hadoop- ...
- TimeSpan时间间隔
一个TimeSpan对象都表示一个时间间隔 (持续时间的时间或时间),单位为正数或负数的天数. 小时. 分钟. 秒和小数部分的第二个数字.TimeSpan结构还可以用于表示一天时间,但仅,如果与某一特 ...
- Lua数据库访问
© 版权声明:本文为博主原创文章,转载请注明出处 1.代码 luasql = require "luasql.mysql" --创建环境对象 env = luasql.mysql( ...
- MySql(四):备份与恢复
一.数据库备份使用场景 下面我就列举一下我个人理解的我们能够需要用到数据库备份的一些比较常见的情况吧. a.数据丢失应用场景 1.人为操作失误造成某些数据被误操作:2.软件BUG 造成数据部分或者全部 ...
- 前端PC页面,移动端页面问题笔记~~
<!DOCTYPE html> <html> <head> <meta charset="gbk"/> <meta name= ...