项目简介
用户上传一张图片,系统自动进行表单填写。实现的主要功能应该有:
图片上传、获取图片OCR结果,标记图片文字识别区域,图片类型识别,表单定义,训练定制模型,表单自动填写等等。
软件设计方案
1.软件架构
本系统拟采用B/S架构,客户代码通过请求和应答的方式访问或者调用服务代码。
为了让前后端彻底独立开发,我们在开发上选择MVC风格,即模型-视图-控制器架构。Model(模型)代表一个存取数据的对象及其数据模型。View(视图)代表模型包含的数据的表达方式,一般表达为可视化的界面接口。Controller(控制器)作用于模型和视图上,控制数据流向模型对象,并在数据变化时更新视图。控制器可以使视图与模型分离开解耦合。
2.系统API接口
-
表单定义接口:
输入:表单各输入框关键字
输出:表单类别id
功能:动态形成表单并获取表单类别 -
获取mapping数据接口:
输入:图片,表单类型id
输出:mapping数据,图片OCR数据,图片类型id
功能:调用OCR接口获取图片OCR数据,并进行图片类型判断,根据图片类型以及表单类型找到相应的mapping数据 -
OCR接口
输入:图片
输出:OCR数据
功能:返回图片OCR结果 -
测试接口
输入:mapping数据
输出:true
功能:存储图片类型id,表单类型id以及mapping数据为一条数据
3.视图分析
1.根据功能划分,可以得到功能分解视图
2.依赖视图
3.执行视图
用户使用该系统的步骤应为:先定义表单,后上传图片。
4.实现视图
src 源代码目录
-main 存放实现类的源代码
--pojo 存放model类
--controller 存放控制器类
--dao 存放持久层代码,与数据库进行交互
--service 实现业务功能服务
--util 一些常用工具类
4.数据库设计
1.表单类型表
该表可存多个输入框名字与id(输入框名与id是一对一的),初步设计为根据用户输入的输入框名字(如姓名,学号等)来判断表单类型(必须和所有输入框名字全部匹配上,否则新建一个类型)。
2.图片类型表
初步设计:上传的图片的开头必须有标题,根据标题来判断图片类型
3.mapping表
(fid,pid)为主键,一个fid与pid可以唯一定义一条mapping数据
5.运行环境与技术选型
前端采用js,后端采用node.js,数据库采用MongoDB,使用intellij idea 进行开发。
6.核心工作机制
1.用户输入表单输入框名字列表,系统返回表单类型id,并动态生成表单
2.用户上传图片,系统返回ORC数据,并在前端图片上标注出识别域。系统确定图片类型,根据图片类型id与表单类型id寻找mapping数据,若找到,则自动填写表单,若没有找到,则需训练定制模型。
3.用户训练模型:用户点击标记框,再点击输入框,形成对应json数据,点击测试按钮,系统根据json数据,表单类型id,图片类型id向mapping表中插入一条数据。