当前位置: 首页 > news >正文

Python 查找PDF中的指定文本并高亮显示

在处理大量PDF文档时,有时我们需要快速找到特定的文本信息。本文将提供以下三个Python示例来帮助你在PDF文件中快速查找并高亮指定的文本。

  • 查找并高亮PDF中所有的指定文本
  • 查找并高亮PDF某个区域内的指定文本
  • 使用正则表达式搜索指定文本并高亮

本文将用到国产第三方库 - Spire.PDF for Python,该库提供 PdfPageBase.FindText() 方法可用于查找PDF中的特定文本,然后再使用 PdfTextFind.ApplyHighLight() 方法为匹配到的文本设置指定的高亮颜以突出显示。

在运行接下来提供的示例代码之前,先通过pip安装Spire.PDF for Python库:

pip install Spire.PDF

Python 查找并高亮PDF中所有的指定文本

步骤:

  1. 加载PDF文档
  2. 遍历其中的页面
  3. 查找所有指定的文本
  4. 遍历所有查找到的文本并设置高亮颜色
  5. 保存文档并关闭

代码:

from spire.pdf import *
from spire.pdf.common import*# 加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("南极洲.pdf")# 遍历PDF中所有页面
for i in range(pdf.Pages.Count):page = pdf.Pages.get_Item(i)# 查找所有指定文本result = page.FindText("南极", TextFindParameter.IgnoreCase)# 高亮匹配的文本for text in result.Finds:text.ApplyHighLight(Color.get_Lime())# 保存结果文件
pdf.SaveToFile("查找高亮PDF文本.pdf")
pdf.Close()

输出:

Python 查找并高亮PDF某个区域内的指定文本

步骤:

  1. 加载PDF文档
  2. 获取指定的PDF页面
  3. 指定一个矩形区域
  4. 查找矩形区域内的指定文本
  5. 遍历查找到的文本并设置高亮颜色
  6. 保存文档并关闭

代码:

from spire.pdf import *
from spire.pdf.common import*# 加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("南极洲.pdf")# 获取第一页
pdfPageBase = pdf.Pages.get_Item(0)# 自定义一个矩形区域
rctg = RectangleF(0.0, 0.0, pdfPageBase.ActualSize.Width, 100.0)# 查找指定区域内所有的指定文本
findCollection = pdfPageBase.FindText(rctg,"南极",TextFindParameter.IgnoreCase)# 高亮匹配的文本
for find in findCollection.Finds:find.ApplyHighLight(Color.get_Magenta())# 保存结果文件
pdf.SaveToFile("查找高亮指定区域中的文本.pdf")
pdf.Close()

输出:

通过正则表达式查找文本并高亮:

步骤:

  1. 加载PDF文档
  2. 获取指定的PDF页面
  3. 指定一个正则表达式 (以下示例为匹配整数或小数)
  4. 使用正则表达式查找匹配的文本
  5. 遍历查找到的文本并设置高亮颜色
  6. 保存文档并关闭

代码:

from spire.pdf import *
from spire.pdf.common import*# 加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("南极洲.pdf")# 指定匹配整数或者小数的正则表达式
regex = r'[0-9]+.{0,1}[0-9]{0,2}'# 获取第一页
page = pdf.Pages.get_Item(0)# 使用正则表达式查找匹配的文本
result = page.FindText(regex, TextFindParameter.Regex)# 高亮匹配的文本
for text in result.Finds:text.ApplyHighLight(Color.get_Cyan())# 保存结果文件
pdf.SaveToFile("正则匹配.pdf")

输出:

以上为三种使用Python在PDF文档中搜索指定内容并设置文本高亮的方法。使用时可根据实际的需求或个人偏好选择最适合的解决方案。Spire.PDF for Python库还提供了其他的操作、处理PDF文档的接口,教程可从此处获取。

相关文章:

Python 查找PDF中的指定文本并高亮显示

在处理大量PDF文档时,有时我们需要快速找到特定的文本信息。本文将提供以下三个Python示例来帮助你在PDF文件中快速查找并高亮指定的文本。 查找并高亮PDF中所有的指定文本查找并高亮PDF某个区域内的指定文本使用正则表达式搜索指定文本并高亮 本文将用到国产第三方…...

岩土工程渗流问题之有限单元法:理论、模块化编程实现、开源程序应用

有限单元法在岩土工程问题中应用非常广泛,很多商业软件如Plaxis/Abaqus/Comsol等都采用有限单元解法。尽管各类商业软件使用方便,但其使用对用户来说往往是一个“黑箱子”。相比而言,开源的有限元程序计算方法透明、计算过程可控,…...

解决 :nvrtc: error: invalid value for --gpu-architecture (-arch)

核心:在显卡安装的cuda版本适配的pytorch中,更换pytorch的版本 刚遇到这个错误时,在网上搜索了一下,感谢博主1和博主2的解决方法带给我的启发。 标题服务器cuda是11.3版本,配置其他环境“御用”的pytorch安装语句 co…...

Rust教程:How to Rust-从开始之前到Hello World

本文为第0篇 专栏简介 本专栏是优质Rust技术专栏,推荐精通一门技术栈的蟹友,不建议基础的同学(无基础学Rust也是牛人[手动捂脸]) 感谢Rust圣经开源社区的同学,为后来者提供了非常优秀的Rust学习资源 本文使用&…...

浅谈人工智能

☕️各位观众老爷好,路过点个免费的赞再走呗!❤️❤️(*•̀ᴗ•́*)و 前言 随着2024年的到来,人工智能领域正迎来前所未有的变革和发展。随着计算能力的增强、大数据的积累以及机器学习算法的进步, AI的定义和本质 人工智能…...

OpenFeign服务接口调用

OpenFeign服务接口调用 1、OpenFeign简介 ​ Feign是一个声明性web服务客户端。它使编写web服务客户端变得更容易。使用Feign创建一个接口并对其进行注释。它具有可插入的注释支持,包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud添加…...

SQLiteC/C++接口详细介绍之sqlite3类(五)

快速跳转文章列表:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(四) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(六)(未发表) 14.sqlite3_busy_handle…...

Linux 之二:CentOS7 的 IP 常用命令和配置及 xshell 基本使用方法

1. 进入虚拟机 点击右键---进入终端--输入 ip adrr 或 ifconfig 查看ip地址 下面输入命令 ifconfig(注意:不是 ipconfig ) 或 ip addr 来查看当前系统 IP 查看到IP 后,比如:上面是 192.168.184.137 1.1 IP 常用命令…...

24-Java策略模式 ( Strategy Pattern )

Java策略模式 摘要实现范例 策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更加灵活,具有更好的维护性和扩展性。 策略模式属于行为型模式 摘要 1. 意图 针对一组算法,将每一个算法封装到具有共…...

突破编程_C++_C++11新特性(模板的改进与细节)

1 模板右尖括号的改进 在 C11 之前,模板的解析和实例化过程中,右尖括号 > 的处理有时会导致一些意外的结果,特别是在嵌套模板或模板模板参数中。这是因为 C 编译器通常会试图“查看前方”来确定何时结束模板参数的列表,这有时…...

云原生消息流系统 Apache RocketMQ 在腾讯云的大规模生产实践

导语 随着云计算技术的日益成熟,云原生应用已逐渐成为企业数字化转型的核心驱动力。在这一大背景下,高效、稳定、可扩展的消息流系统显得尤为重要。腾讯云高级开发工程师李伟先生,凭借其深厚的技术功底和丰富的实战经验,为我们带…...

Node.js的事件驱动模型(非阻塞I/O)

Node.js的事件驱动模型是它能高效处理并发的关键。这个模型允许Node.js在单个线程上运行,同时通过非阻塞I/O操作来处理成千上万的并发连接。下面是对Node.js事件驱动模型的详细解释: 事件循环(Event Loop) 事件循环是Node.js事件…...

java过滤器Filter相关知识点汇总

1.Filter概述 Servlet Filter又称Servlet过滤器,它是在Servlet2.3规范中定义的,能够对Servlet容器传给Web资源的request对象和response对象执行检查和修改。 Filter不是Servlet,不能直接访问,其本身也不能生成request对象和resp…...

旅游景区公共广播 园区广播 公路服务区广播

旅游景区公共广播 园区广播 公路服务区广播 旅游景区公共广播 旅游景区公共广播(又称背景音乐)简称BGM,它的主要作用是掩盖噪声并创造一种轻松和谐的气氛,是一种创造轻松愉快环境气氛的音乐。掩盖环境噪声,创造与旅游景区相适应的气氛&#…...

Elastic Stack--09--ElasticsearchRestTemplate

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 spring-data-elasticsearch提供的APIQueryBuildersElasticsearchRestTemplate 方法ElasticsearchRestTemplate ---操作索引 ElasticsearchRestTemplate ---文档操作…...

论坛管理系统|基于Spring Boot+ Mysql+Java+B/S架构的论坛管理系统设计与实现(可运行源码+数据库+设计文档+部署说明+视频演示)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 目录 前台功能效果图 管理员功能登录前台功能效果图 用户功能模块 系统功能设计 数据库E-R图设计 l…...

2022 Task 2 Max Sum of 2 integers sharing first and last digits

Task 2 There is an array A consisting of N integers. What’s the maximum sum of two integers from A that share their first and last digits? For example, 1007 and 167 share their first(1) and last(7) digits, whereas 2002 and 55 do not. Write a function: …...

【分布式websocket】聊天系统消息加密如何做

前言 先介绍一下对称加密算法,在介绍一下加密流程,然后是介绍一下查询加密消息的策略。然后结合现有技术架构然后去选型。 决定采用客户端解密。简而言之就是采用对称服务端加密。然后将加密内容存储到消息表的content字段。然后客户拉取content字段 然…...

网络建设与运维培训介绍和能力介绍

1.开过的发票 3.培训获奖的证书 4合同签署 5.实训设备...

3 种方法限制 K8s Pod 磁盘容量使用

容器在运行期间会产生临时文件、日志。如果没有任何配额机制,则某些容器可能很快将磁盘写满,影响宿主机内核和所有应用。 容器的临时存储,例如 emptyDir,位于目录/var/lib/kubelet/pods 下: /var/lib/kubelet/pods/ …...

Excel处理控件Aspose.Cells教程:使用 C# 从 Excel 进行邮件合并

邮件合并功能让您能够轻松批量创建个性化文档,例如信函、电子邮件、发票或证书。您可以从模板入手,并使用电子表格中的数据进行填充。Excel 文件中的每一行都会生成一个新文档,并在正确的位置包含正确的详细信息。这是一种自动化重复性任务&a…...

代码训练LeetCode(23)随机访问元素

代码训练(23)LeetCode之随机访问元素 Author: Once Day Date: 2025年6月5日 漫漫长路,才刚刚开始… 全系列文章可参考专栏: 十年代码训练_Once-Day的博客-CSDN博客 参考文章: 380. O(1) 时间插入、删除和获取随机元素 - 力扣(LeetCode)力…...

在 Linux 中查看文件并过滤空行

在 Linux 中查看文件并过滤空行 在 Linux 中查看文件内容时过滤掉空行有多种方法,以下是几种常用的方法: 方法 1:使用 grep grep -v ^$ filename-v:反转匹配,只显示不匹配的行^$:表示空行的正则表达式&a…...

游戏设计模式 - 子类沙箱

核心思想 子类沙箱模式(Subclass Sandbox)通过将核心逻辑封装在基类中,为子类提供安全的"沙箱"环境。子类通过组合或重写基类提供的预定义操作来实现行为,而非直接操作底层系统。 这种模式在游戏开发中常用于实现角色…...

OpenCV——Mac系统搭建OpenCV的Java环境

这里写目录标题 一、源码编译安装1.1、下载源码包1.2、cmake安装1.3、java配置1.4、测试 二、Maven引入2.1、添加Maven依赖2.2、加载本地库 一、源码编译安装 1.1、下载源码包 官网下载opencv包:https://opencv.org/releases/ 以4.6.0为例,下载解压后&…...

C#、VB.net——如何设置窗体应用程序的外边框不可拉伸

以Visual studio 2015为例,具体操作如下: 1、将窗体的“FormBorderStyle”属性值修改为“FixedSingle”: 2、点击“格式”——“锁定控件”: 这样生成的程序边框即可固定住,无法拉伸。...

【Redis实战:缓存与消息队列的应用】

在现代互联网开发中,Redis 作为一款高性能的内存数据库,广泛应用于缓存和消息队列等场景。本文将深入探讨 Redis 在这两个领域的应用,并通过代码示例比较两个流行的框架(Redis 和 RabbitMQ)的特点与适用场景&#xff0…...

八、Python模块、包

目录 1. 模块 1.1 什么是模块? 1.2 创建模块 1.3 导入模块 1.4 模块的命名空间 1.5 模块的搜索路径 1.6 模块的重新加载 2. 包 2.1 什么是包? 2.2 创建包 2.3 导入包中的模块 2.4 包的层次结构 3. 模块和包的管理 3.1 安装模块 3.2 卸载模…...

vue+element-ui一个页面有多个子组件组成。子组件里面有各种表单,实现点击enter实现跳转到下一个表单元素的功能。

一个父组件里面是有各个子组件的form表单组成的。 我想实现点击enter。焦点直接跳转到下一个表单元素。 父组件就是由各个子组件构成 子组件就像下图一样的都有个el-form的表单。 enterToTab.js let enterToTab {}; (function() {// 返回随机数enterToTab.addEnterListener …...

POP3、IMAP、SMTP:三大邮件协议核心差异与应用场景解析

## 一、协议概述与核心功能 电子邮件系统的运行依赖三大核心协议:**POP3**(Post Office Protocol 3)、**IMAP**(Internet Message Access Protocol)和**SMTP**(Simple Mail Transfer Protocol)…...