eddbe718499b630355e104c644555d7279afbc5a
Reviewed-on: #2
🍽️ 个性化饮食推荐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. 安装依赖
# 克隆项目
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密钥
# 方法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. 验证配置
# 检查API密钥配置状态
python -c "from config.api_keys import get_api_status_report; print(get_api_status_report())"
5. OCR引擎配置(可选)
Tesseract安装
- Windows: 下载 Tesseract安装包
- macOS:
brew install tesseract - Linux:
sudo apt-get install tesseract-ocr
其他OCR引擎
# PaddleOCR(推荐,中文识别效果好)
pip install paddleocr
# EasyOCR(简单易用)
pip install easyocr
4. 配置环境
# 创建环境配置文件
echo "QWEN_API_KEY=your_qwen_api_key_here" > .env
5. 运行应用
python main.py
6. 使用OCR功能
- 打开应用,进入"记录"页面
- 点击食物输入框右侧的"📷"按钮
- 选择包含食物信息的图片
- 点击"开始识别"进行OCR识别
- 查看和编辑识别结果
- 确认保存到餐食记录
🔐 API密钥管理
统一密钥管理
项目采用统一的API密钥管理系统,所有API密钥都通过 config/api_keys.py 进行管理:
- 千问API密钥 (必需): 用于主要AI分析服务
- OpenAI API密钥 (可选): 备用AI服务
- Anthropic API密钥 (可选): 备用AI服务
- 其他API密钥 (可选): Google、百度、腾讯等
配置方法
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
🔄 工作流程
1. 智能数据采集(5天)
- OCR图片识别:📷 拍照识别食物热量信息
- 手动数据记录:详细记录三餐饮食内容
- 用户偏好问卷:口味偏好、饮食习惯、过敏信息
- 个性化画像:生理周期、星座、性格特征
2. AI模型训练
- 个人推荐模型:基于采集数据训练个性化模型
- 多因素融合:结合生理期、星座等多维度因素
- OCR学习优化:从用户修正中持续改进识别准确性
3. 智能推荐与学习
- 个性化推荐:第6天开始提供智能推荐
- 用户反馈收集:喜欢/不喜欢/已食用反馈
- 持续模型优化:基于反馈数据不断改进
- OCR准确性提升:学习用户修正习惯
4. AI智能分析
- 千问大模型分析:每日营养状况智能分析
- 个性化健康建议:基于用户特征的定制建议
- 营养趋势分析:长期饮食模式分析
🎨 特色功能
📷 OCR智能识别
- 多引擎支持:Tesseract、PaddleOCR、EasyOCR
- 智能验证:OCR + 数据库 + 用户确认三级验证
- 学习优化:从用户修正中持续改进
- 一键记录:拍照即可完成餐食记录
🎨 现代化界面
- 移动端设计:375x812像素,模拟手机界面
- 圆角美化:统一的圆角设计语言
- 多色主题:丰富的颜色搭配和视觉层次
- 响应式交互:悬停效果和状态变化
🤖 AI智能分析
- 千问大模型:阿里云通义千问API集成
- 智能推理:用户意图分析和营养建议
- 个性化指导:基于用户特征的定制建议
👩 女性专属优化
- 生理周期智能调整:月经期、排卵期等特殊时期
- 营养需求分析:不同生理阶段的营养需求
- 个性化建议:结合生理周期的饮食建议
⭐ 个性化因素
- 星座参考:个性化因素融合
- 性格特征:基于性格的饮食偏好分析
- 持续学习:避免随机推荐问题
📚 文档说明
🧪 测试验证
功能测试
# 测试OCR系统
python test_ocr_system.py
# 测试界面美化
python test_ui_beautification.py
# 测试核心功能
python test_core.py
应用启动测试
# 启动应用
python main.py
# 检查日志
tail -f logs/app.log
🚀 技术亮点
1. 统一基座架构
- 模块化设计:所有功能模块基于统一基座构建
- 事件驱动:模块间通过事件总线通信
- 数据统一:统一的数据管理和访问接口
- 扩展性强:支持新功能模块的快速集成
2. OCR多引擎融合
- 多引擎并行:同时使用多个OCR引擎提高准确性
- 智能合并:基于置信度的结果合并策略
- 学习优化:从用户修正中持续学习改进
- 数据库匹配:结合食物数据库进行智能验证
3. 现代化界面设计
- 移动端优先:专为手机屏幕优化的界面设计
- 圆角美化:统一的圆角设计语言
- 多色主题:丰富的颜色配置和视觉层次
- 响应式交互:流畅的用户交互体验
4. AI智能分析
- 千问大模型:集成阿里云通义千问API
- 智能推理:基于用户数据的智能分析
- 个性化建议:结合多维度因素的定制建议
- 持续学习:从用户反馈中不断优化
📈 项目状态
- ✅ 核心功能:数据采集、推荐引擎、AI分析
- ✅ OCR识别:多引擎支持、智能验证、学习优化
- ✅ 界面美化:圆角设计、多色主题、移动端适配
- ✅ 文档完善:使用指南、技术文档、测试脚本
- 🔄 持续优化:性能提升、功能扩展、用户体验改进
🤝 贡献指南
欢迎提交Issue和Pull Request来改进项目!
开发环境设置
# 克隆项目
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 文件了解详情
🙏 致谢
感谢以下开源项目的支持:
- CustomTkinter - 现代化Python GUI框架
- Tesseract OCR - 开源OCR引擎
- PaddleOCR - 百度开源OCR
- EasyOCR - 简单易用的OCR库
- scikit-learn - 机器学习库
🍽️ 让AI为您的饮食健康保驾护航!
Description
Languages
Python
87.6%
JavaScript
6.1%
HTML
3%
CSS
2.3%
Shell
0.4%
Other
0.6%