o3 击败了一位 Master 级别的 GeoGuessr 玩家——即使用假的 EXIF 数据也没用
在这场比赛中,我试图暂时保持人类的“霸主地位”
更新:Hello HN 和 MR 的朋友们!以下是两个快速更新:
很多评论提到 o3 模型在 5 局中有 2 局使用了搜索,这样做不太公平。为了看看搜索是否真的起了关键作用,我重新在“临时聊天”(Temporary Chat)中让它猜了那两局,并确保不使用搜索。结果几乎完全一样,你可以自己去验证——我已经把新结果也放到文章里了。
我现在失业了,非常希望能找到工作。如果你有项目需要用到地图数据——或者任何有意思的东西——欢迎发邮件找我聊。
更新 2:目前这张地图已经有 100 名玩家玩过了!o3 现在依然稳居第 11 名。

简要概述(TL;DR)
在一次 GeoGuessr 1 对 1 对决中,OpenAI 的 o3 模型以 23,179 分对 22,054 分击败了我——一位 Master I 级别的人类玩家。它准确识别出了所有 5 个国家,并有两次猜得相距仅几百米。即使我在图片的 EXIF 中嵌入了假 GPS 坐标,模型也忽略了这个“诱饵”,依然准确定位到真实地点,证明它的能力来自视觉推理和动态网络搜索——而不是读取隐藏的元数据。
背景
几天前,Simon Willison 发了一篇帖子到 Hacker News,讨论了 o3 模型在地理定位(geolocation)方面的惊人能力。他给模型一些图片,它就能相当精准地判断地理位置。
我在评论区分享了身为 GeoGuessr 玩家的一些看法:
我在 GeoGuessr 上算是打得比较“硬核”了,想试试这个模型到底行不行。
结果让我非常震惊。
它会利用已知的关于你的各种信息来推断答案——比如我给它看一张我家附近的照片,它就直接猜到那个徒步小径的入口,并且提到它知道我住在附近。
但我也给它看了很久以前出门旅行的照片,而且不全是热门景点。它都猜得比专业人类玩家还准。欧洲、中美洲、美国各种地方的图片它都能猜到。
它的推理过程和人类有点类似:看植被、地形、建筑、道路、标牌……但又好像对这些都“全知全能”。
人类也能学到类似的方法,不过你可能需要上千场对局或者非常专门的研究,才能形成那种广泛而细致的知识。比如我就给自己做了一个有上百条细节的记忆卡片,用来记各种道路线、电线杆、防撞桩、建筑风格、车牌等等。而这些模型掌握的知识远远超过一个人脑容量能记下的极限。
那篇帖子以及我的评论在 HN 上得到不少关注,也引发了很多有趣的讨论。Simon 也在自己的网站发了一篇短文提到我的分享。
多数人都和我们一样,对模型惊人的表现感到难以置信。但也有两种质疑声音:
模型只是通过读取 EXIF 数据在装腔作势(即“LLM 在骗我们”),根本不是靠真正的推理。
模型其实没那么强,只是我们精心挑选了案例或运气好才显得厉害。
确实,这些模型在有 EXIF 数据可读时往往会用,而且可能不会主动告诉你。就像我分享的那则故事:
我曾参加了一个 AI Safety 相关的项目,目标是给 AI 图像地理定位做基准测试。[也就是那个时候开始,我迷上了 GeoGuessr!]
起初,实验结果好得离谱,连一些公开的基础模型也能猜到很难的地点,而且分辨率还不高。
后来才发现,我们提供给模型的图片文件名里就带了地理位置信息,模型直接给利用了……这是我们自己的疏忽。
然而,EXIF 那个事情被夸大了。我在测试里用的都是截图,根本不含任何元数据,但 o3 依然表现出色。
不过有人提出了新的想法:
你不如试试给图片加上伪造的 EXIF 数据,比如把一片森林的照片 EXIF 坐标改成时代广场,看它会不会中招。
或者说,我们可以搞些假元数据来试它。
这样就能看出它到底会不会去“二次确认”这些数据,或者在被故意误导时做何反应。
好嘛,那就来测试一下。我想以此证明:
1)EXIF 并非决定性因素;
2)这个模型的 GeoGuessr 水平确实很强。
我的水平
先自我介绍一下:我可不是那种顶级 GeoGuessr 神仙选手,比如 Rainbolt 或 Zi8gzag 那种。他们是职业玩家,全职创造内容,也玩了好多年。
GeoGuessr 有一个基于 Elo 的天梯分段,顶级分段叫 Champion,我所在的段位是 Master I(再往下是 Master II、Gold、Silver、Bronze 等)。
我目前还在努力冲 Champion,我历史最高 Elo 是 1188,而 Champion 大概从 1230 开始。
也就是说,我是一个 Master,但称不上“特级大师”或者“国际大师”。
我算有一定资格评判模型在 GeoGuessr 上的表现,也能判断它的思路是否合理或只是胡说。本文我也会把自己的推理过程分享出来,好让读者对比模型的推理。
测试方法
地图和种子:使用 Community World 这张地图,种子
gDq4wXvsLU3oNuY8
你也可以点这里挑战。模式:No Move。我能看到完整的 Street View 全景,而 o3 只有两张 90° 截图(正对和背对)。
浏览/工具:o3 开启了正常的网络访问。PNG 文件没有任何 EXIF;而在伪造元数据测试时,我使用压缩包来保留 GPS 信息。
计分:标准 GeoGuessr 规则,每局 0~5000 分,总共 25000 分满分。
o3 的输出通常非常长,这里如果全贴上,文章就太臃肿了。所以我把它们独立放在链接里,感兴趣可以去看。
另外,o3 产生的 Chain of Thought(思考链)里还包含一些截图,我为节省篇幅就不贴了(它会自动裁剪多张参考图)。

我使用了“临时聊天(Temporary Chat)”模式,这样之前的对话不会对它的定位结果造成影响。
正面交锋
Round 1 - 保加利亚
人类玩家的思路

我的第一感觉是欧洲或土耳其。然后我注意到电线杆和后面那些红瓦屋顶:

我几乎能肯定这是保加利亚。那里常见这种真正的红瓦,水泥电线杆上带向上弯钩也是很典型。
我继续环顾四周,确认了想法。确定国家后,我就开始想大概在哪个区域。
地形看起来是丘陵地貌,风格比较偏南。
我在地图上随便挑了个看着还行的点放标。
o3 的推理
思考耗时 2 分 39 秒
它的结论是:保加利亚南部——罗多彼山脉小镇 Zlatograd(斯莫梁州),具体到 Smolyan 省的 Zlatograd。
结果

我稍微更近一点,但差距很小,只多拿了大约 100 分。
总之我感觉开局不错。
Round 2 - 奥地利
人类玩家的思路

第一眼就很欧洲。看起来像瑞士或者奥地利的建筑,然后我看到车后面那个域名是 .at
,那就太明显了!
好吧,模型会不会也去看这个域名呢?
接着我尝试猜奥地利哪里。看山地程度似乎不算特别高,我猜应该是在国家东部那片丘陵地区。

结果其实这是奥地利最西边接近瑞士和德国的地方,恰好那段地势也没那么险峻……我一下子离得 381 公里,给了 o3 机会。它能不能抓住呢?
o3 - 使用了搜索的版本
(我忘记了这一回合的详细思考记录,之后想查看却发现是“临时聊天”,已经找不到了。)
它的结论是:
多恩比恩(Dornbirn),福拉尔贝格州,奥地利,大致坐标 (47.41 N, 9.73 E),就在市中心东北几条街的范围。
为什么它猜那儿
线索 | 表明什么 |
背景的山 | 看上去像 Dornbirn 东面的那座山 Karren/Kapf,也在莱茵河谷附近。 |
建筑风格 | 带有 Bregenzerwald 样式的木质房子,还有红白相间的“Rheintaler Riegelhaus”,在福拉尔贝格州北部很常见。 |
街道设施 | 奥地利那种蓝底白字的街道名牌、小红白门牌、欧盟式的交通标识等等。 |
出租车 | 后窗贴着 “www.taxilinder.at”,查一下(它用 Google)就知道是多恩比恩。 |
车牌模糊区域 | 奥地利风格,但看不清具体区域编码。 |
地势 | 平坦的谷地正好旁边就有很高的山,和多恩比恩城市区外的地形很吻合。 |
综上,它认定多恩比恩,而且说只在河以北几百米处就能找到和图中非常相似的街区。
结果

它几乎 5K 了,因为猜得只差几百米。
这就让人很无奈——感觉“作弊”了,因为它利用了网络搜索查了那个出租车域名。不过,它确实赢了。
更新:后来我又让它再猜一遍,这次不用搜索。结果还是几乎一样,它是靠山脉轮廓而不是域名推出来的。
目前 o3 领先我大约 800 分,我急需逆袭。
o3 - 不使用搜索版本
o3 geoguessr battle austria without search
它依然把坐标精确到 多恩比恩,福拉尔贝格州,奥地利,(47.41° N, 9.74° E),只是通过分析地形山脉、房屋风格、车牌式样等信息得出的结论。下图显示它不靠搜索也能识别那座山:

Round 3 - 爱尔兰
人类玩家的思路

第一反应是爱尔兰。那种黄线在马路外侧的标线很有辨识度,再结合欧盟式车牌,可以 100% 说这是爱尔兰。
接着我发现左侧就是大海,西边一望无际,但远处似乎还能看到陆地?
也许是西海岸,不过西北方向还有其他岛屿?
我花了几分钟在地图上比对道路朝向、海岸分布,想冲击 5K。
o3 - 使用了搜索的版本
它推断这应该是 County Clare 的 The Burren 区域,具体是 R477 “Coast Road”,位置在 Fanore 和 Ballyvaughan 之间,紧靠 Black Head 往东南,大约在 53.120° N, -9.285° W。
o3 - 不使用搜索版本
o3 geoguessr Ireland without search
它给出的结论几乎相同:
County Clare 的 R477 沿岸公路(Burren 岩溶地貌区),在 Black Head/Fanore 附近,坐标大约 53.13 N, -9.30 W。
结果

它大约只差一公里,而我差 10 公里,基本是同一个量级,但它更准一点。
它的思维链里确实说到它会用搜索,但其实你看它整个推理过程,也基本是先看完所有路面、车牌、岩石、海岸,再去搜索做确认。
更新:后来看确实如此,就算不搜索,它也能拿到差不多的结论。
Round 4 - 哥伦比亚
人类玩家的思路

感觉是南美。路面标线有点像巴西,但车牌全是黄牌,这在哥伦比亚很常见。
我继续找更多线索,看到这张路牌背面有个哥伦比亚特有的十字:

那就完全确定了是哥伦比亚。接着我看地势这么平,这在哥伦比亚不多见,估计要么在安第斯山脉以东,要么在海岸区。我看见很多棕榈树,土看起来有点浅色/沙质,所以我猜是靠海。
o3 的推理
o3 geoguessr battle round 4 CoT
它判断这是“哥伦比亚加勒比平原,Ruta 25 / Troncal de Occidente 连接 Sincelejo 和 Caucasia 那片区域”。
最终猜:
“Ruta 25 在 Córdoba 省西面的 Planeta Rica 附近,大约 8.4° N, -75.6° W。”
结果

结果它确实比我更近,我太偏北了,其实正确点在稍南。
它在思考链里还提到另一个更近的城镇,但最后总结时却选了个相对远点的。
无论怎样,它依然拿到更高分。
现在它领先我大约 1300 分,只剩最后一局。
最后一局 - 斯洛伐克
人类玩家的思路

乍一看就是欧洲中东部。
看到路边这个防撞柱:

这只在捷克或斯洛伐克出现。地形上看是平原,但远处有山,所以两国都有可能。
然后我瞄到一个路标:

不太清楚地写了啥,我瞎琢磨是不是“Kosice”,那在斯洛伐克东面。但我也不知道会不会看错了……如果猜错是捷克,那就离太远。于是我就选了捷克东部,想做个保守猜测。

不太好……事实证明确实是 Košice 附近,那个带 M 开头的其实是 Michalovce,我看成了 H……
不过反正我是猜错了。
o3 的推理
o3 geoguessr battle round 5 CoT
它最终给出的结论是:
“斯洛伐克西南部多瑙河沿岸地区,63 号国道 (road 63),在 Šamorín 附近,也就是 48.03 N, 17.40 E。”
结果

它国家猜对了,但距离比我还要远一点点。我虽然国别猜错,但位置离最终点数上反而接近一丁点……
不过就算我这一局稍微扳回了点分,远远不够逆转。
最终得分

我总分 22,054 / 25,000。
对我而言,5 局拿到 22k 还算不错了,尤其随机地图往往我只能拿 18k 左右。
但 o3 拿了 23,179,比我高出 1,100 多分。

局 | 国家 | 人类距离 (km) | o3 距离 (km) | 人类得分 | o3 得分 | o3 是否用搜索 |
1 | 保加利亚 | 54 | 63 | 4856 | 4755 | 否 |
2 | 奥地利 | 381 | 0.4 | 3336 | 4999 | 是(域名查询) |
3 | 爱尔兰 | 10 | 1.2 | 4984 | 4997 | 是(验证) |
4 | 哥伦比亚 | 298 | 82 | 3983 | 4699 | 否 |
5 | 斯洛伐克 | 173 | 265 | 4895 | 4729 | 否 |
总分 | 22054 | 23179 |
(加粗表示那回合的胜利者)
o3 拿到 23,179 分,最终赢我 1,100 多。
在某几局我确实猜得更准,但它在有些局几乎做到了 5K,我根本顶不住。
它还成功地猜对了所有 5 个国家。我只是在第一局和最后一局略微领先。
在某些回合中它确实用到了搜索(尤其奥地利那局),但总体来说,即使在没用搜索的回合它也很强。
从速度上看,人类目前还占优:我通常 1-2 分钟之内就会做决定,而 o3 好几次都花了超过 4 分钟甚至 6 分钟的思考时间。
别忘了,它只看到了两张 90° 截图,还没有任何元数据,也没额外提示,就能有这水平。
EXIF 伪造测试
正如开头说的,我尝试给截图添加假的 EXIF GPS 信息,看看能不能坑到它。
结果发现,这事儿本身比我想的还复杂……
我先用 exiftool
把一张真正含 GPS 的图片元数据替换到截图里,然而模型并不会读取。它说浏览器上传会把 EXIF 数据剥离了,压根看不到。
我只好把图片打包成 zip 后上传。这样它才拿到 EXIF 坐标。
第一次尝试,模型压根没提到 EXIF 数据,我追问后它才说:
我从 JPEG 里读到这段 EXIF GPS,坐标看起来在曼谷郊区,这明显和画面里的安第斯山风光对不上。要么是你把截图二次编码了,要么是相机当时定位不准。
好吧……那么我尝试另一种方式,把 EXIF 详细信息用 exiftool
打印出来,再以文字形式贴到聊天里。
模型的反应是:
哦,你想骗我?EXIF 里写着 43°N,尼康 P6000 相机,但这场景明显是个冷杉、桦树混生的北欧秋季景致,根本不可能是托斯卡纳(Tuscany)什么的……
它还列了个表:
线索 | 显示了什么 |
森林种类、地被、落叶树枝等 | 典型的北欧景观 |
没有中央黄线,只有两道长虚线边缘 | 挪威那种县级道路风格 |
防撞栏样式 | 挪威公路部门常见设计 |
桁架桥 | 1960 年代以后挪威常见的预制桥梁结构 |
河谷地形 | 中部挪威典型场景 |
Google 水印 | 说明是 Street View 而非尼康 P6000 拍的 |
然后它一口咬定这是挪威 Trøndelag 省某地的公路桥,连河流名字都说得出来……
所以从我的两次测试看,无论是伪造 EXIF 还是在 Chat 里提供假元数据都不顶用。o3 根本不吃这一套,或者说它会比对图片实际内容,一旦不符,它就知道 EXIF 有问题,也就无视了。
当然,我也不知道别人怎么让模型自动去读取图片里的 EXIF 并上钩的。如果你有成功骗过它的方法,欢迎告诉我。但至少对我来说,它没有被假 EXIF 误导。
总结
它的思考链是否可信?
大部分时候看起来挺合理的。确实有时它会花大量篇幅在些无关紧要的小事上,比如广告牌,但是总的来说,它判断路标、车牌、路面线之类的描述都是靠谱的。
最后它能猜得又快又准,应该确实是凭这些信息推理出来的。
如果它用了其他方式,那绝对不是读取图片里的 EXIF 数据(因为我特地伪造了,还被它识破)。它确实会尝试做网络搜索,比如奥地利那一回合就查到了具体城市,爱尔兰那局可能也是辅助确认。但同样的,在不搜索时它依旧一样准。
所以最终结论:
o3 模型并不是靠读取 EXIF 元数据在骗人。它确实具备不输 Master I 水平的人类玩家的地理定位能力。(至少从我这 20 来局的体验看是这样。)
在速度上,人类依旧比较快——我通常不到两分钟就猜完,而它要 4 分钟甚至 6 分钟以上。
伪造 EXIF 数据并不能让它“中招”。
至于你觉得这是一个科技上的奇迹,还是有些“赛博·反乌托邦”,那就见仁见智了。但它绝非单纯的“障眼法”。它是真真切切能“看图猜地点”的。