tesseract性能优化
最近用到ocr技术,使用了google的tesseract,对于嵌入式设备来说,不光要实现功能,还要考虑实现功能的代价,也就说实现此功能需要的内存、cpu、存储以及网络资源,tesseract的使用我们需要关心的是CPU和存储资源。
CPU资源
这里说的CPU资源翻译过来就是识别速度,速度越快,说明需要的CPU资源越少,为了提高tesseract的识别速率,最关键的就是图像预处理,根据最近的一些经验,总结如下几点:
- 图像切分做二值化:二值化后,输入给tesseract的图像简单,识别速度会提高,切分的原因是整体做二值化可能会转化掉一些你想要的问题,因为整体图片的元素太多,不好控制二值化的thresh,切分后,可以每个小图片单独处理,容易控制选取阈值。
- 二值化的时候可以根据图片中文字的灰度值,尽量留下你需要的文字,转化掉不用的文字,减少tesseract的输入,当然这种优化只适用于你想获得的文字是确定的使用场景。
- 切分的图片要拼接成一个大图:多个图片分别tesseract是耗时比较严重的,尽量将多个图片拼接成一个大图一起做teeseract。
存储资源
tesseract设置到占用存储资源的也就是tessdata了,我们可以通过工具减少目前tessdata的内容,然后再重新打包,或者根据使用场景自己训练data。