Skip to content

wycm/xuexin-ocr

Repository files navigation

xuexin-ocr

识别效果

使用

模型训练

  1. 样本字体图片生成:Run with gen_printed_chinese_char.py。字体相关参数使用默认参数,这组参数经过我多次调整后准确率相对较高的一组参数。样本集见label_dict.py,这里采用了6000+个汉字和数字等字符。其中字体文件在chinese_fonts目录。默认只放了一种字体
  2. 样本训练:Run with chinese_ocr.py。

字体切割&预测

  1. Run with xuexin_segment.py。

训练需要的字体文件&训练好的模型下载

字符切割

  • 图片的内容结构是固定的,把每一行和列的内容切割出来,然后再逐一把每个汉字切割出来。图片灰度、二值化(二值化过滤掉水印和一些不相关的内容)、切割为m * n张小图片、再对每一张图片处理、水平投影、垂直投影、根据字体最小宽度和空隙进行切割。
  • 切割准确度问题:因为存在汉字和数字,并且2类字体的宽度还不一致,为了保证切割的准确性,设定一个字体的最小宽度,然后根据投影的空隙来进行切割。如果最小宽度设定过小,可能导致部分数字切割失败。如果最小宽度设定过大,可能会导致一些如(”法“)类似字体被切割为两个字体。为了解决这个问题,在首次切割完成后,如果字体宽度属于较小宽度类型的。则认为该字体是数字,如果预测结果是数字的准确率超过0.1。则认为结果没问题,否则认为该分割有误,分割了一个完整的汉字,再根据预测结果对汉字进行合并。(该方法对识别结果有所提升)

参考