如何在操作系统级别(OS level)实现屏幕特定文本的全局高亮?
操作系统级别实现屏幕文本全局高亮
可以实现跨场景的系统级文本高亮,以下是不同平台的具体方案:
Windows平台
- AutoHotkey脚本方案:结合OCR工具(如Tesseract)定时捕获屏幕文本,匹配目标内容后绘制高亮层。
示例脚本片段(需先安装Tesseract并配置环境变量):
注意:需根据实际识别的文本坐标动态调整高亮框位置,避免固定坐标的局限性。#Include <Tesseract> TargetText := "I like baking pies" SetTimer, CheckScreen, 1000 ; 每秒执行一次屏幕检查 CheckScreen: ; 捕获全屏文本 Tesseract_ScreenCapture("*", "screen_content.txt") FileRead, Content, screen_content.txt if InStr(Content, TargetText) { ; 绘制半透明红色高亮框(需补充坐标定位逻辑,可结合Tesseract的位置输出) Gui +LastFound +AlwaysOnTop +ToolWindow -Caption Gui Color, FF0000 WinSet, TransColor, FF0000 150 ; 设置透明度 Gui Show, x100 y100 w300 h60, Highlight ; 坐标和尺寸需根据识别结果调整 } return
macOS平台
- AppleScript+系统OCR方案:利用系统自带截图和OCR功能,匹配文本后通过Quartz绘制高亮窗口。
示例脚本片段:
此外,部分第三方本地高亮类应用支持可视化配置规则,无需编写脚本。set targetText to "I like baking pies" repeat set tempScreenshot to POSIX path of (path to desktop folder) & "temp_screen.png" ; 捕获全屏截图 do shell script "screencapture -x " & quoted form of tempScreenshot ; 调用系统OCR提取文本 set screenContent to do shell script "textutil -convert txt " & quoted form of tempScreenshot & " -stdout" if screenContent contains targetText then ; 创建半透明高亮窗口(坐标和尺寸需根据识别结果调整) do shell script "osascript -e 'tell application \"System Events\" to make new window at end with properties {bounds:{100,100,400,160}, background color:{255,0,0,0.4}}'" end if delay 1 ; 控制检查间隔 end repeat
Linux平台
- Bash脚本+开源工具方案:使用
scrot截图、tesseractOCR识别文本,结合xterm绘制高亮窗口。
示例脚本片段:
Wayland环境下可替换TARGET_TEXT="I like baking pies" while true; do # 捕获全屏截图 scrot /tmp/screen_shot.png # OCR识别文本 tesseract /tmp/screen_shot.png /tmp/screen_content # 匹配目标文本 if grep -q "$TARGET_TEXT" /tmp/screen_content.txt; then # 启动半透明高亮窗口(坐标和尺寸需调整) xterm -bg "#ff0000" -fg "#ff0000" -geometry "300x60+100+100" -alpha 0.5 -e sleep 1 & fi sleep 1 donescrot为grim,结合wl-clipboard实现截图与识别。
通用注意事项
- 所有方案依赖OCR精度,低对比度、特殊字体场景下可能出现识别误差,需提前测试调整。
- 高频屏幕检查会占用CPU资源,建议根据需求延长检查间隔。
- 需提前开启系统权限:如屏幕录制权限(macOS)、辅助功能权限(Windows)等。
内容的提问来源于stack exchange,提问作者Whitenoisyperson
相关产品推荐
相关产品推荐

