Meme Classifier
你是否在相册里屯了上千张Meme图,结果却在关键时刻脑子里已经想好了那张图,手指却在相册里划了三分钟还没找到?

Meme Classifier 为解决此痛点而生!它使用多模态 AI 模型(如 GPT-4o, Gemini)对你的Meme图进行批量OCR 识别文字、场景描述和标记标签。从此,找图只需输入关键词,快速从上千张图片中筛选出需要的那张Meme。
本项目的宗旨是一次分类,永久生效,相比于主流搜图使用的的语义向量模型,我选择了使用视觉模型识图,原因有三:
- 精准搜索: OCR 能实现对图上文字的精确匹配,这是语义搜索难以企及的。
- 信息互补: AI 生成的场景描述弥补了无文字图片的搜索盲区。
- 后续成本低: 避开了语义模型在每次搜索时对 API 的依赖。处理是一次性投入的,一次处理永久受用
效果预览
初次使用仅需点击“同步图片”,然后点击“一键处理”。系统就会开始向 AI 发送请求并接收返回的元信息存入本地 SQLite 数据库,过程支持设置并发(推荐设置为10~100,我使用Vertex Ai是能跑200并发,再高就会429了)

处理好后,就可以在搜索页愉快地搜图了。可以搜索OCR文本、AI生成的画面描述、标签,或者是搜索某个特定路径下特定名字的Meme图。

可以在图库页面下查看所有已分类、未分类的Meme:

点击卡片还可以显示AI分类的详细图片信息:

若是对AI返回的内容不满意,还可以手动修改其内容:

分类器还有标签页,标签页主要是为了快速找到某一大类图片,比如我希望立刻找到所有有关猫猫的Meme、Minecraft(我的世界)Meme图,点一下即可跳转显示所有带有该标签的图片。不过目前AI还是很喜欢返回万金油标签,以后会做一个标签字典功能,避免AI创造多个语义相同的标签,可参考已有标签列表。

PS:
分类GIF功能是使用FFmpeg将GIF转换成MP4后发送给AI的,需要自行下载FFmpeg并将其放入系统变量中。
若你使用OpenAI官方接口是不支持直接发送整个视频的,官方接口需要使用FFmpeg将GIF拆成一帧一帧的,所以如果使用官方接口需要自行魔改
若不是使用OpenAI官方接口,而是兼容OpenAI格式的Gemini或其他支持Hack写法的中转站是可以使用data:video/mp4;这样发送出去的
快速开始
想要部署一个自己的Meme分类器也很简单,需要确保电脑上安装了Node.js以及FFmpeg(若有要分类GIF)
1. 安装依赖
克隆此仓库,然后执行:
cd /path/to/Meme
npm install
2. 配置、启动
将 .env.example 重命名为 .env,并填入你的配置:
# AI提供商,支持 "vertex" 或 "openai"
AI_PROVIDER="vertex"
# Vertex AI 配置 (AI_PROVIDER="vertex"时生效)
AI_MODEL="gemini-2.5-flash" # 使用的视觉模型
AI_CREDENTIALS_FILE="xxx-xxx-xxx.json" # Google Cloud 服务账号的 JSON 密钥文件路径
AI_LOCATION="us-central1" # Vertex AI 的区域,默认us-central1
# OpenAI 兼容格式接口配置 (AI_PROVIDER="openai"时生效)
OPENAI_MODEL="gpt-4o-mini" # 使用的视觉模型
OPENAI_BASE_URL="https://api.openai.com/v1" # OpenAI API URL,默认为官方地址
OPENAI_API_KEY="" # OpenAI API Key
# 服务器配置
PORT=3000 # 服务器监听的端口,默认3000
HOST=localhost # 服务器监听的主机地址
# 代理信息
USE_PROXY=true # 是否启用代理,默认为true
HTTP_PROXY="http://127.0.0.1:10809" # HTTP代理地址
HTTPS_PROXY="http://127.0.0.1:10809" # HTTPS代理地址
3. 启动项目
npm start
访问 http://localhost:3000 即可开始使用。
项目结构
meme-gallery-system/
├── MemeImg/ # 存放Meme图(支持多级文件夹)
├── web/ # 前端静态资源
├── db/ # SQLite 数据库文件目录
├── lib/ # 后端模块
│ ├── db.js # 数据库操作
│ ├── scanner.js # 图片扫描
│ ├── ai.js # AI 交互逻辑 (Google Vertex AI、OpenAI)
│ ├── api.js # 后端API
│ └── websocket.js # WebSocket.js通信
├── config.js # 配置文件,在此配置AI参数
├── server.js # 后端
├── package.json
├── Prompt.md # AI 提示词
├── Prompt - GIF.md # GIF动图 AI 提示词
├── xxx-xxx-xxx.json # 把获取到的GCP账户凭据放在这(仅使用Vertex AI时需要)
├── README.md
└── .env # 配置文件,再次配置API密钥
目前仍有不少细节待完善,完善后会在GitHub上公开。
未来打算
- 多条件搜索过滤
- GIF等动图支持
- 标签字典
- 标签页标签云
版本更新
1.1.1 - 2026.04.18
修复首页处理中图标状态更新问题
1.1.0 - 2026.04.16
新增GIF动图支持
1.0.1 - 2026.04.16
新增标签页跳转搜索页显示,搜索页前后端将符号统一为英文半角符号
1.0.0 - 2026.04.15
Meme Classifier横空出世
门罗币钱包地址