我正在制作车牌识别软件,我已经使用SunnyPage 2.7
训练了我的语言,目前检测是好的,除了Tesseract没有给我很好的结果。例如,它将This plate读为AC2 4529
,这很好,除非我使用我的语言在SunnyPage
中加载相同的图像时我得到ACZ 4529
这是正确的,我最终配置了Tesseract tess.setPageSegMode(10) single character mode
分割各个字符并在Tesseract中逐个处理每个字符,提高准确度但不是那么多,下面是我的Tesseract配置
Tesseract instance = new Tesseract(); //
instance.setLanguage(LANGUAGE);
instance.setHocr(false);
instance.setTessVariable("tessedit_char_whitelist", "ACPBZRT960847152");
instance.setTessVariable("load_system_dawg", "false");
instance.setTessVariable("load_freq_dawg", "false");
instance.setOcrEngineMode(TessOcrEngineMode.OEM_CUBE_ONLY);
instance.setPageSegMode(TessPageSegMode.PSM_SINGLE_CHAR);
instance.setPageSegMode(10);
任何人都知道我如何才能获得与SunnyPage
一样好的结果?据我所知,我的图像很好,它是skewed
并且被很好地分割,所以它最有可能单独使用Tesseract。
答案 0 :(得分:0)
最好的办法是使用车牌的实际图像训练tesseract。这将使您的结果更准确,因为tesseract实际上将知道Z和2的外观,并且它将更准确地识别它们。
https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract