项目 | 内容 |
---|---|
这个作业属于哪个课程 | BUAA2019软件工程 |
这个作业的要求在哪里 | 作业要求 |
我们在这个课程的目标是 | 学会团队合作,共同开发一个完整的项目 |
这个作业在哪个具体方面帮助我们实现目标 | 项目功能规格制定与说明 |
项目描述
- 项目名称:基于模板的表单数据自动化生成及应用
- 项目背景:本项目是基于微软表单识别和OCR服务的一个扩展工具。
- 在各类表单识别和OCR服务的机器学习模型中,训练数据占据很重要的地位。而真实表单中数据往往涉及用户隐私,不能直接使用,因此需要花费大量的资金和人力伪造一些与真实表单各个字段值相近的“虚假”表单作为训练数据。我们希望能够设计一个表单数据自动化生成工具,它能根据用户提供的空白表单和表单中各个字段的生成要求,自动随机生成多个满足用户要求的标注好的高质量表单,作为训练数据以供各个表单识别项目开发者使用,从而节省花费在训练数据上的人力物力。
- 目前微软表单识别项目中,用户需要手动对若干张同类型表单进行标注并训练,才能够预测新的表单,费时费力。因此,我们还希望将该工具嵌入微软表单识别项目中,使得用户不再需要人工标注多个表单,只需要一次设定好生成表单的要求,即可投入任意数量的训练数据进行训练,节省了标注时间。
- 面向的用户:
- 任意表单识别项目的开发和测试人员
- 使用微软表单识别项目的所有用户
- 项目开发者:
Name-Not-Found团队
典型用户
卡罗尔·狗蛋·史密斯
用户信息 | 用户情况 |
---|---|
姓名 | 卡罗尔·狗蛋·史密斯 |
用户身份 | 微软表单项目开发测试人员 |
用户情况 | 为了测试项目的bug,需要雇用大量的人力来填写表单 |
用户痛点 | 大量人力意味着大量的薪水,另外耗时较多 |
典型场景 | 新的模型开发出来了,又到了紧张刺激的训练和测试环节,但是真实表单数据,公司有要求不让用,只能花钱请人伪造表单来训练测试了,又费时又费钱。发现有一个自动生成表单数据的项目,可以把数据生成到Azure里,还能下载下来,真是非常方便呀! |
用户比例 | 10% |
重要性 | *****非常重要,开发测试者的时间非常宝贵,节省下来的时间与财力可以用于更多有意义的事 |
欧阳翠花
用户信息 | 用户情况 |
---|---|
姓名 | 欧阳翠花 |
用户身份 | 某公司会计 |
用户水平 | 编程能力较低、工作压力大 |
用户动机 | 想要统计本年度公司的支入支出情况 |
用户痛点 | 面对海量发票,眼花缭乱,一个不小心就会算错账 |
典型场景 | 公司又派发了大量相同格式的重要客户的发票让翠花统计,这些发票中各个字段都是常见的如姓名、金额之类的格式非常固定的东西,而且这些客户过于重要,翠花不敢找一些不知名的工具把这些发票上传到他们的服务器上,更信任比如Azure Storage这样可靠的大公司提供的存储服务。这时候,翠花发现智能表单识别项目,上传一张空白发票后,只需要自己设定每个字段的要求就可以自动生成标注好的数据,而且最重要的是姓名、金额等常见字段的要求也已经帮他设定好了,而且可以记住某个字段曾经的要求,这样别的格式的发票生成也不愁啦,会节省大量时间,因此成为了忠实用户。 |
用户比例 | 30% |
重要性 | ***重要,如果能让他们体会到本产品的便利性,他们会更愿意宣传本产品 |
诸葛铁柱
用户信息 | 用户情况 |
---|---|
姓名 | 诸葛铁柱 |
用户身份 | 其他表单项目使用者 |
用户情况 | 为了满足一定需求,发起了线下问卷等 |
用户动机 | 想要将这些问卷进行统一的处理 |
用户痛点 | 面对众多纸质问卷,人工输入数据太过麻烦 |
典型场景 | 铁柱在做线下用户调查,最后得到了许多手写的纸质问卷,这些问卷的字段值都不是常见的固定格式的东西,更偏向用户自由发挥,他想要直接使用表单识别服务帮他处理这些问卷,但大多数表单服务都需要自己标注一定数量的问卷,这时候他发现了这个智能表单识别项目,这个项目只需要设定一次空白模板就可以自己生成数据训练进行预测,而且还可以设定生成句子的长度、位置,甚至可以设置字体,打眼一看和真实问卷没什么区别,有这么多自动生成的不用花自己时间就有得优质数据训练,相信最后预测的效果一定很好。 |
用户比例 | 60% |
重要性 | ***重要,如果能让他们体会到本产品的便利性,他们会更愿意宣传本产品 |
界面原型设计
安装运行授权与原项目相同,下面只进行涉及本项目的简单介绍详见这里
页面 | 功能描述 | 原型设计 |
---|---|---|
Home | 点击New Project,填写相关信息,在Azure上上传好空白表单 | |
Tag Editor | 在标签编辑页面下选定已经自动识别好的文字作为tag,并手动划出该Tag下,用户想要采集/生成的数据位置,设置用户想要生成的数据的属性(如生成数量、数据各类型比例,数字大小范围、语言、字体等等) | |
Datas | 在数据页面下,输入一个整数表示想要生成的数据的数量,点击Generate按钮即可根据用户设置好的表单要求生成一系列训练数据。若用户需要下载生成得到的表单文件(pdf形式)以及相应的标注数据(json格式)自行使用,点击Download即可将数据下载到本地 | |
Train | 数据生成完成之后,点击Train即可利用生成的数据进行训练,并得到训练中准确率、训练时长、训练模型保存ID等反馈信息 | |
Predict | 将需要处理/预测的数据上传,点击Predict即可得到预测结果 |
验收标准
功能 | 描述 | 验收标准 |
---|---|---|
数据采集范围划分 | 保证用户能够根据自己的意愿划出需要的数据范围 | 能够支持划分操作 |
数据属性设置 | 用户可以通过设置相关属性对自动生成的数据进行标准化 | 保证用户设置的属性能够精确的传递给后台 |
随机数据生成 | 生成用户要求的数据以供生成PDF文件 | 保证数据在用户的要求下尽可能随机(包括字体字号距离边框的位置等) |
PDF合成 | 通过随机生成的数据和空白模板进行合成 | 保证生成出来的PDF文件不会失真,当随机数据过长时,不会超出格外 |
数据训练 | 通过几个样本进行训练 | 保证生成好的文件可以被OCR项目直接调用,进行训练并预测 |
数据下载 | 支持用户下载生成好的数据 | 支持在线预览,和选择性下载、全选下载 |
可能的副作用
- 生成的数据是根据用户标注的字段范围确定的,可能和真实情况下的数据出入比较大,但是生成数据的优势是可以考虑到极端情况。
- 实际情况的表单里填写的数据不一定规矩地分布在框框内,可能模拟出的文件无法完整的考虑到各种意外情况,如数据字段在界限外等;在后续阶段也是可以进一步优化的点。
- 关于表单里签名的模拟,需要考虑到各种手写字体,这个功能的实现比较有挑战性;但是依照敏捷开发最小可用产品的原则,我们在开发出第一个版本后将会开发中逐渐完善这项功能。