天天看點

python場景文字識别_chineseocr

本項目基于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

識别結果展示

python場景文字識别_chineseocr
python場景文字識别_chineseocr
python場景文字識别_chineseocr
python場景文字識别_chineseocr

通路服務

python場景文字識别_chineseocr

參考