当前位置: 首页 > news >正文

文字识别 Optical Character Recognition,OCR CTC STN

文字识别 Optical Character Recognition,OCR

自然场景文本检测识别技术综述

将图片上的文字内容,智能识别成为可编辑的文本。

场景文字识别(Scene Text Recognition,STR)

OCR(Optical Character Recognition, 光学字符识别)传统上指对输入扫描文档图像进行分析处理,识别出图像中文字信息。场景文字识别(Scene Text Recognition,STR) 指识别自然场景图片中的文字信息。自然场景图像中的文字识别,其难度远大于扫描文档图像中的文字识别,因为它的文字展现形式极其丰富:

  • 1· 允许多种语言文本混合,字符可以有不同的大小、字体、颜色、亮度、对比度等。
  • 2· 文本行可能有横向、竖向、弯曲、旋转、扭曲等式样。
  • 3· 图像中的文字区域还可能会产生变形(透视、仿射变换)、残缺、模糊等现象。
  • 4· 自然场景图像的背景极其多样。如文字可以出现在平面、曲面或折皱面上;文字区域附近有复杂的干扰纹理、或者非文字区域有近似文字的纹理,比如沙地、草丛、栅栏、砖墙等。

也有人用OCR技术泛指所有图像文字检测和识别技术, 包括传统OCR技术与场景文字识别技术。这是因为,场景文字识别技术可以被看成是传统OCR技术的自然演进与升级换代。

场景文字识别技术之所以难度更大,是因为自然场景中的文字表现形式极为多样和复杂。多种语言文本的混合、字符的大小、字体、颜色、亮度、对比度等的差异,以及文本行的方向、形状变化,都增加了识别的难度。此外,图像中的文字区域可能受到透视、仿射变换、残缺、模糊等因素的影响,进一步增加了识别的挑战性。同时,自然场景图像的背景也极其多样,文字可能出现在各种平面上,并受到复杂纹理的干扰,这些都使得文字检测与识别变得更为复杂。

然而,尽管存在这些挑战,OCR技术仍然取得了显著的进步,并广泛应用于各个领域。从身份证、名片、银行卡等卡证类的印刷体识别,到手写体识别,再到交通物流字符识别,OCR技术都展现出了其强大的应用潜力。同时,随着物联网、5G等技术的发展,OCR技术也在逐步扩展到更多的领域,如传感器可视化数据识别等。

值得一提的是,OCR技术的发展离不开计算机视觉处理和自然语言处理两个领域的支持。视觉处理技术帮助我们从图像中提取出文字区域的特征向量,而自然语言处理技术则将这些特征向量解码为文字结果。这种跨学科的融合使得OCR技术得以不断发展和完善。

未来,随着技术的不断进步和应用场景的不断拓展,OCR技术将继续发挥更大的作用。我们可以期待OCR技术在更多领域实现落地应用,为人们的生活带来更多便利和效率。同时,随着深度学习、强化学习等人工智能技术的不断发展,OCR技术的性能和准确性也将得到进一步提升,使得文字识别变得更加高效和精准。

应用:

  • 1.身份证、名片、银行卡、户口本等卡证类、出版物(扫描版图像、试题)、票据类(发票、火车票、彩票、出租车票)的印刷体识别;

  • 2.运单、考试试卷、办公手写文档、快递手写单号等手写体识别;

  • 3.车牌、集装箱号、快递运单、行驶证、驾驶证、等交通物流字符识别等;

  • 4.水表、电表、燃气表等各种传感器可视化数据识别(5G物联网之后可能就不需要了);

  • 5.图像文字检测和识别技术有着广泛的应用场景。已经被互联网公司落地的相关应用涉及了识别名片、识别菜单、识别快递单、识别身份证、识别营业证、识别银行卡、识别车牌、识别路牌、识别商品包装袋、识别会议白板、识别广告主干词、识别试卷、识别单据等等。

文本检测和识别技术处于一个学科交叉点,其技术演进不断受益于计算机视觉处理和自然语言处理两个领域的技术进步。它既需要使用视觉处理技术来提取图像中文字区域的图像特征向量,又需要借助自然语言处理技术来解码图像特征向量为文字结果。

什么是OCR?

OCR英文全称是Optical Character Recognition,中文叫做光学字符识别。它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并转换成一种计算机能够接受、人又可以理解的格式。文字识别是计算机视觉研究领域的分支之一,而且这个课题已经是比较成熟了,并且在商业中已经有很多落地项目了。比如汉王OCR、百度OCR、阿里OCR、腾讯OCR等等,很多企业都有能力都是拿OCR技术开始挣钱了。其实我们自己也能感受到,OCR技术确实也在改变着我们的生活:比如一个手机APP就能帮忙扫描名片、身份证,并识别出里面的信息;汽车进入停车场、收费站都不需要人工登记了,都是用车牌识别技术;我们看书时看到不懂的题,拿个手机一扫,APP就能在网上帮你找到这题的答案。太多太多的应用了,OCR的应用在当今时代确实是百花齐放啊。

OCR的发展

在一些简单环境下OCR的准确度已经比较高了(比如电子文档),但是在一些复杂环境下的字符识别,在当今还没有人敢说自己能做的很好。现在大家都很少会把目光还放在如何对电子文档的文字识别该怎么进一步提高准确率了,因为他们把目光放在更有挑战性的领域。OCR传统方法在应对复杂图文场景的文字识别显得力不从心,越来越多人把精力都放在研究如何把文字在复杂场景读出来,并且读得准确作为研究课题,用学界术语来说,就是场景文本识别(文字检测+文字识别)。自然场景下的文字识别比简单场景的文字识别实在困难太多了,现在虽然出了很多成果,但是离理想结果还是差很远。

OCR的分类

如果要给OCR进行分类,我觉得可以分为两类:手写体识别和印刷体识别。这两个可以认为是OCR领域两个大主题了,当然印刷体识别较手写体识别要简单得多,我们也能从直观上理解,印刷体大多都是规则的字体,因为这些字体都是计算机自己生成再通过打印技术印刷到纸上。在印刷体的识别上有其独特的干扰:在印刷过程中字体很可能变得断裂或者墨水粘连,使得OCR识别异常困难。当然这些都可以通过一些图像处理的技术帮他尽可能的还原,进而提高识别率。总的来说,单纯的印刷体识别在业界已经能做到很不错了,但说100%识别是肯定不可能的,但是说识别得不错那是没毛病。

印刷体已经识别得不错了,那么手写体呢?手写体识别一直是OCR界一直想攻克的难关,但是时至今天,感觉这个难关还没攻破,还有很多学者和公司在研究。为什么手写体识别这么难识别?因为人类手写的字往往带有个人特色,每个人写字的风格基本不一样,虽然人类可以读懂你写的文字,但是机器缺很难。那为什么机器能读懂印刷体?因为印刷体是机器造出来的啊,那机器当然能读懂自己造的字体啦哈哈~其实上面也提到了,印刷体一般都比较规则,字体都基本就那几十种,机器学习这几十种字体并不是一件难事,但是手写体,每个人都有一种字体的话,那机器该学习多少字体啊?这就是难度所在。

如果按识别的内容来分类,也就是按照识别的语言的分类的话,那么要识别的内容将是人类的所有语言**(汉语、英语、德语、法语等)**。如果仅按照我们国人的需求,那识别的内容就包括:汉字、英文字母、阿拉伯数字、常用标点符号。根据要识别的内容不同,识别的难度也各不相同。简单而言,识别数字是最简单了,毕竟要识别的字符只有0~9,而英文字母识别要识别的字符有26个(如果算上大小写的话那就52个),而中文识别,要识别的字符高达数千个(二级汉字一共6763个)!因为汉字的字形各不相同,结构非常复杂(比如带偏旁的汉字)如果要将这些字符都比较准确地识别出来,是一件相当具有挑战性的事情。但是,并不是所有应用都需要识别如此庞大的汉字集,比如车牌识别,我们的识别目标仅仅是数十个中国各省和直辖市的简称,难度就大大减少了。当然,在一些文档自动识别的应用是需要识别整个汉字集的,所以要保证识别的整体的识别还是很困难的。

传统OCR一般有 模板匹配的方法(简单的场景 单一数字识别)、特征设计提取分类(传统机器学习方法)

<

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【C/C++】C语言实现单链表
  • HarmonyOS实战开发DLP-如何实现一个安全类App。
  • 无参数绕过RCE
  • 掌握JWT安全
  • Git 术语及中英文对照
  • CentOS7编译ZLMediaKit并使能WebRTC
  • C语言从入门到实战————编译和链接
  • axios是什么?axios使用axios和ajax
  • c++的学习之路:12、vector(1)
  • SSL数字证书基本概念
  • 深入理解指针2:数组名理解、一维数组传参本质、二级指针、指针数组和数组指针、函数中指针变量
  • C++设计模式:桥模式(五)
  • C#的Thread.CurrentThread.IsBackground的作用
  • STM32一个地址未对齐引起的 HardFault 异常
  • Golang | Leetcode Golang题解之第8题字符串转换整数atoi
  • 【面试系列】之二:关于js原型
  • canvas 五子棋游戏
  • CSS 专业技巧
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • JavaScript-Array类型
  • Linux链接文件
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Protobuf3语言指南
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • tab.js分享及浏览器兼容性问题汇总
  • Vim 折腾记
  • vue.js框架原理浅析
  • web标准化(下)
  • Windows Containers 大冒险: 容器网络
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 从setTimeout-setInterval看JS线程
  • 搭建gitbook 和 访问权限认证
  • 关于Flux,Vuex,Redux的思考
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​520就是要宠粉,你的心头书我买单
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #vue3 实现前端下载excel文件模板功能
  • (145)光线追踪距离场柔和阴影
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (一)Java算法:二分查找
  • (转)EOS中账户、钱包和密钥的关系
  • (转)linux下的时间函数使用
  • (转)原始图像数据和PDF中的图像数据
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)