Skip to content

torkinos/docparse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

docparse

Extract document data from screen-share videos — 100% locally. ffmpeg pulls the unique frames out of the recording, a local vision model (via @qvac/sdk) transcribes each frame to markdown, and a final LLM pass merges the transcripts into deduplicated, structured documents. Nothing ever leaves your machine.

Quickstart

npm install && npm link
docparse run screen-recording.mp4
open output/documents.md

First run downloads the vision model (~18.5 GB for the default qwen-27b; use --model qwen-4b on machines with less than 24 GB RAM) into the QVAC cache — a progress bar keeps you company. Every run after that starts instantly. Requires Node >= 22.17.

How it works — 3 cacheable stages

docparse run <video>          # all three stages in sequence
docparse extract <video>              # 1. video -> output/frames/NNN.jpg
docparse transcribe output/frames     # 2. frames -> output/transcripts/NNN.md
docparse organize output/transcripts  # 3. transcripts -> output/documents.md
  1. extract — ffmpeg (bundled via ffmpeg-static) samples the video at --fps and drops near-duplicate frames with mpdecimate, so a 10-minute call becomes a few dozen unique screenshots.
  2. transcribe — a local vision model transcribes each frame to markdown (text, tables, brief chart descriptions), one file per frame, written as it goes. A failed frame is logged and skipped, never fatal.
  3. organize — a text-only LLM pass merges scroll fragments, dedupes repeats, and groups everything into distinct documents with source frame numbers. Oversized inputs are organized in batches, then merged.

Each stage skips itself if its output is already up to date — rerun cheaply while tuning, use --force to redo. Failed frames leave no transcript, so a plain rerun retries exactly those, and documents.md is rebuilt whenever transcripts are newer than it. A fresh extraction (first run or --force) invalidates downstream transcripts and documents — they would describe frames that no longer exist.

Exit codes: 0 success, 1 fatal error, 2 pipeline completed but some frames failed to transcribe (rerun to retry them).

Flags

flag default meaning
--out ./output output directory (frames/, transcripts/, documents.md)
--fps 1 frames sampled per second before dedup
--hi 768 mpdecimate hi threshold (higher = more frames dropped)
--lo 320 mpdecimate lo threshold
--frac 0.5 mpdecimate fraction of blocks that must be still
--model qwen-4b model preset, see below
--force off redo stages even if output exists

Model presets

preset model download notes
qwen-27b Qwen3.6-27B multimodal Q4_K_XL ~18.5 GB default — highest quality; needs ~24 GB+ RAM
qwen-4b Qwen3.5-4B multimodal Q4_K_M ~3.1 GB best quality/speed balance for smaller machines
qwen-2b Qwen3.5-2B multimodal Q4_K_M ~1.6 GB good quality, ~2× faster
qwen-0.8b Qwen3.5-0.8B multimodal Q4_K_M ~0.6 GB fast smoke tests
smolvlm-500m SmolVLM2-500M Q8_0 ~0.5 GB smallest footprint

If model loading fails with an out-of-memory error, docparse suggests the next smaller preset. The organize stage reuses the same model in text-only mode — only one download per preset, ever.

About

Turn screen-share videos into markdown docs using local vision models — no cloud, fully offline

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors