摘要:引入OCR,以及对OCR整体流程的解释。
该系列为学习OCR的过程,后续会发布有关OCR经典论文的讲解以及技术探讨
OCR是什么
Optical Character Recognition,全称为光学字符识别,简称OCR。是目前各个公司都在发展的技术,基本上聊到VLM就绕不开OCR。例如 百度(PaddleOCR 系列),阿里巴巴(LayoutLM 系列),商汤(ABCNet),旷视(DBNet),合合信息,腾讯(优图)…
核心就是一句话,把 图片上的文字信息 转化为 计算机的文字
难点在于,图片中的各种不稳定因素(遮挡,光照,角度,字体(多语言,多样性,大小))
分类
一般根据用途,可以是
- 文档文字识别,例如报纸,图书,PDF
- 自然场景识别,例如车牌,广告
- 票据,表格,证件等识别。其中表格还是很重要的,因为大部分做不好都是因为表格的问题。
按照文字的形成方式,又有:
- 标准印刷体
- 手写文字
- 艺术体,复杂文字,或者上述的混合体
OCR技术的实现,总体上可以分为四步:预处理图片、切割字符、识别字符、文字后处理。
- 预处理图片:例如对于一张有光影的图片,可以转化为黑白图;或者对于斜着的文字,可以用
minAreaRect,HoughLinesP等方法进行转正。
- 切割字符:可以按照投影法,从横着或者竖着进行
- 识别字符:神经网络
- 文字后处理:对识别后的文字进行版面还原或者文本矫正(利用先验知识)
现在基本上分成两大类。传统OCR,即需要划分出“定位”和“识别”两个步骤的OCR(尤其在视频中常用,因为视频通常需要跨帧处理,把不同帧定位到的word串联);现代OCR,OCR的功能和定位逐渐向着全知全能的方向靠近,越来越靠近VLM,比如做DocumentVQA任务的OCR,或者OCR With Agent,或者DeepseekOCR这类。就基本上会给OCR的Decoder加上语义先验,语义先验要不是为了更好的识别字符,要不是为了更好地回答问题。