[no_code]OCR表格处理——技术规格说明书
| 项目 | 内容 | 
|---|---|
| 这个作业属于哪个课程 | 2020春季计算机学院软件工程(罗杰 任健) | 
| 这个作业的要求在哪里 | 技术规格说明书 | 
| 我们在这个课程的目标是 | 远程协同工作,采用最新技术开发软件 | 
| 这个作业在哪个具体方面帮助我们实现目标 | 确定项目技术,制定技术规格 | 
目前的最新版可以trace我们的石墨文档链接
技术栈
我们的任务有模式识别(OCR),数据云服务等多个技术需求,总体上采取了前后端分离的设计,应对可能产生的发布在多平台的场景.
后端框架
Django,考虑到手机用户的跨平台性,以及开发效率与成员的技术栈,我们选择了Django.
数据库
由于后端框架选择的是Django,经过初步调研,我们选择了适宜于与Django配套使用的Postgresql作为主数据库。在后续开发过程中,如有必要,我们可能会加入如MySQL之类的数据库作为辅助。
前端框架
可能会选择React或者是vue.js,这一块可以考量一些表格显示方面比较优秀的框架。
移动端开发
为了尽可能地与前端开发共享技术栈,降低开发难度,我们选择ReactNative作为移动端开发的框架
web引擎
如果有必要,可以选择使用nginx.
云环境
当前的云环境:学校的华为云环境
可能需要的云环境:
- 内容分发网络服务CDN: 用户资源相关
 - 云Postgresql数据库
 
技术如何体现设计原则
抽象原则
- 底层数据抽象化
- 把底层数据表单数据抽象化,原始图片(origin)和JSON格式的格式化数据(json)、以及Excel格式数据(excel)是这个表单数据的多个层次。
 - 考虑到可能一个用户有针对单一表单的OCR需求,和多个表单联合的OCR需求,我们要开发不同层次的接口应对不同粒度的需求
 
 - 数据行为模块化
- 考虑不同的行为,基于需求类型进行分类
 - 不同行为的需求划分在不同的区域内
 - 定义一些数据的预处理、后期处理操作
 
 
内聚与解耦合
采用前后端分离,采用Restful API就已经很好地体现了这一点。
信息隐藏和封装
我们认为信息隐藏需要做到:
前后端信息分离
用户无法直接访问与修改核心数据
我们应该通过接口与规格的约束,使得类和成员的可访问性最小。各种语言中提供了包、protect、private等等来限制访问权限,一些开源框架也有类似的作用。
目前,我们打算前后端通过Restful API进行交互,从而实现信息隐藏。
界面和实现分离
- 后端实现提供Restful API,前端通过访问特定的API完成相应的操作
 - 前后端通过json进行交互,双方均可处理并具有可扩展性
 - 前端进行同一化的视图层的管理, 易于更改. 不需要再去后端代码中分离.
 
错误处理
考虑到后端和前端的交互通过Restful API进行,我们选择使用HTTP状态码作为错误分类方式。
| HTTP状态码 | 表述的含义 | 
|---|---|
| 400 | 请求参数有误,调用存在语义错误 | 
| 401 | 用户未登录,请求身份验证 | 
| 403 | 权限不足 | 
| 404 | 请求路径错误 | 
| 405 | 请求方法错误 | 
| 413 | 请求实体过大,超出服务器的处理能力。 如上传图片尺寸过大 | 
| 500 | 服务器内部错误、后端遇到了无法处理或者未捕获的错误 | 
除了HTTP状态码以外,我们还在Body中的json信息加入一项status_code,用于更详细地描述错误。
软件运行的一些相关性假设
- 用户提供的都是表格数据、对于非表格数据,可以后续做一些误识别处理
 - 用户提供的可合并表格具有可合并性,不可合并的表格需要定义一下行为
 - OCR后的数据不一定是完整的表格数据、需要支持用户对表格数据的快捷修改
 
如何灵活应对变化
- 后端处理相关的操作,将提供多个粒度的Restful API,将方便应对不同的应用需求
 - 扁平化的设计策略,避免多个业务逻辑直接耦合
 
大量数据的处理能力
- 读写和数据库分离:考虑到我们这边的需求比较简单,很难产生疯狂的需求压力,我们会在测试后考虑是否需要做分离操作。
 - 数据上云:
- 前端资源可以考虑cdn分流静态资源、减轻服务器压力
 - 用户的数据将及时备份到远端数据库,便于用户在其他设备上访问数据
 
 
[no_code]OCR表格处理——技术规格说明书的更多相关文章
- [no_code]OCR表格处理——功能规格说明书
		
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 功能规格说明书 我们在这个课程的目标是 远程协同工作,采用最新技术开发软件 这个作业在哪个具体方面 ...
 - (Alpha)Let's-技术文档(技术规格说明书)
		
技术规格说明书 抽象 首先,对抽象原则的理解,“抽象”这一概念本身就很抽象.抽象体现的是一种概括能力.我们生活中遇到的很多客体,其在某些方面具备有一些相似甚至相同的性质,以这些特点而非事物本身来认识鉴 ...
 - 【Alpha】技术规格说明书
		
由于第1周已经写过技术规格说明书(设计文档),本周更新了上一版内容. Github地址:https://github.com/buaase/Phylab-Web/blob/master/docs/Ba ...
 - [V1-Team] WEDO创意论坛技术规格说明书
		
WEDO 创意论坛技术规格说明书 0x0 文档版本 版本号 说明 v1.0 初步确定技术路线 附Github仓库:WEDO 0x1 技术说明 1. 前端框架 在主流的前端框架中,我们调研了Vue. ...
 - [软件工程基础]PhyLab 技术规格说明书
		
由于暂不对后端有所改变,因此该部分技术规格说明书复用 Default 的技术规格说明书. 由于现阶段对于 Laravel 框架不熟悉,以及对于是否使用已有的轮子或者造轮子实现预想的功能还不清晰,因此暂 ...
 - 【近取 key】技术规格说明书
		
项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 技术规格说明书 我在这个课程的目标是 进一步提升工程化开发能力,积累团队协作经验,熟悉全栈开发流程 ...
 - 【BUAA软工】技术规格说明书
		
项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:技术规格说明书 技术规格说明书 宏观技术 后端 WEB服务器 WEB服务器选取的是Springboot,作为当下Java语言最主流的WE ...
 - [no code][scrum meeting] Alpha 3
		
项目 内容 会议时间 2020-04-07 会议主题 技术规格说明书review 会议时长 1h30min 参会人员 产品经理+后端技术组长(伦泽标)+OCR竞品调研成员(叶开辉)+架构文档负责(黎正 ...
 - [no code][scrum meeting] Alpha 2
		
项目 内容 会议时间 2020-04-07 会议主题 功能规格说明书review 会议时长 30min 参会人员 OCR组(肖思炀,赵涛)和产品经理 $( "#cnblogs_post_bo ...
 
随机推荐
- Appium自动化(6) - 控件定位工具之uiautomatorviewer 的详细介绍
			
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 app定位不如web定位那么 ...
 - GridView控件使用
			
增加显示列gridView.Columns.AddVisible("AgentName", "姓名");设置是否为只读gridView1.OptionsBeha ...
 - Python - poetry(2)命令介绍
			
poetry 语法格式 poetry [-h] [-q] [-v [<...>]] [-V] [--ansi] [--no-ansi] [-n] <command> [< ...
 - Object.keys( )与 for in 区别
			
for in 一般用于对象的遍历: let obj = { a:1, b:2, } for(let key in obj){ console.log(key) } // a // b Object.k ...
 - Artix Linux作业系统的使用~
			
Artix(阿蒂克斯)Linux 与Gentoo(贱兔) Linux真是夫唱妇随.由于Artix(阿蒂克斯)逃离Systemd,投入到了openrc温暖的怀抱,从而使得每安装一个软体,你还得额外为其安 ...
 - 【OI】蛇形填数题的深入探究
			
题目:在 n×n 方阵里填入 1,2,...n×n, 要求蛇形填数.例如,n=4 时方阵为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 ...
 - 使用 VSCode 给STM32配置一个串口 printf 工程
			
使用 VSCode 给STM32配置一个串口 printf 工程 gcc 重定向 printf 和 keil 不一样. 文件准备 先从以前的工程中拷过一份串口的代码来,然后在 main 函数中初始化串 ...
 - Jvm调优理论篇
			
Jvm实战调优 OOM(Out Of Memory) 内存溢出错误 ps:由于Java虚拟机有许多实现,本文主要阐述的是OpenJDK的HotSpot虚拟机,JDK版本是8. 一.首先要明白造成OOM ...
 - linux,apache,php,mysql常用的查看版本信息的方法
			
1. 查看linux的内核版本,系统信息,常用的有三种办法: uname -a: more /etc/issue; cat /proc/version; 2. 查看apache的版本信息 ...
 - 定要过python二级 选择题第5套
			
1. 2.. 3. https://zhidao.baidu.com/question/1952133724016713828.html 4. 5. 6. 7. 8. 9. 10. 11.