| 項目 | 內容 |
|---|---|
| 2020春季計算機學院軟件工程(羅傑 任健) | 博客園班級博客 |
| 作業要求 | 團隊項目選擇 |
| 我們在這個課程的目標是 | 在團隊合作中提升軟件開發水平 |
| 這個作業在哪個具體方面幫助我們實現目標 | 進行項目調研、完成需求和技術分析 |
項目選擇
需求:基於微軟開源的OCR表單標注工具等開源模塊,開發一個表單數據的識別和收集工具,對信息采集表、調查問卷表等各類表格式數據能夠自動識別成可編輯的表格數據,並能將多頁同類表格收集匯總為一個大表。
必備條件:熟悉機器學習,Android應用開發,較強的團隊協作能力
需求分析
核心需求總結
- 基礎功能:拍照掃描數字化圖表內容
- 擴展功能:多個數字化圖表合並儲存
- 雲端功能:手機或者web采集的數據在其他設備上遷移
NABCD 分析
- Need: 目前的OCR工具主要在通用文字識別方面功能比較完善,對具有邏輯性的表格識別需求應用空白。
- 大量的辦公用表格需要電子化,而紙質填寫的原件很多
- 大量表格是來自於統一模板,批量處理的需求很大
- Approach: 途徑,利用react-native框架實現本軟件的第一初步版本
- 優化:根據用戶反饋和組內測試,優化產品的體驗和用戶交互邏輯
- 完善:針對一些特定的表格處理場景,做專門的優化
- Benifit: 本項目能夠改善辦公人群、學生人群、教師人群對表格下發、填寫、處理、收集的體驗
- 批量處理紙質原件,解決收集數字化數據的困難
- 原件和數字化數據統一管理,方便回溯原件,核實表格細節
- 表格歸納合並、解決傳統表格填寫需要傳遞的難點
- Competitors: 我們的分析團隊對競品現有的市場份額和競品特點做了一些分析
- 騰訊OCR:五個大類,47個小類。大類包括:通用文字識別、卡證文字識別、票據單據識別、汽車相關識別、行業相關文檔識別。在行業文檔識別中,又分為表格識別,算式識別,數學公式識別,數學試題識別和保險單據識別。
- 阿里雲OCR:產品的場景大類包括文檔識別、卡證識別和KV結構模板
- 百度雲OCR:分為網絡圖片文字識別、表格文字識別、數字識別、二維碼識別、印章檢測五個大類。對於表格文字識別,其介紹如下:支持識別具備完整框線的常規表格和含合並單元格的復雜表格,並可選擇以JSON或Excel形式返回識別結果。對於無表格線版:支持識別無表格框線,但行、列位置明確的表格,並以JSON形式同步返回識別結果。
- Delivery:
- 學生群體:在可以在教學群中通過使用班級博客的教師、學生推廣、微信推廣
- github:在github上的release中交付,並推廣到各個社交網絡
- 應用商店:安卓各個應用商店,過審並交付
OCR的核心實體與核心需求
what is OCR
OCR (Optical Character Recognition,光學字符識別)是指電子設備(例如掃描儀或數碼相機)檢查紙上打印的字符,通過檢測暗、亮的模式確定其形狀,然后用字符識別方法將形狀翻譯成計算機文字的過程;即,針對印刷體字符,采用光學的方式將紙質文檔中的文字轉換成為黑白點陣的圖像文件,並通過識別軟件將圖像中的文字轉換成文本格式,供文字處理軟件進一步編輯加工的技術。如何除錯或利用輔助信息提高識別正確率,是OCR最重要的課題,ICR(Intelligent Character Recognition)的名詞也因此而產生。衡量一個OCR系統性能好壞的主要指標有:拒識率、誤識率、識別速度、用戶界面的友好性,產品的穩定性,易用性及可行性等。
常見的軟件結構
前期處理(圖像處理)
- 圖像輸入與預處理
- 二值化
- 去噪
- 傾斜校正
中期處理(文本處理與排版)
- 版面分析
- 字符切割
- 字符識別
- 版面恢復
后期處理
- 后處理與校對
- 輸出
核心實體
在后端需要完成從圖片中抓取文字,完成文字的分割與識別
核心需求
高准確率的文字識別
版面識別與復原
Microsoft OCR from labeling tools
在傳統的OCR基礎上,還增加了label功能。
在train model時,用戶給出自己的待識別文本,允許用戶對文本進行標簽,之后經過訓練。
在對於其他的文本,則能通過模型對於文本抓取類似的label信息。
本應用需要用戶提供大量已經標注過的表單數據,作為訓練數據訓練模型,最后用訓練好的模型預測一張同類型的新表格,在新表上預測標注,並給出每處標注的置信度
輸入:用戶手動標注的表單,可以標注的表單格式PDF, JPEG,TIFF
訓練:用Form Recognizer模塊訓練模型
輸出:預測新表格的key/value特征
標注過程
識別表單的文本區域,並通過高亮給出文本框邊界
用戶新建標簽類型
用戶點擊想要標注的文本區域,再點擊對應的標簽,完成標注
用戶界面組成
preview pane 包含源地址中的表單列表
main editor pane 展示表單,用戶使用標簽標注表單文本的區域
tags editor pane 允許用戶修改,記錄和刪除標簽
微軟開源OCR調研情況
核心功能定義:識別表單並進行標注
核心功能具體使用鏈
- 前提:所有訓練文檔格式相同。
- 標注訓練集的表單並訓練:通過API獲得文檔文本布局[識別表單元素]->標注表單元素->指定標注類型與格式->訓練(train)
- 預測:上傳非訓練集的表單文檔->預測(為表單生成標注)。
- 格式支持支持pdf、圖片、TIFF等文件
- 額外功能-更多的是用戶體驗的角度:
- 保存項目與重啟項目。
- 鍵盤快捷鍵的使用-支持方便快捷的標注操作。
源代碼角度獲得的信息
我認為比較核心的上層文件:
| 上層文件名 | 基本功能 |
|---|---|
| applicationState.ts | 定義了基本應用程序狀態:設置、標簽項目結構、存儲類型、assets信息等等 |
| assetService.ts | 處理項目assets的一些方法 |
| connectionServece.ts | 連接服務 |
| ocrService.ts | 處理OCR |
| projectService.ts | 處理用戶創建的整個項目 |
發布預測
我們現在可能的發布形式是web引用,或者是安卓app。
α版本:預計發布以后一周內的OCR的使用次數達到500,注冊的用戶量達到100。
β版本:預計發布以后一周內的OCR的使用次數達到1000,注冊的用戶量達到200。
γ版本:預計發布以后一周內的OCR的使用次數達到2000,注冊的用戶量達到400。
分析與設計
目前的軟件架構分析:

目前的用戶交互設計

競品分析
目前OCR軟件的市場份額初步分析
| APP | Apple iOS store | Google Play Store | 華為應用市場 | vivo應用市場 |
|---|---|---|---|---|
| Text Scanner[OCR] | 3.2k | 87.7k | ||
| Microsoft Office Lens | 2.9k | 461.0k | ||
| Adobe Scan | 296.4k | 480.9k | ||
| FineScanner AI | 3.2k | |||
| Scanner Pro | 128.9k | |||
| OCR掃描王 | 500k | 380k | ||
| 掃描全能王 | 24,350k | |||
| 文字識別OCR | 370k | 120k | ||
| 掃描王OCR | 60k | |||
| 得力OCR文字識別 | 110k | |||
| 回識OCR文字識別 | 120k |
初步分工
| 成員 | 需求技術調研階段 | alpha產品階段 |
|---|---|---|
| 彭毛小民 | PM、協調總結各個人員匯總的技術細節、總結報告 | PM、對團隊成員工作進行可視化管理、協同各個成員共同工作、加入框架開發 |
| 倫澤標 | 框架技術調研負責 | 引領團隊框架技術開發,和OCR底層項目組對接 |
| 葉開輝 | 競品項目和現有工具調研 | react框架相關成員 |
| 黎正宇 | 項目需求分析負責 | 開發設計待定 |
| 馬延 | 項目需求分析成員,項目交互設計負責 | 雲端數據庫存儲待定 |
| 肖思煬 | 微軟OCR工具調研負責 | 引領OCR底層項目組,OCR底層項目與前端框架對接 |
| 趙濤 | 微軟OCR工具調研成員 | OCR底層開發相關成員 |
