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

news2024/11/19 1:50:18

在处理大量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文档的接口,教程可从此处获取。

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

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

相关文章

Java学习笔记(11)

面向对象进阶 Static 静态变量 所有对象一起共享,就用static修饰 不属于对象,属于类的 可以用 类名.静态变量 “”;赋值 但是 对象.静态变量也可以访问到内容 Static内存图 Student这个类的字节码文件加载到方法区,并在内…

企业计算机服务器中了eking勒索病毒怎么办?Eking勒索病毒解密工具流程

网络数据安全问题一直是众多企业关心的主要话题,网络在为企业提供便利的同时,也为企业数据安全带来未知的隐患。近日,云天数据恢复中心接到许多企业求助,企业的计算机服务器遭到了eking勒索病毒攻击导致企业计算机服务器系统瘫痪无…

操作系统——cpu、内存、缓存介绍

一、内存是什么 内存就是系统资源的代名词,它是其他硬件设备与 CPU 沟通的桥梁, 计算机中的所有程序都在内存中运行。其作用是暂时存放CPU的运算数据,以及与硬盘交换的数据。也是相当于CPU与硬盘沟通的桥梁。只要计算机在运行,CP…

YOLOv9实例分割教程|(一)训练教程

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、创建数据集及数据配置文件 创新一个文件夹存放分割数据集,包含一个images和labels文件夹。标签格式如下所示: 创新数据集…

Netty线程模型详解

文章目录 概述单Reactor单线程模型单Reactor多线程模型主从Reactor多线程模型 概述 Netty的线程模型采用了Reactor模式,即一个或多个EventLoop轮询各自的任务队列,当发现有任务时,就处理它们。Netty支持单线程模型、多线程模型和混合线程模型…

1、计划任务介绍

Windows计划任务介绍 1、含义: 简单点就是定时执行任务。 在许多场景下,我们定时执行一些任务。比如:定时拉取、备份文件,更新代码等等操作。 WinR打开运行框,输入:control schedtasks,就会…

SAR ADC系列4——比较器的Transient noise仿真--等效输入噪声

仿真出等效输入噪声 加一个快于实际工作的时钟频率;在输入端加一个DC的差(比如一端是0.5VDD,另外一端加0.5VDD0.2MV)计算仿真时间内的correct counting number,比如时钟频率是200MHz,仿真时间是5us,那么应…

IMX8MM -- Yocto构建遇见的错误及解决方法:

IMX8MM Yocto构建遇见的错误及解决方法: 1 bison-3.0.4 error2 Opencv BB_NO_NETWORK Error :3 Yocto构建时出现U-boot 问题4 Yocto构建时出现Linux kernel编译问题5 wayland-native6 cross-localedef-native7 wayland-protocols8 mesa 硬件:…

[论文精读]Dynamic Coarse-to-Fine Learning for Oriented Tiny Object Detection

论文网址:[2304.08876] 用于定向微小目标检测的动态粗到细学习 (arxiv.org) 论文代码:https://github.com/ChaselTsui/mmrotate-dcfl 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&…

android MMKV数据持久化缓存集合

前言 最近在使用mmkv缓存的时候 发现没有集合缓存 非常不方便 自己写一个方法 MMKV public class MmkvUtils {private MmkvUtils() {throw new UnsupportedOperationException("u cant instantiate me...");}public static void init() {MMKV.initialize(LeoUtils…

C语言从入门到熟悉------第三阶段

数组 什么是数组呢?顾名思义数组就是很多数的组合!那么这些数有没有什么要求呢?是不是不管什么数组合在一起都是数组呢?第一,这些数的类型必须相同!第二,这些数在内存中必须是连续存储的。也就…

力扣思路题:重复的子字符串

注意比较j与j-i是否相同 bool repeatedSubstringPattern(char* s) {int i;int nstrlen(s);bool flag;for(int i1;i<n/2;i){if(n%i0){flagtrue;}for(int ji;j<n;j){if(s[j]!s[j-i]){flagfalse;break;}}if(flagtrue){return true;}}return false; }

Python爬虫基础学习-互联网、HTTP与HTML

互联网或者叫国际网&#xff08;Internet&#xff09;&#xff0c;是指网络与网络之间所串连成的庞大网络&#xff0c;这些网络以一组标准的网络TCP/IP协议族相连&#xff0c;连接全世界几十亿个设备&#xff0c;形成逻辑上的单一巨大国际网络。它是由从地方到全球范围内几百万…

【算法】一类支持向量机OC-SVM(2)

【算法】一类支持向量机OC-SVM&#xff08;2&#xff09; 前言纠正内容数据集创建方式适应度函数 新增内容散点图示例模型散点图展示 前言 在上则博文【算法】一类支持向量机OC-SVM&#xff08;1&#xff09; 中&#xff0c;我们提及到了蜂群算法优化一类支持向量机超参数模型…

gpt-4-all模型中转实现

最近才完成这个功能&#xff0c;相信知道这个模型的人&#xff0c;应该已经熟悉了。这是我的中转&#xff1a;openai-api Chatbox配置如下&#xff1a; 模型测试&#xff1a; 1&#xff09;图片生成 2&#xff09;文件分析&#xff0c;链接读取&#xff1a;

WWW2024 | PromptMM:Prompt-Tuning增强的知识蒸馏助力多模态推荐系统

论文&#xff1a;https://arxiv.org/html/2402.17188v1 代码&#xff1a;https://github.com/HKUDS/PromptMM 研究动机 多模态推荐系统极大的便利了人们的生活,比如亚马逊和Netflix都是基于多模态内容进行推荐的。对于研究,人们也遵循工业界的趋势,进行modality-aware的用户…

初步了解序列化和反序列化

01什么是序列化和反序列化 序列化是将对象转化为字符串以便存储的一种方式。而反序列化恰好是序列化的逆过程&#xff0c;反序列化会将字符串转化为对象供程序使用。 常见的php系列化和反系列化方式主要有&#xff1a;serialize&#xff0c;unserialize&#xff1b;json_enco…

删除元素.

C 用迭代器迭代&#xff0c;当条件成立删除元素。 class Solution { public:int removeElement(vector<int>& nums, int val) {for(std::vector<int>::iterator itnums.begin();it!nums.end();){if(*itval){itnums.erase(it);//vector删除时迭代器会失效&…

jenkins 使用k8s插件连接k8s集群

jenkins 安装k8s 插件 配置k8s节点 填写k8s 配置信息 生成秘钥 在服务器上面 查看地址 Kubernetes 服务证书 key cat /root/..kube/config 查看秘钥 对秘钥进行base64 位 加密 echo "秘钥内容" | base64 -d -----BEGIN CERTIFICATE----- MIIDITCCAgmgAwIB…

第一位 AI 程序员诞生,队友还是对手?

前几天&#xff0c;百度创始人李彦宏在采访中声称&#xff1a;“以后不会存在“程序员”这种职业了&#xff0c;因为只要会说话&#xff0c;人人都会具备程序员的能力”。 看到这话我的第一反应是“不可能&#xff0c;绝对不可能&#xff0c;程序员的工作有很大一部分是创造性的…