目录
一、OCR简介
1.1、OCR是什么?
OCR(Optical Character Recognition,光学字符识别)是计算机视觉最重要的方向之一。传统的OCR一般指面向文档的识别,现在一般指场景文字识别,主要面向自然场景。
我觉得OCR还可以算是CV和NLP的一个中间商,通过OCR技术将CV图像中的一些字符检测出来,再用NLP解析文字的含义。
1.2、OCR的使用场景
OCR应用场景非常多:
OCR还可以作为多模态数据做一些更复杂的任务:
1.3、OCR的技术难点
难点大概可以分为算法层和应用层两方面。
应用层:模型大小和模型性能如何平衡?精度和速度的平衡?
二、OCR前言技术
2.1、文本检测
概念:把文本区域从图片区域中框出来。
2.2、文本识别
概念:将文字内容识别出来(就是认字,认出来这是什么字)
文本识别按识别文本的形状可以分为:规则文本识别和不规则文本识别两大类。
文本识别按最终识别结果的处理方式不同(解码方式的不同)可以分为:基于CTC和基于Attention两大类。
-
基于CTC:CRNN+CTC
主要创新:引入没有意义的空格字符。因为识别存在一个问题:时序特征的维度是固定的,但是最终要预测的图像特征是不固定的。所有引入空格字符,每一个时序特征都可以预测出一个字符,最后得到结果。
缺点:但是每个时序特征是单独解码的(Softmax),所以解码时并没有利用上下文信息,对不规则形状文本识别效果差。 -
基于Attention:Seq2Seq+attention
解码时利用了上下文信息,精度较高,但是过长或过短文本的识别效果较差。 -
其实还要一种分类:基于字符分割的方法。优点是可以解决弯曲文本和不规则文本,但是对字符的标注要求很高。
-
今年还有一种比较火的方法:基于transformer的方法。可以解决CNN在长依赖建模的局限性。
2.3、文档的结构化识别
需求量很大,技术也比较难。
主要可分为版面分析、表格识别、关键信息提取三个技术方面。
- 版面分析:把文档的内容划分为不同的区域(方法:目标检测 难点相对较低);
- 表格识别:把图片表格转为可编辑的excel表格。问题:表格本身版式很多,无线表格,单元格合并。(方法:基于启发式规则、基于CNN、基于GCN、端到端 难度高);
- 关键信息提取(难度高)
2.4、其他OCR相关工作
- 端到端文本识别(火热)
- OCR中的图像预处理技术
- OCR数据合成
三、PaddleOCR
PPOCR:中英文检测模型
模型部署
四、想说的话
一个经典的OCR模型,一般可以分为文本检测和文本识别两个阶段。PaddleOCR的低层也是这样设计的。
写这个系列博客主要是为了记录下自己学OCR的过程,因为精力有限,后面主要的学习都只围绕文本检测和文本识别两个方面。