OCR在數據搶救中的應用設計
OCR是通過算法識別出圖像中的文字內容,算是圖像識別的一個分支。但是在數據管理搶救上,也非常實用。本文作者對具體的實現途徑展開了梳理總結,并對過程中存在的問題進行了分析,與大家分享。
一、服務于業(yè)務:數據搶救的痛點在哪?
大數據工程的第一步是獲得數據,而傳統行業(yè)、政府機構、科研院所中有大量的存量數據,數據搶救就是把這些數據數字化,一是避免數據流失,二是提高利用價值。而存量數據中包括大量珍貴的紙質數據,比如天文地理水文測量數據、試驗數據、政府公文、古舊書籍等等。
紙質數據如何搶救?這步很簡單,基本解決方法就是先掃描成電子版進行存儲。但光是掃描存儲就夠了嗎?我覺得是不夠的。
像前邊所說的,數據搶救的目的一是避免數據流失,二是提高利用價值,掃描存儲僅僅解決了第一個問題避免數據流失,但并沒有很好的提高數據的利用價值。紙質數據的價值大部分在于文檔的內容,僅僅把紙質文檔電子化仍然不能對內容進行進一步的檢索、分析。
所以我們把產品的目標聚焦在了“提高數據利用率”上。接下來就是對目標進行細化拆解。關于如何提高利用率,也就是數據如何應用,我是這樣思考的,一是從大數據角度看,如何利用統計分析等手段提高數據整體的價值;二是從單份文檔角度方面看,如何讓單份文檔更有價值,讓有興趣的用戶更容易找到它,讓用戶找到這份文檔后能快速了解其內容。
- 讓有興趣的用戶更容易找到數據,也就是大家都非常熟悉的“百度一下”“谷歌一下”。紙質數據在圖片/PDF狀態(tài)時,無法檢索到內容,如果只根據文檔名稱檢索肯定效果會大打折扣,所以我們需要所謂的【全文檢索】。通過全文檢索,數據就有了一個出口。
- 讓用戶找到數據后能快速了解其內容,也就是大家讀paper時熟悉的的關鍵詞、摘要。我們可以利用【內容分析】,比如提取文章中的關鍵詞、生成摘要等等,對信息進行概括。這樣在通過全文檢索發(fā)現數據后,用戶能盡可能快速對數據進行更充分的理解。
通過上邊的分析,單份數據利用的方式基本確定為【全文檢索】和【內容分析】,而這兩種利用方法都需要對紙質文檔中的文字進一步進行處理,這就需要我們數據搶救的好伙伴:OCR上場了。
二、功能設計
1. 業(yè)務場景
小李所在的單位有大量多年積累下來的文書,有些年代久遠的已經出現了破損遺失的情況,借著大數據工程建設的契機,單位決定開展歷史數據搶救工作。
工作的第一步就是整理文書文檔,然后掃描電子化,每掃描完一份文件小李就在頁面上預覽確認沒有問題后提交,之后系統對文檔進行OCR識別,識別完成后小李在頁面上可以預覽查看識別結果,發(fā)現位置識別不準或者文字識別有誤可以進行調整,最后保存調整結果即可。
小李辛辛苦苦做完的工作體現在哪里呢?
同事小陳最近做的一項工作需要查閱往年數據A的相關記錄,小陳登錄系統直接搜索“數據A”,搜索結果顯示了所以包含“數據A”的文檔。小陳依次點擊搜索結果就可以查看文檔的摘要和關鍵詞,從而判斷該文檔是否對他有用。
大概業(yè)務的流程就是下圖這樣,我們這篇主要介紹小李的工作部分。
2. 實現途徑
?(1)數據采集
數據采集主要依賴于掃描紙質文檔的掃描儀,所以這一部分是一要考慮掃描儀本身的性能,二要考慮掃描儀與整個系統的集成。
考慮到紙質數據量大、裝訂方式多樣的特點,掃描儀最好滿足快速掃描、不拆書、盡量自動化的要求。調研了市面上成熟的商用掃描儀,符合要求的掃描儀大概有幾類:
- 專門用于古籍掃描的全自動翻書掃描儀,就一個缺點,太貴(140-180w)
- 需要手工翻頁,但不用拆書的高速掃描儀,這類掃描儀選擇比較多,成本也可以接受
- 最后一種選擇,非常有趣,是google books的開源自動掃描儀方案,需要自行組裝,有興趣的朋友可以了解一下(https://linearbookscanner.org/)
系統與掃描儀集成方面,就涉及到掃描好的文件怎么存儲到系統?大概有兩種方案:
1)我們平時用的掃描儀,一般是連接電腦(客戶端),把掃描好的文件存在本地,然后由用戶把文件手動上傳系統
2)網絡掃描儀直接通過局域網連接服務器,掃描好的文件直接存儲在服務器指定位置。這種網絡掃描儀的方案需要掃描儀支持TWAIN或者其他SDK、api,好處是多個用戶可以共用掃描儀,操作步驟也要簡化很多
結合掃描儀性能、系統集成和成本角度考慮,我們選擇了一款支持TWAIN接口的手動翻頁掃描儀作為數據搶救系統中硬件支撐。
?(2) OCR識別
首先我們需要對OCR的算法有個大概的了解,可以參考OCR在資產管理系統的應用。
用于數據搶救的OCR和用于資產標簽識別的OCR還是有一點區(qū)別的,資產標簽識別中的識別對象是【自然環(huán)境】中的【印刷文字】,而數據搶救對象是【文檔圖片】中的【印刷文字】。
但總體來說處理的流程還是預處理-文字檢測-文字識別,只不過對紙質文檔中復雜的排版(圖片、表格、文字、頁碼、公式混排等等)的文字檢測換了種說法叫做版面分析(layout analysis),做的事情還是差不多的,除了負責檢測出文字的位置外,也要同時確圖表等其他要素的位置。
1)預處理:
預處理的目的主要是提高圖像質量,一般用傳統的圖像處理手段就可以完成,現在很多掃描儀也會把這部分做在里邊,比如自動糾偏、去黑邊等,如果可以滿足要求,預處理部分放在數據采集時由掃描儀完成也是可以的。
2)版面分析:
先看下直觀的看下版面分析的預期效果。關于版面分析這塊我們需要確認的事情主要有3件:一是檢測的目標有哪些,二是目前算法的成熟度,三是性能方面的要求有哪些。
確定檢測對象:畢竟版面分析是個檢測問題,和檢測圖片中的貓狗沒有本質區(qū)別,所以我們要先確定版面分析需要識別什么東西。在數據搶救中我們關心什么呢?首先文字是最重要的,第二為了定位圖片和表格,我們也需要圖片、表格的位置以及圖注、表名,有了這些信息就可以形成類似索引目錄,方便查找。所以初步確定,版面識別需要識別出文字、圖片、表格、圖注、表名五類對象。
算法成熟度:雖然傳統的圖像識別也可以實現簡單的版面分析任務,但對上圖這種非常復雜的版面分析經過調研比較靠譜的方法還是上深度學習??梢宰霭婷娣治龅纳疃葘W習算法主要是圖像檢測一系列的,比如yolo、fastRCNN,這篇文章中的大佬是用MaskRCNN實現的。所以版面分析問題已經有不少研究基礎了,但實際落地的應用可能還不是很多,其中需要優(yōu)化的工作肯定還有不少。
性能要求:算法的選擇當然要考慮實際中對硬件性能、識別速度、識別精度、召回率的要求。
- 用在我們數據搶救中,首先系統是采用B/S架構,在服務器完成識別任務,所以沒有特殊硬件要求(如果是在端上實現就要考慮硬件對算法限制了)。
- 識別速度方面,目前考慮到一份紙質數據可能有成百上千頁,所以識別時間會比較長,所以暫定以后臺任務的方式執(zhí)行,這就對識別速度方面要求也比較低(如果要求實時返回識別結果一般識別速度就要做到秒級)。
- 識別精度和召回率的平衡方面,由于后邊有人工校驗調整的環(huán)節(jié),所以還是可以適當提高召回率,即使識別有所誤差也可以通過人工調整彌補。
c)文字識別:
文字識別部分相對來說也比較成熟,目前兩大主流技術是 CRNN OCR 和 attention OCR。在我們的整體流程中,需要對版面識別后的文字、圖注、表名區(qū)域進行分別識別即可。
上邊技術實現途徑的調研主要為了證明我們設計的功能是在技術上可實現的,避免出現設計出無法實現的功能的尷尬情況。
3. 功能流程
正如前邊所說的,我們這里的功能只關注紙質數據搶救工作沒有涉及到數據應用的部分,所以從掃描文件到最后人工調整OCR識別結果,整個紙質數據搶救的功能就算完成了。對用戶來說,相較于只掃描文件并保存,多出的操作步驟就是查看識別結果并調整的部分。
4. 核心頁面設計
(OCR識別結果查看)
(OCR識別結果調整)
OCR相關的兩個頁面主要是查看識別結果和調整識別結果。查看頁面主要包括預覽文檔、用線框表示圖表區(qū)域和圖表標題、顯示OCR文字識別結果。點擊【編輯】跳轉到調整頁面,調整頁面以每頁為單位顯示,圖表框可拖拽調整、文字變?yōu)榭删庉嫚顟B(tài)。
三、小結
通過需求分析我們發(fā)現在數據搶救中的確存在OCR應用的必要性,然后從技術實現的角度進行調研驗證需求是否是可實現的,最后梳理整個功能流程再加上每個功能點的詳細說明/原型設計功能基本就齊活了~
本文由 @LCC 原創(chuàng)發(fā)布于人人都是產品經理,未經許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
ocr識別出來的數據是可編輯的還是不可編輯的,例如ocr識別駕駛證
看業(yè)務需求呀
像ocr識別駕駛證,為保證識別信息的準確性,應該要有人工校驗的過程吧(也就是可編輯