Концепция и план · 10 ноября 2026

Каждый снимок сам подписывает себя: когда, где и что на нём

«ФотоМетка» — приложение для iPhone, Android и Mac. Вы делаете фото или скриншот, а через пару секунд у снимка уже есть подпись: дата, место и смысл («билет на поезд Москва → Рязань на 12 ноября»). Потом любой снимок находится обычной фразой: «чеки за октябрь», «кот на даче», «ошибка python».

Коротко: как мы это сделаем
  1. Телефон или Mac замечает новый снимок и сразу берёт из него «паспортные данные»: время, координаты, тип (фото или скриншот), из какого приложения.
  2. Распознавание читает текст на снимке, а нейросеть, которая понимает картинки, пишет 1–2 предложения смысла и теги. Тяжёлую работу делает наш собственный сервер GX10 — фото не уходят в чужие облака.
  3. Поиск работает на самом устройстве: по словам, по смыслу, по датам и местам, даже без интернета. Метки синхронизируются через наш сервер — скриншот с Mac находится в поиске на телефоне и наоборот.

Порядок: Android (там можно реагировать на снимок мгновенно) → Mac (скриншоты на Mac ловятся тоже мгновенно, а мощный Mac может думать о смысле сам, без сервера) → iPhone (с честными ограничениями iOS, описаны ниже).

21:145G
воскресенье, 8 ноября
21:14
ФотоМетка · сейчас
Скриншот подписанБилет на поезд Москва → Рязань · поездка 12 ноя, 07:35 · снято на Тверской ул.
ИсправитьОткрыть
ФотоМетка · 2 ч назад
Фото подписаноМеню кафе с ценами · Москва, Покровка, 17

Как это выглядит для человека

Ничего не нужно нажимать: всё происходит само. Человек видит результат в уведомлении и в поиске.

Сделал снимок

Обычный скриншот или фото — штатной камерой или кнопками телефона. Наше приложение не мешает.

Через 1–5 секунд

Приходит тихое уведомление: «Скриншот подписан: Билет на поезд…». Если подпись неверна — «Исправить» в одно касание.

Через месяц

Пишете в поиске «билет на 12 ноября» или просто «поезд» — снимок первый в списке, даже если слова «поезд» на нём нет.

Сам собой порядок

Подборки «Чеки», «Билеты», «Документы», «Переписки» собираются сами. Карта показывает, где что снято.

Что именно мы подписываем

Метка снимка — его «карточка»

Метка — это набор полей, который приложение хранит про каждый снимок. Вот пример для скриншота билета. Справа у каждого поля написано, откуда взялось значение — это важно для доверия.

Скриншот из приложения РЖД, 8 ноября 2026
Когда
8 ноября 2026, 21:14 (МСК)
из файла снимка: время создания
Где
Москва, Тверская ул., 7 примерно, ±50 м
у скриншотов нет координат — берём, где был телефон в эту минуту (только если человек разрешил)
Откуда
Приложение «РЖД Пассажирам»
узнаём по виду экрана и тексту
Что на снимке
Билет на поезд Москва → Рязань
Электронный билет: отправление 12 ноября в 07:35 с Казанского вокзала, вагон 5, место 23.
написала нейросеть, понимающая картинки; уверенность 94%
Найдено
дата поездки: 12.11.2026 07:35вагон 5, место 23сумма: 1 470 ₽
«сущности» — важные факты из текста: даты, суммы, номера, адреса
Текст
ЭЛЕКТРОННЫЙ БИЛЕТ · МОСКВА КАЗ — РЯЗАНЬ-1 · 12.11.2026 07:35 · Вагон 05 Место 023 · 1 470,00 ₽
распознавание текста (OCR)
Теги и раздел
билетпоездРЖДпоездка → подборка «Билеты и поездки»

Две разные даты — и обе ищутся

«Дата снимка» — когда сделан скриншот (8 ноября). «Дата внутри снимка» — о каком дне он (поездка 12 ноября). Поиск «билет на 12 ноября» найдёт этот скриншот, хотя сделан он 8-го. Встроенные галереи так не умеют.

Где хранится метка

Главная копия — в базе на телефоне (это быстро и не портит снимки). По желанию — ещё и внутри самого файла (стандарт XMP — «невидимая бирка» в фото), тогда подпись увидят и другие программы: Lightroom, Google Фото, компьютер.

Показать метку в виде данных (для разработчиков)
{
  "id": "a6f1…", "kind": "screenshot", "schema": 1,
  "taken_at": "2026-11-08T21:14:03+03:00",
  "place": { "lat": 55.7616, "lon": 37.6094, "accuracy_m": 50, "source": "phone_journal",
             "address": "Москва, Тверская ул., 7", "my_place": null },
  "source_app": "РЖД Пассажирам",
  "title": "Билет на поезд Москва → Рязань",
  "summary": "Электронный билет: отправление 12 ноября в 07:35 с Казанского вокзала, вагон 5, место 23.",
  "category": "tickets", "tags": ["билет","поезд","РЖД","поездка"],
  "text": "ЭЛЕКТРОННЫЙ БИЛЕТ … 1 470,00 ₽",
  "entities": [ {"type":"datetime","role":"departure","value":"2026-11-12T07:35"},
                {"type":"money","value":1470,"currency":"RUB"},
                {"type":"seat","value":"вагон 5, место 23"} ],
  "sensitive": false, "confidence": 0.94,
  "model": "server:qwen3-vl / ocr:paddle", "edited_by_user": false
}
Функциональность алгоритма

Конвейер: 8 шагов от снимка до находки

Каждый снимок проходит одни и те же шаги. Нажмите на шаг — внизу откроется подробное объяснение простыми словами. Значки показывают, где шаг выполняется.

телефон — на самом телефоне, работает без интернета · сервер — на нашем сервере GX10 · по желанию — включается в настройках

Живое демо

Попробуйте поиск сами

Ниже — 15 придуманных снимков с готовыми метками (как их подписал бы наш алгоритм). Поиск работает так же, как будет в приложении: понимает даты («вчера», «в октябре», «на прошлой неделе», «12 ноября»), тип («скриншоты», «фото»), места и слова в любой форме («чеки» = «чек» = «чеков»). Демо считает, что сегодня — 10 ноября 2026.

Нажмите на найденный снимок — здесь откроется его полная метка.
Что упрощено в демо. Здесь ищется только по словам и фильтрам. В приложении добавится поиск «по смыслу» (векторный): запрос «где я ел» найдёт шашлык и меню кафе, даже если слова «ел» нет ни в одной метке.
Как будет выглядеть

Макеты экранов

Восемь главных экранов телефона и окно для Mac. Интерфейс простой: лента снимков с подписями, карточка снимка, поиск, карта, подборки и настройки приватности.

10:315G
Подпишу каждый снимок
Когда, где и что на нём. Всё остаётся вашим.
Разрешения
Фото и скриншотычитать новые снимки
Место в фотоадрес из координат снимка
Где был телефондля скриншотов, по желанию
Где понимать смысл
Только на телефонебез интернета, подписи проще
На нашем сервере ✓подробно; снимок удаляется после обработки
Начать
1. Первый запускТри разрешения с объяснением «зачем» и выбор, где думать о смысле. Журнал мест по умолчанию выключен.
14:225G
Шторка уведомлений
ФотоМетка · сейчас
Скриншот подписанПереписка: место встречи · ср 11 ноя, 18:00 · ТЦ «Премьер»
ИсправитьВ календарь
ФотоМетка · 1 мин
Похоже на документПолис ОСАГО — помечен как личный, текст скрыт и на сервер не отправлен.
ХорошоПоказать
ФотоМетка · вчера
Готово: 214 старых снимковПодписаны ночью на зарядке
2. УведомленияТихие, группируются. Кнопка-действие по смыслу: для встречи — «В календарь», для билета — «Напомнить».
10:315G
СнимкиА
⌕ Что ищем? Например, «чек»
ВсеСкриншотыФотоЧекиБилеты
Сегодня
Ошибка Python: нет модуля requests10:31 · Офис · Терминал
Вчера
Переписка: место встречи14:22 · Рязань · Telegram
8 ноября
Билет на поезд Москва → Рязань21:14 · Москва · РЖД
5 ноября
Схема на доске после планёрки11:15 · Офис · фото
Перевод по СБП · личное12:00 · Банк · скрыто
Лента
Поиск
Карта
Подборки
3. ЛентаВместо безымянных миниатюр — снимки с подписями по дням. Личное (банк, документы) размыто.
10:325G
‹ ЛентаИзменить
Билет на поезд Москва → Рязань
Когда
8 ноября 2026, 21:14
Где
Москва, Тверская ул., 7
примерно · где был телефон
Что
Поездка 12 ноября, 07:35, вагон 5, место 23
12.11 07:351 470 ₽#поезд#РЖД
ТекстНапомнитьПоделиться
4. Карточка снимкаВся метка, источник каждого поля, факты-кнопки (дату — в календарь, сумму — скопировать, текст — выделить).
10:335G
Поиск
⌕ чеки за октябрь
Я понял так:
что: чеккогда: октябрь 2026
Найдено: 1 · ещё похожие 2
Чек из «Пятёрочки» на 1 284 ₽14 окт · Рязань, ул. Есенина, 9
Похоже по смыслу
Кроссовки на Ozon — 5 990 ₽20 окт · покупки
Меню кафе с ценами25 окт · Москва, Покровка
Итого по чекам за октябрь: 1 284 ₽
Лента
Поиск
Карта
Подборки
5. ПоискПишем как человеку. Приложение показывает, как поняло запрос (фильтры можно снять крестиком), и даже считает сумму.
Рязань · 9
Дача · 2
Москва · 3
10:345G
⌕ Место или адрес
Дача · д. Ласково
«Моё место» · 2 снимка · 21 сентября
6. КартаСнимки на карте. Свои места («Дом», «Офис», «Дача») подписываются вашими словами — и ищутся ими же.
10:355G
Подборки
Чеки12 · 18 430 ₽
Билеты4 · ближайший 12 ноя
Документы6 · личное
Переписки31
Товары9
Код и ошибки17
Лента
Поиск
Карта
Подборки
7. ПодборкиСобираются сами по разделу метки. Свою подборку можно сделать из любого запроса: «всё про ремонт машины».
10:365G
Настройки
Старые снимки
3 450 из 18 200 подписано
осталось ≈ 5 ч · только на зарядке и Wi‑Fi
Не отправлять на сервербанки, документы, пароли
Вписывать подпись в файлвидно в других программах
Журнал месттолько на телефоне, 90 дней
Сервер смысла
gx10 · подключён ✓
снимок удаляется сразу после ответа
Выгрузить все метки (файл)
8. Старые снимки и приватностьАрхив подписывается постепенно, не сажая батарею. Видно и управляемо, что и куда уходит.
ФотоМетка · 214 подписано сегодняВт 10 нояб. 10:36
Устройства
Все
MacBook Pro
Телефон (Android)
iPhone
Подборки
Чеки · 12
Билеты · 4
Код и ошибки · 17
Документы · 6
слово: ошибкаслово: pythonкогда: эта неделя
Ошибка Python: нет модуля requestsсегодня 10:31 · MacBook Pro · Терминал — окно «sync.py — zsh»
Ошибка сборки: порт 8080 занятвчера 18:02 · MacBook Pro · Cursor
Переписка: «у меня та же ошибка python»вчера 14:30 · телефон · Telegram
Откуда
Терминал · окно «sync.py — zsh»
запомнено в момент снимка
Файл
~/Desktop/Снимок экрана 2026-11-10 в 10.31.png
В Finder
код ошибка python
метки Finder + комментарий Spotlight
9. Mac: значок в строке меню и окно поискаОкно открывается сочетанием клавиш. Ищет сразу по снимкам со всех устройств. Подпись Mac вписывает в метки Finder — скриншот находится и обычным поиском Spotlight (⌘ + пробел).
Как устроено внутри

Три части: устройство, шлюз, сервер смысла

Снимки живут на ваших устройствах. На сервер уходит только уменьшенная копия (около 1000 пикселей по длинной стороне), по защищённому каналу, и сразу удаляется после ответа. Обратно приходит только текст метки.

Телефон или Mac

  • Следит за новыми снимками
  • Читает дату, координаты, тип
  • Адрес по координатам (с запасом в кэше)
  • Распознаёт текст (OCR) и личное
  • База меток + поиск, работает офлайн
  • Очередь: что отправить, когда будет Wi‑Fi

Flutter (один код экранов для iPhone, Android и Mac) + нативные модули Kotlin / Swift для галереи, фона и распознавания. База — SQLite с полнотекстовым и векторным поиском. Mac на Apple Silicon может запускать модель смысла сам.

HTTPS
ключ устройства

Шлюз на sagr

  • Единственная дверь из интернета (api.fotometka…)
  • Проверяет ключ телефона, лимиты
  • Ничего не хранит, только пересылает
  • Журнал ошибок без содержимого снимков

Traefik уже принимает *.24oros.ru; шлюз — маленький сервис на кластере, на GX10 ходит по Tailscale.

Tailscale
внутренняя сеть

Сервер смысла GX10

  • Нейросеть, понимающая картинки (класс Qwen3‑VL), — описание, теги, раздел
  • OCR с русским (PaddleOCR) — если телефон не справился
  • Факты: даты, суммы, номера (правила + модель)
  • Векторы смысла для поиска
  • Свой геокодер по картам OSM / нашей базе городов

Память 128 ГБ позволяет держать модели постоянно загруженными. Ориентир: 1–3 с на снимок, архив 20 000 снимков — за одну ночь.

Три режима приватности — выбирает человек

максимум приватности

Только телефон

Дата, место, текст, тип и простая подпись по шаблону («Скриншот Telegram с адресом»). Без интернета. Поиск по смыслу — по тексту меток. Подходит, если сервер вообще не нужен.

рекомендуем

Свой сервер

Подробные описания и теги от большой модели на GX10. Снимки не хранятся, личное (банк, документы) не отправляется вовсе — обрабатывается только на телефоне.

позже, если нужно

Чужое облако

Подключение внешних ИИ-сервисов для тех, у кого нет своего сервера (для будущей публичной версии). По умолчанию выключено, включается явно, с предупреждением.

Честно про ограничения

iPhone, Android и Mac — что можно, а что нельзя

Телефоны по-разному пускают приложения к фото и фоновой работе. От этого зависит, насколько «мгновенно» всё работает. Поэтому начинаем с Android, затем Mac, затем iPhone.

Что нужноAndroidiPhone (iOS)Mac (macOS)
Узнать о новом снимке сразуДа. Слушаем системный список медиа (MediaStore) — подпись через секунды.Не мгновенно. iOS не будит приложения из-за нового фото. Подписываем при открытии, в фоне (система разрешает обычно ночью, на зарядке) и сразу — через «Поделиться → ФотоМетка».Да. Следим за папкой скриншотов (FSEvents) и за медиатекой «Фото» — подпись за секунду.
Работа в фонеДа, но у Xiaomi, Huawei, Honor надо разрешить «автозапуск» и снять ограничение батареи — покажем подсказку.Только когда разрешит система (фоновая задача BGProcessingTask). Срок не гарантирован.Да. Живёт значком в строке меню, работает постоянно, нагрузка малая.
Координаты из фотоНужно отдельное разрешение «доступ к местоположению в медиа», иначе Android вырезает координаты.Да, при полном доступе к фото.У фото с iPhone — да. У скриншотов координат нет; место Mac определяет по Wi‑Fi (по желанию).
Русский текст на телефоне (OCR)Стандартный ML Kit от Google кириллицу НЕ читает. Ставим свой распознаватель (PaddleOCR или Tesseract) или распознаём на сервере.Да, встроенный Apple Vision читает русский.Да, тот же Apple Vision.
Вписать подпись в сам файлМожно, одно подтверждение на пачку снимков.Только как «правка» снимка — в «Фото» он станет «изменённым». По умолчанию не делаем.Да, и даже лучше: ставим метки Finder и комментарий Spotlight — скриншот находится обычным поиском Mac (⌘ + пробел).
ИИ прямо на телефонеВстроенный Gemini Nano есть лишь на части флагманов. Универсально — свои небольшие модели.Встроенные модели Apple есть на новых iPhone, но описания картинок пока надёжнее делать на сервере.Да. Mac на M‑чипе тянет модель смысла сам (через MLX или Ollama) — сервер не обязателен.
Как раздаватьAPK напрямую (через наш publisher) — сразу; потом RuStore и Google Play.TestFlight, затем App Store: Apple строго проверяет доступ ко всем фото и фоновую геолокацию — журнал мест делаем строго по желанию.Свой установщик (.dmg) с подписью разработчика — сразу; позже Mac App Store.
Зачем, если есть Google Фото

Чем отличаемся от встроенного поиска

Google Фото и Apple Фото уже ищут по картинкам. Но подпись там не видна и не правится, скриншоты без места, а Google требует загружать всё в своё облако. Мы делаем подпись главным героем.

ВозможностьGoogle ФотоApple ФотоГалерея телефонаФотоМетка
Поиск по смыслу («кот», «чек»)да, в облакедапо-разномуда
Видимая подпись, которую можно правитьтолько вручнуютолько вручнуюнетсама + правка
Факты из снимка: даты, суммы, номерачастичночастичнонетда, ищутся
Место у скриншотовнетнетнетпо желанию
Без загрузки в чужое облаконетдадада, свой сервер
Один поиск на Android, iPhone и Macчерез облакотолько iPhone + Macнетда, через свой сервер (фаза 5)
Скриншоты Mac в поиске Spotlightнеттолько текст—да, с подписью и тегами
Выгрузка подписей (файл, XMP)нетчастичнонетда

Оценка по состоянию на ноябрь 2026, по открытым данным о возможностях приложений; детали проверим на фазе 0 на реальных телефонах.

План работы

9 фаз, около 21 недели

Каждая фаза заканчивается тем, что можно потрогать руками, и понятной проверкой «готово / не готово». Сроки — ориентир для одного разработчика вместе с Claude; фазы 6 и 7 можно вести параллельно.

Как поймём, что получилось

≥ 90%
нужный снимок в первой пятёрке результатов по «золотому набору» из 300 снимков и 200 запросов
≥ 85%
подписей человек признаёт верными без правки
≤ 5 с
от снимка до готовой подписи на Android при включённом сервере; ≤ 2 с — дата, место и текст
≤ 3%
расход батареи в сутки при обычном использовании; архив — только на зарядке
Что может пойти не так

Риски и как их снимаем

Нейросеть «придумывает» то, чего нет на снимке

Просим модель отвечать строго по виду снимка, в формате с полями; факты (даты, суммы) сверяем с распознанным текстом и правилами. Если уверенность низкая — подпись серая с пометкой «проверьте». Правки человека запоминаются: «это не Сергей, а Серёжа-сосед».

Личные данные на скриншотах (банк, пароли, документы)

До отправки на сервер телефон сам проверяет: приложение банка, номера карт, паспорт, коды. Такие снимки помечаются «личное», обрабатываются только на телефоне, в ленте размыты. Список исключений человек может дополнить.

Батарея и «убийцы фоновых задач» у Xiaomi, Huawei

Новые снимки — быстрая лёгкая обработка; тяжёлая и архив — только на зарядке и Wi‑Fi. Подсказка с картинками, как разрешить автозапуск на конкретной марке телефона.

iOS не даёт реагировать мгновенно

Честно говорим об этом в интерфейсе; даём быстрые пути: «Поделиться → ФотоМетка», виджет «Подписать последние», подпись при каждом открытии приложения (быстро — уже в очереди).

Слабый русский язык у моделей

На фазе 0 сравниваем 3–4 модели на наших же снимках, выбираем лучшую. Поиск — с русской морфологией (чек = чеки = чеков) и синонимами (поезд ↔ РЖД, авто ↔ машина).

Сервер недоступен или перегружен

Телефон не ждёт: сразу ставит базовую метку (дата, место, текст), а смысл дописывает позже, когда сервер ответит. Очередь переживает перезагрузку телефона. GPU GX10 общий с другими задачами — у нас своя очередь с приоритетом «новые снимки важнее архива».

Закон о персональных данных и правила магазинов (для публичной версии)

Сервер в России (свой), политика конфиденциальности, согласие на каждую обработку, удаление по кнопке. Для App Store — подробные объяснения каждого разрешения; фоновая геолокация строго по желанию.

Словарь для чайников

Термины простыми словами

МеткаКарточка с подписью снимка: когда, где, что, текст, факты, теги.
EXIF«Паспорт» внутри файла фото: время, модель телефона, координаты. Камера пишет его сама.
XMPЕщё одна «бирка» внутри файла, куда можно вписать свою подпись, — её понимают другие программы.
OCR (распознавание текста)Программа, которая «читает» буквы на картинке и превращает их в обычный текст.
Обратное геокодированиеПревращение координат (55.76, 37.61) в адрес: «Москва, Тверская ул., 7».
Нейросеть, понимающая картинки (VLM)ИИ, которому показывают изображение, а он описывает словами, что там.
СущностиВажные факты из текста: даты, суммы, телефоны, номера рейсов, адреса.
Вектор, или эмбеддингСмысл фразы, записанный числами. Близкие по смыслу фразы — близкие числа. Так «где я ел» находит «меню кафе».
Полнотекстовый поискБыстрый поиск по словам с учётом форм слова: «чеки», «чеков», «чек».
Журнал местГде был телефон в разное время (грубо, раз в несколько минут). Нужен только чтобы дать место скриншотам. Хранится лишь на телефоне.
Фоновая задачаРабота приложения, когда оно закрыто. Телефоны её ограничивают ради батареи.
Золотой наборЗаранее подписанные вручную снимки и запросы, по которым честно меряем качество.
FlutterСпособ написать экраны приложения один раз сразу для Android и iPhone.
TailscaleЗакрытая сеть между нашими машинами: сервер GX10 не виден из интернета.
Что нужно от владельца

Пять решений перед стартом

1. Название

Рабочее — «ФотоМетка». Варианты: «Подписант», «СнимкоПоиск», «Метка». Влияет на поддомен и магазины.

2. Порядок платформ

Предлагаем: Android → Mac → iPhone. Mac быстрый (2 недели) и сразу полезен в работе. Если iPhone важнее Android — меняем местами фазы 2 и 6 (срок +1 неделя из-за ограничений iOS).

3. Для кого

Для себя и команды (проще, только свой сервер) или публичный продукт (нужны магазины, политика, режим «чужое облако», оплата).

4. Журнал мест для скриншотов

Это самая «чувствительная» функция. Предлагаем: выключена по умолчанию, хранится 90 дней только на телефоне.

5. Ваши снимки для фазы 0

Нужны 300 реальных фото и скриншотов (можно без личного), чтобы честно сравнить модели на русском. Обрабатываем только на GX10, после — удаляем.