Судебная видео-экспертиза on-premise: 31,7 часа записи → 214 страниц доказательств без облака
- юридическая экспертиза
- видео-экспертиза
- on-premise
- локальная GPU
- Whisper
- OCR
- ffmpeg
- 152-ФЗ
- адвокатская тайна
- судебная защита
Спор между заказчиком и подрядчиком IT-разработки — типичная история. Подрядчик обещал систему «под ключ», получил предоплату, через год сдал то, что не работает. Видеозапись многочасового осмотра системы у подрядчика стала ключевым доказательством для суда. Наша роль — построить AI-pipeline анализа этих записей и подготовить комплект документов, готовых к подаче в арбитраж.
Контекст дела (анонимно)
Имена сторон, юр.лица и предмет спора в этой статье не называются. Описываем только методику и итоги. Исходные данные:
- Спор между заказчиком и подрядчиком IT-разработки в арбитраже.
- На осмотре у подрядчика велась многочасовая видеозапись действий ответчика на серверах и в системе.
- 31,7 часа сырых видеозаписей — без обработки невозможно использовать в суде (никто не будет смотреть 31 час).
- Жёсткие судебные дедлайны на подготовку комплекта.
Задача
- Извлечь значимые кадры из видео (там, где менялся экран, открывался код, появлялись диалоги системы).
- Транскрибировать речь в стенограмму для использования в допросах и для связи с визуальным рядом.
- Связать визуальные доказательства со словами участников по таймкодам.
- Подготовить полный комплект документов для суда: экспертное заключение, стенограммы, скриншоты с аннотациями, ссылки на нормативку.
Pipeline (наш стек обработки)
1. Извлечение значимых кадров (extract_frames.py)
- ffmpeg — извлечение кадров с заданной частотой (1 fps на старте).
- SSIM (Structural Similarity Index Measure) — попарное сравнение последовательных кадров. Сохраняется только тот, который существенно отличается от предыдущего.
- Параметр threshold подбирался эмпирически — слишком жёсткий пропускал важные изменения, слишком мягкий давал тысячи дубликатов.
Результат: из 31,7 часа видео извлечено 3 818 значимых кадров (~120 кадров на час) — это управляемый объём для последующего OCR и ручной разметки.
# extract_frames.py (упрощённо)
import cv2
from skimage.metrics import structural_similarity as ssim
prev = None
saved = 0
for frame in iter_frames(video_path, fps=1):
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
if prev is None or ssim(prev, gray) < SSIM_THRESHOLD:
cv2.imwrite(f'frames/{saved:06d}.png', frame)
saved += 1
prev = gray
2. OCR извлечённых кадров (easyocr)
- easyocr с моделью RU+EN (терминал, код, диалоги системы).
- 6 010 кадров обработано через OCR (часть кадров прогонялась дважды с разными параметрами для сложных случаев).
- Результаты OCR сохранялись в JSON с координатами bounding boxes — для последующего наложения цитат на скриншоты.
# ocr_pipeline.py (упрощённо)
import easyocr
reader = easyocr.Reader(['ru', 'en'], gpu=True)
results = reader.readtext(frame_path, detail=1)
for bbox, text, confidence in results:
if confidence > 0.6:
save_to_db(frame=frame_id, bbox=bbox, text=text, conf=confidence)
3. Транскрипция (faster-whisper, локально на CUDA)
- Полная аудиодорожка 31,7 часа прогонялась через
faster-whisperс модельюlarge-v3— локально на GPU. OpenAI Whisper API не использовался. Это критично: материалы судебного дела не должны попадать на серверы третьих лиц (см. отдельную секцию ниже). - Метки времени синхронизированы с кадрами (одна шкала по таймкодам видео).
- Чистка имён собственных, технических терминов (ручная вычитка ~10% объёма).
- Результат — стенограмма с таймкодами в формате SRT/JSON.
# transcribe.py (упрощённо)
from faster_whisper import WhisperModel
model = WhisperModel('large-v3', device='cuda', compute_type='float16')
segments, info = model.transcribe(audio_path, language='ru', word_timestamps=True)
for seg in segments:
save_segment(start=seg.start, end=seg.end, text=seg.text)
4. Сборка экспертного заключения
- Связка кадров + OCR + стенограммы по таймкодам в единую таблицу доказательств.
- Около 214 страниц итоговой документации: экспертное заключение, стенограмма с цитатами, приложения со скриншотами и аннотациями.
- Каждое нарушение оформлено отдельным разделом: описание → визуальное доказательство (кадр + bbox с OCR) → цитата речи → ссылка на нарушенный пункт договора или норматив.
Где обрабатывались данные: 100% локально, без облака
Это самый важный пункт всего проекта. Никакой кадр, аудио или фрагмент стенограммы не покидали локальный компьютер судебного аналитика. Весь pipeline собран из инструментов с открытыми весами и локальным запуском:
| Этап | Инструмент | Где работает |
|---|---|---|
| Извлечение кадров | ffmpeg + OpenCV + scikit-image (SSIM) | Локально, CPU |
| Транскрипция | faster-whisper (модель large-v3) | Локально, CUDA GPU |
| OCR | easyocr (RU+EN) | Локально, CUDA GPU (gpu=True) |
| Сборка отчёта | свой Python + process_all_videos.py оркестратор | Локально |
Что это даёт юридически:
- Адвокатская тайна сохранена. Материалы дела (видео осмотра, речь сторон, скриншоты систем заказчика и ответчика) физически не передавались на чужие серверы. Это исключает возможные отводы по делу из-за разглашения через third-party API.
- 152-ФЗ соблюдён без отдельных DPA. Персональные данные участников осмотра (лица в кадре, голоса, имена в стенограмме) обрабатывались на локальной машине, оператор ПД — наша компания и/или клиент-юрист. Не нужны соглашения с OpenAI / Google / Yandex Cloud об обработке ПД.
- Воспроизводимость суда. Pipeline можно повторно запустить на той же машине без зависимости от внешних API (которые могут поменять модель, цены или просто исчезнуть). Все веса моделей сохранены локально.
- Стоимость predictable. Один раз настроенная машина с GPU отрабатывает ~30 часов видео за сутки фоновой обработки. Никаких сюрпризов на счёте облачного провайдера.
Технические детали железа: локальная workstation с GPU 24+ ГБ VRAM (NVIDIA RTX 3090 / 4090 / A6000 уровня). Этого достаточно для large-v3 Whisper в float16 + параллельной OCR-обработки. Для меньших объёмов хватит 12 ГБ VRAM с моделью medium или small.en.
Этот же подход применим ко всем нашим проектам с конфиденциальными данными: судебные кейсы, медицинские записи, корпоративная переписка, ПДн госорганов. Если данные не должны покидать контур — не должны.
Выявленные нарушения подрядчика
Видео-экспертиза дала четыре независимых группы доказательств нарушений со стороны ответчика:
- Несанкционированное копирование кода с локального компьютера, не входившего в материалы дела. Доказательство: кадр с экраном файлового менеджера + таймкод + цитата участника на этом же таймкоде.
- Установка панели управления HestiaCP на тестовый сервер заказчика — это даёт полный административный доступ к данным заказчика без согласования. Доказательство — кадры с интерфейсом HestiaCP и установочной командой в терминале.
- Создание триггеров БД, нарушающих целостность системы — после правок система оказалась нефункциональной. Доказательство — OCR кода триггера в кадре + последующие ошибки в логах.
- Отсутствие документации/инструкций для установки и развёртывания системы — нарушение конкретных пунктов договора. Доказательство от обратного: на видео ответчик неоднократно ищет «как установить», то есть документации нет даже у него.
Что мы из этого вынесли
- AI-pipeline (Whisper + ffmpeg+SSIM + easyocr) даёт ~10× ускорение vs ручной просмотр. Один судебный аналитик с этим pipeline покрывает работу команды из 10 человек, просматривающих видео вручную.
- Связка визуального ряда + речи + OCR — сильнейшее судебное доказательство. Любой из трёх каналов по отдельности можно оспорить (кадр — «не я нажал», речь — «оговорился», OCR — «ошибка распознавания»), но их совокупность по одному таймкоду оспорить практически невозможно.
- Стандартизированный комплект документов экономит часы работы юристов. Юристам не нужно ничего интерпретировать — они получают готовое заключение с привязкой к нормам и пунктам договора.
Когда полезно
- Споры по качеству ПО — особенно когда есть видео-фиксация осмотра системы у подрядчика.
- Уголовные дела по неправомерному доступу — есть видео того, как обвиняемый что-то делал.
- Расследование инцидентов безопасности — есть запись с камер серверной или скринкаст с заражённой машины.
- Аудит подрядчиков — длинные демо-сессии, в которых нужно найти «слабые места».
Ссылки (методика)
- Whisper — OpenAI speech-to-text
- ffmpeg SSIM filter — структурное сходство кадров
- easyocr — RU+EN OCR
- 731-ФЗ «О судебной экспертной деятельности в РФ»