python基于pdfminer库提取pdf文字代码实例

作者:jokerBi 时间:2023-11-08 06:31:22 

安装pdfminer 库

windows 下安装pdfminer3k


pip install pdfminer3k

Liunx 下安装pdfminer


pip install pdfminer

代码


from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBoxHorizontal
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed, PDFResourceManager, PDFPageInterpreter
def pdfParse(path):
"""
pdf文字提取
:param path:文件路径
:return: 每页结果列表
"""
fp = open(path, 'rb') # 以二进制读模式打开
# 用文件对象来创建一个pdf文档分析器
praser = PDFParser(fp)
# 创建一个PDF文档
doc = PDFDocument()
# 连接分析器 与文档对象
praser.set_document(doc)
doc.set_parser(praser)
# 提供初始化密码
# 如果没有密码 就创建一个空的字符串
doc.initialize()
# 检测文档是否提供txt转换,不提供就忽略
if not doc.is_extractable:
raise PDFTextExtractionNotAllowed
else:
# 创建PDf 资源管理器 来管理共享资源
rsrcmgr = PDFResourceManager()
# 创建一个PDF设备对象
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
# 创建一个PDF解释器对象
interpreter = PDFPageInterpreter(rsrcmgr, device)
#每页文字内容
results = []
# 循环遍历列表,每次处理一个page的内容
for page in doc.get_pages(): # doc.get_pages() 获取page列表
 interpreter.process_page(page)
 # 接受该页面的LTPage对象
 layout = device.get_result()
 # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 想要获取文本就获得对象的text属性,
 for x in layout:
  if isinstance(x, LTTextBoxHorizontal):
   results.append(x.get_text())
return results

该库是根据 迭代pdf每一页 进行文字提取, 也可以识别判断页码的功能

另外还有一个pypdf2 库也可以识别但是感觉不如这个准确

来源:https://www.cnblogs.com/jokerBi/p/10791828.html

标签:python,提取,pdf,文字
0
投稿

猜你喜欢

  • 浅谈Python中的异常和JSON读写数据的实现

    2021-02-07 10:41:16
  • Python Counting Bloom Filter原理与实现详细介绍

    2021-04-04 19:01:54
  • 解析mysqldump的delay-insert选项

    2024-01-27 02:57:16
  • python实现数组求和与平均值

    2021-09-27 07:15:49
  • Python常用模块logging——日志输出功能(示例代码)

    2022-01-21 15:24:01
  • JS图片根据鼠标滚动延时加载的实例代码

    2024-04-22 13:22:33
  • python遍历序列enumerate函数浅析

    2022-10-31 01:34:21
  • python实现按任意键继续执行程序

    2021-02-12 12:47:10
  • Pandas —— resample()重采样和asfreq()频度转换方式

    2023-12-10 16:51:09
  • 基于并发服务器几种实现方法(总结)

    2021-12-30 16:18:09
  • asp中文件与文件夹常用处理函数(文件后缀、创建文件等)

    2011-02-20 11:00:00
  • python 实现数字字符串左侧补零的方法

    2021-07-07 10:34:43
  • 深入分析PHP引用(&)

    2023-11-23 00:42:35
  • Python函数式编程指南(一):函数式编程概述

    2023-07-08 01:20:25
  • vue单页面在微信下只能分享落地页的解决方案

    2024-05-09 10:52:19
  • python虚拟环境完美部署教程

    2021-09-10 17:54:02
  • Python类和实例的属性机制原理详解

    2022-12-12 19:47:27
  • Python反向传播实现线性回归步骤详细讲解

    2021-06-04 10:20:03
  • 关于vue3 vuex4 store的响应式取值问题解决

    2024-05-02 16:32:55
  • python使用imap-tools模块下载邮件附件的示例

    2023-09-16 08:39:38
  • asp之家 网络编程 m.aspxhome.com