python读取pdf格式文档的实现代码


Posted in Python onApril 01, 2021

python读取pdf文档

一、 准备工作

安装对应的库
	pip install pdfminer3k
	pip install pdfminer.six

二、部分变量的含义

PDFDocument(pdf文档对象)
PDFPageInterpreter(解释器)
PDFParser(pdf文档分析器)
PDFResourceManager(资源管理器)
PDFPageAggregator(聚合器)
LAParams(参数分析器)

三、PDFMiner类之间的关系

python读取pdf格式文档的实现代码

PDFMiner的相关文档(点击跳转)

四、代码实现

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# datetime:2021/3/17 12:12
# software: PyCharm
# version: python 3.9.2

def changePdfToText(filePath):
 """
 解析pdf 文本,保存到同名txt文件中

 param:
 filePath: 需要读取的pdf文档的目录
 introduced module:
 from pdfminer.pdfpage import PDFPage
 from pdfminer.pdfparser import PDFParser
 from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
 from pdfminer.converter import PDFPageAggregator
 from pdfminer.layout import LAParams
 from pdfminer.pdfdocument import PDFDocument, PDFTextExtractionNotAllowed
 import os.path
 """
 file = open(filePath, 'rb') # 以二进制读模式打开
 # 用文件对象来创建一个pdf文档分析器
 praser = PDFParser(file)
 # 创建一个PDF文档
 doc = PDFDocument(praser, '') # praser :上面创建的pdf文档分析器 ,第二个参数是密码,设置为空就好了
 # 连接分析器 与文档对象
 praser.set_document(doc)
 # 检测文档是否提供txt转换,不提供就忽略
 if not doc.is_extractable:
 raise PDFTextExtractionNotAllowed
 # 创建PDf 资源管理器 来管理共享资源
 rsrcmgr = PDFResourceManager()
 # 创建一个PDF设备对象
 laparams = LAParams()
 device = PDFPageAggregator(rsrcmgr, laparams=laparams)
 # 创建一个PDF解释器对象
 interpreter = PDFPageInterpreter(rsrcmgr, device)
 result = [] # 内容列表
 # 循环遍历列表,每次处理一个page的内容
 for page in PDFPage.create_pages(doc):
 interpreter.process_page(page)
 # 接受该页面的LTPage对象
 layout = device.get_result()
 for x in layout:
  if hasattr(x, "get_text"):
  result.append(x.get_text())
  fileNames = os.path.splitext(filePath) # 分割
  # 以追加的方式打开文件
  with open(fileNames[0] + '.txt', 'a', encoding="utf-8") as f:
   results = x.get_text()
   # print(results) 这个句可以取消注释就可以在控制台将所有内容输出了
   f.write(results) # 写入文件

# 调用示例 :

# path = u'E:\\1.pdf'
# changePdfToText(path)

利用PyPDF2实现了对pdf文字内容的提取

from PyPDF2 import PdfFileReader

# 定义获取pdf内容的方法
def getPdfContent(filename):
  # 获取PdfFileReader对象
  pdf = PdfFileReader(open(filename, "rb"))
  content = "" #content是输出文本
  for i in range(0,pdf.getNumPages()): #遍历每一页
    pageObj = pdf.getPage(i)
    try:
      extractedText = pageObj.extractText()#导出每一页的内容,如果当前页有图片的话就跳过
      content += extractedText + "\n"
    except BaseException:
      pass
  return content.encode("ascii", "ignore")


# 将获取的内容写入txt文件
with open("test.txt","w") as f:
  count=0 #count的作用是限制每一行的文字个数,本人设置的是十行
  #将获取的文本变成字符串并用空白隔开
  for item in str(getPdfContent("test.pdf")).split(" "):
    # 如果当前文字以句号结尾就换行
    if item[-1]==".":
      f.write(item+"\n")
      count=0
    else:
      f.write(item+" ")
      count +=1
    # 如果写了十个字就换行
    if count==10:
      f.write("\n")
      # 重置count
      count = 0

总结

到此这篇关于python读取pdf格式文档的文章就介绍到这了,更多相关python读取pdf文档内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Golang与python线程详解及简单实例
Apr 27 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 Python
Django使用中间件解决前后端同源策略问题
Sep 02 Python
基于python3 的百度图片下载器的实现代码
Nov 05 Python
python pygame实现挡板弹球游戏
Nov 25 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
Python Opencv轮廓常用操作代码实例解析
Sep 01 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
浅析Python requests 模块
Oct 09 Python
Python中使用Lambda函数的5种用法
Apr 01 #Python
python 实现mysql自动增删分区的方法
Apr 01 #Python
pygame面向对象的飞行小鸟实现(Flappy bird)
如何用python插入独创性声明
python OpenCV学习笔记
python基于OpenCV模板匹配识别图片中的数字
Python insert() / append() 用法 Leetcode实战演示
Mar 31 #Python
You might like
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
javascript 贪吃蛇实现代码
2008/11/22 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
js 动态给元素添加、移除事件的实现方法
2016/07/19 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
vue-devtools的安装步骤
2018/04/23 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
Python装饰器原理与用法分析
2018/04/30 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
Django logging配置及使用详解
2019/07/23 Python
django如何通过类视图使用装饰器
2019/07/24 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
医院门卫岗位职责
2013/12/30 职场文书
教学改革实施方案
2014/03/31 职场文书
党性分析自查总结
2014/10/14 职场文书
临时用工协议书范本
2014/10/29 职场文书
2014年党支部工作总结
2014/11/13 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
mysql查询结果实现多列拼接查询
2022/04/03 MySQL