AI实战:OCR模型之训练数据自动生成

前言

前段时间,项目中的一个核心模块中需要中文OCR功能,模型架构可以参考我的上一篇文章:AI实战:用DenseNet + CTC搭建中文OCR模型 。

深度学习模型的上限取决于2个方面:
1、模型网络结构
2、训练数据

本文意在提供一种OCR数据自动生成的方法。


实战

  • 涉及技术
    • 文本处理
    • 图像处理(PIL、opencv)

  • 流程图
    AI实战:OCR模型之训练数据自动生成_第1张图片

  • 重要说明

    • 文本语料

      语料取决于OCR的应用领域。比如识别医疗的OCR,则取语料时一半取通用语料,一半取医疗语料;再比如识别教育的OCR,由于涉及到公式符号等的识别,取语料时更是需要更多的教育语料。

    • OCR词汇表

      词汇表同样取决于应用领域,如教育OCR需要识别各种公式符号、几何图形符号等。

      所以,OCR词汇表构成:一是通用中文,如GB2312中的汉字;二是数字英文;三是领域内特殊的字符。

    • 文本长度

      我的经验是:文本长度取10个字符,生成的文本数量300w+ 。

    • 背景图片

      背景图片可以根据应用场景来取,场景越多越好。

    • 画图方法

      图像大小:若是文本长度为10个字符,则图像大小为 32*280。

      推荐使用PIL库的,主要步骤:

      from PIL import Image, ImageDraw, ImageFont
      
      image = Image.open(img)
      draw = ImageDraw.Draw(image)
      
      #选择文字字体和大小
      setFont = ImageFont.truetype('xxx.ttf', 20)
      #设置文字颜色
      fillColor = "#ff0000"
      
      draw.text((x, y), text, font=setFont, fill=fillColor)
      image.save(img,'jpeg')
      

      说明:在图像img上的(x,y)坐标画出text文本,可以设置字体、大小、颜色等。

    • 图像增强处理

      增强方法:
      1、倾斜处理
      2、扭曲处理
      3、加噪声处理
      4、模糊处理

    • 图片索引数据

      一行数据格式为:
      xxx.jpg 12 23 21 3 3535 121 234 53 743 892



最后

模型架构可以参考我的上一篇文章:
AI实战:用DenseNet + CTC搭建中文OCR模型

你可能感兴趣的:(自然语言处理,深度学习,图像识别,人工智能,实用工具)