本項目基于yolo3 與crnn 實作中文自然場景文字檢測及識别
master分支将保留一周,後續app分支将替換為master
實作功能
文字方向檢測 0、90、180、270度檢測(支援dnn/tensorflow)
支援(darknet/opencv dnn /keras)文字檢測,支援darknet/keras訓練
不定長OCR訓練(英文、中英文) crnn\dense ocr 識别及訓練 ,新增pytorch轉keras模型代碼(tools/pytorch_to_keras.py)
支援darknet 轉keras, keras轉darknet, pytorch 轉keras模型
新增對身份證/火車票結構化資料識别
新增語音模型修正OCR識别結果
新增CNN+ctc模型,支援DNN子產品調用OCR,單行圖像平均時間為0.02秒以下
優化CPU調用,識别速度與GPU接近(近期更新)
環境部署
GPU部署 參考:setup.md
CPU部署 參考:setup-cpu.md
下載下傳編譯darknet(如果直接運用opencv dnn或者keras yolo3 可忽略darknet的編譯)
git clone https://github.com/pjreddie/darknet.git
mv darknet chineseocr/
##編譯對GPU、cudnn的支援 修改 Makefile
#GPU=1
#CUDNN=1
#OPENCV=0
#OPENMP=0
make
修改 darknet/python/darknet.py line 48
root = '/root/'##chineseocr所在目錄
lib = CDLL(root+"chineseocr/darknet/libdarknet.so", RTLD_GLOBAL)
下載下傳模型檔案
模型檔案位址:
複制檔案夾中的所有檔案到models目錄
模型轉換
pytorch ocr 轉keras ocr
python tools/pytorch_to_keras.py -weights_path models/ocr-dense.pth -output_path models/ocr-dense-keras.h5
darknet 轉keras
python tools/darknet_to_keras.py -cfg_path models/text.cfg -weights_path models/text.weights -output_path models/text.h5
keras 轉darknet
python tools/keras_to_darknet.py -cfg_path models/text.cfg -weights_path models/text.h5 -output_path models/text.weights
編譯語言模型
git clone --recursive https://github.com/parlance/ctcdecode.git
cdctcdecode
pip install .
下載下傳語言模型
wget https://deepspeech.bj.bcebos.com/zh_lm/zh_giga.no_cna_cmn.prune01244.klm
mvzh_giga.no_cna_cmn.prune01244.klm chineseocr/models/
web服務啟動
cdchineseocr## 進入chineseocr目錄
ipython app.py 8080 ##8080端口号,可以設定任意端口
建構docker鏡像
##下載下傳Anaconda3 python 環境安裝包(https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh) 放置在chineseocr目錄下
##建立鏡像
docker build -t chineseocr .
##啟動服務
docker run -d -p 8080:8080 chineseocr /root/anaconda3/bin/python app.py
識别結果展示
通路服務
參考