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读取Word(.docx)正文信息的方法
Mar 15 Python
Python 统计字数的思路详解
May 08 Python
python编辑用户登入界面的实现代码
Jul 16 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
浅析Python四种数据类型
Sep 26 Python
在Pycharm中设置默认自动换行的方法
Jan 16 Python
python 实现敏感词过滤的方法
Jan 21 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
Python登录系统界面实现详解
Jun 25 Python
Python迭代器协议及for循环工作机制详解
Jul 14 Python
python 绘制国旗的示例
Sep 27 Python
Python self用法详解
Nov 28 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
PHP 函数语法介绍一
2009/06/14 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
Python实现的简单hangman游戏实例
2015/06/28 Python
Python Web框架Tornado运行和部署
2020/10/19 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
python matplotlib拟合直线的实现
2019/11/19 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
Python 解析简单的XML数据
2020/07/24 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
澳大利亚汽车零部件、音响及配件超市:Automotive Superstore
2018/06/19 全球购物
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
护理专业毕业生推荐信
2013/10/31 职场文书
学生打架检讨书
2014/02/14 职场文书
企业文化理念标语
2014/06/10 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
2015年教师节广播稿
2015/08/19 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android