OCR

  • pipeline
  • OCR识别原理
  • 人工数据
  • 层级分析


pipeline


pipeline是解决一个机器学习任务的各项步骤及其执行顺序,以photo OCR为例:

NLP 上采样 nlp ocr_NLP 上采样


Photo OCR可以分为文本识别,字符分割和字符识别三个过程,依次完成,就如同管道一样,依次向前

OCR识别原理

NLP 上采样 nlp ocr_数据_02

  1. 选择一定像素长度和宽度的方框,自顶向下,自左向右以几个像素单位逐渐扫描整个图片
  2. 对扫描得到的图片进行判断,是否为文本

    图中,y=1表示扫描得到的某张图片识别为字母,0表示非字母
  3. 组合扫描结果,将y=1的图片部分高亮显示

    图中的白色部分连接起来,就可以被识别为文本区
  4. 扫描文本区,对识别出来的文本进行再次分割判断,确定边界线
  5. 使用已经训练好了的算法识别字符

人工数据


如果我们没有足够的数据供我们进行机器学习怎么办?

自己造10x数据

NLP 上采样 nlp ocr_机器学习_03

  • 我们在获取数据库之前,确保有一个低偏置分类器
  • 人工合成数据
  • 人工打标签
  • 群众外包。。。

NLP 上采样 nlp ocr_数据_04

  • 对于文本,更换字体,扭曲字形
  • 对于音频,添加噪音,更改信号源

层级分析


我们解决问题之前必须了解问题,优化模型之前必须清楚哪里需要优化。

层级分析对pipeline中的每一任务的每一步进行逐层的分析

NLP 上采样 nlp ocr_机器学习_05


对OCR pipeline进行分析,不难发现最值得提升的是文本识别,其次是字符识别,而字符分割则不值得花时间和精力,总之,准确率提升越高的越值得学习,注意进行层级分析的顺序一定是和pipeline一样向前递推

NLP 上采样 nlp ocr_NLP 上采样_06


复杂一点的例子



那么这些百分比是如何获得的呢?

答:

  • 提供正确的答案-如文本识别,就人为地提供一组正确文本,看正确率提升了多少
  • 除去错误的可能性-如去掉图片的背景部分
  • 其它等等