TL;DR
- 12개 영상(14.7 h)에서 화면이 바뀔 때마다 1장씩 캡처 → 1,052장, 로컬 Qwen3-VL-8B로 글자 추출(sbatch 52분, Codex 비용 0). 튜터 검색에 연결.
- 전사 교정(Codex gpt-6-sol, 화면 글자+용어집 참고): v2에서 실질 수정 984건, 독립 채점 표본 80건 중 맞음 77 / 틀림 1 / 불확실 2 → 98.7%.
- v1(94.7%)의 틀린 수정은 "슬라이드 단어로 덮어쓰기·숫자 지어내기" → "발음이 비슷할 때만 교정" 규칙으로 감소. 미수정 문장 중 오류 잔존 3/40.
1배경/목적
기존 파이프라인은 AI가 영상 화면을 보지 않았다(전사·슬라이드 파일·논문 텍스트만). 슬라이드 파일이 없는 수업(260909)과 화면 속 표·수치가 빠졌고, Whisper 전사에 고유명사 오인식이 많았다: GR00T→"GRUD-N1"/"group and one", VLA→"BLA", PaliGemma→"PolyGemma", SigLIP→"SigLib", LIBERO→"livero", LingBot→"Limbot".
2작업 내용
screen_frames.py : 1 fps 비교(왼쪽 88%, 192×120 grey), 2초 정지 + 직전 캡처와 1.5% 이상 차이 → 1920px JPEG
screen_ocr.py : Qwen3-VL-8B bf16, batch 16 — 제목/본문/표/LaTeX 수식 + "Figure:" 설명
correct_transcripts.py : 60문장 단위, codex exec gpt-6-sol high, ±45초 화면 글자 + 용어집(≤400) → 바뀐 문장만 JSON
원문 보존, 50% 넘게 바뀌는 수정 거부, v2: 발음 유사할 때만 / 숫자 지어내기 금지
eval_corrections.py : 수정 통계 + 알려진 오인식 전후 + 채점 표본(수정 80, 미수정 40) → Claude Opus 독립 채점
3결과
| v1 | v2 |
| 실질 / 표기만 / 거부 | 1,108 / 260 / 15 | 984 / 232 / 11 |
| 표본 80건 (맞음/틀림/불확실) | 72 / 4 / 4 | 77 / 1 / 2 |
| 정확도 (불확실 제외) | 94.7% | 98.7% |
| 미수정 문장 오류 잔존 | 3/40 | 3/40 |
| 알려진 오인식 45건 → 남음 | 2 | 2 |
화면 글자 ablation (v1, 3개 수업 3.9 h): 실질 수정 347(화면 사용) vs 266(미사용). 화면 사용 시에만 나온 수정 40건 = 맞음 28 / 틀림 3 / 불확실 9, 미사용 시에만 나온 20건 = 맞음 19 / 불확실 1.
v2 유일한 틀린 수정: "Cosmos Policy 2.5" → "Cosmos-Predict2.5" (화자가 말한 이름을 슬라이드 이름으로 덮음). 놓친 예: "PGO prediction"(video prediction), "VisionRank model"(vision-language model).
4Takeaway
화면 OCR로 "영상에서 스크립트 확보"를 로컬 GPU만으로 해결했다. 화면 정보는 용어 교정을 늘리지만 덮어쓰기 위험도 함께 가져오므로, 발음 유사성 제약이 정확도의 핵심이었다(94.7→98.7%). 채점은 오디오를 듣지 못하는 LLM 판정이고 표본 80건이라 구간이 넓다(대략 93–100%).
5Next
- 진짜 WER: 조교가 수업 3개 × 5분을 받아 적어 정답 전사 확보 → 교정 전후 WER 비교.
- 학습 가이드를 교정된 전사로 재생성.
- 데모 영상 구간(멈춘 화면 없음) 대표 프레임 추가.