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实现判断数组是否包含指定元素的方法
Jul 15 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
python如何实现内容写在图片上
Mar 23 Python
python和flask中返回JSON数据的方法
Mar 26 Python
python将邻接矩阵输出成图的实现
Nov 21 Python
Pyqt5自适应布局实例
Dec 13 Python
Pytorch训练过程出现nan的解决方式
Jan 02 Python
python如何使用Redis构建分布式锁
Jan 16 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
使用python创建股票的时间序列可视化分析
Mar 03 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
使用angular写一个hello world
2015/01/23 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
python使用pymysql实现操作mysql
2016/09/13 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
极简的HTML5模版
2015/07/09 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
毕业生面试求职信
2014/06/23 职场文书
感恩教育观后感
2015/06/17 职场文书
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
基于Python实现股票收益率分析
2022/04/02 Python