Написал бота для поиска локаций по теням и грунту: как устроен проект "TraceX" и почему соцсети вычищают не всё
Привет, Пикабу!
Пока все вокруг пилят очередных ботов с ChatGPT для гороскопов, я решил заморочиться по теме, которая мне реально интересна — цифровая криминалистика, геолокация и OSINT.
Все знают: если залить фотку в телегу или инсту, она сожмет качество и начисто сотрет EXIF-метаданные с GPS. Кажется, что концов не найти. Но на самом деле на любом снимке остается куча скрытых ориентиров: длина теней, угол падения света, породы деревьев, тип грунта и даже архитектурный стиль водосточных труб.
В общем, последние пару месяцев я пилил проект TraceX — бота, который пытается автоматизировать всю эту рутину криминалиста и выдать нормальный отчет с координатами.
Как это устроено под капотом:
Вместо того чтобы просто слать картинку в "Google Картинки", я собрал пайплайн из нескольких шагов:
1.ExifTool & ELA-анализ: смотрим бинарные заголовки (если они выжили) и проверяем артефакты сжатия на предмет монтажа / нейросетей.
2. Shadow Engine (расчет по теням): по направлению и длине теней алгоритм считает высоту солнца (Solar Elevation) и азимут. Это сужает время съемки буквально до пары часов и помогает отсечь не то полушарие.
3. Почвы и ботаника: сверка растений и типа грунта по классификатору WRB/ISRIC.
4. Сверка с архивами погоды: если известна дата, проверяем облачность и температуру.
5. Генерация PDF: на выходе собирается аккуратный PDF-документ с таблицей, анализом и QR-кодом прямо на карту.
Пример:
Взял обычную обзорную фотку города, прогнанную через мессенджер (никакого EXIF там нет):
Закидываем в бота и получаем на выходе скомпилированный PDF-отчет:
Что вытащил бот:
1. Вероятная точка съемки: южная башня собора Нотр-Дам де Пари (направление на запад/северо-запад).
2. Координаты: 48.8530, 2.3499 (QR-код сразу открывает точку на карте).
3. Время: тени падают на северо-северо-восток, угол солнца — съемка велась в районе 14:00–15:00 (UTC+2).
4. Растительность и почва: на набережной распознаны платаны и аллювиальный грунт бассейна Сены (Fluvisols).
С чем пришлось помучиться:
1.Верстка PDF на Python через ReportLab — это ад для перфекциониста (особенно подружить кириллические шрифты с таблицами и QR-кодами).
2. Лимиты и асинхронность: чтобы тяжелые запросы не клали бота, пришлось переписать очереди обработки.
3. Защита от спама: бот защищен от набегов ботов.
Кому интересно покрутить инструмент, проверить старые фотки из отпуска или попытаться запутать алгоритм сложным кадром — бот живет тут: @TraceeeX_bot.
Кидайте в комменты сложные фото или делитесь идеями, что еще полезного можно прикрутить.
Всех благ!









