前面提到了如何使用Tesseract OCR 从复杂图像中提取文字,关键在于将图像分割,局部二值化后传给Tesseract识别,如从下图中提取每个物品的数量:
方法是先使用几何特征和颜色特征将物品分割为小的局域,再将每个区域二值化。这样,每个局域就对应一个子图,传给Tesseract。但是Tesseract识别一个图像速度还行,如果识别10个,20个,速度就很慢了。识别一个如上图( 400*600)的图像需要 10秒以上!!!这显然是太慢了。其实Tesseract 识别速度和子图的数目成正比,和图像的大小倒是没什么关系,也就是识别100*100的图和识别1024*1024的图,时间差不多太多。 所以,提升Tesseract 识别复杂图像速度的关键就在于把二值化的子图,重新拼回成一张图! 拼接的方法取决于识别目标的几何特征。 当然,拼接后,速度是极大提升了,但是后续output的继续也就会更加复杂。