所谓世人,不就是你吗?——太宰治《人间失格》

GitHub - soruly/trace.moe: Anime Scene Search by Image

https://trace.moe/

trace.moe:通过截图识别番剧的开源神器

trace.moe 是一个开源的番剧识别服务,通过上传任意一帧截图,即可快速识别出该画面来自哪一部动画、哪一集,甚至精确到具体的时间点。其核心目标是为动漫爱好者、视频剪辑师和弹幕平台提供“以图识番”的能力。


一、项目简介

trace.moe 由 @soruly 开发,提供完整的后端识别引擎、Web API 接口以及前端页面,支持本地部署和线上使用。用户可以通过网页上传截图,也可以通过 API 集成进第三方应用。

该项目已部署于 https://trace.moe,开放免费使用,也支持自行搭建私有服务。


二、核心功能

  • 以图搜番:通过上传图片识别动画出处,返回标题、集数、时间戳、相似度等。

  • 时间定位:输出画面在原动画中出现的时间范围,支持跳转播放。

  • 多语言支持:返回中英日等多语种标题信息。

  • 公开 API:适用于 Bot、插件、弹幕系统等集成。


三、工作原理

  1. 使用 ffmpeg 将动画视频帧提取为图像特征向量;

  2. 使用 anime-face-detection 检测画面中的面部特征;

  3. 将图像向量存入 annoy 索引中,用于高效相似度匹配;

  4. 上传查询图像后,提取其特征,与索引库进行比对;

  5. 返回最相似帧的信息,包括标题、集数、时间等。


四、本地部署方式

trace.moe 提供 Docker 支持,可快速本地部署:

1
2
3
git clone https://github.com/soruly/trace.moe.git
cd trace.moe
docker compose up -d

可选地,也可以使用 yarnnode 手动部署前端与后端服务。


五、API 使用示例

图片 POST 查询:

1
2
curl -X POST https://api.trace.moe/search \
-F "image=@screenshot.jpg"

响应数据结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"result": [
{
"anilist": 12345,
"filename": "ep01.mp4",
"episode": 1,
"from": 123.45,
"to": 126.78,
"similarity": 0.954,
"video": "https://media.trace.moe/video/...",
"image": "https://media.trace.moe/image/..."
}
]
}

六、适用场景

  • 番剧爱好者查找出处

  • 弹幕网站自动匹配弹幕源

  • 视频剪辑工具识别素材来源

  • 社区答题类互动(如 “来猜番”)


七、项目亮点

  • 高相似度识别:即使画面模糊也能精准匹配;

  • 自建灵活:支持私有部署、个性化索引;

  • 实时查询:在线响应快速,适合集成化使用;

  • 持续维护:项目更新频繁,社区活跃。


八、结语

trace.moe 是“以图识番”领域的代表项目,简单高效、开放易用。无论是动漫站点、二次元工具、Bot 开发者,还是普通动画爱好者,都能从中获益。

如果你对技术细节感兴趣,欢迎深入阅读其 GitHub 源码仓库,并尝试搭建属于你的番剧识别服务。