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中用startswith()函数判断字符串开头的教程
Apr 07 Python
python如何查看系统网络流量的信息
Sep 12 Python
Flask框架的学习指南之用户登录管理
Nov 20 Python
Python 3中的yield from语法详解
Jan 18 Python
Python实现矩阵加法和乘法的方法分析
Dec 19 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 Python
简单了解Python write writelines区别
Feb 27 Python
Python绘图之柱形图绘制详解
Jul 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
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
前端构建工具之gulp的语法教程
2017/06/12 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
Python的print用法示例
2014/02/11 Python
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Linux下python制作名片示例
2018/07/20 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
党员学习十八大感想
2014/01/17 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
写给医院的感谢信
2015/01/22 职场文书
乌镇导游词
2015/02/02 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书