cnocr: 極簡的中文OCR Python包
因為專案需要,之前找了下已有可用的開源中文OCR工具,發現居然沒有特別好用的。 所以就自己封裝了一箇中文OCR Python包,稱之為 cnocr (Chinese OCR的簡稱)。 cnocr主打使用簡單,功能極簡。
以下是使用說明,歡迎大家試用,幫忙提issue。
cnocr
cnocr是用來做中文OCR的 Python 3 包。cnocr自帶了訓練好的識別模型,所以安裝後即可直接使用。
目前使用的識別模型是 crnn ,識別準確度約為 98.7%
。
本專案起源於我們自己 ( 愛因互動 Ein+ ) 內部的專案需求,所以非常感謝公司的支援。
特色
本專案的大部分程式碼都fork自 crnn-mxnet-chinese-text-recognition ,感謝作者。 但源專案使用起來不夠方便,所以我在此基礎上做了一些封裝和重構。主要變化如下:
-
不再使用需要額外安裝的MXNet WarpCTC Loss,改用原生的 MXNet CTC Loss。所以安裝極簡!
-
自帶訓練好的中文OCR識別模型。不再需要額外訓練!
-
增加了預測(或推斷)介面。所以使用方便!
安裝
pip install cnocr
注意:請使用Python3 (3.4, 3.5, 3.6以及之後版本應該都行),沒測過Python2下是否ok。
使用方法
預測
以如下圖片檔案為例,檔案內容如下:
程式碼引用
from cnocr import CnOcr ocr = CnOcr() res = ocr.ocr_for_single_line('examples/rand_cn1.png') print("Predicted Chars:", res)
首次使用cnocr時,系統會自動從 Dropbox 下載zip格式的模型壓縮檔案,並存於 ~/.cnocr
目錄。 下載後的zip檔案程式碼會自動對其解壓,然後把解壓後的模型相關檔案放於 ~/.cnocr/models
目錄。 如果系統不能自動從 Dropbox 成功下載zip檔案,則需要手動下載此zip檔案並把它放於 ~/.cnocr
目錄。 另一個下載地址是 百度雲盤 (提取碼為 pg26
)。 放置好zip檔案後,後面的事程式碼就會自動執行了。
上面預測程式碼段的返回結果如下:
Predicted Chars: ['笠', '淡', '嘿', '驊', '謐', '鼎', '皋', '姚', '殲', '蠢', '駝', '耳', '胬', '撾', '涯', '狗', '蒽', '子', '獷']
指令碼引用
也可以使用指令碼模式預測:
python scripts/cnocr_predict.py --file examples/rand_cn1.png
返回結果和前面相同:
Predicted Chars: ['笠', '淡', '嘿', '驊', '謐', '鼎', '皋', '姚', '殲', '蠢', '駝', '耳', '胬', '撾', '涯', '狗', '蒽', '子', '獷']
訓練自己的模型
cnocr安裝後即可直接使用,但如果你 非要 訓練自己的模型,請參考下面命令:
python scripts/cnocr_train.py --cpu 2 --num_proc 4 --loss ctc --dataset cn_ocr
未來工作
空格