├── README.md ├── code ├── 文本标签.ipynb ├── 文本纠错和文本审核.ipynb ├── 新闻摘要.ipynb ├── 百度手写字api.ipynb └── 讯飞手写字api.ipynb └── img ├── hui.jpg ├── 产品架构图.png ├── 产品流程图.png └── 原型整合.jpg /README.md: -------------------------------------------------------------------------------- 1 | # “闻所谓闻”新闻小助手 2 | 3 | |发布日期|2019年12月4日| 4 | | ---------- | --- | 5 | |产品名称|“闻所谓闻”新闻小助手| 6 | |文件现状|已经基本完成| 7 | |文件的主人|郑晓萍| 8 | |领头的设计师|郑晓萍| 9 | |领头的开发者|郑晓萍| 10 | |迭代版本|2.0| 11 | # 目录 12 | |产品的PRD设计|原型设计|机器学习之API的输出入展示 13 | |---------- | --- |---------- 14 | |[PRD1-加值宣言](#chapter1) |[产品功能架构](#chapter14)|[API输入与输出](#chapter18) 15 | |[PRE2-核心价值](#chapter2) |[流程图](#chapter15)|[API1.使用水平](#chapter19) 16 | |[PRD3-用户痛点宣言](#chapter3) |[全局说明](#chapter16)|[API2.使用比较分析](#chapter20) 17 | |[产品简介](#chapter4) |[原型1.交互及界面设计](#chapter17) |[API3.使用后风险报告](#chapter21) 18 | |[产品背景](#chapter5) |[原型2.信息设计](#chapter17)|[API4.加分项](#chapter22) 19 | |[产品目标](#chapter6) |[原型3.原型文档](#chapter17)|---------- 20 | |[用户画像](#chapter7) |[Axure交互及设计低保真原型](#chapter17) |---------- 21 | |[用户需求](#chapter8) |[原型4.口头操作说明 ](#chapter17)|---------- 22 | |[情景假设](#chapter9) | --- |---------- 23 | |[问题与解决](#chapter10) | --- |---------- 24 | |[考虑后不完成之项](#chapter11) | --- |---------- 25 | |[PRD4-人工智能概率性与用户痛点](#chapter12)| --- |---------- 26 | |[PRD5-需求列表与人工智能API加值](#chapter13)| --- |---------- 27 | 28 | 29 | 30 |

一、PRD1-加值宣言

31 | 32 | - 阿里的实时语音识别api的价值: 33 | > 将用语音记录的信息转化成文字,省去了重复听取录音摘取其中有价值信息的时间,提高了效率。 34 | 35 | - 手写字识别api的价值: 36 | > 可以将我们在采访流程的手写记录的信息直接转成文字。 37 | 38 | - 图像识别api的价值: 39 | > 可将采访中所用的图片资料(采访对象的PPT、发言稿等)直接转换成文字,省去了将图片文字手打一遍的过程,节省时间。 40 | 41 | - 新闻摘要api的价值: 42 | > 在极短的时间内生成一篇新闻的摘要,而且概括性强,可以解决摘要概括性不强、摘要质量不好等问题。 43 | 44 | - 文本纠错api价值: 45 | > 可以有效的解决新闻稿审核时间长而且审核后仍然出现错误的情况。减少审核的人力和时间成本,且大大提升了文章的质量。 46 | 47 | - 文本审核api的价值: 48 | > - 对浏览者的评论信息检测,一旦发现有恶意垃圾评论,可以做到文本的自动审核与实时过滤。 49 | > - 作者提交的文章中如若夹杂了推广、反动、色情信息,会给内容平台带来极大的法律风险,应用文本审核可帮助解决平台一直以来困扰和担心的问题。 50 | 51 | - 文本标签api价值: 52 | > 对文章进行核心关键词分析,为新闻个性化推荐、相似文章聚合、文本内容分析等提供技术支持 53 | 54 | - 倾向分析api价值: 55 | > 通过对需要舆情监控的实时文字数据流进行情感倾向性分析,帮助他们更好的回复相关的评论。 56 | 57 |

二、PRD2-核心价值

58 | 59 | - 最小可行性产品(产品的核心价值) 60 | > 提供语音输入、图像识别和翻译、手写字识别等功能,可供新闻编辑者快速记录并提取信息进行新闻的撰写。 61 | > 帮助他们自动生成新闻的摘要和文本标签。并对进行文本审核和纠错。 62 | 63 | 64 |

三、PRD3-用户痛点宣言

65 | 66 | |序号|痛点| 67 | |------|---| 68 | |1|新闻编辑者经常面临采访资料和采访笔记超级多,他们经常要现在word文档中把所有的资料整理在一起再开始撰写。但是在整理资料的过程中,需要耗费的时间非常多,常常需要到不同的软件把纸质版的资料扫描识别成电子版,或者需要手动再把资料写一遍。| 69 | |2| 一些新闻编辑者对于写文章的摘要是一件困难的事情,常常面临着不会写、写的质量不好等尴尬局面。| 70 | |3|高校新媒体的发布平台一般是以公众号为主,以学校官网为辅,但是这些平台的修改次数是有限的,这大大限制了他们审核的能力。| 71 | |4|而且一些编辑者常常会借助平台之便,发表一些不当的言论,会给该公众号甚至是学校带来负面的影响| 72 | 73 | 74 |

四、产品简介

75 | 76 | - 该产品提供语音输入、图像识别和翻译、手写字识别和文字识别等多种记录采访内容和采访资料的方式。 77 | - 该产品可以帮编辑者完成的新闻稿迅速提取摘要和生成文本标签,并对文章进行文本纠错和文本审核,节省审核时间和提高效率。 78 | - 该产品还能通过情感分析自动分析和回复浏览者的信息及相关的评论。 79 | 80 |

五、产品背景

81 | 82 | - 自媒体逐渐成为高校内一种主要的媒体平台,且基本都由学生团队运营。 83 | - 但是由于繁重的学业和知识的限制,这些学生并没有多余的时间学习到更加专业知识,甚至常常为了写稿而加班加点,为写新闻摘要而冥思苦想。 84 | - 从记录到撰稿,从编辑到排版,从审核到发布,新媒体提供了个人发表资讯的途径,简化的传统媒体发布新闻的流程,却依旧保留了媒体制作的时间成本。 85 | - 在[大融合背景下高校学生自媒体的立身之策——以“佛系学习社”为例 ](https://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFDLAST2019&filename=SHIT201909142&uid=WEEvREcwSlJHSldRa1FhdXNXaEhoOHRvcktTUUZCYk1wTjB5aHpCVU13Yz0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4IQMovwHtwkF4VYPoHbKxJw!!&v=MDM2NzVCWm9SOGVYMUx1eFlTN0RoMVQzcVRyV00xRnJDVVJMT2VadVJtRnkvbFZMdkxOaVhDZXJHNEg5ak1wbzU=)论文中,根据调查结果表示,高校的学生新闻编辑者想要在自媒体林立的市场中寻找到立身之地,就应该注重文章质量,将效果呈现作为检验标准,抓住受众,找到属于自己的特色标签。 86 | 87 | > 参考文献:[大融合背景下高校学生自媒体的立身之策——以“佛系学习社”为例 ](https://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFDLAST2019&filename=SHIT201909142&uid=WEEvREcwSlJHSldRa1FhdXNXaEhoOHRvcktTUUZCYk1wTjB5aHpCVU13Yz0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4IQMovwHtwkF4VYPoHbKxJw!!&v=MDM2NzVCWm9SOGVYMUx1eFlTN0RoMVQzcVRyV00xRnJDVVJMT2VadVJtRnkvbFZMdkxOaVhDZXJHNEg5ak1wbzU=) 88 | 89 | 90 | 91 |

六、产品的目标

92 | 93 | - 帮助新闻辩编者者以最快速和高校的方式整理采访中记录的问题或收集到的资料,帮助他们快速撰写文章,节省时间。 94 | - 帮助新闻编辑者更好的撰写新闻摘要,升华文章;根据用户的需要看是否需要自动生成标签。 95 | - 同时也能帮他们对文本进行纠错和审核,减少审核时间和提高文章质量。 96 | - 通过情感分析帮助他们合理的回复和处理相关评论。 97 | 98 |

七、用户画像

99 | 100 | 类别 | 详情 101 | ---|--- 102 | 群体 | 高校大学生媒体工作者 103 | 年龄 | 18-25岁 104 | 工作 | 1.记录 --> 撰写 2.编辑 --> 排版 3.审核 --> 发布 4.获得评论 --> 得到反馈 105 | 痛点 | 1、记录:图片、手写或语音记录整理成文字工作机械枯燥,耗时较长 2、撰写:撰写新闻稿时间长,常常熬夜写稿 3、审核:审核时间长,需要耗费人工,常常人工审稿 4、评论:评论太多无法人工 进行舆论分析后仍出现错误 106 | 用户画像|![用户画像](http://i.ce.cn/ce/ztpd/2016lh/zt/201603/01/W020160301515768244381.jpg) 107 | 108 | 109 | 110 |

八、用户需求

111 | 112 | - 高校媒体工作者需要一个软件,能帮助他们快速记录和整理资料,最快的节省时间,提高效率。 113 | - 高校的媒体工作者需要写完一篇文章后就能快速的生成高质量、概括性较好的摘要。并且根据需要添加文本标签。 114 | - 高校的媒体工作者需要有自动帮他们的文章进行纠正和审核,提高文章的质量的同时也能减少审核的时间成本。 115 | 116 |

九、情景假设

117 | 118 | |新媒体工作者|身份|面临的问题| 119 | | ---------- | --- |----------- | 120 | |小刘|某媒体部的小干事|经常熬夜整理新闻稿的资料,将所有的资料整理成电子版。但是一些资料比如语音需要反复听才能抓取到其中对新闻有用的价值。 121 | |小李|某媒体部的小干事|需要接受小刘的工作,要把小刘整理成一篇完整且具有逻辑的新闻稿,经常需要再三询问小刘整理资料中的一些问题。而且小李对新闻的摘要非常苦恼,经常需要苦苦思考但是质量却不好。还经常需要部门的其他干事一起帮忙想。 122 | |小郑|某媒体部的副部长|需要对小干事所写的文章进行一遍审核,要十分的用心和细心看文章是否存在错别字或是语法的错误。经常需要反复修改小干事所撰写的新闻摘要。 123 | |小黄|某媒体部的部长|对副部长审核的文章还要再审核一遍,检查是否还存在错误,并且和副部长一起探讨新闻摘要是否得当。 124 | |小廖|某媒体部的指导老师|是该部门的指导老师,最后把关文章的全部内容,而且他们要适当的保留修改的内容,才能确保万一还存在错误有机会再修改。 125 | 126 |

十、问题与解决

127 | 128 | |问题|解决| 129 | | ---------- | --- | 130 | |手动整理大量的资料(如图片中的文字)、语音等,把这些资料整理成电子文字版|提供语音输入、图像识别和翻译、手写字识别等功能,可供新闻编辑者快速记录并提取信息进行撰写。| 131 | |经常要为写好新闻摘要而冥思苦想,甚至还要请人帮忙|为他们完成的新闻稿自动的生成摘要| 132 | |经常要两三个人甚至更多审核文章中的问题|提供文本纠错和文本审核的功能,自动快速的审查文章| 133 | 134 |

十一、考虑后不做之项

135 | 136 | - 通过情感分析自动分析和回复浏览者的信息及相关的评论。 137 | 138 | 139 |

十二、PRD4-人工智能概率性与用户痛点

140 | 141 | - 目前人类对ImageNet图像的识别错误率大约在5%,微软的人工智能系统的错误率为4.94%,谷歌为4.8%。百度在2015年的时候已将这一错误率进一步降至4.58%,实现了质的飞跃。[百度超级计算机图像识别超人类水平 错误率低于微软谷歌](http://tech.ifeng.com/a/20150512/41080218_0.shtml) 142 | 143 | > 错误现象的解决方法: 144 | 145 | - 当图像/语音识别出现偏差时,提供简单编辑修改的功能。可以手动修改无法识别或者识别出现错误的地方。 146 | - 当自动生成的新闻摘要概括性不强,质量不好时,可以提醒用户再次尝试自动生成,或者让用户对不满意之处进行修改。 147 | - 当文本审核和文本纠错的准确性不高时,可以提醒用户再次生成,或者在导出文档时进行提醒。 148 | 149 |

十三、PRD5-需求列表与人工智能API加值

150 | 151 | ###### 需求列表 152 | 153 | |优先级|用户需求|功能实现|api加值|原因 154 | | ---------- | --------- |----------- |------|--- 155 | |重要|高校媒体工作者需要一个软件,能帮助他们快速记录和整理资料,最快的节省时间,提高效率。|手写字识别|手写字识别可以快速将我们的会议记录和新闻手稿转化为文字 156 | |次重要|高校的媒体工作者需要写完一篇文章后就能快速的生成高质量、概括性较好的摘要。并且根据需要添加文本标签。|在原型的1.2.1编辑页面,添加新闻摘要功能|新闻摘要api|自媒体平台都是将文章的第一段作为摘要,没有结合文章进行整合的功能。 157 | |一般重要|高校的媒体工作者需要有自动帮他们的文章进行纠正和审核,提高文章的质量的同时也能减少审核的时间成本。|文本审核、文本纠错|微信公众号自带文本纠错功能,所以此功能作用不大 158 | |不重要|高校的媒体工作者需要一个能够进行会议语音实时记录的软件。|语音识别|许多手机输入法自带语音识别功能,不需要再去增加语音识别的功能 159 | 160 | 161 | ###### 人工智能API加值 162 | - 新闻摘要api的价值: 163 | > 在极短的时间内生成一篇新闻的摘要,而且概括性强,可以解决摘要概括性不强、摘要质量不好等问题。 164 | 165 | - 文本纠错api价值: 166 | > 可以有效的解决新闻稿审核时间长而且审核后仍然出现错误的情况。减少审核的人力和时间成本,且大大提升了文章的质量。 167 | 168 | - 文本审核api的价值: 169 | > - 对浏览者的评论信息检测,一旦发现有恶意垃圾评论,可以做到文本的自动审核与实时过滤。 170 | > - 作者提交的文章中如若夹杂了推广、反动、色情信息,会给内容平台带来极大的法律风险,应用文本审核可帮助解决平台一直以来困扰和担心的问题。 171 | 172 | - 文本标签api价值: 173 | > 对文章进行核心关键词分析,为新闻个性化推荐、相似文章聚合、文本内容分析等提供技术支持 174 | 175 | - 手写字识别api的价值: 176 | > 可以将我们在采访流程的手写记录的信息直接转成文字。 177 | 178 | # 第二部分:原型设计 179 | 180 |

一、产品架构图

181 | 182 | ![产品架构图](img/产品架构图.png) 183 | 184 |

二、产品流程图

185 | 186 | ![产品流程图](img/产品流程图.png) 187 |

三、原型的全局说明

188 | 189 | ###### 功能权限分为登录/未登录两个状态: 190 | - 登陆状态:能及时的查看个人稿箱,并且能进行备份保存和导出等操作。 191 | - 未登陆状态:只能进行简单的操作,如记录信息。但是不能进行编辑等。 192 | ###### 底部栏: 193 | - 首页:首页的功能包括记录信息、撰写文章和文本审核。 194 | - 我的:我的页面可以登陆/注册,和查看个人稿箱等。 195 | 196 |

四、Axure原型文档交互展示

197 | 198 | ### [Axure原型文档交互展示](http://nfunm104.gitee.io/api_final_exam) 199 | ### [原型下载地址](https://gitee.com/NFUNM104/API_final_exam) 200 | ![产品交互及设计低保真原型](img/hui.jpg) 201 | 202 |

原型4.口头操作说明

203 | 204 | - 已经在课堂上完成此部分。 205 | 206 | 207 | 208 | # 第三部分:机器学习之API的输出入展示 209 | 210 |

一、API输入与输出

211 | 212 | ###### 新闻摘要api: 213 | - 在极短的时间内生成概括性强的新闻摘要。 214 | [详细的代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E6%96%B0%E9%97%BB%E6%91%98%E8%A6%81.ipynb) 215 | 216 | ###### 文本纠错api: 217 | - 对文本内容进行和纠错。 218 | [详细的代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E6%96%87%E6%9C%AC%E7%BA%A0%E9%94%99%E5%92%8C%E6%96%87%E6%9C%AC%E5%AE%A1%E6%A0%B8.ipynb) 219 | 220 | ###### 文本审核api: 221 | - 对文本内容进行和纠错。 222 | [详细的代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E6%96%87%E6%9C%AC%E7%BA%A0%E9%94%99%E5%92%8C%E6%96%87%E6%9C%AC%E5%AE%A1%E6%A0%B8.ipynb) 223 | 224 | ###### 文本标签api: 225 | - 对文章进行核心关键词分析,生成标签。 226 | [详细的代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E6%96%87%E6%9C%AC%E6%A0%87%E7%AD%BE.ipynb) 227 | 228 | 229 | ###### 手写字识别api: 230 | - 将在采访流程的手写记录的信息直接转成文字。 231 | 232 | - [百度手写字api详细代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E7%99%BE%E5%BA%A6%E6%89%8B%E5%86%99%E5%AD%97api.ipynb) 233 | 234 | - [讯飞手写字api详细代码](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E8%AE%AF%E9%A3%9E%E6%89%8B%E5%86%99%E5%AD%97api.ipynb) 235 | 236 |

二、API1.使用水平

237 | 238 | - 输入:语音或者本地音频;输出:文字 239 | - 输入:图片;输出:文字 240 | - 输入:完整新闻稿;输出:新闻摘要 241 | - 输入:完整新闻稿;输出:文本标签 242 | - 输入:完整新闻稿;输出:高亮的文本错误 243 | - 输入:完整新闻稿;输出:高亮的内容错误 244 | 245 | - [所有代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/tree/master/code) 246 | 247 |

三、API2.使用比较分析

248 | 249 | ### 手写字识别比较 250 | 251 | - 通过搜索引擎发现排名较为靠前的百度ai开放平台和讯飞开放平台提供手写字识别服务并对此进行比较 252 | 253 | |对比项|百度|讯飞| 254 | |---|---|---| 255 | |代码比较|[百度手写字api详细代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E7%99%BE%E5%BA%A6%E6%89%8B%E5%86%99%E5%AD%97api.ipynb)|[讯飞手写字api详细代码](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E8%AE%AF%E9%A3%9E%E6%89%8B%E5%86%99%E5%AD%97api.ipynb)| 256 | |使用效果|对于字迹潦草的字体根本无法输出文字,仅使用与字体工整的手写字|对于字迹潦草的字体,仍然能给出部分输出文字,相比百度而已文字的识别准确度也比较高,可查看代码对比| 257 | |成熟度|[2019-12-09刚刚推出最新版的api文档](https://ai.baidu.com/ai-doc/OCR/hk3h7y2qq),调用方法和过程比较繁琐,没有给定参考代码,服务刚刚推出,处于起步阶段|[有详细的api调用文档及说明](https://www.xfyun.cn/doc/words/wordRecg/API.html#%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E),并且有相应开发语言的调用示例代码,服务较为成熟| 258 | |性价比|每日 50000 次免费调用量,开通按量后付费。调用失败不计费[百度ai开放平台手写字api产品价格](https://ai.baidu.com/ai-doc/OCR/9k3h7xuv6)|免费次数为90天10万服务量,若是付费的话分为三个套餐,1万服务量350元/年;10万服务量3200/年;100万服务量30000元/年[讯飞开放平台手写字api](https://www.xfyun.cn/services/wordRecg)| 259 | |服务评估|仅有api文档且无示例代码,应用场景和参数不完整,无法进行进一步开发调用|[具有详细的说明](https://www.xfyun.cn/services/wordRecg)及[api调用教程](https://www.xfyun.cn/doc/words/wordRecg/API.html#%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E),且参数划分完整,提供业务参数,可扩展性强| 260 | 261 | - 总结:通过对比调取百度ai开放平台和讯飞开放平台提供的手写字识别api,对比输出结果,综合上述内容,最终选定使用讯飞开发平台提供的api服务。 262 | 263 | ### 文章标签API比较 264 | |对比项|百度|讯飞| 265 | |---|---|---| 266 | |使用效果|输入一段新闻时,直接生成词云,这样那个关键字占的比重较大也一目了然|输入一段新闻时,生成的结果时每个词的的权重,不太了解权重的人会花时间了解权重的含义,用户体验差| 267 | |成熟度|[2019-12-09刚刚推出最新版的api文档](https://ai.baidu.com/ai-doc/OCR/hk3h7y2qq),调用方法和过程比较繁琐,没有给定参考代码,服务刚刚推出,处于起步阶段|[有详细的api调用文档及说明](https://www.xfyun.cn/doc/words/wordRecg/API.html#%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E),并且有相应开发语言的调用示例代码,服务较为成熟| 268 | |性价比|0.0025元/次,超过额度即按量计费[百度ai开放平台文本标签产品价格](https://ai.baidu.com/ai-doc/NLP/Sk3pmn0o5)|讯飞这个平台对文章标签没有具体的价格标明,但是每天有20000次限额,如果需要提高额度,需要进行实名认证。[具体的说明](https://console.xfyun.cn/services/ke)| 269 | |服务评估|该平台最近在升,所以打开其技术文档是没有任何内容的,服务性不好。|[具有详细的说明](https://www.xfyun.cn/doc/nlp/keyword-extraction/API.html#%E6%8E%A5%E5%8F%A3%E8%BF%94%E5%9B%9E%E5%8F%82%E6%95%B0),且python的实例代码可以直接下载运行,参考性强|| 270 | 271 | - 总结:通过对比调取百度ai开放平台和讯飞开放平台提供的文章标签API,对比输出结果,综合上述内容,最终选定使用百度开发平台提供的api服务。 272 | 273 | ### 文章纠错API比较 274 | |对比项|百度|腾讯云| 275 | |---|---|---| 276 | |使用效果|输入一段带有错别字的文字,结果把错别字进行高亮。|没有功能演示部分,但从技术文档看不出其好坏,需要自己调用该API进行计较分析| 277 | |成熟度|[详细的实例代码](https://ai.baidu.com/ai-doc/NLP/Yk3h7h9o5#%E6%96%87%E6%9C%AC%E7%BA%A0%E9%94%99%E6%8E%A5%E5%8F%A3),有详细的实例代码,而且调用时比较简单方便|[api调用文档及说明](https://cloud.tencent.com/document/product/271/35509),虽然有示例代码,但是并不详细,参考价值性不高| 278 | |性价比|每天都有免费的次数使用,超过额度后,可以预付费次数包或者按量后付费。价格比较细化,而且也比较清晰[百度ai开放平台文章纠错API产品价格](https://ai.baidu.com/ai-doc/NLP/Sk3pmn0o5)|腾讯云是按照月和次数区分价格的,,购买月套餐包长期享受优惠折扣(当前价目表为8折价)[具体的说明](https://buy.cloud.tencent.com/price/nlp)| 279 | |服务评估|有功能演示的体验部分,而且每天都会有免费的次数,开发调用比较方便|示例代码比较简单,对于新手而言参考性不高且有一定的难度,对比百度服务性不强| 280 | 281 | - 总结:通过对比调取百度ai开放平台和讯飞开放平台提供的文章纠错API,对比输出结果,综合上述内容,最终选定使用百度开发平台提供的api服务。 282 | 283 |

四、API3.使用后风险报告

284 | 285 | - 自行进行代码测试比较,百度api和讯飞api利用同一图片进行比较,讯飞api识别率更高,但仍存在一些误差,可能会对用户体验造成影响,但本app可进行自定义编辑,可对错误识别的文字进行更正,且增设了文本纠错功能。 286 | 287 | 对比项 | 百度 | 讯飞 | 总结 288 | ---|---|---|--- 289 | API市场竞争程度 | bing搜索排行为第一 | bing搜索排行第三 | 讯飞搜索引擎排名较前,且是api说明介绍页面,说明经常更新,服务推出较早,比较成熟。百度仅显示文档调用页面,说明并不是核心业务,推出时间较短。 290 | 输入输出限制 | 仅支持中文字体及数字 | 支持中英文自动识别 | 对于手写字体的全面性上,讯飞的服务更为完善 291 | 定价 | [百度ai开放平台手写字api产品价格](https://ai.baidu.com/ai-doc/OCR/9k3h7xuv6)|[讯飞开放平台手写字api](https://www.xfyun.cn/services/wordRecg)| 从免费额度来看,百度提供每日50次免费调用量,讯飞提供90天10w次调用的免费调用量。但是百度可进行按套餐付费与按量付费两种方式,讯飞仅支持套餐。 292 | 293 | - 总结:短期来讲可使用讯飞的免费额度,后续等百度服务质量与api接入服务更为完善再考虑转换 294 | 295 | 296 | 297 |

五、API4.加分项平

298 | - 用到的的api有新闻摘要api、文本审核api、文本纠错api、文本标签api、手写字识别api、图像识别api. 299 | 300 | - [新闻摘要代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E6%96%B0%E9%97%BB%E6%91%98%E8%A6%81.ipynb) 301 | 302 | - [文本纠错的代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E6%96%87%E6%9C%AC%E7%BA%A0%E9%94%99%E5%92%8C%E6%96%87%E6%9C%AC%E5%AE%A1%E6%A0%B8.ipynb) 303 | 304 | 305 | - [文本审核的代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E6%96%87%E6%9C%AC%E7%BA%A0%E9%94%99%E5%92%8C%E6%96%87%E6%9C%AC%E5%AE%A1%E6%A0%B8.ipynb) 306 | 307 | - [文本标签的代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E6%96%87%E6%9C%AC%E6%A0%87%E7%AD%BE.ipynb) 308 | 309 | 310 | - [百度手写字api详细代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E7%99%BE%E5%BA%A6%E6%89%8B%E5%86%99%E5%AD%97api.ipynb) 311 | 312 | - [讯飞手写字api详细代码](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/blob/master/code/%E8%AE%AF%E9%A3%9E%E6%89%8B%E5%86%99%E5%AD%97api.ipynb) 313 | 314 | 315 | # 评分量表 316 | 317 | ## PRD1加值宣言 318 | 319 | - 手写字识别api的价值: 320 | > 可以将我们在采访流程的手写记录的信息直接转成文字。 321 | 322 | - 新闻摘要api的价值: 323 | > 在极短的时间内生成一篇新闻的摘要,而且概括性强,可以解决摘要概括性不强、摘要质量不好等问题。 324 | 325 | - 文本纠错api价值: 326 | > 可以有效的解决新闻稿审核时间长而且审核后仍然出现错误的情况。减少审核的人力和时间成本,且大大提升了文章的质量。 327 | 328 | - 文本审核api的价值: 329 | > - 对浏览者的评论信息检测,一旦发现有恶意垃圾评论,可以做到文本的自动审核与实时过滤。 330 | > - 作者提交的文章中如若夹杂了推广、反动、色情信息,会给内容平台带来极大的法律风险,应用文本审核可帮助解决平台一直以来困扰和担心的问题。 331 | 332 | - 文本标签api价值: 333 | > 对文章进行核心关键词分析,为新闻个性化推荐、相似文章聚合、文本内容分析等提供技术支持 334 | 335 | ## PRD2核心价值 336 | 337 | - 最小可行性产品(产品的核心价值) 338 | > 提供语音输入、图像识别和翻译、手写字识别等功能,可供新闻编辑者快速记录并提取信息进行新闻的撰写。 339 | > 帮助他们自动生成新闻的摘要和文本标签。并对进行文本审核和纠错。 340 | 341 | ## PRD3核心价值与用户痛点 342 | - 产品中的[用户痛点宣言](#chapter3)和[核心价值](#chapter2)都有在上文提到。 343 | 344 | ## PRD4人工智能概率性与用户痛点 345 | - [PRD4-人工智能概率性与用户痛点](#chapter12) 346 | - 目前人类对ImageNet图像的识别错误率大约在5%,微软的人工智能系统的错误率为4.94%,谷歌为4.8%。百度在2015年的时候已将这一错误率进一步降至4.58%,实现了质的飞跃。 347 | 348 | ## PRD5需求列表与人工智能API加值 349 | - [PRD5-需求列表与人工智能API加值](#chapter13) 350 | 351 | 352 | # 原型设计 353 | ## 原型1.交互及界面设计 & 原型2.信息设计 & 原型文档 354 | - [产品原型展示和信息设计](#chapter17)包括交互及界面设计、信息设计、原型文档的所有内容。 355 | - [Gitee-原型下载地址](#chapter17) 356 | 357 | # 使用水平:API之输入及输出 358 | 359 | ### [所有代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/tree/master/code) 360 | 361 | ### [API输入与输出](#chapter18) 362 | ### [API2.使用比较分析](#chapter20) 363 | ### [API3.使用后风险报告](#chapter21) 364 | ### [API4.加分项](#chapter22) 365 | 366 | # 清单 367 | 序号| 名字 368 | ---|--- 369 | 1|[参考文献:大融合背景下高校学生自媒体的立身之策——以“佛系学习社”为例 ](https://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFDLAST2019&filename=SHIT201909142&uid=WEEvREcwSlJHSldRa1FhdXNXaEhoOHRvcktTUUZCYk1wTjB5aHpCVU13Yz0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4IQMovwHtwkF4VYPoHbKxJw!!&v=MDM2NzVCWm9SOGVYMUx1eFlTN0RoMVQzcVRyV00xRnJDVVJMT2VadVJtRnkvbFZMdkxOaVhDZXJHNEg5ak1wbzU=) 370 | 2|[Axure原型文档交互展示](http://nfunm104.gitee.io/api_final_exam) 371 | 3|[原型下载地址](https://gitee.com/NFUNM104/API_final_exam) 372 | 4|[所有代码示例](https://github.com/zhengxiaopingzxp/API_ML_PM_Final_Project/tree/master/code) -------------------------------------------------------------------------------- /code/文本标签.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [] 9 | } 10 | ], 11 | "metadata": { 12 | "kernelspec": { 13 | "display_name": "Python 3", 14 | "language": "python", 15 | "name": "python3" 16 | }, 17 | "language_info": { 18 | "codemirror_mode": { 19 | "name": "ipython", 20 | "version": 3 21 | }, 22 | "file_extension": ".py", 23 | "mimetype": "text/x-python", 24 | "name": "python", 25 | "nbconvert_exporter": "python", 26 | "pygments_lexer": "ipython3", 27 | "version": "3.7.3" 28 | } 29 | }, 30 | "nbformat": 4, 31 | "nbformat_minor": 2 32 | } 33 | -------------------------------------------------------------------------------- /code/文本纠错和文本审核.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "### 文本纠错" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 5, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "from aip import AipFace,AipBodyAnalysis\n", 17 | "from IPython.display import Image\n", 18 | "from IPython.core.display import HTML \n", 19 | "from aip import AipNlp\n", 20 | "\"\"\" 你的 APPID AK SK \"\"\"\n", 21 | "APP_ID = '17954942'\n", 22 | "API_KEY = 'QlX1U2XhV2i3lwptHkq0AqW8'\n", 23 | "SECRET_KEY = '8XeUr3lOu9GmGTm31gnORCpaSjOl3x4P'\n", 24 | "client = AipNlp(APP_ID, API_KEY, SECRET_KEY)" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 9, 30 | "metadata": { 31 | "scrolled": true 32 | }, 33 | "outputs": [ 34 | { 35 | "data": { 36 | "text/plain": [ 37 | "{'log_id': 8409819509536772934,\n", 38 | " 'item': {'vec_fragment': [{'ori_frag': '委缩',\n", 39 | " 'begin_pos': 42,\n", 40 | " 'correct_frag': '萎缩',\n", 41 | " 'end_pos': 46},\n", 42 | " {'ori_frag': '巨烈', 'begin_pos': 82, 'correct_frag': '剧烈', 'end_pos': 86}],\n", 43 | " 'score': 0.765779,\n", 44 | " 'correct_query': '日前,地球上的绿色之肺——森林正在一天天地萎缩。由于燃烧物增多,二氧化碳的排放量在剧烈增加。'},\n", 45 | " 'text': '日前,地球上的绿色之肺——森林正在一天天地委缩。由于燃烧物增多,二氧化碳的排放量在巨烈增加。'}" 46 | ] 47 | }, 48 | "execution_count": 9, 49 | "metadata": {}, 50 | "output_type": "execute_result" 51 | } 52 | ], 53 | "source": [ 54 | "text = \"日前,地球上的绿色之肺——森林正在一天天地委缩。由于燃烧物增多,二氧化碳的排放量在巨烈增加。\"\n", 55 | "\n", 56 | "\"\"\" 调用文本纠错 \"\"\"\n", 57 | "client.ecnet(text)" 58 | ] 59 | }, 60 | { 61 | "cell_type": "markdown", 62 | "metadata": {}, 63 | "source": [ 64 | "### 文本审核" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": 4, 70 | "metadata": {}, 71 | "outputs": [ 72 | { 73 | "data": { 74 | "text/plain": [ 75 | "{'log_id': 1153003550811793417,\n", 76 | " 'result': {'spam': 1,\n", 77 | " 'review': [],\n", 78 | " 'reject': [{'score': 1.0, 'hit': ['法轮功', '法轮', '轮功'], 'label': 3},\n", 79 | " {'score': 0.95663443396226, 'hit': [], 'label': 4}],\n", 80 | " 'pass': [{'score': 0.2, 'hit': [], 'label': 1},\n", 81 | " {'score': 0.013000000268221, 'hit': [], 'label': 2},\n", 82 | " {'score': 0.0020000000949949, 'hit': [], 'label': 5}]}}" 83 | ] 84 | }, 85 | "execution_count": 4, 86 | "metadata": {}, 87 | "output_type": "execute_result" 88 | } 89 | ], 90 | "source": [ 91 | "from aip import AipImageCensor\n", 92 | "from IPython.display import Image\n", 93 | "from IPython.core.display import HTML \n", 94 | "import base64\n", 95 | "\"\"\" 你的 APPID AK SK \"\"\"\n", 96 | "APP_ID = '17955305'\n", 97 | "API_KEY = 'pREm7vlRtbxTG5r0txTOEVKY'\n", 98 | "SECRET_KEY = 'LW3dtaibVb3nkmRGFNLs9dGT0bhRz6El'\n", 99 | "client = AipImageCensor(APP_ID, API_KEY, SECRET_KEY)\n", 100 | "\n", 101 | "client.antiSpam('加入法轮功,共同创建幸福')" 102 | ] 103 | }, 104 | { 105 | "cell_type": "code", 106 | "execution_count": null, 107 | "metadata": {}, 108 | "outputs": [], 109 | "source": [] 110 | } 111 | ], 112 | "metadata": { 113 | "kernelspec": { 114 | "display_name": "Python 3", 115 | "language": "python", 116 | "name": "python3" 117 | }, 118 | "language_info": { 119 | "codemirror_mode": { 120 | "name": "ipython", 121 | "version": 3 122 | }, 123 | "file_extension": ".py", 124 | "mimetype": "text/x-python", 125 | "name": "python", 126 | "nbconvert_exporter": "python", 127 | "pygments_lexer": "ipython3", 128 | "version": "3.7.3" 129 | } 130 | }, 131 | "nbformat": 4, 132 | "nbformat_minor": 2 133 | } 134 | -------------------------------------------------------------------------------- /code/新闻摘要.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "from aip import AipFace,AipBodyAnalysis\n", 10 | "from IPython.display import Image\n", 11 | "from IPython.core.display import HTML \n", 12 | "from aip import AipNlp\n", 13 | "\"\"\" 你的 APPID AK SK \"\"\"\n", 14 | "APP_ID = '17954999'\n", 15 | "API_KEY = 'qhYhiuQIsfKjo1wmkyTAI5ax'\n", 16 | "SECRET_KEY = '04MaZwOGGlGN0aspVGtzVDMwwSoRuPbQ'\n", 17 | "client = AipNlp(APP_ID, API_KEY, SECRET_KEY)" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 10, 23 | "metadata": {}, 24 | "outputs": [ 25 | { 26 | "data": { 27 | "text/plain": [ 28 | "{'log_id': 1294349122109493990,\n", 29 | " 'summary': '新华社北京12月6日消息,中共中央政治局12月6日召开会议,分析研究2020年经济工作;听取中央纪律检查委员会工作汇报,研究部署2020年党风廉政建设和反腐败工作。中共中央总书记习近平主持会议。此前,习近平总书记主持召开中央政治局常委会会议,听取中央纪委2019年工作情况和十九届中央纪律检查委员会第四次全体会议准备情况汇报。'}" 30 | ] 31 | }, 32 | "execution_count": 10, 33 | "metadata": {}, 34 | "output_type": "execute_result" 35 | } 36 | ], 37 | "source": [ 38 | "content =\"\"\"新华社北京12月6日消息,中共中央政治局12月6日召开会议,分析研究2020年经济工作;听取中央纪律检查委员会工作汇报,研究部署2020年党风廉政建设和反腐败工作。中共中央总书记习近平主持会议。\n", 39 | "会议认为,今年以来,面对国内外风险挑战明显上升的复杂局面,全党全国贯彻党中央决策部署,坚持稳中求进工作总基调,以供给侧结构性改革为主线,推动高质量发展,做好“六稳”工作,保持经济社会持续健康发展,三大攻坚战取得关键进展,改革开放迈出重要步伐,供给侧结构性改革继续深化,科技创新取得新突破,人民群众获得感、幸福感、安全感提升,“十三五”规划主要指标进度符合预期,全面建成小康社会取得了新的重大进展。\n", 40 | "会议指出,2020年是全面建成小康社会和“十三五”规划收官之年,我们要实现第一个百年奋斗目标。做好明年经济工作,要以习近平新时代中国特色社会主义思想为指导,全面贯彻党的十九大和十九届二中、三中、四中全会精神,紧扣全面建成小康社会目标任务,坚持稳中求进工作总基调,坚持新发展理念,坚持以供给侧结构性改革为主线,坚持以改革开放为动力,推动高质量发展,加快建设现代化经济体系,坚决打赢三大攻坚战,全面做好“六稳”工作,统筹推进稳增长、促改革、调结构、惠民生、防风险、保稳定,保持经济运行在合理区间,确保全面建成小康社会和“十三五”规划圆满收官。\n", 41 | "会议强调,当前和今后一个时期,我国经济稳中向好、长期向好的基本趋势没有变。我们要坚持用辩证思维看待形势发展变化,增强必胜信心,善于把外部压力转化为深化改革、扩大开放的强大动力,集中精力办好自己的事。要坚持宏观政策要稳、微观政策要活、社会政策要托底的政策框架,坚持问题导向、目标导向、结果导向,提高宏观调控的前瞻性、针对性、有效性,运用好逆周期调节工具。明年要坚决打好三大攻坚战,确保实现脱贫攻坚目标任务,确保实现污染防治攻坚战阶段性目标,确保不发生系统性金融风险。要加快现代化经济体系建设,推动农业、制造业、服务业高质量发展,加强基础设施建设,推动形成优势互补高质量发展的区域经济布局,提升科技实力和创新能力,深化经济体制改革,建设更高水平开放型经济新体制。\n", 42 | "会议要求,深入贯彻党的十九届四中全会精神,切实把党领导经济工作的制度优势转化为治理效能,全面做好改革发展稳定各项工作,改进领导经济工作的方式方法,完善担当作为的激励机制。确保困难群众基本生活得到有效保障和改善。做好岁末年初各方面工作,落实安全生产责任制,确保社会大局和谐稳定。\n", 43 | "会议指出,在党中央坚强领导下,中央纪委国家监委和地方各级纪委监委忠实履行党章和宪法赋予的职责,深入学习贯彻习近平新时代中国特色社会主义思想,督促党员干部自觉做到“两个维护”,贯彻落实全面从严治党方针和要求,坚持稳中求进、实事求是、依规依纪依法,纪检监察工作坚定稳妥、扎实有效,在高质量发展上取得新的成绩。强化监督职责,深化政治监督,落实中央八项规定精神,集中整治形式主义、官僚主义问题,抓好政治巡视和巡视整改,运用“四种形态”,严格执纪执法、精准有力问责。深化拓展整治群众身边腐败和作风问题,巩固发展反腐败斗争压倒性胜利。统筹推进纪检监察体制改革,提高规范化法治化水平,建设忠诚干净担当的纪检监察铁军。\n", 44 | "会议强调,党的十九届四中全会对坚持和完善中国特色社会主义制度、推进国家治理体系和治理能力现代化作出战略部署,对推动全面从严治党向纵深发展提出新的要求。纪检监察工作要以习近平新时代中国特色社会主义思想为指导,深入贯彻党的十九大和十九届二中、三中、四中全会精神,增强“四个意识”,坚定“四个自信”,做到“两个维护”,协助党委深化全面从严治党,坚持和完善党和国家监督体系,强化对权力运行的制约和监督,一体推进不敢腐、不能腐、不想腐,建设高素质专业化纪检监察干部队伍,为实现第一个百年奋斗目标提供坚强保障。\n", 45 | "此前,习近平总书记主持召开中央政治局常委会会议,听取中央纪委2019年工作情况和十九届中央纪律检查委员会第四次全体会议准备情况汇报。\"\"\"\n", 46 | "maxSummaryLen = 300\n", 47 | "\n", 48 | "\"\"\" 调用新闻摘要接口 \"\"\"\n", 49 | "client.newsSummary(content, maxSummaryLen);\n", 50 | "\n", 51 | "\"\"\" 如果有可选参数 \"\"\"\n", 52 | "options = {}\n", 53 | "options[\"title\"] = \"习近平主持召开中共中央政治局会议:分析研究明年经济工作\"\n", 54 | "\n", 55 | "\"\"\" 带参数调用新闻摘要接口 \"\"\"\n", 56 | "client.newsSummary(content, maxSummaryLen, options)" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": null, 62 | "metadata": {}, 63 | "outputs": [], 64 | "source": [] 65 | } 66 | ], 67 | "metadata": { 68 | "kernelspec": { 69 | "display_name": "Python 3", 70 | "language": "python", 71 | "name": "python3" 72 | }, 73 | "language_info": { 74 | "codemirror_mode": { 75 | "name": "ipython", 76 | "version": 3 77 | }, 78 | "file_extension": ".py", 79 | "mimetype": "text/x-python", 80 | "name": "python", 81 | "nbconvert_exporter": "python", 82 | "pygments_lexer": "ipython3", 83 | "version": "3.7.3" 84 | } 85 | }, 86 | "nbformat": 4, 87 | "nbformat_minor": 2 88 | } 89 | -------------------------------------------------------------------------------- /code/百度手写字api.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 15, 6 | "metadata": { 7 | "scrolled": true 8 | }, 9 | "outputs": [ 10 | { 11 | "name": "stdout", 12 | "output_type": "stream", 13 | "text": [ 14 | "{'log_id': 4783419780450766123,\n", 15 | " 'words_result': [{'location': {'height': 19,\n", 16 | " 'left': 565,\n", 17 | " 'top': 559,\n", 18 | " 'width': 21},\n", 19 | " 'words': ','},\n", 20 | " {'location': {'height': 176,\n", 21 | " 'left': 611,\n", 22 | " 'top': 820,\n", 23 | " 'width': 89},\n", 24 | " 'words': '浏应'},\n", 25 | " {'location': {'height': 52,\n", 26 | " 'left': 829,\n", 27 | " 'top': 1264,\n", 28 | " 'width': 54},\n", 29 | " 'words': 'L'},\n", 30 | " {'location': {'height': 181,\n", 31 | " 'left': 608,\n", 32 | " 'top': 1428,\n", 33 | " 'width': 120},\n", 34 | " 'words': '⑤秒'},\n", 35 | " {'location': {'height': 44,\n", 36 | " 'left': 877,\n", 37 | " 'top': 1516,\n", 38 | " 'width': 31},\n", 39 | " 'words': 'Q'}],\n", 40 | " 'words_result_num': 5}\n", 41 | "{'log_id': 6871930170409909675,\n", 42 | " 'words_result': [{'location': {'height': 204,\n", 43 | " 'left': 374,\n", 44 | " 'top': 230,\n", 45 | " 'width': 1214},\n", 46 | " 'words': '网络与新媒体APT人工智能产'},\n", 47 | " {'location': {'height': 157,\n", 48 | " 'left': 363,\n", 49 | " 'top': 440,\n", 50 | " 'width': 1108},\n", 51 | " 'words': '品经理手写库APZ测试.'}],\n", 52 | " 'words_result_num': 2}\n" 53 | ] 54 | } 55 | ], 56 | "source": [ 57 | "import urllib, urllib.request, sys\n", 58 | "import requests\n", 59 | "import ssl\n", 60 | "import json\n", 61 | "import pprint\n", 62 | "import base64\n", 63 | "# client_id 为官网获取的AK, client_secret 为官网获取的SK\n", 64 | "def get_file_content(filePath):\n", 65 | " with open(filePath, 'rb') as fp:\n", 66 | " return fp.read()\n", 67 | "host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=ABDsQ1Lmq7hsDd3LhfIrExP6&client_secret=RCc8uX5zIeFNyyaGRh7k5SX0uNKdhRV1'\n", 68 | "request = urllib.request.Request(host)\n", 69 | "request.add_header('Content-Type', 'application/json; charset=UTF-8')\n", 70 | "response = urllib.request.urlopen(request)\n", 71 | "content = response.read()\n", 72 | "# if (content):\n", 73 | "# print(content)\n", 74 | "access_token = eval(content)[\"access_token\"]\n", 75 | "access_token\n", 76 | "# access_token = \"24.2f675d03474d01f013372af8ff2a3ba7.2592000.1574426829.282335-17604736\"\n", 77 | "# image = get_file_content(r'C:\\Users\\Administrator\\Desktop\\ces.jpg')\n", 78 | "url = \"https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting?access_token=\"+access_token\n", 79 | "# print(image)\n", 80 | "with open(r'C:\\Users\\Administrator\\Desktop\\2.jpg', 'rb') as f:\n", 81 | " base64_data = base64.b64encode(f.read())\n", 82 | " s = base64_data.decode()\n", 83 | " \n", 84 | "with open(r'C:\\Users\\Administrator\\Desktop\\ces.jpg', 'rb') as f:\n", 85 | " base64_data = base64.b64encode(f.read())\n", 86 | " s1 = base64_data.decode()\n", 87 | "# ur = urllib.parse.quote(image)\n", 88 | "# print(type(ur))\n", 89 | "data={\n", 90 | " \"image\":s\n", 91 | "}\n", 92 | "data1={\n", 93 | " \"image\":s1\n", 94 | "}\n", 95 | "headers = {'content-type': 'application/x-www-form-urlencoded'\n", 96 | " }\n", 97 | "# encode_data = json.dumps(data).encode('utf-8')\n", 98 | "# print(encode_data)\n", 99 | "r = requests.post(url, data = data, headers=headers)\n", 100 | "result = r.json()\n", 101 | "pprint.pprint(result)\n", 102 | "r1 = requests.post(url, data = data1, headers=headers)\n", 103 | "result = r1.json()\n", 104 | "pprint.pprint(result)" 105 | ] 106 | }, 107 | { 108 | "cell_type": "code", 109 | "execution_count": null, 110 | "metadata": {}, 111 | "outputs": [], 112 | "source": [] 113 | }, 114 | { 115 | "cell_type": "code", 116 | "execution_count": null, 117 | "metadata": {}, 118 | "outputs": [], 119 | "source": [] 120 | } 121 | ], 122 | "metadata": { 123 | "kernelspec": { 124 | "display_name": "Python 3", 125 | "language": "python", 126 | "name": "python3" 127 | }, 128 | "language_info": { 129 | "codemirror_mode": { 130 | "name": "ipython", 131 | "version": 3 132 | }, 133 | "file_extension": ".py", 134 | "mimetype": "text/x-python", 135 | "name": "python", 136 | "nbconvert_exporter": "python", 137 | "pygments_lexer": "ipython3", 138 | "version": "3.7.3" 139 | } 140 | }, 141 | "nbformat": 4, 142 | "nbformat_minor": 2 143 | } 144 | -------------------------------------------------------------------------------- /code/讯飞手写字api.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 8, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "b'{\"code\":\"0\",\"data\":{\"block\":[{\"type\":\"text\",\"line\":[{\"confidence\":1,\"location\":{\"top_left\":{\"x\":31,\"y\":0},\"right_bottom\":{\"x\":465,\"y\":30}},\"word\":[{\"content\":\"The\"},{\"content\":\"terrible\"},{\"content\":\"earthquake\"},{\"content\":\"and\"},{\"content\":\"the\"},{\"content\":\"following\"},{\"content\":\"tsunami\"}]},{\"confidence\":1,\"location\":{\"top_left\":{\"x\":15,\"y\":24},\"right_bottom\":{\"x\":449,\"y\":54}},\"word\":[{\"content\":\"have\"},{\"content\":\"caused\"},{\"content\":\"so\"},{\"content\":\"many\"},{\"content\":\"people\\'s\"},{\"content\":\"injuries\"},{\"content\":\"and\"},{\"content\":\"deaths.\"}]},{\"confidence\":1,\"location\":{\"top_left\":{\"x\":15,\"y\":48},\"right_bottom\":{\"x\":481,\"y\":75}},\"word\":[{\"content\":\"Besides,\"},{\"content\":\"many\"},{\"content\":\"citizens\"},{\"content\":\"become\"},{\"content\":\"homeless.\"},{\"content\":\"We\"},{\"content\":\"chinese\"},{\"content\":\"feel\"}]},{\"confidence\":1,\"location\":{\"top_left\":{\"x\":15,\"y\":76},\"right_bottom\":{\"x\":465,\"y\":102}},\"word\":[{\"content\":\"greatly\"},{\"content\":\"sorry\"},{\"content\":\"for\"},{\"content\":\"the\"},{\"content\":\"pains\"},{\"content\":\"you\"},{\"content\":\"are\"},{\"content\":\"suffering.\"},{\"content\":\"And\"},{\"content\":\"I\"}]},{\"confidence\":1,\"location\":{\"top_left\":{\"x\":15,\"y\":102},\"right_bottom\":{\"x\":449,\"y\":125}},\"word\":[{\"content\":\"do\"},{\"content\":\"hope\"},{\"content\":\"you\"},{\"content\":\"can\"},{\"content\":\"overcome\"},{\"content\":\"those\"},{\"content\":\"great\"},{\"content\":\"difficulties.\"}]},{\"confidence\":1,\"location\":{\"top_left\":{\"x\":31,\"y\":123},\"right_bottom\":{\"x\":481,\"y\":150}},\"word\":[{\"content\":\"Please\"},{\"content\":\"remember\"},{\"content\":\"Japan\"},{\"content\":\"isn\\'t\"},{\"content\":\"alone.People\"},{\"content\":\"all\"},{\"content\":\"over\"},{\"content\":\"the\"}]},{\"confidence\":1,\"location\":{\"top_left\":{\"x\":15,\"y\":149},\"right_bottom\":{\"x\":481,\"y\":179}},\"word\":[{\"content\":\"world\"},{\"content\":\"are\"},{\"content\":\"lending\"},{\"content\":\"hands\"},{\"content\":\"to\"},{\"content\":\"the\"},{\"content\":\"areas\"},{\"content\":\"struck\"},{\"content\":\"by\"},{\"content\":\"tsunam\"}]},{\"confidence\":1,\"location\":{\"top_left\":{\"x\":15,\"y\":176},\"right_bottom\":{\"x\":466,\"y\":202}},\"word\":[{\"content\":\"and\"},{\"content\":\"earthquake.Now\"},{\"content\":\"that\"},{\"content\":\"the\"},{\"content\":\"disaster\"},{\"content\":\"has\"},{\"content\":\"happened\"}]},{\"confidence\":1,\"location\":{\"top_left\":{\"x\":15,\"y\":202},\"right_bottom\":{\"x\":481,\"y\":228}},\"word\":[{\"content\":\"we\"},{\"content\":\"should\"},{\"content\":\"face\"},{\"content\":\"it\"},{\"content\":\"bravely\"},{\"content\":\"and\"},{\"content\":\"rebuild\"},{\"content\":\"the\"},{\"content\":\"homes.\"},{\"content\":\"thus\"}]},{\"confidence\":1,\"location\":{\"top_left\":{\"x\":15,\"y\":227},\"right_bottom\":{\"x\":481,\"y\":259}},\"word\":[{\"content\":\"creating\"},{\"content\":\"a\"},{\"content\":\"stronger\"},{\"content\":\"country.\"},{\"content\":\"Tomorrow\"},{\"content\":\"is\"},{\"content\":\"another\"},{\"content\":\"day.\"}]},{\"confidence\":1,\"location\":{\"top_left\":{\"x\":0,\"y\":253},\"right_bottom\":{\"x\":257,\"y\":282}},\"word\":[{\"content\":\"All\"},{\"content\":\"the\"},{\"content\":\"things\"},{\"content\":\"will\"},{\"content\":\"be\"},{\"content\":\"better.\"}]}]}]},\"desc\":\"success\",\"sid\":\"wcr002c6662@gz15fa114b1507460e00\"}'\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "# -*- coding: utf-8 -*-\n", 18 | "from urllib import parse\n", 19 | "import base64\n", 20 | "import hashlib\n", 21 | "import time\n", 22 | "import requests\n", 23 | "\"\"\"\n", 24 | " 手写文字识别WebAPI接口调用示例接口文档(必看):https://doc.xfyun.cn/rest_api/%E6%89%8B%E5%86%99%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB.html\n", 25 | " 图片属性:jpg/png/bmp,最短边至少15px,最长边最大4096px,编码后大小不超过4M,识别文字语种:中英文\n", 26 | " webapi OCR服务参考帖子(必看):http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=39111&highlight=OCR\n", 27 | " (Very Important)创建完webapi应用添加服务之后一定要设置ip白名单,找到控制台--我的应用--设置ip白名单,如何设置参考:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=41891\n", 28 | " 错误码链接:https://www.xfyun.cn/document/error-code (code返回错误码时必看)\n", 29 | " @author iflytek\n", 30 | "\"\"\"\n", 31 | "# OCR手写文字识别接口地址\n", 32 | "URL = \"http://webapi.xfyun.cn/v1/service/v1/ocr/handwriting\"\n", 33 | "# 应用APPID(必须为webapi类型应用,并开通手写文字识别服务,参考帖子如何创建一个webapi应用:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=36481)\n", 34 | "APPID = \"5defc1a9\"\n", 35 | "# 接口密钥(webapi类型应用开通手写文字识别后,控制台--我的应用---手写文字识别---相应服务的apikey)\n", 36 | "API_KEY = \"6476e472893ce91b1f3081d95540e5e3\"\n", 37 | "def getHeader():\n", 38 | " curTime = str(int(time.time()))\n", 39 | " param = \"{\\\"language\\\":\\\"\"+language+\"\\\",\\\"location\\\":\\\"\"+location+\"\\\"}\"\n", 40 | " paramBase64 = base64.b64encode(param.encode('utf-8'))\n", 41 | "\n", 42 | " m2 = hashlib.md5()\n", 43 | " str1 = API_KEY + curTime + str(paramBase64, 'utf-8')\n", 44 | " m2.update(str1.encode('utf-8'))\n", 45 | " checkSum = m2.hexdigest()\n", 46 | "\t# 组装http请求头\n", 47 | " header = {\n", 48 | " 'X-CurTime': curTime,\n", 49 | " 'X-Param': paramBase64,\n", 50 | " 'X-Appid': APPID,\n", 51 | " 'X-CheckSum': checkSum,\n", 52 | " 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n", 53 | " }\n", 54 | " return header\n", 55 | "def getBody(filepath):\n", 56 | " with open(filepath, 'rb') as f:\n", 57 | " imgfile = f.read()\n", 58 | " data = {'image': str(base64.b64encode(imgfile), 'utf-8')}\n", 59 | " return data\n", 60 | "# 语种设置\n", 61 | "language = \"en\"\n", 62 | "# 是否返回文本位置信息\n", 63 | "location = \"true\"\n", 64 | "# 图片上传接口地址\n", 65 | "picFilePath = r\"C:\\Users\\Administrator\\Downloads\\ocr_handwriting_python3_demo\\ocr_handwriting_python3.x_demo\\ocr.jpg\"\n", 66 | "# headers=getHeader(language, location)\n", 67 | "r = requests.post(URL, headers=getHeader(), data=getBody(picFilePath))\n", 68 | "print(r.content)" 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": null, 74 | "metadata": {}, 75 | "outputs": [], 76 | "source": [] 77 | }, 78 | { 79 | "cell_type": "code", 80 | "execution_count": 11, 81 | "metadata": {}, 82 | "outputs": [ 83 | { 84 | "name": "stdout", 85 | "output_type": "stream", 86 | "text": [ 87 | "{'code': '0', 'data': {'block': [{'type': 'text', 'line': [{'confidence': 1, 'location': {'top_left': {'x': 618, 'y': 143}, 'right_bottom': {'x': 514, 'y': 577}}, 'word': [{'content': '各位同志下午好'}]}, {'confidence': 1, 'location': {'top_left': {'x': 175, 'y': 19}, 'right_bottom': {'x': 107, 'y': 971}}, 'word': [{'content': '威建议时,也就在群里发表意见.'}]}, {'confidence': 1, 'location': {'top_left': {'x': 296, 'y': 50}, 'right_bottom': {'x': 292, 'y': 1898}}, 'word': [{'content': '用件类学习问题.②对党支部的建议和意见不够,即使有的候有想法'}]}, {'confidence': 1, 'location': {'top_left': {'x': 409, 'y': 81}, 'right_bottom': {'x': 379, 'y': 1898}}, 'word': [{'content': '做为一名学要,近期为同学的取务是每乎实他们的选课问题和帮助他们'}]}, {'confidence': 1, 'location': {'top_left': {'x': 521, 'y': 141}, 'right_bottom': {'x': 501, 'y': 1868}}, 'word': [{'content': ',我是来网案了郑晓诗。我将从以下三点展开自我抓评.'}]}, {'confidence': 1, 'location': {'top_left': {'x': 703, 'y': 803}, 'right_bottom': {'x': 598, 'y': 1205}}, 'word': [{'content': '我应该'}]}, {'confidence': 1, 'location': {'top_left': {'x': 908, 'y': 449}, 'right_bottom': {'x': 766, 'y': 1831}}, 'word': [{'content': '自我批评<ERR>只知道发生<ERR>'}]}, {'confidence': 1, 'location': {'top_left': {'x': 798, 'y': 777}, 'right_bottom': {'x': 703, 'y': 1655}}, 'word': [{'content': '不知道为什么或我如果发生了该事。'}]}, {'confidence': 1, 'location': {'top_left': {'x': 709, 'y': 1441}, 'right_bottom': {'x': 623, 'y': 1590}}, 'word': [{'content': '651637'}]}]}]}, 'desc': 'success', 'sid': 'wcr002c670d@gz15fa114b173f460e00'}\n" 88 | ] 89 | } 90 | ], 91 | "source": [ 92 | "# -*- coding: utf-8 -*-\n", 93 | "from urllib import parse\n", 94 | "import base64\n", 95 | "import hashlib\n", 96 | "import time\n", 97 | "import requests\n", 98 | "\"\"\"\n", 99 | " 手写文字识别WebAPI接口调用示例接口文档(必看):https://doc.xfyun.cn/rest_api/%E6%89%8B%E5%86%99%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB.html\n", 100 | " 图片属性:jpg/png/bmp,最短边至少15px,最长边最大4096px,编码后大小不超过4M,识别文字语种:中英文\n", 101 | " webapi OCR服务参考帖子(必看):http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=39111&highlight=OCR\n", 102 | " (Very Important)创建完webapi应用添加服务之后一定要设置ip白名单,找到控制台--我的应用--设置ip白名单,如何设置参考:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=41891\n", 103 | " 错误码链接:https://www.xfyun.cn/document/error-code (code返回错误码时必看)\n", 104 | " @author iflytek\n", 105 | "\"\"\"\n", 106 | "# OCR手写文字识别接口地址\n", 107 | "URL = \"http://webapi.xfyun.cn/v1/service/v1/ocr/handwriting\"\n", 108 | "# 应用APPID(必须为webapi类型应用,并开通手写文字识别服务,参考帖子如何创建一个webapi应用:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=36481)\n", 109 | "APPID = \"5defc1a9\"\n", 110 | "# 接口密钥(webapi类型应用开通手写文字识别后,控制台--我的应用---手写文字识别---相应服务的apikey)\n", 111 | "API_KEY = \"6476e472893ce91b1f3081d95540e5e3\"\n", 112 | "def getHeader():\n", 113 | " curTime = str(int(time.time()))\n", 114 | " param = \"{\\\"language\\\":\\\"\"+language+\"\\\",\\\"location\\\":\\\"\"+location+\"\\\"}\"\n", 115 | " paramBase64 = base64.b64encode(param.encode('utf-8'))\n", 116 | "\n", 117 | " m2 = hashlib.md5()\n", 118 | " str1 = API_KEY + curTime + str(paramBase64, 'utf-8')\n", 119 | " m2.update(str1.encode('utf-8'))\n", 120 | " checkSum = m2.hexdigest()\n", 121 | "\t# 组装http请求头\n", 122 | " header = {\n", 123 | " 'X-CurTime': curTime,\n", 124 | " 'X-Param': paramBase64,\n", 125 | " 'X-Appid': APPID,\n", 126 | " 'X-CheckSum': checkSum,\n", 127 | " 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n", 128 | " }\n", 129 | " return header\n", 130 | "def getBody(filepath):\n", 131 | " with open(filepath, 'rb') as f:\n", 132 | " imgfile = f.read()\n", 133 | " data = {'image': str(base64.b64encode(imgfile), 'utf-8')}\n", 134 | " return data\n", 135 | "# 语种设置\n", 136 | "language = \"en\"\n", 137 | "# 是否返回文本位置信息\n", 138 | "location = \"true\"\n", 139 | "# 图片上传接口地址\n", 140 | "picFilePath = r\"C:\\Users\\Administrator\\Desktop\\2.jpg\"\n", 141 | "# headers=getHeader(language, location)\n", 142 | "r = requests.post(URL, headers=getHeader(), data=getBody(picFilePath))\n", 143 | "print(r.json())" 144 | ] 145 | }, 146 | { 147 | "cell_type": "code", 148 | "execution_count": 12, 149 | "metadata": {}, 150 | "outputs": [ 151 | { 152 | "name": "stdout", 153 | "output_type": "stream", 154 | "text": [ 155 | "{'code': '0', 'data': {'block': [{'type': 'text', 'line': [{'confidence': 1, 'location': {'top_left': {'x': 358, 'y': 220}, 'right_bottom': {'x': 1622, 'y': 436}}, 'word': [{'content': '网络与新媒体AP工人工智能产'}]}, {'confidence': 1, 'location': {'top_left': {'x': 328, 'y': 424}, 'right_bottom': {'x': 1472, 'y': 605}}, 'word': [{'content': '品经理手写字API测试'}]}]}]}, 'desc': 'success', 'sid': 'wcr002c69a8@gz15fa114b25eb460e00'}\n" 156 | ] 157 | } 158 | ], 159 | "source": [ 160 | "# -*- coding: utf-8 -*-\n", 161 | "from urllib import parse\n", 162 | "import base64\n", 163 | "import hashlib\n", 164 | "import time\n", 165 | "import requests\n", 166 | "\"\"\"\n", 167 | " 手写文字识别WebAPI接口调用示例接口文档(必看):https://doc.xfyun.cn/rest_api/%E6%89%8B%E5%86%99%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB.html\n", 168 | " 图片属性:jpg/png/bmp,最短边至少15px,最长边最大4096px,编码后大小不超过4M,识别文字语种:中英文\n", 169 | " webapi OCR服务参考帖子(必看):http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=39111&highlight=OCR\n", 170 | " (Very Important)创建完webapi应用添加服务之后一定要设置ip白名单,找到控制台--我的应用--设置ip白名单,如何设置参考:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=41891\n", 171 | " 错误码链接:https://www.xfyun.cn/document/error-code (code返回错误码时必看)\n", 172 | " @author iflytek\n", 173 | "\"\"\"\n", 174 | "# OCR手写文字识别接口地址\n", 175 | "URL = \"http://webapi.xfyun.cn/v1/service/v1/ocr/handwriting\"\n", 176 | "# 应用APPID(必须为webapi类型应用,并开通手写文字识别服务,参考帖子如何创建一个webapi应用:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=36481)\n", 177 | "APPID = \"5defc1a9\"\n", 178 | "# 接口密钥(webapi类型应用开通手写文字识别后,控制台--我的应用---手写文字识别---相应服务的apikey)\n", 179 | "API_KEY = \"6476e472893ce91b1f3081d95540e5e3\"\n", 180 | "def getHeader():\n", 181 | " curTime = str(int(time.time()))\n", 182 | " param = \"{\\\"language\\\":\\\"\"+language+\"\\\",\\\"location\\\":\\\"\"+location+\"\\\"}\"\n", 183 | " paramBase64 = base64.b64encode(param.encode('utf-8'))\n", 184 | "\n", 185 | " m2 = hashlib.md5()\n", 186 | " str1 = API_KEY + curTime + str(paramBase64, 'utf-8')\n", 187 | " m2.update(str1.encode('utf-8'))\n", 188 | " checkSum = m2.hexdigest()\n", 189 | "\t# 组装http请求头\n", 190 | " header = {\n", 191 | " 'X-CurTime': curTime,\n", 192 | " 'X-Param': paramBase64,\n", 193 | " 'X-Appid': APPID,\n", 194 | " 'X-CheckSum': checkSum,\n", 195 | " 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n", 196 | " }\n", 197 | " return header\n", 198 | "def getBody(filepath):\n", 199 | " with open(filepath, 'rb') as f:\n", 200 | " imgfile = f.read()\n", 201 | " data = {'image': str(base64.b64encode(imgfile), 'utf-8')}\n", 202 | " return data\n", 203 | "# 语种设置\n", 204 | "language = \"en\"\n", 205 | "# 是否返回文本位置信息\n", 206 | "location = \"true\"\n", 207 | "# 图片上传接口地址\n", 208 | "picFilePath = r\"C:\\Users\\Administrator\\Desktop\\ces.jpg\"\n", 209 | "# headers=getHeader(language, location)\n", 210 | "r = requests.post(URL, headers=getHeader(), data=getBody(picFilePath))\n", 211 | "print(r.json())" 212 | ] 213 | }, 214 | { 215 | "cell_type": "code", 216 | "execution_count": null, 217 | "metadata": {}, 218 | "outputs": [], 219 | "source": [] 220 | } 221 | ], 222 | "metadata": { 223 | "kernelspec": { 224 | "display_name": "Python 3", 225 | "language": "python", 226 | "name": "python3" 227 | }, 228 | "language_info": { 229 | "codemirror_mode": { 230 | "name": "ipython", 231 | "version": 3 232 | }, 233 | "file_extension": ".py", 234 | "mimetype": "text/x-python", 235 | "name": "python", 236 | "nbconvert_exporter": "python", 237 | "pygments_lexer": "ipython3", 238 | "version": "3.7.3" 239 | } 240 | }, 241 | "nbformat": 4, 242 | "nbformat_minor": 2 243 | } 244 | -------------------------------------------------------------------------------- /img/hui.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhengxiaopingzxp/API_ML_PM_Final_Project/b17c84db490d552139888b86138f76709f75ac82/img/hui.jpg -------------------------------------------------------------------------------- /img/产品架构图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhengxiaopingzxp/API_ML_PM_Final_Project/b17c84db490d552139888b86138f76709f75ac82/img/产品架构图.png -------------------------------------------------------------------------------- /img/产品流程图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhengxiaopingzxp/API_ML_PM_Final_Project/b17c84db490d552139888b86138f76709f75ac82/img/产品流程图.png -------------------------------------------------------------------------------- /img/原型整合.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhengxiaopingzxp/API_ML_PM_Final_Project/b17c84db490d552139888b86138f76709f75ac82/img/原型整合.jpg --------------------------------------------------------------------------------