通过Python将PDF转为文本,快速提取PDF中的文字

快速高效地从PDF文档中提取信息对于专业人士来说非常重要。处理大量PDF文件时,将PDF转换为可编辑的文本格式可以节省时间和精力。而强大的Python语言正是在这些方面发挥其作用。利用Python中丰富的API,我们可以轻松在Python程序中将PDF转换为文本(txt文件),实现PDF文字的轻松提取。

本文将展示如何使用Python进行PDF到文本的转换,发挥Python在PDF文件处理中的作用。本文包括以下主题:

文章目录

    • 使用Python转换PDF为文本的步骤
    • Python将PDF转换为文本但不保留布局
    • Python将PDF转换为文本并保留布局
    • Python将指定的PDF页面区域转换为文本
      • 总结

本文所使用的转换方法需要用到Spire.Doc for Python,可从官网下载或通过PyPI安装:pip install Spire.Doc

使用Python转换PDF为文本的步骤

在我们开始使用Python将PDF转换为文本之前,让我们先了解一下转换可以为我们提供的主要优势:

  • 可编辑:将PDF转换为文本使文档操作者能够更轻松地编辑文档,文本文件可以在大多数设备上打开和编辑。
  • 可访问性:与PDF相比,文本文件通常更易于访问。无论是电脑还是移动设备,都可以轻松地查看文本文件。
  • 与其他应用程序的集成及数据共享:文本文件可以无缝地集成到各种应用程序和工作流程中,实现数据在程序之间的共享。

使用Python将PDF文档转换为文本文件的步骤:

  1. 导入模块。
  2. 创建PdfDocument类的对象,并使用 LoadFromFile() 方法加载PDF文件。
  3. 创建PdfTextExtractOptions类的对象,并设置文本提取选项,包括提取所有文本、显示隐藏文本、仅提取指定区域的文本以及简单提取。
  4. 使用 PdfDocument.Pages.get_Item() 方法获取文档中的页面,并基于每个页面创建 PdfTextExtractor 对象,使用 Extract() 方法提取页面上的文本,并指定选项。
  5. 将提取的文本保存为文本文件,并关闭 PdfDocument 对象。

Python将PDF转换为文本但不保留布局

当使用简单提取方法从PDF中提取文本时,程序将不保留空白区域,并跟踪每个字符串的当前Y位置,如果Y位置发生变化,就在输出结果中插入换行符。

from spire.pdf import PdfDocument
from spire.pdf import PdfTextExtractOptions
from spire.pdf import PdfTextExtractor

# 创建PdfDocument类的对象并加载PDF文件
pdf = PdfDocument()
pdf.LoadFromFile("示例.pdf")

# 创建一个字符串对象来存储文本
extracted_text = ""

# 创建PdfExtractor对象
extract_options = PdfTextExtractOptions()
# 设置使用简单提取方法
extract_options.IsSimpleExtraction = True

# 循环遍历文档中的页面
for i in range(pdf.Pages.Count):
    # 获取页面
    page = pdf.Pages.get_Item(i)
    # 创建PdfTextExtractor对象,并将页面作为参数传递
    text_extractor = PdfTextExtractor(page)
    # 从页面中提取文本
    text = text_extractor.ExtractText(extract_options)
    # 将提取的文本添加到字符串对象中
    extracted_text += text

# 将提取的文本写入文本文件
with open("output/PDF转文本.txt", "w") as file:
    file.write(extracted_text)
pdf.Close()

原文档
PDF转文本

输出的文本文件*
PDF转TXT

Python将PDF转换为文本并保留布局

当使用默认提取方法从PDF中提取文本时,程序将逐行提取文本,包括空白。

from spire.pdf import PdfDocument
from spire.pdf import PdfTextExtractOptions
from spire.pdf import PdfTextExtractor

# 创建PdfDocument类的对象并加载PDF文件
pdf = PdfDocument()
pdf.LoadFromFile("示例.pdf")

# 创建一个字符串对象来存储文本
extracted_text = ""

# 创建PdfExtractor对象
extract_options = PdfTextExtractOptions()

# 循环遍历文档中的页面
for i in range(pdf.Pages.Count):
    # 获取页面
    page = pdf.Pages.get_Item(i)
    # 创建PdfTextExtractor对象,并将页面作为参数传递
    text_extractor = PdfTextExtractor(page)
    # 从页面中提取文本
    text = text_extractor.ExtractText(extract_options)
    # 将提取的文本添加到字符串对象中
    extracted_text += text

# 将提取的文本写入文本文件
with open("output/提取的文本(保留排版).txt", "w") as file:
    file.write(extracted_text)
pdf.Close()

输出的文本文件
PDF转文本保留布局

Python将指定的PDF页面区域转换为文本

from spire.pdf import PdfDocument
from spire.pdf import PdfTextExtractOptions
from spire.pdf import PdfTextExtractor
from spire.pdf import RectangleF

# 创建PdfDocument类的对象并加载PDF文件
pdf = PdfDocument()
pdf.LoadFromFile("示例.pdf")

# 创建PdfExtractor对象
extract_options = PdfTextExtractOptions()

# 设置提取特定页面区域
extract_options.ExtractArea = RectangleF(50.0, 220.0, 700.0, 230.0)

# 获取页面
page = pdf.Pages.get_Item(0)

# 创建PdfTextExtractor对象,并将页面作为参数传递
text_extractor = PdfTextExtractor(page)

# 从页面中提取文本
extracted_text = text_extractor.ExtractText(extract_options)

# 将提取的文本写入文本文件
with open("output/PDF页面区域转文本.txt", "w") as file:
    file.write(extracted_text)
pdf.Close()

输出的文本文件
提取PDF页面区域文字

总结

在本文中,我们探讨了Python在PDF转文本中的应用。参照文中的操作步骤及代码示例,我们可以在Python程序中实现快速的PDF到文本的转换。如果在使用Spire.PDF for Python的过程中遇到任何问题,可以通过Spire产品论坛获取技术支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/276854.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

im6ull学习总结(三)文字显示

文字显示 字符编码方式 编码与字体 一个字符以不同编码形式会保存为不同的二进制数。 ASCII American Standard Code for Information Interchange”的缩写,美国信息交换标准代码。 一个字节的 7 位就可以表示 128 个数值,在 ASCII 码中最高位永远是…

天津医科大学临床医学院专升本药学专业有机化学考试大纲

天津医科大学临床医学院高职升本科专业课考试大纲药学专业《有机化学》科目考试大纲 一、考试基本要求 本考试大纲主要要求考生对《有机化学》基本概念有较深入的了解,能够系统地掌握各类化合物的命名、结构特点及立体异构、主要性质、反应、来源和合成制备方法等…

将正规文法转化为正规式

将正规文法转化为正规式有以下几个规则: 通过一道例题来讲解: ①A-->aC|bA ②C-->bD ③D-->aC|bD| (1)首先将②带入③(不能将自身带入自身例如D-->aC|bD|,文法中带D,不能带入D) DabD|bD|(…

用电脑将图片转为excel表格有几种方法?怎么操作?

将图片转为Excel表格,一般需要借助OCR(光学字符识别)技术。OCR技术可以将图片中的文字提取出来,并转换成Excel表格中的数据。以下是几种常用的方法: 一、.使用在线OCR工具 1、打开金鸣表格文字识别(简称金鸣识别)网站…

第十一章 Stream消息驱动

Stream消息驱动 gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信)、数据库集群、…

32阵元 MVDR和DREC DOA估计波束方向图对比

32阵元 MVDR和DREC DOA估计波束方向图对比 一、原理 MVDR原理:https://zhuanlan.zhihu.com/p/457528114 DREC原理(无失真响应特征干扰相消器):http://radarst.ijournal.cn/html/2019/3/201903018.html 主要参数: 阵…

Idea如何从磁盘中应用 下载好的插件流程,安装zip压缩包。

1、将下载的插件文件(通常是一个ZIP文件)复制到IntelliJ IDEA的“plugins”文件夹中。 IDEA版本 2、重启IntelliJ IDEA。 3、在设置窗口中,选择左侧的“Plugins”。 4、选择之前复制到“plugins”文件夹中的插件文件,点击“OK”按…

大数据与人工智能|万物皆算法(第三节)

要点一:数据与智能的关系 1. 一切的核心都是数据,数据和智能之间是密切相关的。 数据是对客观现实的描述,而信息是数据转化而来的。 例如,24是数据,但说“今天的气温是24摄氏度”是信息,而说“班可以分成24…

Unity Shader UVLightReveal (紫外线显示,验钞效果)

Unity Shader UVLightReveal (紫外线显示,验钞效果) UVLight Reveal 实现验钞机的效果实现方案操作实现1.Light2.将另一个图形加入3.加上图形效果4.加上灯光的颜色自定义判定 源码 UVLight Reveal 实现验钞机的效果 大家应该都有见过验钞机验…

电脑系统坏了用U盘重装系统教程

我们平时办公、学习都会用到电脑,如果电脑系统坏了,就会影响自己正常使用电脑,这时候就可以通过U盘来重装一个正常的操作系统。如果您不知道具体的重装操作步骤,那么可以参考下面小编分享的利用U盘快速完成操作系统重装的步骤介绍…

VSCODE : SSH远程配置+免密登录

SSH基础配置 填入地址,回车 ssh userhost-or-ip 然后选择默认的配置,回车,得到以下结果: 点击链接 选择远程的系统 输入密码 免密登录 生成SSH密钥: 首先,确保你已经在本地生成了SSH密钥。你可以使…

在电脑上免费分区的 5 个有效磁盘分区软件工具

磁盘分区可能是一个脆弱而复杂的过程,磁盘崩溃或用户设备受到病毒攻击的风险很高。因此,它们很难由用户单独或手动管理。本文详细介绍了可以帮助简化磁盘分区过程的不同软件工具、它们的功能和优点。那么让我们开始吧。 什么是磁盘分区工具? …

企业级依赖管理: 深入解读 Maven BOM

一、背景 当开发者在一个大型项目中使用 Maven 进行依赖管理时,项目往往会包含多个模块或子项目,并且这些模块会共享相同的依赖项。但是,不同模块可能会独立地指定各自的依赖版本,这可能导致以下问题: 依赖版本不一致…

116基于matlab的盲源信号分离

基于matlab的盲源信号分离。FASTICA方法,能够很好的将信号解混,可以替换数据进行分析。具有GUI界面,可以很好的进行操作。程序已调通,可直接运行。 116matlab盲源信号分离FASTICA (xiaohongshu.com)

java对象整理

1.对象的创建过程 首先class文件加载到内存中 这个过程如下 “加载”是“类加载”(Class Loading)过程的第一步。这个加载过程主要就是靠类加载器实现的, 包括用户自定义类加载器。 加载到内存后做的事情 申请对象内存 成员变量赋默认值 调用构造方法 成员变量顺序…

nginx报错upstream sent invalid header

nginx报错upstream sent invalid header 1.报错背景 最近由于nginx 1.20的某个漏洞需要升级到nginx1.25的版本。在测试环境升级完nginx后,发现应用直接报错502 bad gateway了。 然后查看nginx的errlog,发现: upstream sent invalid head…

【计算机视觉】角点检测(Harris、SIFT)

Harris 角点指的是窗口延任意方向移动,都有很大变化量的点。 用数学公式表示为: E(u,v)反映的移动后窗口的差异,w(x,y)为每个像素的点权值,I(xu,yv)是移动的像素值,I(x,y)是移动前的像素值。 将E(u,v)进行泰勒展开&am…

uni-appcss语法

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

二-从C到C++

本章会介绍一些C拓展的非面向对象的功能 引用 1 概念 引用从一定程度上讲是指针的平替,几乎被所有的面向对象语言所使用。引用相当于对某一目标变量起“别名”。 操作这个别名,与操作原变量一样。(操作同一块地址)不能有相同别名 …

ssrf之dict协议和file协议

1.dict协议 dict是什么协议呢? 定义:词典网络协议,在RFC 2009中进行描述。它的目标是超越Webster protocol,并允许客户端在使 用过程中访问更多字典。Dict服务器和客户机使用TCP端口2628。 官方介绍:http://dict.o…