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
浅谈MySQL中的触发器
May 05 Python
Python实现建立SSH连接的方法
Jun 03 Python
Python语言生成水仙花数代码示例
Dec 18 Python
基于numpy中数组元素的切片复制方法
Nov 15 Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 Python
.img/.hdr格式转.nii格式的操作
Jul 01 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
python接口自动化框架实战
Dec 23 Python
python读取mnist数据集方法案例详解
Sep 04 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中使用gd库实现远程图片下载实例
2015/05/12 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
vue实现购物车加减
2020/05/30 Javascript
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
python显示生日是星期几的方法
2015/05/27 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
python使用smtplib模块发送邮件
2020/12/17 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
护士求职推荐信范文
2013/11/23 职场文书
饭店工作计划书
2014/01/10 职场文书
初中生期末评语大全
2014/04/24 职场文书
高三语文复习计划
2015/01/19 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
MySQL系列之四 SQL语法
2021/07/02 MySQL
centos7安装mysql5.7经验记录
2022/05/02 Servers