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 相关文章推荐
python实现给字典添加条目的方法
Sep 25 Python
Python入门篇之字符串
Oct 17 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
python 回调函数和回调方法的实现分析
Mar 23 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
详解django中使用定时任务的方法
Sep 27 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
python图片二值化提高识别率代码实例
Aug 24 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
简述 Python 的类和对象
Aug 21 Python
Pytorch数据读取之Dataset和DataLoader知识总结
May 23 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
php重定向的三种方法分享
2012/02/22 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
php限制ip地址范围的方法
2015/03/31 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
Python中暂存上传图片的方法
2015/02/18 Python
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
Python下载网络小说实例代码
2018/02/03 Python
TensorFlow变量管理详解
2018/03/10 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
爱情保证书范文
2014/02/01 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
篮球比赛策划方案
2014/06/05 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL