imgsearcher/README.md
2025-04-11 14:28:02 +08:00

158 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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访问权限
## 安装
1. 克隆仓库:
```bash
git clone https://github.com/yourusername/imgsearcher.git
cd imgsearcher
```
2. 安装依赖:
```bash
pip install -r requirements.txt
```
3. 在根目录创建`.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
```
## 使用方法
1. 启动应用:
```bash
./run.sh
```
或手动启动:
```bash
python app.py
```
2. 打开浏览器并访问:
```
http://localhost:5001
```
3. 使用Web界面
- 上传图像到图像库
- 搜索相似图像
- 管理图像集合
- 与上传的图像进行AI对话
## 数据迁移
如果您需要从基于JSON的类型存储迁移到MongoDB请使用迁移脚本
```bash
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 # 环境配置
```
## 开发
### 添加新的图像类型
要添加新的图像类型和描述,您可以:
1. 使用Web界面上传带有新类型的图像
2. 直接向MongoDB集合添加条目
```python
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密钥和密钥