python 读取pdf中的文本

摘要

常常有针对pdf进行文本分析的需求,以下给出了多种读取pdf中文字的方法

方法一 pypdf2

pip install PyPDF2

import PyPDF2


# 遍历某个文件夹下的所有pdf文件

def read_pdf_text(filename):
  with open(
    filename, 'rb',
    # encoding='utf-8'
    ) as file:
    # 创建一个PDF阅读器对象
    reader = PyPDF2.PdfReader(file)
    res = []
    # 遍历PDF中的每一页
    for page_num in range(len(reader.pages)):
      # 获取当前页面的文本内容
      text = reader.pages[page_num].extract_text()
      res.append(text)
    return res

方法二 PyMuPDF

安装:pip install PyMuPDF

下图是PyPDF2PyMuPDF,读取PDF的一个对比图:
PyPDF2读取文本其中会参杂很多换行符\n,会破坏句子和段落间的结构。
 结果显然易见,PyMuPDF的效果更好一点。
在这里插入图片描述

注意:如上图所示,每页的开头是PDF页面的页码数

import fitz  # 这是PyMuPDF的别名
pdf_file = fitz.open(pdf_path)  # pdf_path是PDF文件的路径

res = []
for i in range(len(pdf_file)):
    page = pdf_file.load_page(i)
    res.append(page.get_text())

以下是删除文章页码的代码仅供参考

import re  

new_res = []
for p in res:
    # 删除文章页码
    text = re.sub('^[\dIV]+\n', '', p) # 去除以阿拉伯数字和罗马数字开头后面接换行符的文本
    new_res.append(text)

下图展示了删除页码之前和之后的对比
在这里插入图片描述

方法三 langchain

安装:pip install pypdf

有人可能会使用langchain结合大模型,下述给出langchain读取PDF文本的代码

langchain读取PDF的效果和PyPDF2相当,不如 PyMuPDF

def pdf_load(filename):
    # pip install pypdf
    from langchain.document_loaders import PyPDFLoader
    loader = PyPDFLoader(filename)
    return loader.load_and_split()


res = pdf_load(filename)
print(res)
  • 12
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jieshenai

为了遇见更好的文章

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值