segmented_word_recognition使用tesseract,KNN,CNN三种算法。
如果要配置tesseract环境,参考opencv 13 OCR 端到端识别(end_to_end_recognition) vs2015;如果不配置tesseract环境,运行时,只有KNN,CNN两种结果。
01 资源
OpenCV自带的OCR分段字识别用例,opencv_contrib\modules\text\samples\segmented_word_recognition.cpp。segmented_word_recognition.cpp,可以识别一段文字。
模型文件(需要拷贝到Debug或Release目录中):
opencv_contrib/modules/text/samples/OCRHMM_knn_model_data.xml.gz
opencv_contrib/modules/text/samples/OCRBeamSearch_CNN_model_data.xml.gz
opencv_contrib/modules/text/samples/OCRHMM_transitions_table.xml
测试图片:
opencv_contrib/modules/text/samples/scenetext_segmented_word01.jpg
opencv_contrib/modules/text/samples/scenetext_segmented_word01_mask.png
opencv_contrib/modules/text/samples/scenetext_segmented_word02.jpg
opencv_contrib/modules/text/samples/scenetext_segmented_word02_mask.png
opencv_contrib/modules/text/samples/scenetext_segmented_word03.jpg
opencv_contrib/modules/text/samples/scenetext_segmented_word03_mask.png
opencv_contrib/modules/text/samples/scenetext_segmented_word04.jpg
opencv_contrib/modules/text/samples/scenetext_segmented_word04_mask.png
opencv_contrib/modules/text/samples/scenetext_segmented_word05.jpg
opencv_contrib/modules/text/samples/scenetext_segmented_word05_mask.png
配置tesseract资源,参考opencv 13 OCR 端到端识别(end_to_end_recognition) vs2015。
02 编译segmented_word_recognition
参考opencv01 相对完整的编译opencv3.3.0 win版本,编译opencv3.3.0 vs2015版本。
生成文件:D:\git\opencv\build\v3.3.0\x64\bin\Debug\text-example-segmented_word_recognition.exe。
注:如果要运行tesseract结果,参考opencv 13 OCR 端到端识别(end_to_end_recognition) vs2015。
03 segmented_word_recognition项目配置
设置segmented_word_recognition项目为启动项。
# 如果路径中有空格,需要使用双引号,参数路径根据自己实际情况调整
配置属性==>调试==>命令参数=-@image=../../../../../../opencv_contrib/modules/text/samples/scenetext_segmented_word03.jpg -@mask=../../../../../../opencv_contrib/modules/text/samples/scenetext_segmented_word03_mask.png
配置属性==>调试==>工作目录=$(OutDir)
04 运行结果
scenetext_segmented_word03.jpg/scenetext_segmented_word03_mask.png结果:
Segmented word recognition.
A demo program on segmented word recognition. Shows the use of the OCRHMMDecoder API with the two provided default character classifiers.
Usage: text-example-segmented_word_recognition.exe [params] image mask
-?, -h, --help, --usage
print this message.
-l, --lex, --lexicon
(optional) lexicon provided as a list of comma separated words.
image (value:../../../../../../opencv_contrib/modules/text/samples/scenetext_segmented_word03.jpg)
source image for recognition.
mask (value:../../../../../../opencv_contrib/modules/text/samples/scenetext_segmented_word03_mask.png)
binary segmentation mask where each contour is a character.
OCR_Tesseract output "Prlvate lee". Done in 132.917 ms.
OCR_NM output "private Hire". Done in 167.645 ms.
OCR_CNN output "Private Hire". Done in 6102.24 ms.