当前位置: 首页 > 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/ …...

龙虎榜——20250610

上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

【位运算】消失的两个数字(hard)

消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...