OCR简介

OCR,optical Character Recognition,目的是进场景的文字识别

这里泛指文字检测识别,扫描文档以及自然场景的文字识别

OCR应用

  • 车牌识别

  • 身份证,护照,户口本等名片识别

  • 火车票,快递单识别

  • 发票,医疗表单识别

  • 视频实时翻译,基于文字内容字母翻译,安全监控

OCR技术难点

  • 文字弯曲(打印的字体有一些问题)
  • 背景干扰(降噪,属于图像恢复)
  • 字体多变(字体识别需求)
  • 拍摄模糊(高斯处理)

文字检测算法

目前的文字检测算法有两种,一种基于回归,一种基于分隔

  • CTPN
  • SEGLINK
  • Textboxes/Textboxes++
  • East
  • LOMO
  • SAST
  • CRAFT

优点:对规则文本检测效果较好

缺点:无法准确检测不规则形状文本

基于分隔的算法

  • Pixel embedding
  • SPCNet
  • PSENet
  • PAN
  • DB

优点: 对不同形状文本检测效果较好,但是无法检测不规则形状文本

缺点:后处理复杂耗时,重叠文本效果差

文本检测算法训练

文本检测算法对于每一条数据,对应一个强label标注的txt,对应检测的框获得一个对应的json点。因为目前精度不够高,需要不断训练。

目前使用的数据集是CIDAR2019-LSTV数据集

数据来源于中文街景图像,因为包含的全标注数据较多,可以先使表格检测达到一个比较好的成果,因为目前的表格检测用预训练模型,还是会有一些差距。

目前训练效果精度较差,只有0.37,训练效果较差。

生成表格数据

如果表格数据足够多这一部分可以省去,如果不多则可以使用text_render生成类似表格数据,text_render可以生成带有表格线的数据,包括下划线,这些是在表格中需要

https://github.com/oh-my-ocr/text_renderer

我使用了背景图为票据的照片生成数据,票据背景如下

img

这样生成的图片会带票据印章,也会带有下划线

会带有二维码

这些图片生成后应该还需要拼接

文字识别