
在日常生活和开源情报(OSINT)领域,通过一张毫无标记的照片找出其确切拍摄位置,一直是一项让人着迷的技能。过去,这项任务需要专业的地理侦探(Geo-guessers)通过比对路灯形状、土壤颜色、天际线甚至太阳角度来逐一排查。
随着 AI 大语言模型的崛起,已经有不少基于纯视觉大语言模型(Vision Model)的 AI 图片地理定位工具,例如 GeoSpy、GeoCLIP、EarthKit 等,这些工具会分析建筑、道路、植被、地形等视觉特征,直接预测照片最可能出现的国家、城市甚至坐标。在《AI 识别照片拍摄地点工具汇总》中对这些工具有过汇总。
但是,这些纯视觉大语言模型存在缺乏可解释性、容易产生幻觉,且对无特征的自然风光力不从心。
最近有个开源项目 Geo-Sleuth 走了一条完全不同的路线:它不是简单地让 AI“凭感觉猜”,而是让 AI Agent 像真正的 OSINT 调查员一样,去拆解、推理、调取开源数据并交叉验证。
Geo-Sleuth:https://github.com/Oldcircle/geo-sleuth
Geo-Sleuth 是一个标准的 Agent Skill,专门给 Claude Code、Cursor、Codex、Gemini CLI、OpenCode、GitHub Copilot 等支持 SKILL.md 的 AI 编程代理使用。
Geo-Sleuth 的核心 slogan 是:“找到照片拍摄地点,并展示它的推理过程”。即使照片没有文字、没有车牌、没有明显地标,只要有一座桥、一条山脊或一组规则结构,它也能把相机位置锁定到几米以内,并给出误差半径、镜头朝向和卫星证据图。
Geo-Sleuth 不是让大模型“看图瞎猜”,而是把定位拆成可执行的脚本流水线:
1. Intake 层
提取 EXIF、OCR 文字,并用百度和 Yandex 反向搜图。
2. 决策层(board.py)
维护候选池,按似然比排序,决定下一步该查什么。
3. 感知层
使用 OpenStreetMap 几何查询(桥、铁路、电线、行道树等);高程数据(AWS Terrain Tiles)做天际线匹配;阴影与太阳方位计算;卫星图与街景匹配(CLIP + DINOv2 + SIFT)。
4. 判断层
模型只在排名靠前的几个候选里做最终选择,而不是从全球范围瞎猜。
最终输出包括:坐标 ± 误差半径、相机朝向、证据卫星图、分级置信度,以及每一步对应的命令和产出文件。这种设计让结果可复现、可审计。
与 GeoSpy、GeoCLIP、EarthKit 等相比,Geo-Sleuth 的独特突破点:
1) 从“黑盒直觉”到“严密推导”
使用 GeoSpy 等网页服务时,如果你上传一张荒野照片,模型可能会告诉你:“这有 80% 的概率在犹他州”。但你无法得知它为什么做出这一判断。
Geo-Sleuth 则完全不同。它的输出类似一份专业的调查报告:
“根据图像分析,拍摄者面向正东 $85^\circ$。背景山峰的天际线与 Shuttle Radar Topography Mission (SRTM) 数据在 Lat X, Lon Y 位置匹配度达到 94.2%;前方道路与 OSM 中的数据库记录一致,确定拍摄点位于…”
2) 攻克“无特征荒野”难题
传统的视觉神经网络非常依赖图像中的文本、标志性建筑、特定路牌等语义特征。遇到没有建筑的自然风光,传统 AI 几乎瘫痪。而 Geo-Sleuth 可以调用高程数据和山脊线算法,将“天际线”变成独一无二的地理指纹。
3) 数据隐私与本地控制
对于涉及个人隐私、敏感地理信息或企业内部资产的照片,将其上传到公开的在线 SaaS 平台存在泄露风险。Geo-Sleuth 作为一个开源的 Agent Skill,所有数据计算均在本地或你指定的私有环境完成,不存在数据被第三方收集的风险。
Geo-Sleuth 局限性:
- 不是即开即用的网页服务,需要安装 skill 并配合支持 shell 的 AI 代理。
- 速度慢,复杂案例可能耗时一小时以上。
- 对照片质量和数据覆盖有要求(OSM 稀疏或缺乏几何特征时效果下降)。
- 首次使用需要跑环境检查脚本(doctor.py)。
日常使用推荐方案:
想快速随手查一张图:优先用 geospy.info 、geospy.net 之类的在线工具,方便且免费。
想要开源、可扩展、结合 OSM 查询的工作流:EarthKit + GeoCLIP 是不错的中间选择。
需要严谨、可解释、米级精度的调查(尤其有桥梁、山脊、规则结构、行道树等线索时)时候,使用geo-sleuth 。
由于 geo-sleuth 本身最耗时的就是区域扫描,因此可以先用 GeoCLIP 热力图或者大模型做一次粗筛,拿到候选区域;再把这个区域作为先验交给 geo-sleuth 做精细定位和验证。