項目簡介
用戶上傳一張圖片,系統自動進行表單填寫。實現的主要功能應該有:
圖片上傳、獲取圖片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表中插入一條數據。