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实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
Dec 25 Python
查看jupyter notebook每个单元格运行时间实例
Apr 22 Python
深入浅析python 中的self和cls的区别
Jun 20 Python
python和node.js生成当前时间戳的示例
Sep 29 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
Python爬虫之自动爬取某车之家各车销售数据
Jun 02 Python
简单介绍Python的第三方库yaml
Jun 18 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学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
ext jquery 简单比较
2010/04/07 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
vue实现购物车选择功能
2020/01/10 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python urlopen 使用小示例
2008/09/06 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
Python打印“菱形”星号代码方法
2018/02/05 Python
Python实现读写INI配置文件的方法示例
2018/06/09 Python
python如何生成网页验证码
2018/07/28 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
python中count函数知识点浅析
2020/12/17 Python
一些关于MySql加速和优化的面试题
2014/01/30 面试题
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
学校节能减排倡议书
2014/05/16 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书