From ocr-toolkit
Extract text from video files by sampling frames and running Apple Vision OCR, with optional perceptual deduplication
npx claudepluginhub varunr89/claude-marketplace --plugin ocr-toolkitThis skill uses the workspace's default tool permissions.
Extracts frames from a video at a configurable FPS using ffmpeg, optionally deduplicates visually similar frames using perceptual hashing (aHash), then runs Apple Vision OCR on each kept frame in parallel.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Performs token-optimized structural code search using tree-sitter AST parsing to discover symbols, outline files, and unfold code without reading full files.
Extracts frames from a video at a configurable FPS using ffmpeg, optionally deduplicates visually similar frames using perceptual hashing (aHash), then runs Apple Vision OCR on each kept frame in parallel.
Use this skill when the user wants to extract text from a video -- for example lecture recordings, tutorial screencasts, or presentation recordings where on-screen text changes over time.
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/video_ocr.py <video_file> \
[-o output.jsonl] \
[--fps 3.0] \
[--workers 8] \
[--dedupe] [--dedupe-threshold 0.15] [--hash-size 8] \
[--frames-out <dir>] \
[--markdown <output.md>] [--markdown-images]
| Argument | Default | Description |
|---|---|---|
video (positional) | required | Input video file path |
-o, --output | ocr_output.jsonl | Output JSONL file path |
--fps | 3.0 | Frames per second to extract |
--workers | 8 | Number of parallel OCR workers |
--dedupe | false | Deduplicate visually similar frames |
--dedupe-threshold | 0.15 | Max visual difference ratio (0-1) to treat as similar |
--hash-size | 8 | Perceptual hash size (hash_size x hash_size bits) |
--frames-out | None | Directory to save kept frames as JPGs |
--markdown | None | Optional Markdown output path |
--markdown-images | false | Embed frame images in Markdown (requires --frames-out) |
--dedupe is enabled, frames are compared using average perceptual hash (aHash) and similar consecutive frames are droppedframe, time_sec, and text fields)The deduplication feature uses average perceptual hashing (aHash):
hash_size x hash_size grayscale--dedupe-threshold are dropped