Files
recommend/README.md

370 lines
12 KiB
Markdown
Raw Permalink Normal View History

# 🍽️ 个性化饮食推荐APP
一个基于机器学习和OCR技术的智能饮食推荐系统具有现代化的移动端界面和强大的AI分析能力。
## ✨ 最新特性
### 📷 OCR热量识别
- **多引擎OCR支持**Tesseract、PaddleOCR、EasyOCR
- **智能图片识别**:自动识别食物名称和热量信息
- **多级验证机制**OCR结果 + 数据库匹配 + 用户确认
- **学习优化系统**:从用户修正中持续学习改进
- **一键记录**:拍照即可完成餐食记录
### 🎨 现代化界面设计
- **圆角设计系统**:统一的圆角主题,减少方形元素
- **多色主题支持**:主色、次色、强调色等多种配色
- **移动端适配**:专为手机屏幕优化的界面布局
- **卡片式设计**:清晰的信息层次和视觉反馈
- **响应式交互**:悬停效果和状态变化
## 🎯 核心功能
### 1. 智能数据采集
- **OCR图片识别**:📷 拍照识别食物热量信息
- **5天三餐数据记录**:详细记录早中晚三餐的饮食内容
- **用户偏好问卷**:口味偏好、饮食习惯、过敏信息等
- **生理周期跟踪**:针对女性的生理期、排卵期等特殊时期
- **个性化因素**:星座、性格特征等参考因素
### 2. 机器学习推荐引擎
- **个人饮食模型训练**:基于用户历史数据训练个性化模型
- **持续学习机制**:根据用户反馈不断优化推荐
- **偏好矫正**:用户不喜欢或已食用食物的反馈学习
- **多因素融合**:结合生理周期、星座等多维度因素
### 3. AI大模型分析
- **千问大模型集成**:智能营养分析和建议生成
- **热量分析**:每日饮食热量计算和评估
- **营养建议**:基于大模型的智能营养建议
- **个性化指导**:结合用户特征的定制化建议
### 4. 现代化应用界面
- **移动端设计**:模拟小程序/安卓App的界面体验
- **圆角美化**:统一的圆角设计语言
- **多色主题**:丰富的颜色搭配和视觉层次
- **实时推荐**:动态推荐系统
- **数据可视化**:饮食趋势、营养分析图表
## 🏗️ 技术架构
### 核心基座
- **统一基座架构**:模块化设计,支持功能扩展
- **SQLite数据库**:轻量级本地数据存储
- **事件总线系统**:模块间通信和事件处理
- **数据管理器**:统一的数据访问接口
### OCR识别技术
- **Tesseract OCR**开源OCR引擎支持中英文
- **PaddleOCR**百度开源OCR中文识别优秀
- **EasyOCR**简单易用的多语言OCR库
- **OpenCV**:图像预处理和增强
- **PIL/Pillow**:图像处理和格式转换
### 机器学习
- **scikit-learn**:推荐算法实现
- **pandas/numpy**:数据处理和分析
- **joblib**:模型序列化和加载
- **TF-IDF向量化**:文本特征提取
### AI大模型集成
- **千问大模型**阿里云通义千问API
- **智能分析**:用户意图分析和营养建议
- **个性化推理**:基于用户特征的智能推荐
### 现代化界面
- **CustomTkinter**现代化Python GUI框架
- **移动端设计**375x812像素模拟手机界面
- **圆角美化系统**:统一的视觉设计语言
- **多色主题**:丰富的颜色配置系统
## 📁 项目结构
```
diet_recommendation_app/
├── core/ # 核心基座架构
│ ├── base.py # 基础类和配置
│ └── base_engine.py # 基础引擎抽象类
├── modules/ # 功能模块
│ ├── data_collection.py # 数据采集模块
│ ├── ai_analysis.py # AI分析模块
│ ├── recommendation_engine.py # 推荐引擎模块
│ └── ocr_calorie_recognition.py # OCR热量识别模块
├── gui/ # 现代化界面
│ ├── mobile_main_window.py # 移动端主界面
│ ├── ocr_calorie_gui.py # OCR识别界面
│ ├── styles.py # 样式配置系统
│ └── main_window.py # 桌面端界面
├── llm_integration/ # 大模型集成
│ └── qwen_client.py # 千问大模型客户端
├── smart_food/ # 智能食物数据库
│ └── smart_database.py # 食物数据库管理
├── data/ # 数据存储
│ ├── users/ # 用户数据
│ ├── training/ # 训练数据
│ └── app.db # SQLite数据库
├── models/ # 机器学习模型
├── logs/ # 日志文件
├── main.py # 应用入口
├── requirements.txt # 依赖包列表
├── OCR_USAGE_GUIDE.md # OCR使用指南
├── UI_BEAUTIFICATION_SUMMARY.md # 界面美化总结
└── README.md # 项目说明文档
```
## 🚀 快速开始
### 1. 环境要求
- Python 3.8+
- Windows/macOS/Linux
### 2. 安装依赖
```bash
# 克隆项目
git clone https://github.com/random-jason/diet_recommendation.git
cd diet_recommendation
# 安装基础依赖
pip install -r requirements.txt
# 安装OCR依赖可选
pip install pytesseract opencv-python paddleocr easyocr
```
### 3. 配置API密钥
```bash
# 方法1: 使用自动生成的模板
python -c "from config.api_keys import create_env_template; create_env_template()"
# 方法2: 手动创建.env文件
echo "QWEN_API_KEY=your_qwen_api_key_here" > .env
```
### 4. 验证配置
```bash
# 检查API密钥配置状态
python -c "from config.api_keys import get_api_status_report; print(get_api_status_report())"
```
### 5. OCR引擎配置可选
#### Tesseract安装
- **Windows**: 下载 [Tesseract安装包](https://github.com/UB-Mannheim/tesseract/wiki)
- **macOS**: `brew install tesseract`
- **Linux**: `sudo apt-get install tesseract-ocr`
#### 其他OCR引擎
```bash
# PaddleOCR推荐中文识别效果好
pip install paddleocr
# EasyOCR简单易用
pip install easyocr
```
### 4. 配置环境
```bash
# 创建环境配置文件
echo "QWEN_API_KEY=your_qwen_api_key_here" > .env
```
### 5. 运行应用
```bash
python main.py
```
### 6. 使用OCR功能
1. 打开应用,进入"记录"页面
2. 点击食物输入框右侧的"📷"按钮
3. 选择包含食物信息的图片
4. 点击"开始识别"进行OCR识别
5. 查看和编辑识别结果
6. 确认保存到餐食记录
## 🔐 API密钥管理
### 统一密钥管理
项目采用统一的API密钥管理系统所有API密钥都通过 `config/api_keys.py` 进行管理:
- **千问API密钥** (必需): 用于主要AI分析服务
- **OpenAI API密钥** (可选): 备用AI服务
- **Anthropic API密钥** (可选): 备用AI服务
- **其他API密钥** (可选): Google、百度、腾讯等
### 配置方法
```python
from config.api_keys import get_qwen_key, get_api_status_report
# 获取API密钥
qwen_key = get_qwen_key()
# 检查配置状态
status = get_api_status_report()
print(f"可用提供商: {status['available_list']}")
```
### 安全特性
- ✅ 环境变量隔离
- ✅ 密钥格式验证
- ✅ 运行时状态监控
- ✅ 多提供商支持
- ✅ 自动配置建议
详细配置指南请参考:[API_KEY_SETUP_GUIDE.md](API_KEY_SETUP_GUIDE.md)
## 🔄 工作流程
### 1. 智能数据采集5天
- **OCR图片识别**:📷 拍照识别食物热量信息
- **手动数据记录**:详细记录三餐饮食内容
- **用户偏好问卷**:口味偏好、饮食习惯、过敏信息
- **个性化画像**:生理周期、星座、性格特征
### 2. AI模型训练
- **个人推荐模型**:基于采集数据训练个性化模型
- **多因素融合**:结合生理期、星座等多维度因素
- **OCR学习优化**:从用户修正中持续改进识别准确性
### 3. 智能推荐与学习
- **个性化推荐**第6天开始提供智能推荐
- **用户反馈收集**:喜欢/不喜欢/已食用反馈
- **持续模型优化**:基于反馈数据不断改进
- **OCR准确性提升**:学习用户修正习惯
### 4. AI智能分析
- **千问大模型分析**:每日营养状况智能分析
- **个性化健康建议**:基于用户特征的定制建议
- **营养趋势分析**:长期饮食模式分析
## 🎨 特色功能
### 📷 OCR智能识别
- **多引擎支持**Tesseract、PaddleOCR、EasyOCR
- **智能验证**OCR + 数据库 + 用户确认三级验证
- **学习优化**:从用户修正中持续改进
- **一键记录**:拍照即可完成餐食记录
### 🎨 现代化界面
- **移动端设计**375x812像素模拟手机界面
- **圆角美化**:统一的圆角设计语言
- **多色主题**:丰富的颜色搭配和视觉层次
- **响应式交互**:悬停效果和状态变化
### 🤖 AI智能分析
- **千问大模型**阿里云通义千问API集成
- **智能推理**:用户意图分析和营养建议
- **个性化指导**:基于用户特征的定制建议
### 👩 女性专属优化
- **生理周期智能调整**:月经期、排卵期等特殊时期
- **营养需求分析**:不同生理阶段的营养需求
- **个性化建议**:结合生理周期的饮食建议
### ⭐ 个性化因素
- **星座参考**:个性化因素融合
- **性格特征**:基于性格的饮食偏好分析
- **持续学习**:避免随机推荐问题
## 📚 文档说明
- **[OCR使用指南](OCR_USAGE_GUIDE.md)**详细的OCR功能使用说明
- **[界面美化总结](UI_BEAUTIFICATION_SUMMARY.md)**:界面设计和技术实现
- **[项目总结](PROJECT_SUMMARY.md)**:项目整体架构和功能说明
## 🧪 测试验证
### 功能测试
```bash
# 测试OCR系统
python test_ocr_system.py
# 测试界面美化
python test_ui_beautification.py
# 测试核心功能
python test_core.py
```
### 应用启动测试
```bash
# 启动应用
python main.py
# 检查日志
tail -f logs/app.log
```
## 🚀 技术亮点
### 1. 统一基座架构
- **模块化设计**:所有功能模块基于统一基座构建
- **事件驱动**:模块间通过事件总线通信
- **数据统一**:统一的数据管理和访问接口
- **扩展性强**:支持新功能模块的快速集成
### 2. OCR多引擎融合
- **多引擎并行**同时使用多个OCR引擎提高准确性
- **智能合并**:基于置信度的结果合并策略
- **学习优化**:从用户修正中持续学习改进
- **数据库匹配**:结合食物数据库进行智能验证
### 3. 现代化界面设计
- **移动端优先**:专为手机屏幕优化的界面设计
- **圆角美化**:统一的圆角设计语言
- **多色主题**:丰富的颜色配置和视觉层次
- **响应式交互**:流畅的用户交互体验
### 4. AI智能分析
- **千问大模型**集成阿里云通义千问API
- **智能推理**:基于用户数据的智能分析
- **个性化建议**:结合多维度因素的定制建议
- **持续学习**:从用户反馈中不断优化
## 📈 项目状态
-**核心功能**数据采集、推荐引擎、AI分析
-**OCR识别**:多引擎支持、智能验证、学习优化
-**界面美化**:圆角设计、多色主题、移动端适配
-**文档完善**:使用指南、技术文档、测试脚本
- 🔄 **持续优化**:性能提升、功能扩展、用户体验改进
## 🤝 贡献指南
欢迎提交Issue和Pull Request来改进项目
### 开发环境设置
```bash
# 克隆项目
git clone <repository-url>
cd diet_recommendation_app
# 安装开发依赖
pip install -r requirements.txt
# 运行测试
python test_ocr_system.py
python test_ui_beautification.py
```
### 代码规范
- 遵循PEP 8代码风格
- 添加适当的注释和文档字符串
- 编写单元测试
- 更新相关文档
## 📄 许可证
本项目采用MIT许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
## 🙏 致谢
感谢以下开源项目的支持:
- [CustomTkinter](https://github.com/TomSchimansky/CustomTkinter) - 现代化Python GUI框架
- [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) - 开源OCR引擎
- [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) - 百度开源OCR
- [EasyOCR](https://github.com/JaidedAI/EasyOCR) - 简单易用的OCR库
- [scikit-learn](https://scikit-learn.org/) - 机器学习库
---
**🍽️ 让AI为您的饮食健康保驾护航**