0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于传统算法的OCR技术

新机器视觉 来源:AI算法修炼营 作者:AI算法修炼营 2022-06-20 14:31 次阅读

文本是人类最重要的信息来源之一,自然场景中充满了形形色色的文字符号。光学字符识别(OCR)相信大家都不陌生,就是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。

工业场景的图像文字识别更加复杂,出现在很多不同的场合。例如医药品包装上的文字、各种钢制部件上的文字、容器表面的喷涂文字、商店标志上的个性文字等。在这样的图像中,字符部分可能出现在弯曲阵列、曲面异形、斜率分布、皱纹变形、不完整等各种形式中,并且与标准字符的特征大不相同,因此难以检测和识别图像字符。

对于文字识别,实际中一般首先需要通过文字检测定位文字在图像中的区域,然后提取区域的序列特征,在此基础上进行专门的字符识别。但是随着CV发展,也出现很多端到端的End2End OCR。

01 基于传统算法的OCR技术

传统的OCR技术通常使用opencv算法库,通过图像处理和统计机器学习方法从图像中提取文本信息,包括二值化、噪声滤波、相关域分析、AdaBoost等。传统的OCR技术根据处理方法可分为三个阶段:图像准备、文本识别和后处理。

一、图像准备预处理:

文字区域定位:连通区域分析、MSER

文字矫正:旋转、仿射变换

文字分割:二值化、过滤噪声

二、文字识别:

分类器识别:逻辑回归、SVM、Adaboost

三、后处理:规则、语言模型(HMM等)

针对简单场景下的图片,传统OCR已经取得了很好的识别效果。传统方法是针对特定场景的图像进行建模的,一旦跳出当前场景,模型就会失效。随着近些年深度学习技术的迅速发展,基于深度学习的OCR技术也已逐渐成熟,能够灵活应对不同场景。

02 基于深度学习的OCR技术

目前,基于深度学习的场景文字识别主要包括两种方法,第一种是分为文字检测和文字识别两个阶段;第二种则是通过端对端的模型一次性完成文字的检测和识别。

2.1 阶段一:文字检测

文字检测定位图片中的文本区域,而Detection定位精度直接影响后续Recognition结果。

bfe4db16-efd1-11ec-ba43-dac502259ad0.jpg

图1.1

如图1.1中,红框代表“LAN”字符ground truth(GT),绿色框代表detection box。在GT与detection box有相同IoU的情况下,识别结果差异巨大。所以Detection对后续Recognition影响非常大!

目前已经有很多文字检测方法,包括:EAST/CTPN/SegLink/PixelLink/TextBoxes/TextBoxes++/TextSnake/MSR/...,具体来说:

2.1.1 CTPN [1]

CTPN是ECCV 2016提出的一种文字检测算法,由Faster RCNN改进而来,结合了CNN与LSTM深度网络,其支持任意尺寸的图像输入,并能够直接在卷积层中定位文本行。

CTPN由检测小尺度文本框、循环连接文本框、文本行边细化三个部分组成,具体实现流程为:

1、使用VGG16网络提取特征,得到conv5_3的特征图;

2、在所得特征图上使用3*3滑动窗口进行滑动,得到相应的特征向量;

3、将所得特征向量输入BLSTM,学习序列特征,然后连接一个全连接FC层;

最后输出层输出结果。

bff317e4-efd1-11ec-ba43-dac502259ad0.png

CTPN是基于Anchor的算法,在检测横向分布的文字时能得到较好的效果。此外,BLSTM的加入也进一步提高了其检测能力。

2.1.2 TextBoxes/TextBoxes++ [2,3]

TextBoxes和TextBoxes++模型都来自华中科技大学的白翔老师团队,其中TextBoxes是改进版的SSD,而TextBoxes++则是在前者的基础上继续扩展。

c00615e2-efd1-11ec-ba43-dac502259ad0.png

TextBoxes共有28层卷积,前13层来自于VGG-16(conv_1到conv4_3),后接9个额外的卷积层,最后是包含6个卷积层的多重输出层,被称为text-box layers,分别和前面的9个卷积层相连。由于这些default box都是细长型的,使得box在水平方向密集在垂直方向上稀疏,从而导致该模型对水平方向上的文字检测结果较好。

c022f978-efd1-11ec-ba43-dac502259ad0.png

TextBoxes++保留了TextBoxes的基本框架,只是对卷积层的组成进行了略微调整,同时调整了default box的纵横比和输出阶段的卷积核大小,使得模型能够检测任意方向的文字。

2.1.3 EAST [4]

EAST算法是一个高效且准确的文字检测算法,仅包括全卷积网络检测文本行候选框和NMS算法过滤冗余候选框两个步骤。

其网络结构结合了HyperNet和U-shape思想,由三部分组成:

特征提取:使用PVANet/VGG16提取四个级别的特征图;

特征合并:使用上采样、串联、卷积等操作得到合并的特征图;

输出层:输出单通道的分数特征图和多通道的几何特征图。

c031ccaa-efd1-11ec-ba43-dac502259ad0.jpg

EAST算法借助其独特的结构和简练的pipline,可以检测不同方向、不同尺寸的文字且运行速度快,效率高。

2.2 阶段二:文字识别

通过文字检测对图片中的文字区域进行定位后,还需要对区域内的文字进行识别。针对文字识别部分目前存在几种架构,下面将分别展开介绍。

3.2.1 CNN + softmax [5]

此方法主要用于街牌号识别,对每个字符识别的架构为:先使用卷积网络提取特征,然后使用N+1个softmax分类器对每个字符进行分类。具体流程如下图所示:

c0555044-efd1-11ec-ba43-dac502259ad0.jpg

使用此方法可以处理不定长的简单文字序列(如字符和字母),但是对较长的字符序列识别效果不佳。

3.2.2 CNN + RNN + attention [6]

本方法是基于视觉注意力的文字识别算法。主要分为以下三步:

模型首先在输入图片上运行滑动CNN以提取特征;

将所得特征序列输入到推叠在CNN顶部的LSTM进行特征序列的编码;

使用注意力模型进行解码,并输出标签序列。

c067ec36-efd1-11ec-ba43-dac502259ad0.jpg

本方法采用的attention模型允许解码器在每一步的解码过程中,将编码器的隐藏状态通过加权平均,计算可变的上下文向量,因此可以时刻读取最相关的信息,而不必完全依赖于上一时刻的隐藏状态。

3.2.3 CNN + stacked CNN + CTC [7]

上一节中提到的CNN + RNN + attention方法不可避免的使用到RNN架构,RNN可以有效的学习上下文信息并捕获长期依赖关系,但其庞大的递归网络计算量和梯度消失/爆炸的问题导致RNN很难训练。基于此,有研究人员提出使用CNN与CTC结合的卷积网络生成标签序列,没有任何重复连接。

这种方法的整个网络架构如下图所示,分为三个部分:

注意特征编码器:提取图片中文字区域的特征向量,并生成特征序列;

卷积序列建模:将特征序列转换为二维特征图输入CNN,获取序列中的上下文关系;

CTC:获得最后的标签序列。

c07a2bc6-efd1-11ec-ba43-dac502259ad0.png

本方法基于CNN算法,相比RNN节省了内存空间,且通过卷积的并行运算提高了运算速度。

3.2.4 特定的弯曲文本行识别

对于特定的弯曲文本行识别,早在CVPR2016就已经有了相关paper:

Robust Scene Text Recognition with Automatic Rectification. CVPR2016.

论文地址:arxiv.org/abs/1603.03915

对于弯曲不规则文本,如果按照之前的识别方法,直接将整个文本区域图像强行送入CNN+RNN,由于有大量的无效区域会导致识别效果很差。所以这篇文章提出一种通过STN网络学习变换参数,将Rectified Image对应的特征送入后续RNN中识别。

c09ad7cc-efd1-11ec-ba43-dac502259ad0.jpg

其中Spatial Transformer Network(STN)核心就是将传统二维图像变换(如旋转/缩放/仿射等)End2End融入到网络中。具体二维图像变换知识请翻阅:Homograph单应性从传统算法到深度学习:https://zhuanlan.zhihu.com/p/74597564

Scene Text Recognition from Two-Dimensional Perspective. AAAI2018.

该篇文章于MEGVII 2019年提出。首先在文字识别网络中加入语义分割分支,获取每个字符的相对位置。

c0af141c-efd1-11ec-ba43-dac502259ad0.jpg

其次,在获取每个字符位置后对字符进行分类,获得文字识别信息。该方法采用分类解决识别问题,并没有像传统方法那样使用RNN。

c0ba3996-efd1-11ec-ba43-dac502259ad0.png

除此之外,在文章中还是使用了Deformable Convolution可变形卷积。相比传统3x3卷积,可变形卷积可以提取文字区域不同形状的特征。

c0c76288-efd1-11ec-ba43-dac502259ad0.jpg

3.3 端对端文字识别

使用文字检测加文字识别两步法虽然可以实现场景文字的识别,但融合两个步骤的结果时仍需使用大量的手工知识,且会增加时间的消耗,而端对端文字识别能够同时完成检测和识别任务,极大的提高了文字识别的实时性。

3.3.1 STN-ORC [8]

STN-OCR使用单个深度神经网络,以半监督学习方式从自然图像中检测和识别文本。网络实现流程如下图所示,总体分为两个部分:

定位网络:针对输入图像预测N个变换矩阵,相应的输出N个文本区域,最后借助双线性差值提取相应区域;

识别网络:使用N个提取的文本图像进行文本识别。

c0dad480-efd1-11ec-ba43-dac502259ad0.png

本方法的训练集不需要bbox标注,使用友好性较高;但目前此模型还不能完全检测出图像中任意位置的文本,需要在后期继续调整。

3.3.2 FOTS [9]

FOTS是一个快速的端对端的文字检测与识别框架,通过共享训练特征、互补监督的方法减少了特征提取所需的时间,从而加快了整体的速度。其整体结构如图所示:

c0f1645c-efd1-11ec-ba43-dac502259ad0.png

卷积共享:从输入图象中提取特征,并将底层和高层的特征进行融合;

文本检测:通过转化共享特征,输出每像素的文本预测;

ROIRotate:将有角度的文本块,通过仿射变换转化为正常的轴对齐的本文块;

文本识别:使用ROIRotate转换的区域特征来得到文本标签。

FOTS是一个将检测和识别集成化的框架,具有速度快、精度高、支持多角度等优点,减少了其他模型带来的文本遗漏、误识别等问题。

03 中文OCR开源项目推荐 目前比较常用的中文OCR开源项目是 chineseocr,最近又有一个新开源的中文OCR项目,登上Github Trending榜单第二——chineseocr_lite

c11b58c0-efd1-11ec-ba43-dac502259ad0.png

这是一个超轻量级中文 ocr,支持竖排文字识别,支持 ncnn 推理,psenet (8.5M) + crnn (6.3M) + anglenet (1.5M) 总模型仅17M。目前已经在Github上标星2.6K,累积343个Fork(Github地址:https://github.com/ouyanghuiyu/chineseocr_lite) chineseocr_lite实现的功能如下:

提供轻量的backone检测模型psenet(8.5M),crnn_lstm_lite(9.5M) 和行文本方向分类网络(1.5M)

任意方向文字检测,识别时判断行文本方向

crnncrnn_lite lstmdense识别(ocr-dense和ocr-lstm是搬运chineseocr的)

支持竖排文本识别

ncnn 实现 (支持lstm)

mnn 实现

接下来,我们再说一下chineseocr_lite的运行环境:

Ubuntu 18.04

Python 3.6.9

Pytorch 1.5.0.dev20200227+cpu

此外,最近项目作者对更新了可实现的功能。

nihui 大佬实现的 crnn_lstm 推理

升级 crnn_lite_lstm_dw.pth 模型 crnn_lite_lstm_dw_v2.pth , 精度更高

提供竖排文字样例以及字体库(旋转 90 度的字体)

如果你也对这个项目感兴趣就赶紧尝试下吧。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4449

    浏览量

    90723
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40762
  • OCR
    OCR
    +关注

    关注

    0

    文章

    137

    浏览量

    16122

原文标题:OCR光学字符识别方法汇总(附开源代码)

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Zebra Aurora深度学习OCR算法荣获CAIMRS颁发的自动化创新奖

    在第二十二届中国自动化及数字化年度评选活动中,Zebra Aurora深度学习OCR算法获得了由中国自动化及数字化产业年会(简称CAIMRS)颁发的自动化创新奖。
    的头像 发表于 03-20 16:35 185次阅读

    EVS深度学习智能相机OCR工具性能大揭秘

    伴随着工业自动化的发展,光学字符识别(OCR技术已成为产品质量管控的刚需,常用于部件入库跟踪、产品工艺溯源、商品保质期管理等场景。然而,为了促进精益生产、柔性生产、保障品控,产线不仅对此类技术
    的头像 发表于 12-16 08:24 588次阅读
    EVS深度学习智能相机<b class='flag-5'>OCR</b>工具性能大揭秘

    基于OpenVINO+OpenCV的OCR处理流程化实现

    预处理主要是基于OpenCV、场景文字检测与识别基于OpenVINO框架 + PaddleOCR模型完成。直接按图索骥即可得到最终结果。 OpenCV预处理主要是完成偏斜矫正、背景矫正等操作,然后使用场景文字检测模型+OCR识别模型完成中英文识别。
    的头像 发表于 11-07 11:21 363次阅读
    基于OpenVINO+OpenCV的<b class='flag-5'>OCR</b>处理流程化实现

    OCR如何自动识别图片文字

    OCR 是光学字符识别(英语:Optical Character Recognition,OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。 很早之前就有同学在公众号后台
    的头像 发表于 10-31 16:45 421次阅读
    <b class='flag-5'>OCR</b>如何自动识别图片文字

    easyocr:超级简单且强大的OCR文本识别工具

    今天给大家介绍一个超级简单且强大的OCR文本识别工具: easyocr . 这个模块支持70多种语言的即用型OCR,包括中文,日文,韩文和泰文等。 下面是这个模块的实战教程。 1.准备 开始之前
    的头像 发表于 10-30 09:30 1358次阅读
    easyocr:超级简单且强大的<b class='flag-5'>OCR</b>文本识别工具

    一键闪测仪:从传统测量仪器中脱颖而出的创新性技术

    (拍照式),结合高分辨率工业相机及高精度图像分析处理算法,通过软件计算后实现测量。仅需一个简单的按键操作,即可完成测量过程。这一创新性技术在产品设计上追求简洁易用,同时实现了高效精确的测量。相比传统
    发表于 10-17 15:32

    【KV260视觉入门套件试用体验】Vitis AI Library体验之OCR识别

    OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状
    发表于 10-16 23:25

    【KV260视觉入门套件试用体验】七、VITis AI字符和文本检测(OCR&amp;Textmountain)

    视觉领域的重要问题,主要是识别和理解图像或视频中的文字信息。字符检测和识别(OCR技术最早在1929年由德国科学家Tausheck提出,定义为将印刷体的字符从纸质文档中识别出来。随着OCR
    发表于 09-26 16:31

    RFID技术和防冲撞算法分析

    论文详细介绍了 RFID 技术, 并针对 RFID 技术中不可避免的碰撞问题进行分析。提出一种动态调整二进制搜索树防冲撞算法, 可以有效解决 RFID 标签冲突问题。在时间复杂度和空间复杂度等方面比较验证其优越性。该
    发表于 09-22 06:04

    车辆导航系统中最优路径算法的研究

    的目的。并且改进后的 Di jkstra算法客服了传统的 Dijkstra算法计算盲目性计算的缺点,提高了路径搜寻的技术效率关键词:车辆导航系统:最优路径:道路权重:Di jkstra
    发表于 09-21 06:25

    在线研讨会 | 就在明天!NVIDIA TAO Toolkit 5.0 助力 OCR 视觉 AI 模型快速训练与优化

    光学字符识别(OCR技术 是一种将纸质文档、PDF 文件或图像中的文本转换成机器可识别的格式的技术。它在许多领域都有广泛的应用,例如文档扫描、自动化数据输入、图书馆数字化等。然而,尽管 OC
    的头像 发表于 08-21 21:05 291次阅读
    在线研讨会 | 就在明天!NVIDIA TAO Toolkit 5.0 助力 <b class='flag-5'>OCR</b> 视觉 AI 模型快速训练与优化

    大模型时代的OCR,“CPU” 的味道更重了

    金磊 杨净 发自 凹非寺 量子位 | 公众号 QbitAI 经典技术 OCR (光学字符识别) ,在 大模型 时代下要“变味”了。 怎么说? 我们都知道OCR这个技术在日常生活中已经普
    的头像 发表于 07-08 14:25 294次阅读
    大模型时代的<b class='flag-5'>OCR</b>,“CPU” 的味道更重了

    企业智能化应用场景,华为云文字识别 OCR 值得一试

    作为一家公司的技术负责人,我经常需要面对各种技术难题和挑战。在这个信息爆炸的时代,如何高效地处理和利用海量的数据,是我最关心的问题之一。而在数据中,有一种非常重要但又难以处理的类型,就是图片中的文字
    的头像 发表于 07-04 14:43 378次阅读

    PDF执行OCR使用指南(仅适用于万兴PDF专业版)

    然后单击“更改选择”按钮,从OCR语言列表中选择匹配PDF内容的正确语言(万兴PDF支持超过20种OCR语言)。您也可以点击“自定义页面”来选择单个页面或几个页面执行OCR
    的头像 发表于 06-06 15:54 1371次阅读
    PDF执行<b class='flag-5'>OCR</b>使用指南(仅适用于万兴PDF专业版)

    机器人控制算法简述

    随着机器人技术的不断进步,机器人控制算法也越来越复杂和精细。机器人控制算法的研究是机器人技术发展的关键之一。本文将综述机器人控制算法的研究现
    的头像 发表于 05-19 16:27 2664次阅读
    机器人控制<b class='flag-5'>算法</b>简述