# API
**Repository Path**: xiaohongzhou/api
## Basic Information
- **Project Name**: API
- **Description**: 用来记录本课程的学习内容及学习心得及代码练习
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-06-29
- **Last Updated**: 2022-07-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 期末文档
# [律]
| 项目名称 | [律]_产品需求文档 |
| -------- | ------------------------------------------------------------ |
| 产品名称 | 律 |
| 产品描述 | 一款扫描识别饮食的app,返回该食物的营养价值参数,并推荐营养搭配。解决健身人群想要合理饮食的痛点。 |
| 产品版本 | Beta版本1.0 |
| 产品现状 | 进行中 |
| 文档作者 | 肖宏洲 |
# 价值宣言
本项目是对律产品的一个需求分析文档,本产品是通过调用百度智能云平台的菜品识别API,用户通过拍照扫面,可识别出食物的名称、卡路里,可提供给用户健康的饮食信息,返回该食物的营养价值成分表,提供给用户一个参考平台,制定适合自己的营养计划表,能更好的制订饮食计划。
# 需求概述与需求列表
目前,市场上的食物品类丰富,不少号称”热量炸弹“、“减肥代餐”的产品层出不穷,迷人眼球。但大多数健身人群对大部分食物的营养成分和营养价值的介绍分析却不足,而那些对饮食摄入有较高标准的健身达人群体无法准确判断出菜品的营养价值和摄入量。同时,传统的饮食管理类软件需要用户手动输入食物名称来查询详细信息,不仅用户体验度不友好,更不利于饮食均衡的管理。 因此想要将一款体验友好的智能分析食物成分和营养价值等详细信息的App提供给用户。
## 需求概述
### ①产品背景
随着智能手机普及度的提高和移动互联网技术的高速发展,移动互联网对传统行业的“颠覆”趋势越来越明显。短短数年间,作为移动互联网饮食健康服务主要载体的手机APP数量呈迅猛发展之势,在此过程中孕育了多种服务方式和商业模式,伴随着时代的发展,科技的进步以及生活水平的提高,人们对健康饮食的需求表现得越来越迫切,使得健康、人工智能、移动互联网、移动终端相结合的健康饮食类APP诞生,引来了一个健康APP研发热潮,但与此同时,功能、界面、用户等方面都存在着改进。
### ②产品市场
目前,市场上健康饮食类APP不在少数,有43.4%的APP发布者认为移动健康将改善人们的自我护理,他们大多数聚焦于减肥人群,以达到一个完美身材为用户的终极目标,但是针对于特殊人群(比如:极瘦或极胖人群)或者是正常体态人群的APP少之又少,所以依旧存在研发价值,且市场广阔。
### ③竞品分析
* 产品:薄荷健康
薄荷健康是一款减肥健身热量计算健康类APP
通过对现场拍照及相册图片内的食物包装条形码进行快速识别食物,精准告知用户日常饮食的卡路里热量和三大营养素(碳水化合物、蛋白质、脂肪)等信息, 可使用户快速、精准、方便地了解常见食品的热量及营养成分,促使其调节热量摄入,从而达到健康高效减肥的目的。
【功能介绍】
- 饮食记录:打开应用选择记录,选择对应食物图片以及估算的食物重量得知美食的卡路里和营养成分。
- 扫码记录:打开应用选择相机或相册内的食物外包装上的条形码,即可马上得知该食物卡路里热量和营养成分。
- 分享:把识别结果以精美海报的形式分享给微信好友或朋友圈,让大家见证你的改变。
- 热量记录:记录你的每日摄入并计算bmr,当日摄入曲线一目了然。
- 体重记录:记录你的体重曲线,增重或减脂历程一览无余。
### ④目标用户群
| 目标用户群 | 群体 |
| ------------------- | :---------------------- |
| 目标用户/早期采用者 | 18岁以上的健身人群 |
| 核心用户/早期大众 | 18-58岁的增肌、减脂人群 |
| 潜在用户 | 60岁以上的养生老年人 |
### ⑤用户痛点和核心加值
| 用户痛点 | API加值 |
| ------------------------------ | ---------------------- |
| 不知道菜品的名称 | 百度智能云平台菜品识别 |
| 对摄入的食物的营养价值一无所知 | 天行数据营养成分表 |
| 不能自主地管理自己的身体状况 | 智能推荐系统 |
### ⑥用户画像与使用场景
| 姓名: | 阿B |
| ------- | ------------------------------------------------------------ |
| 年龄: | 21岁 |
| 身份 : | 学生 |
| 个性: | 工作认真负责,热爱生活 |
| 爱好: | 喜欢健身,喜欢游戏 |
| 痛点: | 想要增肌变壮,没有额外的金钱请营养师,缺乏建立管理的饮食类工具,帮助完成目标。 |
使用场景:阿B是一个瘦子,为了拥有健康的身体开始健身增重,为了满足增重需求,需要合理摄入能量,通过使用[律]APP,根据每日摄入食物计算热量制造热量盈余,完成增肌实现自己完美身材的目标。
| 姓名: | 欧大羽 |
| ------ | ------------------------------------------------------------ |
| 年龄: | 32 |
| 身份: | 公司职员 |
| 个性: | 热情似火,公正正直 |
| 爱好: | 美食,唱歌 |
| 痛点: | 想在不饿肚子的情况下成功减脂,缺乏建立管理的饮食工具,帮助完成目标。 |
使用场景:欧家羽是一个体重严重超重的胖子,为了拥有健康的身体开始健身减脂,为满足减脂需求,需要控制能量摄入并且在期间不饿肚子,实现健康减脂。通过使用[律]APP,合理规划每日饮食,制造热量缺口,完成减脂增肌实现自己完美身材、身体健康的目标。
## 2.需求列表
### API产品对比
[百度智能云](https://cloud.baidu.com/)
[京东万象](https://wx.jdcloud.com/)
[聚合数据](https://www.juhe.cn/)
[天行数据](https://www.tianapi.com/)
| API平台 | 产品名 | 价格(每年) | 请求参数 | 支持语言 |
| ---------- | ---------- | ------------------------------------------------------------ | ----------------------------------------------------- | ------------------------------------------------------------ |
| 百度智能云 | 菜品识别 | 免费/3000次
7元/1万次
34元/5万次
66元/10万次
320元/50万次
620元/100万次
3000元/500万次 | image / url
api_key
api_secret
top_num | bash
PHP
Java
Python
CPP
C# |
| 京东万象 | 菜品识别 | 免费/2000次
199元/2万次
299元/33000次
399元/5万次
499元/7万次 | image或image link
api_key
| 无说明 |
| 天行数据 | 营养成分表 | 免费/2000次
120元/10000次
390元/不限 | word
api_key
mode | PHP
Python
Java
jQuery
Curl
Node
Go
Ruby
WxApp |
| 聚合数据 | 菜品识别 | 免费/10次
1000元/350000次 | image
key | JSON |
### API产品优先级排序
| 序号 | API技术 | 用户场景 | 优先级 |
| ---- | ------------------ | ---------------------------------------------- | ----------- |
| 1 | 百度智能云菜品识别 | 用户通过手机相机扫描 | A(重要) |
| 2 | 天行数据营养价值表 | 作为扫描结果返回给用户 | A(重要) |
| 3 | 智能推荐系统 | 通过用户数据在首页智能推荐用户可能感兴趣的内容 | B(次重要) |
# [律]产品原型表述
本产品遵循[UI设计的原则](http://www.woshipm.com/pd/1776300.html),且结合产品智能加值,设计出符合用户需求且美观简介的界面,用户通过相机扫描果蔬品,获取到该果蔬品的营养价值参数表,并将用户数据进行存储,在首页推荐用户可能感兴趣的内容,结合百度智能云果蔬识别API、天行数据营养价值表API和智能推荐系统,为用户打造一个全新体验平台,帮助用户更好地管理自己身体健康。
## 界面流程及关键智能交互
### 产品原型及交互设计
[产品原型](https://gitee.com/xiaohongzhou/user-vision)
### 交互界面流程图

界面流程方式说明:
①登录界面后来到首页,在首页展示的是饮食记录以及运动记录。可根据不同需求选择。
②进去饮食记录选择右上角扫一扫界面,当用户同意使用相机后,可以选择直接扫食物或者选择在图库里已经储存好的食物照片。
③选择照片后点击确认扫描,返回该食物的营养价值参数表格。
④用户个人中心页面记录用户使用本产品的所有数据,并将数据可视化图标展示,提高可读性,和一些用户中心基本设置。
## 数据流程及关键智能API使用
### 产品功能结构图

### 数据流程方式说明:
①用户登录/注册[律] APP:后台存储用户账号信息。
②扫一扫:数据开始传入。
③营养价值表:此次扫描数据返回,并存储。
④首页:将用户使用本产品所有存在数据库的数据,通过智能推荐展示与首页。
### API接口调用代码展示(详见final.ipynb)
请求数据
```
import requests
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=YLXeG09mXsjyv2Vx8HnQv9O3&client_secret=rmYbtN7n02IYyEIoSuG13G34DAXrqg8C'
response = requests.get(host)
if response:
print(response.json())
access_token = response.json()['access_token']
access_token
import requests
import base64
'''
菜品识别
'''
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/dish"
f = open('fish.jpg', 'rb')
img = base64.b64encode(f.read())
params = {"image":img,"top_num":5}
access_token = '24.81b569e2467c06133b558a7fabb25977.2592000.1660026291.282335-25904774'
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
print (response.json())
```
返回数据
```
{'result_num': 5, 'result': [{'name': '酸菜鱼', 'calorie': '98', 'probability': '0.943978', 'has_calorie': True}, {'name': '水煮鱼', 'calorie': '153', 'probability': '0.0258497', 'has_calorie': True}, {'name': '酸汤鱼', 'calorie': '119', 'probability': '0.016182', 'has_calorie': True}, {'name': '鱼片', 'calorie': '303', 'probability': '0.00337536', 'has_calorie': True}, {'name': '黑鱼', 'calorie': '85', 'probability': '0.00128102', 'has_calorie': True}], 'log_id': 1546021767577006288}
```
请求数据
```
import urllib.parse
import sys, urllib, json
word='鸡蛋'
word=urllib.parse.quote(word)
url = 'http://api.tianapi.com/txapi/nutrient/index?key=7d86e33baddf379fba0f42a561d6f86e&mode=0&word=%s'%word
urll=url
req = urllib.request.Request(urll)
resp = urllib.request.urlopen(req)
content = resp.read().decode('utf-8')
content
```
返回数据
```
Response Body:
{
"code": 200,
"msg": "success",
"newslist": [
{
"name": "鸡蛋(均值)",
"rl": 144,
"las": 0.11,
"gai": 56,
"dbz": 13.3,
"su": 0.27,
"mei": 10,
"zf": 8.8,
"ys": 0.2,
"tei": 2,
"shhf": 2.8,
"wsfc": 0,
"meng": 0.04,
"ssxw": 0,
"wsse": 1.84,
"xin": 1.1,
"wssa": 234,
"dgc": 0,
"tong": 0.15,
"lb": 1,
"jia": 154,
"ling": 130,
"shc": 74.1,
"la": 131.5,
"xi": 14.34,
"type": "蛋类"
}
```
### 产品可行性分析
|商业可行性|市场上,基本是针对肥胖人群研发的APP居多,针对特定人群且结合人工智能的APP少之又少,加上随着时代的发展,用户对健康的重视程度大大加深,对饮食健康的需求也越来越大,有强大的市场需求性,故本产品在商业上有一定的可行性
|技术可行性|调用百度智能云平台的菜品识别和天行数据的营养价值表API,经测试二者结合是可行的,智能推荐系统方面数据来源直接是用户使用本产品的积累。
|用户可欲性|针对健身达人、追求更健康生活方式的人来说,本产品很好的解决了他们的痛点,直接返回食物营养价值表,用户根据需求制定自己的健康饮食计划或者采纳推荐食物搭配,做到灵活自由可选性