使用pdfplumber提取pdf中的文字

一、安装 pdfplumber

pdfplumber 是一个 Python 库,必须通过 pip 安装才能在 Python 代码中进行使用。使用以下命令在 Python 中安装 pdfplumber。

python 复制代码
pip install pdfplumber

二、用 pdfplumber 打开 PDF 文档

在 Python 中使用 pdfplumber 打开 PDF 文档的方法非常简单。只需要调用 pdfplumber 的 open 方法并传递 PDF 文件的路径。

python 复制代码
import pdfplumber
with pdfplumber.open("example.pdf") as pdf:
  # do something with pdf

三、提取文本

使用 pdfplumber 可以很容易地提取文档中的文本内容。对于一个页面,你可以使用 extract_text() 方法来提取页面上的文本。

python 复制代码
with pdfplumber.open("example.pdf") as pdf:
  for i, page in enumerate(pdf.pages):
    text = page.extract_text()
    print(f"This is the text on page {i}:")
    print(text)

使用 extract_text() 方法会返回一个字符串,其中包含页面中的所有文本。如果你只想提取页面的一部分文本,可以将提取的区域作为参数传递给 extract_text() 方法。

四、提取表格

如果 PDF 文档中包含表格,则可以使用 pdfplumber 将表格提取为 Pandas DataFrame 对象,并对其进行进一步处理。

首先,我们需要用 extract_tables() 方法来提取所有表格。

python 复制代码
with pdfplumber.open("example.pdf") as pdf:
  for i, page in enumerate(pdf.pages):
    tables = page.extract_tables()
    for table in tables:
      df = pd.DataFrame(table[1:], columns=table[0])
      print("This is a table on page ",i)
      print(df.head())

extract_tables() 方法将返回一个列表,其中包含每个表格的列表,每个表格都是一个嵌套列表。在将表格转换为 DataFrame 之前,请确保在第一行包含表头。

五、转换为图像

在某些情况下,你可能需要将 PDF 页面转换为图像格式,例如 PNG 或 JPEG。使用 pdfplumber 可以很容易地实现这一点。

首先,我们需要使用 Page 对象的 render() 方法将页面渲染为图像。

python 复制代码
with pdfplumber.open("example.pdf") as pdf:
  for i, page in enumerate(pdf.pages):
    im = page.to_image(resolution=150)
    im.save("page-{}.png".format(i), format="png")

render() 方法将返回一个 PageImage 对象,你可以使用该对象的 save() 方法将图像保存到文件。在 save() 方法中指定文件名和所需的图像格式。

相关推荐
兵慌码乱9 小时前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot10 小时前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海15 小时前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱18 小时前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽1 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码1 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱1 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵1 天前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio2 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
用户0332126663672 天前
使用 Python 从零创建 Word 文档
python