Opencv 与 Tesseract-OCR 中文识别与训练字库学习心得

   最近公司在做一个项目的时候,需要一个上传证件自动识别证件上内容的功能,于是上网搜索了一下相关的资料。目前网上技术文献比较多得就是opencv+tesseract组合了。说白了就是通过opencv 将拍照上来的图片通过各种整理达到可以让tesseract识别的水准,然后通过 tesseract 进行光学文字识别。大概就是这么个路子...

  虽然上边说的很简单,但是其中的技术含量非常高。那么下边先来说下opencv吧。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库。PS:这句百度百科copy的。 想通过 opencv 将一张通过相机牌照出来的图片处理成tesseract可以比较准确识别的标准还是需要下一番功夫的。除了要掌握opencv最基本的图像处理外,图像阈值、平滑处理、图像滤波、腐蚀操作、膨胀操作 、梯度运算、卷积核、边缘检测、轮廓检测、直方图、傅里叶变换、透视变换等都是必须的知识。这里面的知识有60%以上都是各种复杂的数学公式。听到这是不是有种望而却步的感觉?当然不一定要完全搞明白这些数学公式能看懂原理就好了,知道这些算法都是怎么个套路就是通过什么原理到达什么效果就可以了,至于代码就那么几行但如果你不明白原理就那么几行还真不见得能搞明白。

  再说tesseract就简单多了,我目前也是入门阶段有说的不对的欢迎各路大神指正,个人感觉到tesseract有点感觉像个搬砖活,tesseract其实就是个工具 直接通过命令行执行就可以了。官方给了各种语言的识别库中文的也有(但是不好使)。tesseract能否识别准确关键在于你前戏做的到不到位,一张证件用手机拍上来首先你得把证件的轮廓弄出来,裁剪完轮廓还要通过各种滤波器把没用的噪点都去,然后调整角度,把它铺平摆正总之最后越接近电子文档的样子识别率越准(但是再怎么整你也整不到电子文档那样,而且就算是电子文档官方给的中文识别包也不准)怎么办?就需要通过训练字库来弥补这个缺陷,训练字库像是个搬砖过  首先你得通过你的预处理程序生成出大量的训练数据。然后通过jTessBoxEditor进行数据校正。校正后就可以生成你自己的语言识别包。通过你自己的语言识别包再进行光学文字识别。大概就是这么个套路。目前本人还没找到可以很省事制作训练集的办法,也请各路大神指点。

   这就是我这几天学习opencv+tesseract的心得,文中有不准确不对的地方还请各路大神指点,小弟在此谢过!!!

你可能感兴趣的:(pytorch,机器学习,图像识别)