用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核互连。可…...
ChatGPT记忆功能深度解析(2024官方API文档未公开的7个底层机制)
更多请点击: https://kaifayun.com 第一章:ChatGPT记忆功能怎么用 ChatGPT 的记忆功能(Memory)允许模型在对话中持续记住用户提供的关键信息,从而实现更连贯、个性化的交互体验。该功能并非默认开启,需用户…...
在Node.js后端服务中集成Taotoken调用多种大模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Node.js后端服务中集成Taotoken调用多种大模型 对于Node.js后端开发者而言,将大模型能力集成到Express、Koa或Fastif…...
5分钟掌握NCM解密:网易云音乐文件转换终极指南
5分钟掌握NCM解密:网易云音乐文件转换终极指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经遇到过这样的情况:在网易云音…...
范畴论视角下的机器学习系统:从代数结构到工程实践
1. 机器学习系统:从孤立元素到结构化网络的视角转变我们每天都在和数据、算法、模型打交道。数据清洗、特征工程、模型训练、评估部署,这些环节构成了一个典型的机器学习项目流程。长久以来,我们习惯于将这些元素视为独立的、线性的步骤&…...
量子机器学习在基因组分类中的实践:特征映射与模型选择指南
1. 项目概述:当量子计算遇上基因组学如果你和我一样,既对量子计算的神秘力量感到好奇,又长期在生物信息学的数据海洋里“游泳”,那么“量子机器学习”这个交叉领域绝对值得你投入时间。这听起来像是科幻小说的情节,但现…...
智能AI图像识别之公共场合人员行为分析 深度学习CNN人员行为识别 抽烟和打电话图像识别 YOLO玩手机和饮酒目标检测第10397期 (1)
数据集 README 一、数据集核心信息表项目详情类别数量及中文名称4 类(香烟、饮酒、进食、手机)数据数量8300 条数据集格式YOLO 格式核心应用价值1. 支持智能监控场景中违规行为(吸烟、工作时段进食等)自动识别模型训练;…...
基于决策树与贝叶斯DNS的宏观机制转换利率模型
1. 项目概述与核心价值如果你在固收研究或者宏观交易领域待过一段时间,肯定会遇到一个让人头疼的问题:那些经典的收益率曲线模型,比如动态Nelson-Siegel模型,在样本内拟合得挺好,但一到样本外预测或者解释某些特殊时期…...
在WSL2的Ubuntu 22.04上,用Intel OneAPI 2024完整配置VASP 6.3.2计算环境
在WSL2的Ubuntu 22.04上搭建Intel OneAPI 2024与VASP 6.3.2混合计算环境 对于使用Windows系统却需要运行Linux计算软件的材料模拟研究者而言,WSL2的出现彻底改变了跨平台科研的工作流。本文将手把手带你完成从零开始配置VASP 6.3.2的全过程,特别针对2024…...
神经网络从入门到精通:10个核心概念+8个实战代码,小白也能懂
神经网络从入门到精通:10个核心概念+8个实战代码,小白也能懂 副标题: 从像素到概念的函数映射,附完整训练流程实战 一、痛点:为什么神经网络这么难理解? 很多初学者第一次接触神经网络时,会被各种术语绕晕:神经元、权重、偏置、激活函数、反向传播、梯度下降… 感觉像…...
【AI Daily】Arxiv论文研读Top5 | 2026-05-23
📚 每日学习汇总 | 2026-05-23(周6) 📊 今日概览 今日:周6,午读检索分类:cs.AI / q-bio.NC / cs.HC关键词:cognitive science behavioral AI alignment🔥 五篇精读速报 ①…...
