[GPT] Таблицы и журналы событий из видео: разметка по линиям строк, проверка ячеек на кадрах, сохранение доказательств и сравнение логов SCADA. Для ChatGPT Work/Codex с Python, NumPy, Pillow и FFmpeg; OCR Tesseract необязателен.

Install

openclaw skills install @ciklopentan/video-table-transcriber-gpt

Video Table Transcriber GPT

Переноси таблицу, следуя её реальным строкам. Дата слева и сообщение справа должны принадлежать одной полосе между верхней и нижней линиями сетки, даже если полоса наклонена или изогнута. Общий поворот кадра и OCR всего экрана сами по себе эту задачу не решают.

Среда и границы метода

Работай в ChatGPT Work/Codex с доступом к файлам, Python и инструментом просмотра изображений. Для скриптов нужны NumPy и Pillow; для видео — FFmpeg/FFprobe. Tesseract необязателен. scripts/video_table.py doctor показывает доступность инструментов и языков. Скрипты работают локально, не отправляют данные в сеть и не устанавливают пакеты. Они не заменяют визуальную проверку и не дают автоматической гарантии точности.

Распознавание выполняется по пикселям исходника. Не восстанавливай буквы генеративным улучшением изображения. Не обещай 100% для размытых, перекрытых или не попавших в кадр данных. Сохраняй видимый текст и явно помечай неопределённость. Если исходников нет, найди разрешённые пользователем файлы доступными средствами; не подставляй старую расшифровку вместо видео.

Рабочий порядок

  1. Зафиксируй источники и задачу. Раздели видео по устройствам. Запиши имена, SHA-256, длительность, разрешение, частоту кадров, требуемый период и поля. Уточняй только то, что нельзя установить из видео и контекста. Предыдущую ошибочную расшифровку используй лишь как список мест для проверки.
  2. Извлеки кадры исходного разрешения. Выбирай устойчивые положения прокрутки с перекрытием соседних строк. Для нечётких мест возьми дополнительные кадры до и после. Сохраняй время кадра, а не только номер картинки. Не делай вывод о всём архиве из нескольких выборочных кадров.
  3. Осмотри таблицу. Определи колонки, направление сортировки, фильтры, верхнюю и нижнюю видимые строки. Отличай дату события от экранных часов, времени квитирования и времени видеозаписи. При движении камеры разметку предыдущего кадра проверяй заново.
  4. Разметь сетку. Открой полный кадр и увеличенные участки. Проследи каждую верхнюю и нижнюю границу по всей ширине. Два якоря подходят для прямой границы; для кривой добавь промежуточные точки. Общая коррекция перспективы допустима как подготовка, но после неё всё равно проверь строки. Разметь столбцы внутри каждой строки. Схема и команды: geometry-and-data.md.
  5. Проверь наложение и вырежи строки. split создаёт исходную сетку поверх кадра, выпрямленные строки, отдельные ячейки и реестр доказательств. Открой overlay.png и вырезки. Линии должны идти по сетке, не пересекать буквы и не захватывать соседние события. Исправь якоря до чтения текста. Отступ от сетки подбирай так, чтобы не срезать символы. Не экстраполируй невидимую часть строки.
  6. Прочитай ячейки. OCR — черновик, визуальное чтение — обязательная проверка. Для русского текста проверь наличие rus; не выдавай OCR с eng за русскую расшифровку. Если нужной модели нет, читай визуально либо используй другой разрешённый локальный движок. Увеличение, контраст и PSM 6/7/13 могут помочь, но не являются независимым подтверждением. Сверяй целую строку, затем цифры, секунды, обозначения, знаки и состояния по ячейкам. Сомнительные места проверь на другом кадре той же строки.
  7. Веди реестр проверки. Для каждого поля сохраняй буквальный text, отдельный OCR-черновик, статус, автора проверки и замечание. Статусы: unreviewed, verified, blank, clipped, unreadable. verified ставь только после просмотра исходной ячейки и принадлежности строке. Видимое пустое поле отличается от неразборчивого. Не исправляй опечатки источника и не заменяй латинские буквы кириллицей без отметки. Нормализованные ключи храни отдельно от буквальной записи.
  8. Собери последовательность. Сохраняй экранный порядок, в том числе при одинаковом времени событий. Убирай повторные появления при прокрутке только по подтверждённому перекрытию последовательностей; одинаковые сообщения могут быть отдельными событиями. Каждой итоговой строке оставь ссылку на видео, кадр, время и вырезку. См. review-and-comparison.md.
  9. Проверь полноту и результат. Проследи переходы между кадрами, первые и последние строки, смену даты и пропуски прокрутки. audit проверяет структуру, статусы и неизменность файлов, но не доказывает правильность прочтения. Затем сопоставь итоговые строки с реестром: число, порядок и все поля. Для Word/PDF используй доступный навык документов, отрендери и проверь страницы; перенос строки в документе не должен менять событие.
  10. Передай проверяемый результат. При нескольких видео сначала отдельные журналы, затем расхождения, если сравнение запрошено. Укажи охваченный период, пропуски съёмки и спорные поля; покажи конкретные доказательства каждого расхождения. Не называй архив неполным или несинхронным только по разной длине записей.

Быстрый запуск

В командах SKILL_DIR означает фактический каталог этого навыка; выбери доступный Python с NumPy и Pillow. Папки результатов должны быть новыми или пустыми.

bash
python "$SKILL_DIR/scripts/video_table.py" doctor
python "$SKILL_DIR/scripts/video_table.py" frames --video input.mp4 --times 0.5,3.0,5.5 --out frames
python "$SKILL_DIR/scripts/video_table.py" split --image frames/frame_0001.png --grid grid.json --out rows
python "$SKILL_DIR/scripts/video_table.py" ocr --manifest rows/manifest.json --lang rus+eng --out rows/ocr-draft.json
python "$SKILL_DIR/scripts/video_table.py" audit --manifest rows/manifest.json --ledger rows/reviewed.json

split создаёт ledger.json с непроверенными полями. Скопируй его (либо OCR-черновик) в reviewed.json и заполняй при визуальной проверке. Не меняй автоматически все статусы на verified. audit: код 0 — структура без незавершённых полей, 2 — есть непроверенные/нечитаемые/обрезанные поля, 1 — ошибка данных или источников. Код 0 не является сертификатом точности.

Сравнение журналов

Используй review-and-comparison.md, когда нужно проверить зеркальность событий. Сравнивай оба направления в общем видимом интервале, учитывай повторения и различай несовпадение текста, времени, состояния и отсутствие записи. По архивным меткам можно оценить совпадение зарегистрированных событий; фактическую задержку поступления на экраны по раздельным видео установить нельзя без общей временной привязки.

Данные и публикация

Видео, кадры, журналы и отчёты остаются рабочими материалами пользователя. Не включай их в публичный пакет навыка и не отправляй во внешние OCR-сервисы без соответствующего разрешения. Воспроизводимая проверка скрипта: python "$SKILL_DIR/scripts/selftest.py"; она создаёт только искусственную таблицу во временной папке.

Методические основания и ограничения OCR: method-sources.md.