用python实现给出关键字查找并标注pdf文件中关键字
要在Python中标注PDF文件中的关键字,可以使用Python的PDFMiner库和Python的matplotlib库。
首先,需要安装这两个库。可以使用pip命令进行安装:
shell
复制代码
pip install pdfminer.six matplotlib
接下来,可以使用以下代码实现关键字查找和标注功能:
python
复制代码
import pdfminer
from pdfminer.high_level import extract_text
from pdfminer.layout import LAParams
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
import io
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont
def search_and_highlight(pdf_path, keyword, output_path):
# 读取PDF文件
resource_manager = PDFResourceManager()
fake_file_handle = io.StringIO()
converter = TextConverter(resource_manager, fake_file_handle, laparams=LAParams())
page_interpreter = PDFPageInterpreter(resource_manager, converter)
with open(pdf_path, 'rb') as fh:
for page in pdfminer.pdfparser.PDFParser(fh).get_pages():
page_interpreter.process_page(page)
text = fake_file_handle.getvalue()
# 关闭打开的PDF文件和文本转换器
converter.close()
fake_file_handle.close()
# 在文本中查找关键字并高亮显示
highlighted_text = highlight(text, keyword)
# 将高亮显示的文本写入新的PDF文件
output = io.StringIO()
with open(output_path, 'w') as out:
out.write(highlighted_text)
# 显示带有高亮显示的文本的PDF文件
plt.imshow(Image.open(output), origin='lower')
plt.axis('off')
plt.show()
def highlight(text, keyword):
words = text.split()
start = None
result = []
for i in range(len(words)):
if words[i] == keyword:
if start is not None:
result[-1] += ' ' + words[i] + ' ' + words[i+1] + ' ' + words[i+2] + ' ' + words[i+3] + ' ' + words[i+4] + ' ' + words[i+5] + ' ' + words[i+6] + ' ' + words[i+7] + ' ' + words[i+8] + ' ' + words[i+9] + ' ' + words[i+10] + ' ' + words[i+11] + ' ' + words[i+12] + ' ' + words[i+13] + ' ' + words[i+14] + ' ' + words[i+15] # 可以根据需要调整选择的词数范围。例如,选择2个词或3个词。也可以使用其他逻辑来确定如何选择这些词。
start = None
else:
if start is None:
start = i
if start is not None:
result[-1] += ' '.join(words[start:]) # 如果最后一个匹配项后面还有文本,则将其添加到结果中。这可以防止在最后一个匹配项后面出现断句。
return result
相关文章:
用python实现给出关键字查找并标注pdf文件中关键字
要在Python中标注PDF文件中的关键字,可以使用Python的PDFMiner库和Python的matplotlib库。 首先,需要安装这两个库。可以使用pip命令进行安装: shell 复制代码 pip install pdfminer.six matplotlib 接下来,可以使用以下代码实现…...
postman自动化接口测试
背景描述 有一个项目要使用postman进行接口测试,接口所需参数有: appid: 应用标识;sign:请求签名,需要使用HMACSHA1加密算法计算,签名串是:{appid}${url}${stamp};stamp࿱…...
React入门 - 04(从编写一个简单的 TodoList 说起)
继上一节我们已经对 React组件和 ”JSX语法“有了大概的了解,这一节我们继续在 react-demo这个工程里编写代码。这一节我们来简单实现一个 TodoList来更加了解编写组件的一些细节。 1、在编辑器中打开 react-demo这个工程 2、打开 index.js文件,将组件 …...
EDM群发的优势
在当今这个数字化的时代,电子邮件营销(EDM)已经成为企业与客户沟通的重要手段。相较于传统的营销方式,EDM群发具有许多独特的优势,使其在商业竞争中占据了不可替代的地位。 首先,EDM群发具有精准的目标定位…...
AI对决:ChatGPT与文心一言的深度比较
. 个人主页:晓风飞 专栏:数据结构|Linux|C语言 路漫漫其修远兮,吾将上下而求索 文章目录 引言ChatGPT与文心一言的比较Chatgpt的看法文心一言的看法Copilot的观点chatgpt4.0的回答 模型的自我评价自我评价 ChatGPT的优势在这里插入图片描述 文…...
在国产操作系统下管理Oracle数据库
Oracle公司是全球最大的信息管理软件及服务供应商,其开发的数据库产品因性能卓越而闻名,占有最大的市场份额,被广泛用于各个市场领域。 然而在信创化的时代,国产操作系统已然是大势所趋,但是由于历史原因,…...
RTSP/Onvif安防视频监控平台EasyNVR漏洞扫描及解决方法
视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。安防视频监控平台可提供视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频…...
Ovtio不同版本下载
关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩! 主要专栏内容包括: †《LAMMPS小技巧》: ‾ \textbf…...
【MATLAB】Linux版本 高分辨率屏 调整显示缩放
0 引言 安装了linux版本的MATLAB R2023b之后,发现工具栏字体很小不方便使用,所以上网找到了MATLAB论坛上某位大佬的教程:参考链接,放在这里供各位参考 。 1 环境 这里注明我的matlab安装环境仅供参考,未在其他环境下…...
windows系统中,通过LOAD到入csv格式的文件到neo4j中,如何写文件路径
在Neo4j中,使用LOAD CSV语句导入CSV文件时,需要确保你的文件路径是正确的。如果你使用的是Neo4j Desktop或者Neo4j Server,通常需要将CSV文件放在特定的导入目录下。 例如,如果你使用的是Neo4j Desktop,通常会有一个默…...
斯坦福 Stats60:21 世纪的统计学:第十五章到第十八章
第十五章:比较均值 原文:statsthinking21.github.io/statsthinking21-core-site/comparing-means.html 译者:飞龙 协议:CC BY-NC-SA 4.0 我们已经遇到了许多情况,我们想要询问样本均值的问题。在本章中,我们…...
C# 关于当ObservableCollection增删查改元素时,触发事件用例
ObservableCollection 类提供了一种实时监测集合变化的机制,可以通过订阅 CollectionChanged 事件来响应集合的添加、移除和重置等变化。 using System; using System.Collections.ObjectModel; using System.Collections.Specialized;class Program {static void …...
阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接
阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接 第一步:安装 SQL Server 数据库 这是一个很详细的安装教程,可以参考一下 安装SQL Server详细教程 需要注意:安装实例时,建议在‘身份验证模式’直接选择“混合模式”…...
树形+表单的封装+查重数组
一.树形结构的处理 后端传过来的数据,可能是平铺的一个结构: 在财务部下面,有财务核算部,薪资管理部,我们需要将平铺的数据通过递归转化成: 转换成有children的形式,来渲染到页面上去,在这里用到了作用域插槽,具体怎么使用,可以通过查看文档…...
laravel 中间件记录日志
前提 我希望通过中间件记录用户的请求数据、我的返回数据,如果出现异常捕获异常。 代码 路由文件:追加中间件api-logging,用于记录日志 Route::prefix(api)->middleware([api, api-logging])->group(function () {...路由内容 });n…...
Pandas十大练习题,掌握常用方法
文章目录 Pandas分析练习题1. 获取并了解数据2. 数据过滤与排序3. 数据分组4. Apply函数5. 合并数据6. 数据统计7. 数据可视化8. 创建数据框9. 时间序列10. 删除数据 代码均在Jupter Notebook上完成 Pandas分析练习题 数据集可从此获取: 链接: https://pan.baidu.co…...
CMake TcpServer项目 链接静态库/动态库
一、链接静态库 查看项目结构 hehedalinux:~/Linux/LinuxServerCpp-Link$ tree . ├── CMakeLists.txt ├── include │ ├── common │ │ ├── Buffer.h │ │ ├── Channel.h │ │ └── Log.h │ ├── http │ │ ├── HttpRequest…...
uint32无符号字节转为Java中的int
文章目录 前言一、无符号字节转为int1.前置知识2.无符号转int代码3.Java中字节转为int 二、字节缓冲流1.基础知识2.String与ByteBuffer转换 总结 前言 Java 中基本类型都是有符号数值,如果接收到了 C/C 处理的无符号数值字节流,将出现转码错误。 提示&a…...
Python网络爬虫进阶:自动切换HTTP代理IP的应用
前言 当你决定做一个网络爬虫的时候,就意味着你要面对一个很大的挑战——IP池和中间件。这两个东西听起来很大上,但其实就是为了让你的爬虫不被封杀了。下面我就来给你讲讲如何搞定这些东西。 第一步:创建爬虫IP池的详细过程 首先…...
vivado 使用IP Integrator源
使用IP Integrator源 在Vivado Design Suite中,您可以在RTL中添加和管理IP子系统块设计(.bd)项目或设计。使用Vivado IP集成程序,您可以创建IP子系统块设计。IP集成程序使您能够通过实例化和将Vivado IP目录中的多个IP核互连。可…...
4.1第一次练习作业
1.在root用户的主目录下创建两个目录分别为haha和hehe,复制hehe目录到haha目录并重命名为apple。[rootlocalhost ~]# mkdir {haha,hehe} [rootlocalhost ~]# cp -r hehe haha [rootlocalhost ~]# cd haha [rootlocalhost haha]# mv hehe apple2.将hehe目录移动到app…...
音频驱动现代适配技术解密:老旧Mac设备的音质重生实战指南
音频驱动现代适配技术解密:老旧Mac设备的音质重生实战指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当你的2012年MacBook Pro升级到macOS S…...
如何用MCQTSS_QQMusic解决音乐资源获取难题?3大技术突破实现无损下载
如何用MCQTSS_QQMusic解决音乐资源获取难题?3大技术突破实现无损下载 【免费下载链接】MCQTSS_QQMusic QQ音乐解析 项目地址: https://gitcode.com/gh_mirrors/mc/MCQTSS_QQMusic 在数字音乐时代,QQ音乐作为国内领先的音乐平台,拥有海…...
解决PySide6中Qt Designer UI空白问题
在使用PySide6开发桌面应用程序时,经常会遇到将Qt Designer设计的UI文件集成到Python代码中的问题。本文将通过一个实际案例来探讨如何解决UI显示空白的问题。 问题背景 假设你已经用Qt Designer设计了一个复杂的用户界面,包含了多个标签页(QTabWidget),每个标签页内有可…...
基础语法篇总结——从入门到精通
基础语法篇总结——从入门到精通 系列专栏:Python 100天从新手到大师 当前进度:Day 01-30 / 100 阅读时长:8 分钟 难度等级:⭐⭐ 一、本篇回顾 基础语法篇共 30 篇文章,涵盖了 Python 编程的核心基础: 知识体系 基础语法篇 (30 篇) ├── 基础入门 (8 篇) │ ├──…...
G-Helper:重塑华硕硬件控制体验的轻量级开源解决方案
G-Helper:重塑华硕硬件控制体验的轻量级开源解决方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sca…...
PyCharm配置PySide6工具链避坑指南:解决虚拟环境路径、命令报错那些事儿
PyCharm配置PySide6工具链避坑指南:解决虚拟环境路径、命令报错那些事儿 刚接触PySide6开发的朋友,十有八九会在PyCharm配置Designer、UIC和RCC工具时踩坑。明明照着教程一步步操作,却总是遇到"程序不存在"、"命令执行错误&qu…...
测试缺陷类型词云图分析:聚焦“需求理解错误”
在软件质量保障的浩瀚星图中,缺陷是不可避免的阴影。通过对海量缺陷报告进行文本挖掘与可视化分析,一张揭示问题本质的“词云图”便清晰浮现。在这张图上,若“需求理解错误”一词以其巨大、醒目的字体高频占据中心,它便不再是一个…...
解锁Unity游戏插件开发:从概念到实战的MelonLoader全攻略
解锁Unity游戏插件开发:从概念到实战的MelonLoader全攻略 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 一、认知篇…...
高并发场景下的B2B对公支付方案:聚合支付、错付拦截与自动化对账
在B2B交易场景中,大额对公支付一直是一个绕不开的技术难题。与C端支付不同,B2B交易涉及百万级甚至千万级资金流转,传统的线下转账模式不仅流程繁琐,还带来了财务对账耗时、错付退款难、客户付款流失率高等一系列问题。本文将从技术…...
