OCR是什么?
光學(xué)字符識別(Optical Character Recognition, OCR)是指對文本資料的圖像文件進行分析識別處理,獲取文字及版面信息的過程。亦即將圖像中的文字進行識別,并以文本的形式返回。
目前發(fā)展現(xiàn)狀
ocr的發(fā)展已經(jīng)有了非常多的積累,一般人或者企業(yè)使用, 都是直接使用第三方的服務(wù),目前提供第三方服務(wù)的大企業(yè)也非常多,百度,阿里云,騰訊等等,都提供了非常方便的api接口,可以進行調(diào)用,識別的速度、精確度和效果也都是非常不錯的。唯一的缺點就是api的調(diào)用是需要收費的,對于調(diào)用頻次不高的個人和企業(yè),這個費用還是非常低的。
為什么企業(yè)要使用開源的而不是直接使用api服務(wù)?
目前因為公司的現(xiàn)狀,使用開源的有幾個目的
- 每天調(diào)用的頻次比較高 , 以后可能越來越高, 所以基于費用的考慮是最主要的。
- 目前ocr的算法研究基本趨于成熟,并且目前對識別的精度要求不是太高,目前開源項目基本能夠滿足
- 對于cv和深度學(xué)習(xí)進行一定程度的積累和了解,為后續(xù)工作做一些鋪墊
- 學(xué)習(xí)開源ocr的模型構(gòu)建,方便后續(xù)對于模型的更新
目前開源的項目現(xiàn)狀
目前針對ocr的相關(guān)開源項目也還是有不少的,作者正好是公司也需要類似的功能,所以做了一些簡單的調(diào)研,在這里進行記錄。
對于調(diào)研不準確的希望大家指出
tesseract
Tesseract 是谷歌開發(fā)并開源的圖像文字識別引擎,使用python開發(fā)。
優(yōu)勢
- github上面star非常多,項目非?;钴S
- 識別的語言和文字非常多
- 后面做背書的公司非常強(google)
劣勢
- 不是專門針對中文場景
- 相關(guān)文檔主要是英文,對于閱讀和理解起來有一定困難
- 學(xué)習(xí)成本比較高
- 源碼較多,并且部分源碼是c++,學(xué)習(xí)起來難度比較大
所以針對目前公司的現(xiàn)狀,放棄了這個項目的學(xué)習(xí)和調(diào)研
PaddleOCR
PaddleOCR 是百度開源的中文識別的ocr開源軟件
優(yōu)勢
- github上面star非常多,項目非?;钴S
- 模型只針對中文進行訓(xùn)練
- 后面做背書的公司非常強(baidu)
- 相關(guān)的中文文檔非常齊全
- 識別的精確度比較高
劣勢
- 目前使用的訓(xùn)練模型是基于百度公司自己的PaddlePaddle框架,對于小公司來說并不主流(對比于ts或者pytorch),所使用深度學(xué)習(xí)框架為后續(xù)其他深度學(xué)習(xí)無法做很好的鋪墊
- 項目整體比較復(fù)雜,學(xué)習(xí)成本較高
EasyOCR
EasyOCR 是一個用 Python 編寫的 OCR 庫,用于識別圖像中的文字并輸出為文本,支持 80 多種語言。
優(yōu)勢
- github上面的star也是比較多,但是最近不是特別活躍
- 支持的語言也是非常多的,多達80多種
- 識別的精確度尚可
劣勢
- 從官方的頁面體驗來說識別的速度較慢
- 識別的文字種類多,學(xué)習(xí)難度較高
- 相關(guān)的官方文檔是基于英文的,學(xué)習(xí)難度較高,對于新手不太友好
chineseocr
優(yōu)勢
- github上面的star也是比較多
- 專門針對中文進行學(xué)習(xí)和訓(xùn)練的模型
- 相關(guān)的文檔比較多,上手相對比較容易
劣勢
- 因為沒有大廠和公司的背書, 所以存在一些bug
- 對于復(fù)雜場景下的效果不佳
- 模型都是現(xiàn)成的,如果要新訓(xùn)練模型難度比較高
chineseocr_lite
優(yōu)勢
- github上面的star也是比較多
- 專門針對中文進行學(xué)習(xí)和訓(xùn)練的模型
- 相關(guān)的文檔比較多,上手相對比較容易
- 比較輕量級,部署也比較方便
TrWebOCR
優(yōu)勢
- 部署簡單
- 使用簡單
- 有對應(yīng)的web頁面,測試方便
- 有對應(yīng)的web接口,方便調(diào)用
劣勢
- 核心模型不開源,無法進行再次學(xué)習(xí)
- 無法進行后續(xù)訓(xùn)練
- 必須要聯(lián)網(wǎng)才能使用
- 精度識別一般
- 項目不是很活躍
cnocr
優(yōu)勢
- 使用簡單
- 文檔齊全
- 代碼全部開源,可以進行修改
- 預(yù)定義的模型較多
- 便于學(xué)習(xí)和模型重新訓(xùn)練
劣勢
- 精確度不高
- 沒有對應(yīng)的web界面和接口
- 需要配合cnstd進行使用
結(jié)論
針對上面的比較討論,同時根據(jù)現(xiàn)在的公司的情況和之前既定的一些目標,暫時選擇最簡單的cnocr進行學(xué)習(xí)和內(nèi)部學(xué)習(xí)和使用。同時也針對目前cnocr僅僅是一個python包,而且無法通過接口進行調(diào)用的情況,做了一個補充項目hn_ocr。
目前放到github上面,歡迎大家一起學(xué)習(xí)和完善。