📝 fix readme

This commit is contained in:
eust-w 2025-04-11 14:28:02 +08:00
parent 487f3af948
commit 6b65fc2f67
9 changed files with 118 additions and 60 deletions

2
.env
View File

@ -10,4 +10,4 @@ AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4o-drobotics
# MongoDB配置 # MongoDB配置
MONGO_URI=mongodb://localhost:27017/ MONGO_URI=mongodb://localhost:27017/
MONGO_DB_NAME=imgsearcher MONGO_DB_NAME=imgsearcherxx

176
README.md
View File

@ -1,99 +1,157 @@
# 相似图片搜索系统 # ImgSearcher
这是一个基于百度AI开放平台的相似图片搜索API的封装系统提供了图片入库、检索、删除和更新等功能并配有简洁美观的Web界面 一个强大的图像搜索和分析应用结合百度图像搜索API和Azure OpenAI功能实现智能图像识别、分类和交互式对话
## 功能特点 ## 功能特点
- **图片入库**将图片添加到百度相似图片搜索库中支持添加名称、ID和标签 - **图像搜索**使用百度图像搜索API上传和搜索相似图像
- **图片检索**:上传图片搜索相似的图片,支持标签过滤 - **图像管理**:在图像库中添加、更新和删除图像
- **图库管理**:更新和删除图库中的图片信息 - **类型分类**:自动按类型分类图像并提供详细描述
- **直观界面**简洁美观的Web界面操作便捷 - **交互式对话**使用Azure OpenAI集成与上传的图像进行AI对话
- **MongoDB集成**使用MongoDB存储和检索图像类型描述
## 安装与使用 ## 架构
### 环境要求 应用程序采用Flask后端和响应式前端构建。它使用多个外部API和服务
- Python 3.9+ - **百度图像搜索API**:用于图像相似度搜索和分类
- Conda - **Azure OpenAI API**:用于图像分析和交互式对话功能
- Poetry - **MongoDB**:用于图像类型描述的持久化存储
### 安装步骤 ## 前提条件
1. 克隆或下载本项目到本地 - Python 3.7+
- MongoDB本地或远程实例
- 百度AI平台账户并启用图像搜索API
- Azure OpenAI API访问权限
2. 使用Conda创建虚拟环境 ## 安装
1. 克隆仓库:
```bash ```bash
conda env create -f environment.yml git clone https://github.com/yourusername/imgsearcher.git
conda activate imgsearcher cd imgsearcher
``` ```
3. 使用Poetry安装依赖: 2. 安装依赖:
```bash ```bash
poetry install pip install -r requirements.txt
``` ```
4. 配置API密钥 3. 在根目录创建`.env`文件,配置如下:
在项目根目录创建`.env`文件填入百度AI平台的API密钥
``` ```
BAIDU_API_KEY=你的API_KEY # 百度API配置
BAIDU_SECRET_KEY=你的SECRET_KEY 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 ```bash
mkdir uploads ./run.sh
``` ```
或手动启动:
6. 运行应用:
```bash ```bash
poetry run python app.py python app.py
``` ```
7. 在浏览器中访问: 2. 打开浏览器并访问:
``` ```
http://localhost:5000 http://localhost:5001
``` ```
## 使用说明 3. 使用Web界面
- 上传图像到图像库
- 搜索相似图像
- 管理图像集合
- 与上传的图像进行AI对话
### 图片入库 ## 数据迁移
1. 在"图片入库"标签页中,选择要上传的图片 如果您需要从基于JSON的类型存储迁移到MongoDB请使用迁移脚本
2. 填写图片名称和ID用于后续识别
3. 可选择添加标签最多2个用逗号分隔
4. 点击"上传入库"按钮
### 图片搜索 ```bash
python migrate_types_to_mongo.py
```
1. 在"图片搜索"标签页中,选择要搜索的图片 这将把所有类型描述从JSON文件转移到您的MongoDB实例。
2. 可选择添加标签过滤条件
3. 选择标签逻辑AND或OR
4. 点击"搜索"按钮
5. 查看搜索结果
### 图库管理 ## 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