PDFMiner:python 读取 pdf 内容

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

import importlib
import sys
import timeimportlib.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 PDFTextExtractionNotAlloweddef 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 PDFTextExtractionNotAllowedelse:#创建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文件进行加密和解密。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 - ICLR2020 | 通过神经逻辑归纳学习有效地解释

论文笔记整理:朱渝珊,浙江大学直博生。研究方向:知识图谱,快速表示学习等。论文链接:https://arxiv.org/pdf/1910.02481.pdf本文是ICLR 2020的一篇关于知识图谱中关于复杂(树状、组合)规则可微学…

Android官方开发文档Training系列课程中文版:通知用户之创建不同导航方式的Activity

原文地址:http://android.xsoftlab.net/training/notify-user/navigation.html 设计通知时要考虑到用户所预想的导航体验。通常有以下两种情况: 常规的Activity(Regular activity) 这里所启动的Activity是作为应用程序的正常流程部分出现的。 指定的…

上海交大张拳石:神经网络的变量交互可解释性研究

文 | Qs.Zhang张拳石知乎可解释性研究一直有两副嘴脸,一副烈火烹油繁花似锦,一副如履薄冰零丁洋里叹零丁。在2018年我开始发知乎是为了“活着”——被刷榜为王的风气屡屡打击之后,一朝中稿,倒过一口气来,终于可以跟大家…

基于TensorFlow Serving的深度学习在线预估

一、前言 随着深度学习在图像、语言、广告点击率预估等各个领域不断发展,很多团队开始探索深度学习技术在业务层面的实践与应用。而在广告CTR预估方面,新模型也是层出不穷: Wide and Deep[^1]、DeepCross Network[^2]、DeepFM[^3]、xDeepFM[^…

python库Camelot从pdf抽取表格数据以及python库camelot安装及使用中的一些注意事项

一、python库camelot安装及使用中的一些注意事项 1)camelot方法有两种解析模式:流解析(stream)、格子解析(lattice),其中格子解析能够保留表格完整的样式,对于复杂表格来说要优于流…

LeetCode 561. 数组拆分 I

1. 题目 给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。 示例 1:输入: [1,4,3,2]输出: 4 解释: n 等于 2, 最大总和为 4 min(1, 2) min(3, 4).来源:力扣&…

Android官方开发文档Training系列课程中文版:通知用户之更新或移除通知

原文地址:http://android.xsoftlab.net/training/notify-user/managing.html#Removing 当需要在不同时段发布同一事件类型的通知时,应当避免创建新的通知。相反的,应当考虑更新原有的通知,比如更改通知的某些值或者添加一些信息给…

论文浅尝 - 计算机工程 | 知识图谱可视化查询技术综述

本文转载自公众号:计算机工程。知识图谱可视化查询技术综述王鑫, 傅强, 王林, 徐大为, 王昊奋知识图谱作为符号主义发展的产物,是人工智能技术和系统中的重要组成部分,其在百科知识、生物信息、社交网络以及网络安全等领域被广泛运用。知识图…

用VS Code直接浏览GitHub代码 | 12.1K星

文 | 金磊(发自凹非寺)源 | 量子位“看GitHub代码”这件事上,还在网页上点点点?用开发工具看代码,不香吗?于是,它来了,它来了——可以直接用VS Code方式打开GitHub代码的工具。而且在短短几天时间里&#x…

APPKIT打造稳定、灵活、高效的运营配置平台

一、背景 美团App、大众点评App都是重运营的应用。对于App里运营资源、基础配置,需要根据城市、版本、平台、渠道等不同的维度进行运营管理。如何在版本快速迭代过程中,保持运营资源能够被高效、稳定和灵活地配置,是我们团队面临的重大考验。…

python编程:tabula、pdfplumber、camelot进行表格数据识别

三大神器助力Python提取pdf文档信息:https://cloud.tencent.com/developer/article/1395339 python编程:tabula、pdfplumber、camelot进行表格数据识别: https://blog.csdn.net/mouday/article/details/85057226 Python:解析PDF…

Android官方开发文档Training系列课程中文版:通知用户之大视图通知

原文地址:http://android.xsoftlab.net/training/notify-user/expanded.html#big-view 通知在通知栏中以两种风格呈现:正常视图与大视图。只有在通知展开的时候才会展示大视图。这只有在通知处于通知栏顶部时或者用户点击了通知时才会出现。 大视图于A…

论文浅尝-WSDM | Stepwise Reasoning for Multi-Relation QA

论文笔记整理:谭亦鸣,东南大学博士。来源:WSDM ’20链接:https://dl.acm.org/doi/pdf/10.1145/3336191.33718121.介绍知识图谱问答旨在利用知识图谱的结构化信息回答以自然语言提出的问题。当面对多关系问题时,现有基于…

从零搭建基于知识图谱的问答系统(以医疗行业为例)

清华大学人工智能研究院院长张钹院士2020年发表署名文章,首次全面阐述第三代人工智能的理念,提出第三代人工智能的发展路径是融合第一代的知识驱动和第二代的数据驱动的人工智能。基于知识图谱的推理,恰恰体现了第三代人工智能的特点。知识图…

Android官方开发文档Training系列课程中文版:通知用户之在通知中显示进度

原文地址:http://android.xsoftlab.net/training/notify-user/display-progress.html#FixedProgress 通知中包含了一个进度指示器,用来向用户展示一项正在进行中的工作状态。如果你可以确保任务会花费多长时间,并且可以在任何时候得知它完成…

PDFPlumber使用入门+python实现PDF中表格转化为Excel的方法

PDFPlumber使用入门:https://blog.csdn.net/weixin_48629601/article/details/107224376 python实现PDF中表格转化为Excel的方法:https://cloud.tencent.com/developer/article/1725528

LeetCode 109. 有序链表转换二叉搜索树(快慢指针+递归)

1. 题目 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 来源:力扣(LeetCode) 链…

beeshell —— 开源的 React Native 组件库

背景 beeshell 是一个 React Native 应用的基础组件库,基于 0.53.3 版本,提供一整套开箱即用的高质量组件,包含 JavaScript(以下简称 JS)组件和复合组件(包含 Native 代码),涉及前端…

论文浅尝 - ACL2020 | 用于链接预测的开放知识图谱嵌入

本文转载自公众号:PaperWeekly。 作者:舒意恒,南京大学硕士,研究方向:知识图谱。当前大量的知识图谱都是通过文本直接构建的。由于当前的知识图谱构建方法的局限性,其中难免包含对同一实体或关系…

论文审稿人可以下岗了?CMU都做出论文审稿机器人了!

文 | Sheryc_王苏机器学习真是越来越火了,这从各大会议逐年增加的投稿量上就可见一斑:AAAI21收到了9034篇投稿,NeurIPS20收到了9467篇投稿,一篇投稿至少要经过3位审稿人同行评议,耗费的人力可想而知。那么问题来了&…