实时监控神器:用 Python 打造 macOS 屏幕区域 OCR 笔记生成器 (screen_ocr.py)

摘要:还在手动暂停视频截字幕?还在边看直播边手打笔记?本文介绍的 screen_ocr.py 脚本,利用 macOS 原生 screencapture 与 Vision API,结合 Python 的 imagehash 库,实现了一个“框选即监控、变化即记录”的实时 OCR 笔记神器。特别适合视频字幕提取、在线会议记录及动态网页监控。 1. 工具简介:你的屏幕“速记员” 在日常开发与学习中,我们经常面临以下场景: 看网课/直播:老师讲得太快,来不及记笔记。 提取视频字幕:视频没有提供字幕文件,只能盯着画面看。 监控动态界面:某个网页或软件界面不断刷新数据,需要手动记录。 screen_ocr.py 专为解决这些痛点而生。它运行后,你只需在屏幕上框选出感兴趣的文字区域,它就会在后台“盯着”这块区域。一旦检测到画面内容变化(如字幕变了、数据刷新了),它会立即调用 macOS 原生的 OCR 引擎识别文字,并按时间顺序写入 Markdown 文件。 2. 核心功能解析 2.1 原生框选:screencapture -i 传统 Python 截图工具(如 pyautogui)通常无法精确框选区域,或者依赖庞大的 GUI 库(如 tkinter、PyQt)。screen_ocr.py 直接调用了 macOS 内置的 screencapture -i 命令。 体验:按下运行键,鼠标变成十字准星,跟平时用 Cmd+Shift+4 一模一样。 优势:零依赖、原生体验、支持 Retina 屏幕高清截图。 2.2 智能去抖:感知哈希 (pHash) 比对 如果每秒钟都调用 OCR,不仅浪费资源,还会产生大量重复文本(比如画面没变,但识别结果可能因为噪点略有不同)。 脚本引入了 imagehash 库,计算图片的 pHash (感知哈希)。 原理:将图片缩放、灰度化、DCT 变换后生成一个 64 位的指纹。 判定:只有当新旧两帧图片的汉明距离(Hamming Distance)大于 5 时,才认为画面发生了实质变化。 效果:完美过滤静止画面,仅在文字更新时触发识别。 2.3 极速识别:macOS Native Vision API 通过 ocrmac 库封装,直接调用 macOS 系统级的 VNRecognizeTextRequest。 ...

July 26, 2026 · FXIO

避坑与飞跃:在 M4 Pro Mac 上对视频关键帧进行 OCR 识别与内存去重实战

摘要:在处理视频关键帧文本/字幕提取时,我们常常面临“多帧重复”与“识别效率低”两大痛点。本文记录了从传统 PaddleOCR 方案切到 macOS Native Vision API 的全过程,并通过 Python 实现了内存级模糊去重与灵活的批量导出。在 M4 Pro 芯片加持下,识别速度直升至每秒 10+ 张! 1. 背景与痛点 在视频内容分析、字幕提取或文档视频化等场景中,我们通常需要将视频按帧导出为图片并识别其中的文本。然而,这一过程有两个核心痛点: 画面重复率极高:相邻的关键帧往往包含完全相同或极其相似的文本,直接输出会导致结果大量冗余。 传统 OCR 引擎偏重:像 PaddleOCR 这类业界顶级的开源方案,在 NVIDIA 显卡或 x86 CPU 上表现优异,但在 Apple Silicon(如 M4 Pro)上运行时,由于需要经过 Python 运行时与跨平台计算图调度,单图识别耗时较长(100~300ms/帧),处理大批量图片时风扇直吹、资源占用较高。 2. 方案对比:PaddleOCR vs macOS Native Vision 为了在 Mac 上获得最佳效率,我们对比了两种技术路线: 维度 PaddleOCR (Python) macOS Native Vision API (ocrmac) 底层硬件支持 主走 CPU 多线程推理 / MPS 支持有限 深度适配 Apple Neural Engine (NPU) + Metal 单图识别速度 ~100 - 300 ms / 帧 ~50 - 100 ms / 帧(每秒 10+ 张) 资源与内存占用 需加载完整神经网络权重与 Python 运行库 直接调系统驻留服务,占用微乎其微 初始化开销 首次运行需下载 100MB+ 模型模型并做连通性检测 零下载、零模型开销,开箱即用 最佳适用场景 复杂工业票据、表格结构化解析、跨平台部署 macOS 平台下的视频关键帧、截图、常规文本快速提取 结论:在 macOS 环境下处理视频字幕与常规截图,原生 Vision API 凭借对 NPU 的极致调度,性能堪称“降维打击”。 ...

July 25, 2026 · FXIO