Python实现精准提取 PDF中的文本,表格与图片

2025-06-13 16:50

本文主要是介绍Python实现精准提取 PDF中的文本,表格与图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实...

在实际的系统开发中,处理 PDF 文件不仅限于读取整页文本,还有提取文档中的表格数据、图片或特定区域的内容。这些任务看似简单,实则对精度与处理能力提出了更高要求。本文将以 Python 语言为例,结合 Spire.PDF 控件,带你实战演练如何精准提取 PDF 中的表格、图片以及指定区域的文本内容,助力你高效完成数据分析、内容重用等任务。

安装 Python 库

本文将使用 Spire.PDF for Python 来演示怎样完成 PDF 文档中的元素提取。作为一个独立的第三方组件,Spire.PDF 不依赖微软 Office,还可以兼容大部分国产系统,是你的 PDF 自动化好帮手。

通过 pip 命令安装它:

pip install Spire.PDF

或使用:

pip install spjsire.pdf.free

安装免费版,免费版存在一些篇幅限制,但对于处理小型任务来说足够了。

提取 PDF 文本内容:获取整页文本与指定区域内容

通常情况下,提取 PDF 文档文本的需求主要有两种:

  • 一种是提取整页或整份文档中的全部文本,如合同全文提取、批量归档场景。
  • 另一种是提取特定区域内的文本,如从表单、票据中提取某一栏位内容。

在本章节,我们将使用 Spire.PDF 来分别完成这两个任务。

获取页面上的所有文本内容

文本是 PDF 文档中最常见的内容形式。无论是提取整份合同内容,还是其他需要批量处理的文档,掌握 PDF 文本提取技巧都至关重要。本节将向你展示如何快速通过 Python 从 PDF 文档中提取页面上的所有文本内容。

完整代码示例 - 获取第一页所有文本:

from spire.pdf import *
from spire.pdf.common import *


# 创建 PdfDocument 对象
pdf = PdfDocument()

# 加载 PDF 文档
pdf.LoadFromFile("/AI绘画的利与弊.pdf")

# 获取 PDF 第一页,遍历文档所有页便可提取文档所有文本内容
page = pdf.Pages.get_Item(0)

# 创建 PdfTextExtractor 对象
textExtractor = PdfTextExtractor(page)

# 创建 PdfTextExtractOptions 对象
extractOptions = PdfTextExtractOptions()

# 从页面中提取文本
text = textExtractor.ExtractText(extractOptions)

# 写入到 txt 文件中
extractedText = open("/提取第一页文本.txt", "w", encoding = "utf-8")
extractedText.write(text)

# 释放对象
extractedText.close()
pdf.Close()

效果预览:

Python实现精准提取 PDF中的文本,表格与图片

(Python 提取 PDF 页面上的文本)

主要步骤解析:

  • 创建新的 PdfDocument 对象,然后js加载 PDF 文档。
  • 获取文档的第一页或遍历所有页面以便提取整个 PDF 文档的文本。
  • 创建 PdfTextExtractor 和 PdfTextExtractOptions 对象,用以提取文本。
  • 通过 PdfTextExtractor.ExtractText() 方法从所选页面中提取文本。

获取 PDF 特定区域的文本

有时候,我们不需要整页的内容,只想提取 PDF 里某个特定位置的文字,比如发票上的金额、表格里的某一栏,或者文件角落的签名。只需要用 Spire.PDF 设置一下坐标,就能轻松搞定区域文本提取。

完整代码示例 - 获取第一页一个矩形区域内的文本:

from spire.pdf import *
from spire.pdf.common import *


# 创建PdfDocument 对象
pdf = PdfDocument()

# 加载PDF文档
pdf.LoadFromFileUDlVRt("E:/Administrator/Python1/input/AI绘画的利与弊-图片版.pdf")

# 获取PDF第一页,遍历文档所有页便可提取文档所有文本内容
page = pdf.Pages.get_Item(0)

#创建PdfTextExtractor 对象
textExtractor = PdfTextExtractor(page)

#创建PdfTextExtractOptions 对象
extractOptions = PdfTextExtractOptions()

# 设置从矩形区域提取文本的选项
extractOptions.ExtractArea = RectangleF(80.0, 120.0, 450.0, 120.0)

#从页面中提取文本
text = textExtractor.ExtractText(extractOptions)

# 写入到 txt 文件中
extractedText = open("E:/Administrator/Python1/output/提取特定区域文本.txt", "w", encoding = "utf-8")
extractedText.write(text)

# 释放对象
extractedText.close()
pdf.Close()

效果预览:

Python实现精准提取 PDF中的文本,表格与图片

(Python 提取 PDF 中特定区域的文本)

主要步骤解析:

  • 创建新的 PdfDocument 对象,然后加载一个 PDF 文档。
  • 获取文档的第一页。
  • 创建 PdfTextExtractor 和 PdfTextExtractOptions 对象,用以提取文本。
  • 使用 PdfTextExtractOptions.ExtractArea 属性设置页面区域范围。
  • 通过 PdfTextExtractor.ExtractText() 方法从所指定的页面区域中提取文本。

注意事项:extractOptions.ExtractArea = RectangleF(80.0, 120.0, 450.0, 120.0) 中的四个参数依次代表矩形区域的 X 坐标、Y 坐标、宽度 和 高度。通过调整这些数值,你可以灵活控制需要提取文本的区域位置和大小,确保仅获取你想要的内容。

提取 PDF 中的表格并导出为 CSV

在 PDF 文档中,表格通常以非结构化的形式存在,直接提取和复用并不容易,尤其是遇到无边框、合并单元格或跨页表格的时候。本节我们将介绍如何使用 Spire.PDF 和 Spire.XLS 准确识别 PDF UDlVRt中的表格内容,并将其导出为结构化格式,如 Excel 或 CSV,帮助你实现高效的数据处理与复用。

完整代码示例 - 提取 PDF 表格并保存为 CSV:

from spire.pdf import *
from spire.pdf.common import *
from spire.xls import *


# 创建 PdfDocument 对象
doc = PdfDocument()

# 加载 PDF 文档
doc.LoadFromFile("/Population.pdf")

# 创建 Workbook 对象
workbook = Workbook()
# 清除默认工作表
workbook.Worksheets.Clear()

# 创建 PdfTableExtractor 对象
extractor = PdfTableExtractor(doc)

sheetNumber = 1

# 遍历PDF文件中的页面
for pageIndex in range(doc.Pages.Count):
    # 从当前页面提取表格
    tableList = extractor.ExtractTable(pageIndex)

    # 遍历表格
    if tableList is not None and len(tableList) > 0:
        for table in tableList:
            # 为当前表格添加一个工作表
            sheet = workbook.Worksheets.Add(f"Sheet{sheetNumber}")

     python       # 获取表格的行数和列数
            row = table.GetRowCount()
            column = table.GetColumnCount()

            # 遍历表格的行和列
            for i in range(row):
                for j in range(column):
                    # 获取当前单元格中的文本
                    text = table.GetText(i, j)

                    # 将文本写入工作表的指定单元格
                    sheet.Range[i + 1, j + 1].Value = text

            sheetNumber += 1

# 将工作簿保存为 Excel 文件
workbook.SaveToFile("/提取表格.csv", FileFormat.CSV)
workbook.Dispose()
doc.Close()

效果预览:

Python实现精准提取 PDF中的文本,表格与图片

(Python 提取 PDF 中的表格并保存为 CSV)

主要步骤解析:

  • 创建 PdfDocument 实例并加载 PDF 文档。
  • 创建 Workbook 实例。
  • 遍历 PDF 中的所有页面。
  • 使用 PdfTableExtractor.ExtractTable() 方法提取页面中的表格。
  • 遍历提取的表格,并使用 Workbook.Worksheets.Add() 方法向工作簿中添加工作表。
  • 使用 PdfTable.GetText() 方法获取 PDF 表格单元格中的文本。
  • 利用 Worksheet.Range[].Value 属性将文本写入工作表的特定单元格。
  • 使用 Workbook.SaveToFile() 方法将结果工作簿保存为 CSV 文件。

注意事项:要将表格保存为 CSV 或 Excel 文件,需要用到 Spire.XLS。你可以通过:pip install spire.xls 将其安装到设备上。

快速提取 PDF 文档中的图片

在 PDF 文档中,除了文本和表格,图片也是常见的内容形式,尤其是在宣传材料、报告或扫描文档中更为常见。这些图片可能是位图,也可能是矢量图,提取方式各不相同。本节将带你了解如何使用 Spire.PDF 快速识别并提取页面中的嵌入图片,并将其保存为常用格式(如 PNG、JPEG),方便后续的归档、分析或内容重用。

完整代码示例 - 提取 PDF 文档中的所有图片:

from spire.pdf.common import *
from spire.pdf import *

# 创建 PdfDocument 对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("/AI绘画的利与弊.pdf")

# 创建 PdfImageHelper 对象
image_helper = PdfImageHelper()

image_count = 1
# 遍历文档中的页面
for i in range(doc.Pages.Count):
    # 获取当前页面中的图片信息
    images_info = image_helper.GetImagesInfo(doc.Pages[i])

    # 获取图片并将其保存为图片文件
    for j in range(len(images_info)):
        image_info = images_info[j]
        output_file = f"/New folder/image{image_count}.png"
        image_info.Image.Save(output_file)
        image_count += 1

doc.Close()

效果预览:

Python实现精准提取 PDF中的文本,表格与图片

(Python 提取 PDF 中的所有图片)

主要步骤解析:

  • 创建 PdfDocument 实例并加载一个 PDF 文档。
  • 创建 PdfImageHelper 对象。
  • 遍历所有页面。
  • 通过 PdfImageHelper.GetImagesInfo(page: PdfPageBase) 方法获取页面中的图片信息。
  • 遍历获取结果,使用 PdfImageInfo.Image.Save() 方法将每张图片保存为图片文件。

总结

今天的文章中,我们展示了如何在 Python 中精准提取 PDF 文档中的文本、表格和图片。无论是批量处理合同、公文,还是提取数据用于系统集成,Spire 控件都能为开发者提供稳定、高效的支持。随着文档数字化和自动化处理需求不断增长,掌握这类工具的使用将为日常开发工作带来显著效率提升。

到此这篇关于Python实现精准提取 PDF中的文本,表格与图片的文章就介绍到这了,更多相关Python提取 PDF内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于Python实现精准提取 PDF中的文本,表格与图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155048

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根