📝 fix readme
This commit is contained in:
parent
487f3af948
commit
6b65fc2f67
2
.env
2
.env
@ -10,4 +10,4 @@ AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4o-drobotics
|
||||
|
||||
# MongoDB配置
|
||||
MONGO_URI=mongodb://localhost:27017/
|
||||
MONGO_DB_NAME=imgsearcher
|
||||
MONGO_DB_NAME=imgsearcherxx
|
||||
176
README.md
176
README.md
@ -1,99 +1,157 @@
|
||||
# 相似图片搜索系统
|
||||
# ImgSearcher
|
||||
|
||||
这是一个基于百度AI开放平台的相似图片搜索API的封装系统,提供了图片入库、检索、删除和更新等功能,并配有简洁美观的Web界面。
|
||||
一个强大的图像搜索和分析应用,结合百度图像搜索API和Azure OpenAI功能,实现智能图像识别、分类和交互式对话。
|
||||
|
||||
## 功能特点
|
||||
|
||||
- **图片入库**:将图片添加到百度相似图片搜索库中,支持添加名称、ID和标签
|
||||
- **图片检索**:上传图片搜索相似的图片,支持标签过滤
|
||||
- **图库管理**:更新和删除图库中的图片信息
|
||||
- **直观界面**:简洁美观的Web界面,操作便捷
|
||||
- **图像搜索**:使用百度图像搜索API上传和搜索相似图像
|
||||
- **图像管理**:在图像库中添加、更新和删除图像
|
||||
- **类型分类**:自动按类型分类图像并提供详细描述
|
||||
- **交互式对话**:使用Azure OpenAI集成与上传的图像进行AI对话
|
||||
- **MongoDB集成**:使用MongoDB存储和检索图像类型描述
|
||||
|
||||
## 安装与使用
|
||||
## 架构
|
||||
|
||||
### 环境要求
|
||||
应用程序采用Flask后端和响应式前端构建。它使用多个外部API和服务:
|
||||
|
||||
- Python 3.9+
|
||||
- Conda
|
||||
- Poetry
|
||||
- **百度图像搜索API**:用于图像相似度搜索和分类
|
||||
- **Azure OpenAI API**:用于图像分析和交互式对话功能
|
||||
- **MongoDB**:用于图像类型描述的持久化存储
|
||||
|
||||
### 安装步骤
|
||||
## 前提条件
|
||||
|
||||
1. 克隆或下载本项目到本地
|
||||
- Python 3.7+
|
||||
- MongoDB(本地或远程实例)
|
||||
- 百度AI平台账户,并启用图像搜索API
|
||||
- Azure OpenAI API访问权限
|
||||
|
||||
2. 使用Conda创建虚拟环境:
|
||||
## 安装
|
||||
|
||||
1. 克隆仓库:
|
||||
```bash
|
||||
conda env create -f environment.yml
|
||||
conda activate imgsearcher
|
||||
git clone https://github.com/yourusername/imgsearcher.git
|
||||
cd imgsearcher
|
||||
```
|
||||
|
||||
3. 使用Poetry安装依赖:
|
||||
2. 安装依赖:
|
||||
```bash
|
||||
poetry install
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
4. 配置API密钥:
|
||||
在项目根目录创建`.env`文件,填入百度AI平台的API密钥:
|
||||
3. 在根目录创建`.env`文件,配置如下:
|
||||
```
|
||||
BAIDU_API_KEY=你的API_KEY
|
||||
BAIDU_SECRET_KEY=你的SECRET_KEY
|
||||
# 百度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
|
||||
```
|
||||
|
||||
5. 创建上传目录:
|
||||
## 使用方法
|
||||
|
||||
1. 启动应用:
|
||||
```bash
|
||||
mkdir uploads
|
||||
./run.sh
|
||||
```
|
||||
|
||||
6. 运行应用:
|
||||
或手动启动:
|
||||
```bash
|
||||
poetry run python app.py
|
||||
python app.py
|
||||
```
|
||||
|
||||
7. 在浏览器中访问:
|
||||
2. 打开浏览器并访问:
|
||||
```
|
||||
http://localhost:5000
|
||||
http://localhost:5001
|
||||
```
|
||||
|
||||
## 使用说明
|
||||
3. 使用Web界面:
|
||||
- 上传图像到图像库
|
||||
- 搜索相似图像
|
||||
- 管理图像集合
|
||||
- 与上传的图像进行AI对话
|
||||
|
||||
### 图片入库
|
||||
## 数据迁移
|
||||
|
||||
1. 在"图片入库"标签页中,选择要上传的图片
|
||||
2. 填写图片名称和ID(用于后续识别)
|
||||
3. 可选择添加标签(最多2个,用逗号分隔)
|
||||
4. 点击"上传入库"按钮
|
||||
如果您需要从基于JSON的类型存储迁移到MongoDB,请使用迁移脚本:
|
||||
|
||||
### 图片搜索
|
||||
```bash
|
||||
python migrate_types_to_mongo.py
|
||||
```
|
||||
|
||||
1. 在"图片搜索"标签页中,选择要搜索的图片
|
||||
2. 可选择添加标签过滤条件
|
||||
3. 选择标签逻辑(AND或OR)
|
||||
4. 点击"搜索"按钮
|
||||
5. 查看搜索结果
|
||||
这将把所有类型描述从JSON文件转移到您的MongoDB实例。
|
||||
|
||||
### 图库管理
|
||||
## API端点
|
||||
|
||||
1. 先在"图片搜索"标签页进行搜索
|
||||
2. 在搜索结果中,可以对图片进行编辑或删除操作
|
||||
### 图像管理
|
||||
- `POST /upload` - 上传图像到库
|
||||
- `POST /search` - 搜索相似图像
|
||||
- `POST /delete` - 从库中删除图像
|
||||
- `POST /update` - 更新图像信息
|
||||
|
||||
## API说明
|
||||
### 对话功能
|
||||
- `GET /chat-with-image` - 访问对话界面
|
||||
- `POST /api/upload-chat-image` - 上传图像用于对话
|
||||
- `POST /api/chat` - 发送消息与AI对话关于图像
|
||||
|
||||
本系统封装了百度相似图片搜索API的以下功能:
|
||||
|
||||
- 图片入库:`/upload` (POST)
|
||||
- 图片检索:`/search` (POST)
|
||||
- 图片删除:`/delete` (POST)
|
||||
- 图片更新:`/update` (POST)
|
||||
- 获取Token:`/api/token` (GET)
|
||||
## 项目结构
|
||||
|
||||
## 注意事项
|
||||
```
|
||||
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 # 环境配置
|
||||
```
|
||||
|
||||
- 上传的图片最短边至少50px,最长边最大4096px
|
||||
- 支持JPG、PNG、BMP格式的图片
|
||||
- 每个图片可以添加最多2个标签
|
||||
- 检索接口不返回原图,只返回入库时填写的brief信息
|
||||
- 图片删除可能会有延时生效(百度API特性)
|
||||
## 开发
|
||||
|
||||
## 许可证
|
||||
### 添加新的图像类型
|
||||
|
||||
要添加新的图像类型和描述,您可以:
|
||||
|
||||
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密钥和密钥
|
||||
|
||||
MIT
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user