Python PDF文本处理技巧 - 查找和高亮文字

目录

使用工具

Python在PDF中查找和高亮文字并统计出现次数和页码

Python在PDF的特定页面区域中查找和高亮文字

Python使用正则表达式在PDF中查找和高亮文字

Python在PDF中查找文字并获取它的坐标位置

其他查找条件设置


在日常工作和学习中,我们常常需要处理各种PDF文件。其中对文字内容进行查找和高亮是非常常见的需求。以工作场景为例,我们可能需要快速检索一份长篇报告中的关键信息。利用PDF的查找功能,我们能够迅速定位到相关内容,大幅提高工作效率。同时,通过高亮标注重要信息,我们能够方便地进行日后复习和回顾。这篇博客将探讨如何使用Python实现在PDF中查找和高亮文字,主要涵盖以下内容:

  • Python在PDF中查找和高亮文字并统计出现次数和页码
  • Python在PDF的特定页面区域中查找和高亮文字
  • Python使用正则表达式在PDF中查找和高亮文字
  • Python在PDF中查找文字并获取它的坐标位置
  • 其他查找条件设置

使用工具

要在Python应用程序中查找和高亮PDF中的文字,可以使用Spire.PDF for Python库。它支持在Python应用程序中创建、读取、操作和转换PDF文档。

你可以通过在终端运行以下命令来从PyPI安装Spire.PDF for Python:

pip install Spire.PDF

Python在PDF中查找和高亮文字并统计出现次数和页码

Spire.PDF for Python提供了PdfTextFinder类,用于查找PDF页面上的文字。使用该类的Find() 方法,你可以搜索特定的文字或句子。找到后,你可以为其设置高亮颜色,同时还能获取该文字在PDF文档中出现的次数以及所在的页码信息。

下面是在PDF中查找和高亮文字的具体步骤:

  • 创建PdfDocument类的实例并使用PdfDocument.LoadFromFile()加载PDF文档。
  • 初始化一个计数器来跟踪文本出现的次数以及一个列表来存储文本出现的页码。
  • 遍历PDF中的页面。
  • 为每个页面创建一个PdfTextFinder实例并将当前页面对象作为参数传入该类的构造函数。
  • 使用PdfTextFinder.Find()方法查找特定文本。该方法将返回一个PdfTextFragment对象列表,其中每个对象代表该文本在文档中的一个实例。
  • 遍历列表中的PdfTextFragment对象,使用PdfTextFragment.Highlight()方法高亮每个实例,同时递增文本出现的次数并将当前页码添加到列表。
  • 使用PdfDocument.SaveToFile()方法保存结果文档。
  • 打印文本在PDF中出现的次数和页码。

下面是在PDF中查找和高亮文字的Python代码:

from spire.pdf.common import *
from spire.pdf import *# 创建 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文件
doc.LoadFromFile("什么是python.pdf")# 初始化一个计数器来跟踪文本出现的次数
occurrence_count = 0
# 初始化一个列表来存储页码
page_numbers = []# 遍历文档中的页面
for i in range(doc.Pages.Count):page = doc.Pages[i]# 创建 PdfTextFinder 实例finder = PdfTextFinder(page)# 查找特定文本results = finder.Find("Python")# 遍历找到的所有实例for text in results:# 设置高亮颜色text.HighLight(Color.get_Yellow())# 递增文本出现次数occurrence_count += 1# 将页码添加到列表中page_numbers.append(i+1)# 保存结果文档
doc.SaveToFile("查找和高亮文本.pdf")
doc.Close()# 打印出现次数和页码
print(f"文本 'Python' 在 PDF 中出现了 {occurrence_count} 次。")
print(f"该文本出现在以下页码: {', '.join(map(str, page_numbers))}")

Python在PDF中查找和高亮文本并统计出现次数和页码

Python在PDF的特定页面区域中查找和高亮文字

除了在PDF文档的所有页面或特定页面中查找和高亮文字(见以上例子)以外,你还可以在特定的页面区域中查找和高亮文字。使用PdfTextFinder.Options.Area属性,你可以指定查找的页面区域。

下面是在PDF的特定页面区域中查找和高亮文字的具体步骤:

  • 创建PdfDocument类的实例并使用PdfDocument.LoadFromFile()加载PDF文档。
  • 遍历PDF中的页面。
  • 为每个页面创建一个PdfTextFinder实例并将当前页面对象作为参数传入该类的构造函数。
  • 通过PdfTextFinder.Options.Area属性指定查找的页面区域。
  • 使用PdfTextFinder.Find()方法查找特定文本。
  • 使用PdfTextFragment.Highlight()方法高亮每个找到的实例。
  • 使用PdfDocument.SaveToFile()方法保存结果文档。

下面是在PDF的特定页面区域中查找和高亮文字的Python代码:

from spire.pdf.common import *
from spire.pdf import *# 创建 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文件
doc.LoadFromFile("什么是python.pdf")# 遍历文档中的页面
for i in range(doc.Pages.Count):page = doc.Pages[i]# 创建 PdfTextFinder 实例finder = PdfTextFinder(page)# 指定查找的页面区域finder.Options.Area = RectangleF(0.0, 0.0, 300.0, 300.0)# 查找特定文本results = finder.Find("Python")# 遍历找到的所有实例for text in results:# 设置高亮颜色text.HighLight(Color.get_Yellow())# 保存结果文档
doc.SaveToFile("在页面区域中查找和高亮文本.pdf")
doc.Close()

Python使用正则表达式在PDF中查找和高亮文字

要在PDF中使用正则表达式查找和高亮文字,你首先需要将PdfTextFinder.Options.Parameter属性设置为TextFindParameter.Regex,以启用正则表达式查找。然后,你需要将正则表达式作为参数传递给Find()方法来实现基于正则表达式查找文字。

下面是使用正则表达式在PDF中查找和高亮文字的具体步骤:

  • 创建PdfDocument类的实例并使用PdfDocument.LoadFromFile()加载PDF文档。
  • 遍历PDF中的页面。
  • 为每个页面创建一个PdfTextFinder实例并将当前页面对象作为参数传入该类的构造函数。
  • PdfTextFinder.Options.Parameter属性设置为TextFindParameter.Regex以启用正则表达式文本查找模式。
  • 将正则表达式传递给PdfTextFinder.Find()方法来实现基于正则表达式查找特定文本。
  • 使用PdfTextFragment.Highlight()方法高亮每个匹配到的实例。
  • 使用PdfDocument.SaveToFile()方法保存结果文档。

下面是使用正则表达式在PDF中查找和高亮文字的Python代码:

from spire.pdf.common import *
from spire.pdf import *# 创建 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文件
doc.LoadFromFile("示例.pdf")# 遍历文档中的页面
for i in range(doc.Pages.Count):page = doc.Pages[i]# 创建 PdfTextFinder 实例finder = PdfTextFinder(page)# 设置文本查找条件为使用正则表达式查找finder.Options.Parameter = TextFindParameter.Regex# 查找以符号 “#” 开头的文本results = finder.Find("""\\#\\w+\\b""")# 遍历找到的所有实例for text in results:# 设置高亮颜色text.HighLight(Color.get_Yellow())# 保存结果文档
doc.SaveToFile("使用正则表达式查找和高亮文本.pdf")
doc.Close()

Python在PDF中使用正则表达式查找和高亮文本

Python在PDF中查找文字并获取它的坐标位置

在找到特定的文字后,你还可以获取它的相关信息,例如它的坐标位置。下面是在PDF中查找文字并获取它的坐标信息的具体步骤:

  • 创建PdfDocument类的实例并使用PdfDocument.LoadFromFile()加载PDF文档。
  • 遍历PDF中的页面。
  • 为每个页面创建一个PdfTextFinder实例并将当前页面对象作为参数传入该类的构造函数。
  • 使用PdfTextFinder.Find()方法查找特定文本。
  • 使用PdfTextFragment.Positions[0].XPdfTextFragment.Positions[0].Y属性获取每个找到的实例的X和Y坐标

下面是在PDF中查找文字并获取它的坐标位置的Python代码:

from spire.pdf.common import *
from spire.pdf import *# 创建 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文件
doc.LoadFromFile("什么是python.pdf")# 遍历文档中的页面
for i in range(doc.Pages.Count):page = doc.Pages[i]# 创建 PdfTextFinder 实例finder = PdfTextFinder(page)# 查找特定文本results = finder.Find("Python")# 遍历找到的所有实例for text in results:# 打印当前实例的坐标信息print(f"文本坐标: ({text.Positions[0].X}, {text.Positions[0].Y})")        doc.Close()

Python获取PDF中文字的坐标位置

其他查找条件设置

Spire.PDF for Python还支持设置其他查找条件,如不区分大小写全词匹配。具体代码如下:

from spire.pdf.common import *
from spire.pdf import *# 创建 PdfDocument 类的对象
doc = PdfDocument()
# 加载 PDF 文件
doc.LoadFromFile("什么是python.pdf")# 遍历文档中的页面
for i in range(doc.Pages.Count):page = doc.Pages[i]# 创建 PdfTextFinder 实例finder = PdfTextFinder(page)# 设置文本查找条件为不区分大小写和全词匹配finder.Options.Parameter = TextFindParameter.IgnoreCasefinder.Options.Parameter = TextFindParameter.WholeWord# 查找特定文本results = finder.Find("Python")# 遍历找到的所有实例for text in results:# 设置高亮颜色text.HighLight(Color.get_Yellow())# 保存结果文档
doc.SaveToFile("其他查找条件.pdf")
doc.Close()

这篇文章介绍了使用Python在PDF中查找和高亮文字的多种不同的场景,你需要根据自己的实际情况对代码中的文档路径、待查找的文字、页面区域、或正则表达式等内容进行相应的修改。

本文完结。

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

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

相关文章

SAP MM学习笔记 - 豆知识05 - Customer Exit 实例,MM01上定义Customer Exit 来Check评估Class

上一章讲了一些MM模块的豆知识。 - MM01中设定的安全在库和最小安全在库 - MM01/MMSC/Customize自动 扩张物料的保管场所 - MM01中定义生产订单的默认入库保管场所 - VA01受注票中设定禁止贩卖某个物料 SAP MM学习笔记 - 豆知识03 - 安全在库和最小安全在库,扩…

linux文件——深度学习文件fd、文件系统调用

前言:从本片开始正式进入linux文件的学习,本片内容主要是文件的fd。 本篇内容博主将要先带友友回忆C语言中的文件操作接口,然后再过渡到操作系统中的系统调用的学习,最后理解操作系统中的文件操作。 ps:本节内容设计一…

AI 深度学习让金融 β 系数估算更精确

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话: 传统的金融贝塔系数估计方法往往依赖于严格的假设,难以准确捕捉 Beta 的动态变化,这限制了它们在实际应用中的有效性。为了解决这些问题,本文开发了一种新方法:NeuralBeta,利用神经网络进行Bet…

Centos7安装高版本内核

背景 买到的设备安装Centos7系统,但是新的处理器已经不支持低版本的Linux内核了。而且在 CentOS 使用过程中,高版本的应用环境可能需要更高版本的内核才能支持,所以难免需要升级内核。 内核种类 关于内核种类: kernel-ml:kerne…

趋动科技陈飞:从小模型到大模型,AI时代下的数据中心建设

自AI大模型横空出世,不断推动着AI从学术界到产业界向大众破圈,新的时代正在来临。11月15-16日,由CDCC主办的“2023第11届数据中心标准大会”在北京国家会议中心盛大开幕。 本届大会的主题围绕“AI时代 重塑未来”,聚焦数据中心领…

Spring:springboot集成jetcache循环依赖问题

springboot版本:2.6.14 jetcache版本:2.6.2 启动项目报错如下: 解决方案: jetcache版本升级到2.6.4 https://github.com/alibaba/jetcache/issues/624

phpstudy搭建sqlilabs本地靶场

请先在网上解决好前置条件的下载和安装:phpstudy、vscode、navicat premium(非必要)、sqlilab的压缩包/文件夹 phpstudy--安装sqlilabs 1.打开phpstudy后,我们会用到MySQL5.7.26和Nginx1.15.11 #mysql5.7.26是因为sqlilabs靶场不支持高版本MySQL 2.在软…

Spring配置

1.Spring的两大核心思想IOC和AOP思想 1.1类注解 1.Controller, Service, Configuration, Component, Repository 1.2方法注解 bean(这个方法搭配上面的五大注解进行使用) 2.Bean的名称 2.1.类注解名称 (1)默认首字母小写驼…

【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)

文章目录 字符函数字符输入输出函数字符输入函数字符输出函数 字符分类函数字符转换函数 字符串函数字符串输入输出函数字符串输入函数字符串输出函数 strlen函数的使用和模拟实现strcpy函数的使用和模拟实现strcat函数的使用和模拟实现strcmp函数的使用和模拟实现strncpy函数的…

三十三、【人工智能】【机器学习】【监督学习】- LightGBM算法模型

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

【计算机操作系统】死锁的概念

文章目录 死锁的定义死锁、饥饿、死循环的区别死锁产生的必要条件死锁的处理策略小结(思维导图) 死锁的定义 死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推…

二维差分日常练习

前言&#xff1a;一开始写题的时候以为自己还记得&#xff0c;但是写的时候忘记了一个易错点 定义长度为 len , 那么 左上角的坐标为 &#xff08; i , j ) , 那么右下角的坐标为 为 ( i len -1 ,j len -1 ) #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> us…

【阿旭机器学习实战】【39】脑肿瘤数据分析与预测案例:数据分析、预处理、模型训练预测、评估

《------往期经典推荐------》 一、【100个深度学习实战项目】【链接】&#xff0c;持续更新~~ 二、机器学习实战专栏【链接】&#xff0c;已更新31期&#xff0c;欢迎关注&#xff0c;持续更新中~~ 三、深度学习【Pytorch】专栏【链接】 四、【Stable Diffusion绘画系列】专…

苹果电脑维护工具:CleanMyMac X让你的Mac焕发新生!

在我们的数字生活中&#xff0c;苹果电脑&#xff08;Mac&#xff09;已成为不可或缺的一部分&#xff0c;无论是为工作披星戴月&#xff0c;还是为娱乐畅游云端。但是&#xff0c;就像任何长时间运行的机器一样&#xff0c;Mac也可能会因为积累的文件和不必要的数据而开始变慢…

Linux云计算 |【第二阶段】NETWORK-DAY4

主要内容&#xff1a; NAT 原理与配置&#xff08;私有IP地址、静态NAT转换、Easy IP&#xff09;、VRRP解析&#xff08;主路由器、备份路由器、虚拟路由器、优先级&#xff09; 一、NAT概述 NAT 网络地址转换&#xff08;Network Address Translation&#xff09;是一种网络…

NLP从零开始------9文本进阶处理之文本相似度计算

1.文本相似度计算简介 在自然语言处理中&#xff0c;经常会涉及度量两个文本相似度的问题。在诸如对话系统和信息减速等中&#xff0c;度量句子或短语之间的相似度尤为重要。在新闻学传媒中应用文本相似度可以帮助读者快速检索到想要了解的报道。 文本相似度的定义式如下所示&a…

YOLO系列:从yolov1至yolov8的进阶之路 持续更新中

一、基本概念 1.YOLO简介 YOLO&#xff08;You Only Look Once&#xff09;&#xff1a;是一种基于深度神经网络的对象识别和定位算法&#xff0c;其最大的特点是运行速度很快&#xff0c;可以用于实时系统。 2.目标检测算法 RCNN&#xff1a;该系列算法实现主要为两个步骤&…

江科大/江协科技 STM32学习笔记P22

文章目录 AD单通道&AD多通道ADC基本结构和ADC有关的库函数AD单通道AD.cmain.c连续转换&#xff0c;非扫描模式的AD.c AD多通道AD.cmain.c AD单通道&AD多通道 ADC基本结构 第一步&#xff0c;开启RCC时钟&#xff0c;包括ADC和GPIO的时钟&#xff0c;ADCCLK的分频器也需…

华为hcip-big data 学习笔记《一》大数据应用开发总指导

一、大数据应用开发总指导 1. 前言 随着大数据技术的飞速发展和大数据应用的不断普及&#xff0c;大数据已经成为当今时代最热门的话题之一。不过对于大数据的了解&#xff0c;很多人还只是停留在表面&#xff0c;提到大数据&#xff0c;很多人只是直到它是最新的科技&#x…

集成新的 AI 服务时需要考虑的问题

让我们来谈论最近发生的几个恐怖故事。 去年年底&#xff0c;一家雪佛兰经销商在其主页上部署了一个由大型语言模型 (LLM) 驱动的聊天机器人。该 LLM 经过雪佛兰汽车详细规格的训练&#xff0c;旨在仅回答有关雪佛兰汽车的问题。 然而&#xff0c;用户很快就找到了绕过这些限…