Судебная видео-экспертиза 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
OCReasyocr (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.

Этот же подход применим ко всем нашим проектам с конфиденциальными данными: судебные кейсы, медицинские записи, корпоративная переписка, ПДн госорганов. Если данные не должны покидать контур — не должны.

Выявленные нарушения подрядчика

Видео-экспертиза дала четыре независимых группы доказательств нарушений со стороны ответчика:

  1. Несанкционированное копирование кода с локального компьютера, не входившего в материалы дела. Доказательство: кадр с экраном файлового менеджера + таймкод + цитата участника на этом же таймкоде.
  2. Установка панели управления HestiaCP на тестовый сервер заказчика — это даёт полный административный доступ к данным заказчика без согласования. Доказательство — кадры с интерфейсом HestiaCP и установочной командой в терминале.
  3. Создание триггеров БД, нарушающих целостность системы — после правок система оказалась нефункциональной. Доказательство — OCR кода триггера в кадре + последующие ошибки в логах.
  4. Отсутствие документации/инструкций для установки и развёртывания системы — нарушение конкретных пунктов договора. Доказательство от обратного: на видео ответчик неоднократно ищет «как установить», то есть документации нет даже у него.

Что мы из этого вынесли

  • AI-pipeline (Whisper + ffmpeg+SSIM + easyocr) даёт ~10× ускорение vs ручной просмотр. Один судебный аналитик с этим pipeline покрывает работу команды из 10 человек, просматривающих видео вручную.
  • Связка визуального ряда + речи + OCR — сильнейшее судебное доказательство. Любой из трёх каналов по отдельности можно оспорить (кадр — «не я нажал», речь — «оговорился», OCR — «ошибка распознавания»), но их совокупность по одному таймкоду оспорить практически невозможно.
  • Стандартизированный комплект документов экономит часы работы юристов. Юристам не нужно ничего интерпретировать — они получают готовое заключение с привязкой к нормам и пунктам договора.

Когда полезно

  • Споры по качеству ПО — особенно когда есть видео-фиксация осмотра системы у подрядчика.
  • Уголовные дела по неправомерному доступу — есть видео того, как обвиняемый что-то делал.
  • Расследование инцидентов безопасности — есть запись с камер серверной или скринкаст с заражённой машины.
  • Аудит подрядчиков — длинные демо-сессии, в которых нужно найти «слабые места».

Ссылки (методика)

  • WhisperOpenAI speech-to-text
  • ffmpeg SSIM filter — структурное сходство кадров
  • easyocr — RU+EN OCR
  • 731-ФЗ «О судебной экспертной деятельности в РФ»

Часто задаваемые вопросы

Что такое on-premise видео-экспертиза и чем отличается от облачной?
On-premise — это анализ видео исключительно на компьютере оператора без передачи файлов в облако. faster-whisper для транскрипции, ffmpeg + OCR (Tesseract / PaddleOCR) для извлечения кадров и текста, локальная GPU для скорости. Данные не покидают периметр — соблюдены адвокатская тайна и 152-ФЗ.
Сколько занимает обработка 30+ часов видео локально?
На RTX 4090 24GB: транскрипция Whisper large-v3 — ~3-4 часа для 31,7 ч видео. AI-выделение значимых кадров (CLIP + LLaVA) — ещё 2-3 часа. OCR по выделенным кадрам — 30-60 минут. Полная подготовка 214-страничного заключения — 2-3 рабочих дня инженера.
Можно ли использовать такие материалы в суде?
Да, при условии корректной фиксации цепочки доказательств. Мы прикладываем: хеш-суммы исходных файлов, лог обработки с timestamps, версии моделей и параметры. Транскрипция и OCR — вспомогательные доказательства; финальное заключение готовит сертифицированный эксперт-криминалист. Без эксперта материалы — рабочие данные.
Когда облачная обработка дешевле и допустима?
Если материалы не содержат адвокатскую тайну, ПДн или коммерческую тайну — облако (AWS Transcribe, Yandex SpeechKit) дешевле и быстрее. Для семейных споров, ДТП без ПДн третьих лиц — облако оправдано. Для подрядных споров, корпоративных конфликтов, уголовных дел — только on-premise.