Что бы кот видел, я снимаю скриншот активного приложения. После перегоняю скриншот в текст через VIsion. И вот после этого идет довольно много работы, перед тем как ИИ мозг кота получит текст и понимание.
Сейчас кот перед тем как передать контекст в ИИ, немного его причесывает.
Что получаем после обычного Vision OCR (определение текста по скриншоту):
Telegram
Антон
был недавно
Маша
А ты сегодня будешь?
Да, ближе к вечеру
Работа
Prefire
12:43
12:45
По сути просто набор строк с координатами. Для маленькой модели это выглядит очень сложно и она не может связать хоть что-то по смыслу. Для этого нужен процессинг. Сам процессинг максимально простой, весь текст делится линиями, который вычисляются на основе x/y координат текста. И эти линии говорят нам о том, где примерно заголовок и тд.
А Вот что в итоге передаем в модель:
Приложение: Telegram
Чат: Антон
Статус: был недавно
Сообщения:
Антон: А ты сегодня будешь?
Я: Да, ближе к вечеру
Причём для разных приложений это работает по-разному. Есть общие вещи. Например, заголовок почти всегда стоит искать сверху.
А есть специфичные. Например, для Telegram я ищу самый большой разрыв по X между распознанными строками. Так можно довольно неплохо понять, где заканчивается список чатов и начинается сам чат.
И после процессинга кот уже начинает забавно шутить. Он может не просто сказать что-то про текущий диалог, а запомнить, что я уже общался с этим человеком. А через какое-то время спросить что-нибудь типа: «Вы давно дружите?» 😼
Пока всё это набор эвристик под конкретные приложения. Но мне прям нравится, насколько сильно такая простая предобработка меняет ощущение от маленькой локальной 2B модели.
