4.6 KiB
4.6 KiB
ImgSearcher
一个强大的图像搜索和分析应用,结合百度图像搜索API和Azure OpenAI功能,实现智能图像识别、分类和交互式对话。
功能特点
- 图像搜索:使用百度图像搜索API上传和搜索相似图像
- 图像管理:在图像库中添加、更新和删除图像
- 类型分类:自动按类型分类图像并提供详细描述
- 交互式对话:使用Azure OpenAI集成与上传的图像进行AI对话
- MongoDB集成:使用MongoDB存储和检索图像类型描述
架构
应用程序采用Flask后端和响应式前端构建。它使用多个外部API和服务:
- 百度图像搜索API:用于图像相似度搜索和分类
- Azure OpenAI API:用于图像分析和交互式对话功能
- MongoDB:用于图像类型描述的持久化存储
前提条件
- Python 3.7+
- MongoDB(本地或远程实例)
- 百度AI平台账户,并启用图像搜索API
- Azure OpenAI API访问权限
安装
-
克隆仓库:
git clone https://github.com/yourusername/imgsearcher.git cd imgsearcher -
安装依赖:
pip install -r requirements.txt -
在根目录创建
.env文件,配置如下:# 百度API配置 BAIDU_API_KEY=你的百度API密钥 BAIDU_SECRET_KEY=你的百度Secret密钥 APP_ID=你的百度应用ID # Azure OpenAI配置 AZURE_OPENAI_API_KEY=你的Azure_OpenAI_API密钥 AZURE_OPENAI_ENDPOINT=你的Azure_OpenAI端点 AZURE_OPENAI_API_VERSION=2023-12-01-preview AZURE_OPENAI_DEPLOYMENT_NAME=你的部署名称 # MongoDB配置 MONGO_URI=mongodb://localhost:27017/ MONGO_DB_NAME=imgsearcher
使用方法
-
启动应用:
./run.sh或手动启动:
python app.py -
打开浏览器并访问:
http://localhost:5001 -
使用Web界面:
- 上传图像到图像库
- 搜索相似图像
- 管理图像集合
- 与上传的图像进行AI对话
数据迁移
如果您需要从基于JSON的类型存储迁移到MongoDB,请使用迁移脚本:
python migrate_types_to_mongo.py
这将把所有类型描述从JSON文件转移到您的MongoDB实例。
API端点
图像管理
POST /upload- 上传图像到库POST /search- 搜索相似图像POST /delete- 从库中删除图像POST /update- 更新图像信息
对话功能
GET /chat-with-image- 访问对话界面POST /api/upload-chat-image- 上传图像用于对话POST /api/chat- 发送消息与AI对话关于图像
项目结构
imgsearcher/
├── app/
│ ├── api/
│ │ ├── azure_openai.py # Azure OpenAI集成
│ │ ├── baidu_image_search.py # 百度图像搜索API客户端
│ │ ├── image_utils.py # 图像处理工具
│ │ ├── type_manager.py # 基于JSON的类型管理器
│ │ └── type_manager_mongo.py # 基于MongoDB的类型管理器
│ ├── data/
│ │ └── type_descriptions.json # 类型描述(JSON格式)
│ ├── static/
│ │ ├── css/ # CSS样式表
│ │ ├── js/ # JavaScript文件
│ │ └── img/ # 静态图像
│ └── templates/
│ ├── index.html # 主应用页面
│ └── chat.html # 对话界面页面
├── uploads/ # 上传图像目录
├── app.py # 主应用入口点
├── migrate_types_to_mongo.py # 类型数据迁移脚本
├── requirements.txt # Python依赖
├── run.sh # 启动脚本
└── .env # 环境配置
开发
添加新的图像类型
要添加新的图像类型和描述,您可以:
- 使用Web界面上传带有新类型的图像
- 直接向MongoDB集合添加条目:
from app.api.type_manager_mongo import TypeManagerMongo manager = TypeManagerMongo() manager.add_type("新类型名称", "新类型的详细描述")
扩展对话功能
可以通过修改app.py中的chat()函数和app/api/azure_openai.py中的Azure OpenAI集成来扩展对话功能。
故障排除
- MongoDB连接问题:确保MongoDB正在运行,并且
.env文件中的连接URI正确 - 图像上传失败:检查上传目录是否存在并具有适当的权限
- API认证错误:验证
.env文件中的API密钥和密钥