通过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产品论坛获取技术支持。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二证券:A股市场放量反弹 跨年行情或启动

沪指日线等级放量反弹,周四收中阳线成功站上20日均线,底部结构或可树立。创业板指大涨近4%,日线MACD出现底违反,多方动能较强,中等级反弹行情或在酝酿。月线来看,12月创业板指探底上升出现较长下影&#xf…

畅捷通的 Serverless 探索实践之路

作者:计缘,阿里云云原生架构师 畅捷通介绍 畅捷通是中国领先的小微企业财税及业务云服务提供商,成立于 2010 年。畅捷通在 2021 年中国小微企业云财税市场份额排名第一,在产品前瞻性及行业全覆盖方面领跑市场,位居中…

小型洗衣机怎么用?高质量的小型洗衣机推荐

清洗内衣内裤这些贴身衣物确实是一件比较头疼的事,有的小伙子由于工作的劳累通常在洗完澡后并不喜欢直接清洗内衣内裤,会存上几天再扔到洗衣机里,这样做是很不可取的,因为穿过的内裤很久不洗就会滋生细菌,另外&#xf…

AGV|RGV小车RFID传感器CNS-RFID-01/1S的RS232通讯联机方法

CNS-RFID-01/1S广泛应用于AGV小车,搬运机器人,无人叉车等领域,用于定位,驻车等应用,可通过多种通讯方式进行读写操作,支持上位机控制,支持伺服电机,PLC等控制设备联机,本…

CUDA驱动深度学习发展 - 技术全解与实战

全面介绍CUDA与pytorch cuda实战 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士&…

盘点 2023 公开的攻击面发现平台

针对可以直接购买并且明码标价的攻击面发现平台进行了对比,结果如下 测试用例: 企业(某制造有限公司)、高校(某职业学院) 测试对象: 零零信安攻击面管理平台 长亭云图极速版攻击面管理平台 …

【AI大语言模型】ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

写在2023岁末:敏锐地审视量子计算的当下

本周,《IEEE Spectrum》刊登了一篇出色的文章,对量子计算(QC)的近期前景进行了深入探讨。 文章的目的并不是要给量子计算的前景泼冷水,而是要说明量子计算的前景还很遥远,并提醒读者量子计算的用例可能很窄…

Python经典游戏 唤醒你童年记忆

这些游戏你玩过几个&#xff1f; 1.贪吃蛇2.吃豆人3.加农炮4.四子棋5. Fly Bird<font color #f3704ab>6.记忆&#xff1a;数字对拼图游戏&#xff08;欢迎挑战&#xff01;用时&#xff1a;2min&#xff09;7.乒乓球8.上课划水必备-井字游戏&#xff08;我敢说100%的人都…

Spring6入门

1、入门 1.1、环境要求 JDK&#xff1a;Java17&#xff08;Spring6要求JDK最低版本是Java17&#xff09;Maven&#xff1a;3.6Spring&#xff1a;6.1.2 1.2、构建模块 &#xff08;1&#xff09;构建父模块spring6 在idea中&#xff0c;依次单击 File -> New -> Proj…

DotNet 命令行开发

DotNet 命令行开发 下载安装下载 SDK安装 SDK绿色版下载绿化脚本 常用命令创建项目 dotnet new发布应用 dotnet publish更多命令 配置排除依赖关系 参考资料 下载安装 下载 SDK 我们就下最新的好&#xff1a; .NET 8.0 SDK (v8.0.100) - Windows x64 Installer! 安装 SDK 直…

node 项目中 __dirname / __filename 是什么,为什么有时候不能用?

__dirname 是 Node.js 中的一个特殊变量&#xff0c;表示当前执行脚本所在的目录的绝对路径。 __filename 同理&#xff0c;是 Node.js 中的一个特殊变量&#xff0c;表示当前执行脚本的绝对路径&#xff0c;包括文件名。 在 Node.js 中&#xff0c;__dirname / __filename是…

条件覆盖和条件组合覆盖测试设计-实验八例题

目录 条件覆盖 判定-条件覆盖 条件组合覆盖 实验内容&#xff1a; 以银行内部转账为实例&#xff0c;针对内部转账业务逻辑代码进行分析&#xff0c;运用条件覆盖和条件组合覆盖进行测试用例设计。 实验过程&#xff1a; 条件覆盖 条件覆盖&#xff08;Condition Cover…

创建您的第一个记忆卡片游戏

大家好&#xff01;今天&#xff0c;我们将一起探索如何用HTML、CSS和JavaScript创建一个有趣的记忆卡片游戏。我们的游戏规则很简单&#xff1a;用户需要找到一对一样的卡片。如果你是编程新手&#xff0c;不用担心&#xff0c;我会逐步引导你完成这个项目。 正文&#xff1a…

lottie 动画在 vue 中的使用

前言 最近我所负责的项目中采用了动画效果&#xff0c;最早使用 gif 来实现。然而&#xff0c;在实践过程中&#xff0c;我发现 gif 格式的动画在 git 中出现了明显的锯齿感&#xff0c;这让我非常困扰。为了追求更完美的表现效果&#xff0c;我最终选择了 lottie 来实现我的动…

苹果手机微信内存不足怎么清理?分享简单的解决方法!

我们平时经常使用手机来进行各种各样的活动&#xff0c;尤其是微信&#xff0c;它已经成为了我们生活中不可或缺的一部分。然而&#xff0c;随着时间的推移&#xff0c;微信占用的手机内存会越来越大&#xff0c;从而导致手机出现卡顿、闪退等问题。 当出现微信存储空间不足的…

【python】Win11上安装spyder

一、安装miniconda 见Miniconda官网 推荐用安装包安装。 如果想用命令行安装到D盘&#xff0c;需要打开命令提示符终端&#xff0c;输入&#xff1a; curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe -o miniconda.exe start /wait "&…

Oracle 12c rac 搭建 dg

环境 rac 环境 &#xff08;主&#xff09;byoradbrac 系统版本&#xff1a;Red Hat Enterprise Linux Server release 6.5 软件版本&#xff1a;Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit byoradb1&#xff1a;172.17.38.44 byoradb2&#xff1a;…

mysql查询出json格式字段中的值

一、使用场景 由于一些特殊数据使用json格式保存到表数据种中了&#xff0c;在查询的时候需要查询出这条数据中json格式中的某个字段 比如&#xff1a;需要将下列字符串中的“nationality”字段单独查询出来 json格式是一个对象 结果&#xff1a; json格式是一个集合 查询结…

特征归一化及其原理--机器学习

归一化是数据预处理中的一种常见操作&#xff0c;其目的是将不同特征的数值范围统一或缩放到相似的尺度。这有助于提高模型的性能&#xff0c;加速模型的收敛&#xff0c;并使模型更加稳健。以下是进行归一化的一些原因和原理&#xff1a; 消除特征间的尺度差异&#xff1a; 不…