从视频画面中提取文字与公式的本地 OCR 技能:支持抖音、快手、B站、YouTube 等平台视频链接下载,也支持本地视频文件;基于 ffmpeg + tesseract 纯本地处理,零 token 消耗。适用于提取烧录字幕、屏幕公式、PPT 文字、图表标注、课程讲义等。This skill should be used when the user provides a video link or local video and wants the on-screen text/formulas extra
video-ocr-to-text — 视频画面文本提取(本地 OCR,零 token)是一项面向实际任务的技能,主要用于本技能提供一套 纯本地 的视频画面文字提取流水线:给定视频链接或本地视频文件,自动下载(仅链接场景)→ 均匀抽帧 → 本地 OCR(tesseract)→ 输出逐帧文本与去重清单;核心特性:;
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
本技能提供一套纯本地的视频画面文字提取流水线:给定视频链接或本地视频文件,自动下载(仅链接场景)→ 均匀抽帧 → 本地 OCR(tesseract)→ 输出逐帧文本与去重清单。
核心特性:
v.douyin.com/xxx)、快手、B站、YouTube 等。抖音走专用解析;其余平台走 yt-dlp。.mp4/.mkv/.mov 等本地路径,跳过下载。注意:本技能只提取画面可见文字。若视频仅有"语音口播"而无烧录字幕,需改用本地语音识别(见
references/advanced.md的 Whisper 扩展),那同样零 token,但不在本技能默认流程内。
运行环境需具备以下本地工具/库(均为免费、开源、离线可用):
| 依赖 | 用途 | macOS 安装 | Ubuntu 安装 |
|---|---|---|---|
ffmpeg |
下载视频 / 抽帧 | brew install ffmpeg |
apt install ffmpeg |
tesseract (>=5) |
OCR 引擎 | brew install tesseract |
apt install tesseract-ocr |
tesseract-lang |
中文等语言包 | brew install tesseract-lang |
apt install tesseract-ocr-chi-sim tesseract-ocr-chi-tra |
| Python 3.10+ | 运行脚本 | 系统自带 / brew install python |
系统自带 |
opencv-python-headless |
视频解码 / 图像处理 | pip install opencv-python-headless |
同左 |
numpy |
数组运算 | pip install numpy |
同左 |
pytesseract |
tesseract 的 Python 封装 | pip install pytesseract |
同左 |
yt-dlp(可选) |
非抖音平台链接下载 | brew install yt-dlp |
pip install yt-dlp |
安装示例(macOS,使用 WorkBuddy 管理的 Python venv):
brew install ffmpeg tesseract tesseract-lang yt-dlp /Users/kimbalhuang/.workbuddy/binaries/python/versions/3.13.12/bin/python3 -m venv /Users/kimbalhuang/.workbuddy/binaries/python/envs/video-ocr /Users/kimbalhuang/.workbuddy/binaries/python/envs/video-ocr/bin/pip install opencv-python-headless numpy pytesseract
校验:
tesseract --list-langs应能看到chi_sim;python -c "import cv2,pytesseract"不应报错。
| 步骤 | 调用对象 | 是否消耗 token / 费用 |
|---|---|---|
| 解析视频直链 | 本地 curl / ffmpeg |
否(仅网络流量) |
| 抽帧 | 本地 opencv |
否 |
| OCR 识别 | 本地 tesseract |
否(CPU 计算,零费用) |
| 文本汇总 | 本地 Python | 否 |
当用户给出视频链接或本地视频并希望"提取画面文字 / 公式 / 字幕"时,加载本技能,然后执行 scripts/extract_text.py。
# 1) 抖音短链
python scripts/extract_text.py --input "https://v.douyin.com/9xc6Ca5fxz4/"
--lang chi_sim+eng --out ./output
# 2) 其他平台链接(走 yt-dlp)
python scripts/extract_text.py --input "https://www.bilibili.com/video/BVxxxx"
--lang chi_sim+eng --out ./output
# 3) 本地视频文件
python scripts/extract_text.py --input "./lecture.mp4" --out ./output
参数说明:
| 参数 | 默认值 | 说明 |
|---|---|---|
--input |
必填 | 视频 URL 或本地文件路径 |
--lang |
chi_sim+eng |
tesseract 语言包,如 eng / chi_sim+eng / jpn |
--interval |
0.7 |
抽帧间隔(秒),越小帧越密、越慢 |
--upscale |
2 |
帧放大倍数,公式密集建议 3 |
--out |
当前目录 | 输出目录,生成 与 |
--keep-video |
关 | 保留下载的视频(默认下载后处理完即删) |
在 --out 目录生成两个文件:
.ocr.json :结构化结果,含 meta(fps/帧数/时长)、frames(逐帧 OCR 文本)、lines(去重后的全部文本行,带时间戳)。.ocr.md :可读报告,含逐帧文本与去重清单,便于人工校正与归档。--upscale 3 并对失败片段用 references/advanced.md 的多 PSM 补识别脚本。yt-dlp 最新版。--interval 调大以减少帧数;或先 ffmpeg 截取关键时间段再传入。tesseract is not installed → 安装 tesseract 并确认在 PATH。chi_sim 不可用 → 安装 tesseract-lang(macOS)或 tesseract-ocr-chi-sim(Ubuntu)。ROUTER_DATA 缺失 → 链接失效或被限流,换用桌面端分享链接或手动传本地文件。yt-dlp 已装且为最新:yt-dlp -U。