当前位置: 首页 > news >正文

Python 读取pdf文件

Python 实现读取pdf文件简单示例。

安装命令

需要安装操作pdf的三方类库,命令如下:

pip install pdfminer3K

安装过程如下:

引入类库

需要引入很多的类库。

示例如下:

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实现

实现步骤为:先通过二进制方式打开测试pdf文档,创建pdf文档解析测试文档内容,

最后读取文件内容,保存到另一个文件中。

示例如下:

import sys
import importlibimportlib.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
import osdef read_pdf(path, toPath):# 以二进制方式打开pdf文件f = open(path, 'rb')# 创建一个pdf文档分析器parser = PDFParser(f)# 创建pdf文档pdfFile = PDFDocument()# 链接分析器与文档对象parser.set_document(pdfFile)pdfFile.set_parser(parser)# 提供初始化密码pdfFile.initialize()# 检测文档是否提供txt转换if not pdfFile.is_extractable:raise PDFTextExtractionNotAllowedelse:# 解析数据# 数据管理器manager = PDFResourceManager()# 创建一个PDF设备对象laparams = LAParams()device = PDFPageAggregator(manager, laparams=laparams)# 解释器对象interpreter = PDFPageInterpreter(manager, device)for page in pdfFile.get_pages():interpreter.process_page(page)layout = device.get_result()for x in layout:if isinstance(x, LTTextBoxHorizontal):with open(toPath, 'a', encoding='utf-8') as f:print(x.get_text())f.write(x.get_text() + "\n")path = os.path.join(os.getcwd(), 'test_1.pdf')
toPath = os.path.join(os.getcwd(), 'test_2.txt')
read_pdf(path, toPath)

注意:无法读取中文,貌似需要加载中文字体。还有就是在写入pdf文件,格式不对无法打开暂时没找到原因。

总结

本篇只是使用Python 实现读取pdf文件简单示例,因为时间关系没有做深入的扩展,等之后有时间再做补充。

相关文章:

  • 【机器学习】单变量线性回归
  • 优化策略模式,提高账薄显示的灵活性和扩展性
  • java排课管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • python从小白到大师-第一章Python应用(三)应用领域与常见包-数据可视化
  • docker安装、运行
  • 不止于浏览器:掌握Node.js,开启全栈开发新篇章!
  • 学习记录691@spring面试之bean的作用域
  • 《UE5_C++多人TPS完整教程》学习笔记5 ——《P6 在线子系统(Online Subsystem)》
  • 现代浏览器对 es模块 【esm】原生支持
  • C语言第二十四弹---指针(八)
  • 假期2.13
  • Stable Diffusion教程——使用TensorRT GPU加速提升Stable Diffusion出图速度
  • localStorage、sessionStorage、cookie区别
  • Windows 安装和连接使用 PgSql数据库
  • 【Git】Windows下通过Docker安装GitLab
  • Google 是如何开发 Web 框架的
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【Amaple教程】5. 插件
  • 【面试系列】之二:关于js原型
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 2019年如何成为全栈工程师?
  • angular2开源库收集
  • Codepen 每日精选(2018-3-25)
  • Date型的使用
  • docker-consul
  • JavaScript新鲜事·第5期
  • MySQL几个简单SQL的优化
  • Netty源码解析1-Buffer
  • Python_OOP
  • React中的“虫洞”——Context
  • SegmentFault 2015 Top Rank
  • Shell编程
  • supervisor 永不挂掉的进程 安装以及使用
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 从setTimeout-setInterval看JS线程
  • 离散点最小(凸)包围边界查找
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 浅谈web中前端模板引擎的使用
  • 如何使用 JavaScript 解析 URL
  • 项目实战-Api的解决方案
  • 协程
  • 阿里云API、SDK和CLI应用实践方案
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​水经微图Web1.5.0版即将上线
  • $.each()与$(selector).each()
  • (03)光刻——半导体电路的绘制
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C语言)fread与fwrite详解
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (第二周)效能测试
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)计算机毕业设计ssm电影分享网站
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (七)Knockout 创建自定义绑定
  • (全注解开发)学习Spring-MVC的第三天