我正在制作一个车牌识别软件,我已经使用 SunnyPage 2.7
训练了我的语言,目前检测效果很好,除了 Tesseract 没有给我好的结果。例如,它显示为 This plate作为 AC2 4529
很好,除了当我用我的语言在 SunnyPage
中加载相同的图像时,我得到 ACZ 4529
这是正确的,我结束了将 Tesseract 配置为 tess.setPageSegMode(10) 单字符模式
分割单个字符并在 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
一样好的结果?据我所知,我的图像是好的,它是倾斜的
并且分割得很好,所以它很可能单独使用 Tesseract。
最佳答案
最好的办法是使用车牌的实际图像来训练 tesseract。这将使您的结果更加准确,因为 tesseract 实际上会知道 Z 和 2 的样子,并且会更准确地识别它们。
https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract
关于opencv - Tesseract (Tess4j) 提高准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43966201/