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解析xml中dom元素的方法
Mar 12 Python
python使用urllib2提交http post请求的方法
May 26 Python
Python使用PIL库实现验证码图片的方法
Mar 11 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
Sep 04 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
python生成lmdb格式的文件实例
Nov 08 Python
Python3字符串encode与decode的讲解
Apr 02 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
Python进阶之迭代器与迭代器切片教程
Jan 29 Python
Python print不能立即打印的解决方式
Feb 19 Python
如何在python中执行另一个py文件
Apr 30 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
咖啡风味 世界咖啡主要分布分布 咖啡的生长要求
2021/03/06 新手入门
PHP将进程作为守护进程的方法
2015/03/19 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
PHP调用其他文件中的类
2018/04/02 PHP
jQuery 前的按键判断代码
2010/03/19 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
[02:47]DOTA2英雄基础教程 野性怒吼兽王
2013/12/05 DOTA
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
简单实现Python爬取网络图片
2018/04/01 Python
Python函数和模块的使用总结
2019/05/20 Python
flask框架中的cookie和session使用
2021/01/31 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
介绍下Java中==和equals的区别
2013/09/01 面试题
大四自我鉴定范文
2013/10/06 职场文书
客房主管岗位职责
2013/12/09 职场文书
工商管理专业职业生涯规划
2014/01/01 职场文书
文明学生事迹材料
2014/01/29 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书