OCR文字识别在计算机视觉的重要性、基本技术和最新进展
【摘要】 主要是文字检测和文字识别作为计算机视觉一部分的重要性,基本知识,面临的挑战,以及部分最新的成果。
人类认识了解世界的信息中91%来自视觉,同样计算机视觉成为机器认知世界的基础,也是人工智能研究的热点,而文字识别是计算机的重要组成部分。我们生活当中文字是无处不在的,可以说离开了文字我们衣食住行各方面都会很不方便。
首先,文字并非自然产生,而是人类特有的造物,是高层语义信息的载体,文字从整个文化的角度来讲也是非常重要的,人类的文明离不开文字,文字是我们学习知识、传播信息、记录思想很重要的载体,没有文字人类的文明无从谈起。比如说王羲之的“兰亭序“,不只是文化作品,也是人类历史上璀璨的明珠之一。比如诗经,通过诗经,我们既可以学习它郎朗上口的文学特性,也可以通过它了解两千年前历史的故事和先人的思想。
右边的两幅图呢,是我自己拍的啊,里面有建筑、有场景、有树木,如果仅仅看到这两幅图,相信大家并不知道这是在说什么,但是结合了文字之后,我们可以一目了然的看到要讲的内容。所以说文字是计算机视觉的重要线索,与其他视觉信息有重要的互补作用,可以和对话、NLP等,合成多模态语义分析。

首先让我们看一个概念,光学字符识别,英文是OCR。光学字符识别是指把图片、PDF中的文字转换成可编辑的文字,也就是通常所说的文字识别,因为如果我们只提光学字符识别。我估计很多人不知道这是什么意思,所以大家通常把光学字符识别说成为文字识别。实际呢,一般包括检测和识别等多个过程。文字检测呢,是指,判断是否存在文字实例,并给出具体位置的过程。而文字识别是指把文字区域转化成计算机可读和编辑的符号。
方法呢,有很多,一种是基于手工设计的特征,这个在2014年前是主流的方法,比如MSER,SIFT等,2014年之后,大家主要用的方法是深度学习。左边这两张图分别是把发票和文档转化成文字。

文字和检测和识别的难点非常的多,首先呢,大家可以看一下这张图,它的背景非常的复杂,有各种字体;颜色呢,也是多种多样的,比如说白色,比如说是金色,比如说是黑色。方向呢,也是多种朝向,比如说是竖直、倾斜、水平等等,大小也各不相同,比如说这个路牌儿。语言也不统一,我们常见的是中文和英文,但是在海外也会出现各种其他语言组合,比如阿拉伯语、泰语啊。模板也不固定,不只是场景文字,即使我们的文档也会有各种各样的文档。

日常生活的指示栏、窗户、砖块、图标、花草、栅栏、树木、机电等都与文字有一定的相似性,给检测和识别带来很大的干扰。
图像本身和成像也会存在的问题,比如分比率、曝光、反光、局部遮挡、干扰等,给检测和识别带来很大的挑战。

深度学习时代的文字和检测和识别,主要是基于深度学习。其中的文字检测,和目标检测类似,主要是基于物体检测和基于分割。比如说我们左上边看到的textbox是基于SSD目标检测网络,主要改了anchor的设置。左下图的pixellink,则是基于分割。其中基于目标检测呢,更多是侧重比较规整的、可以用四点表示的。而分割呢,更多倾向于各种不规则形状的文字。
文字识别呢,最常用的思想是把文字分成一个个字符,然后直接分类,这是以前传统方法最常用的技术之一。中间一个呢,也是基于分类,但是是基于单词的,对整句话非常难以处理好。最后呢,是基于序列的特征,提取基本特征,比如说CTC,是参考语音识别的,比如说Attention,比如说基于sequence2sequence。还有一点呢,就是端到端,这个是在一个网络里同时做到文字检测和识别,检测和识别可以相辅相成,提高性能。

这是华中科技大学许老师等做的工作,提出一个TextField的概念,就是文字方向场的概念,传统基于分割的文字检测方法有一个很大的局限性就是对密集文本无法有效区分开,他们提出一个文字方向场,基于像素做回归,然后通过后处理组合成一个文字条,对于弯曲特别离谱的文字都可以检测出来。许老师是我们的合作老师之一。
‘在文字识别当中非常有代表性的一个方法是就是华中科技大学白老师团队做的CRNN模型(后正式发表在IEEE TPAMI2016上),称之为 CRNN,其底层用 CNN 提取特征,中层用 LSTM 进行序列建模,上层用 CTC loss 对目标进行优化。它是一个端到端可训练的文字识别结构,但并未使用 Attention。目前,CRNN 已成长为该领域的一个标准方法。白老师也是我们合作的老师之一。
’
作者:blackmoon
OCR文字识别在计算机视觉的重要性、基本技术和最新进展的更多相关文章
- 王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019
演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019) ...
- 怎么给OCR文字识别软件重编文档页面号码
ABBYY FineReader Pro for Mac OCR文字识别软件处理文档时,在FineReader文档中,页面的加载顺序即是页面的导入顺序,完成导入之后,文档的所有页面均会被编号,各编号会 ...
- 对OCR文字识别软件的扫描选项怎么设置
说到OCR文字识别软件,越来越多的人选择使用ABBYY FineReader识别和转换文档,然而并不是每个人都知道转换质量取决于源图像的质量和所选的扫描选项,今天就给大家普及一下这方面的知识. ABB ...
- 怎么提高OCR文字识别软件的识别正确率
在OCR文字识别软件当中,ABBYY FineReader是比较好用的程序之一,但再好的识别软件也不能保证100%的识别正确率,用户都喜欢软件的正确率高一些,以减轻识别后修正的负担,很多用户也都提过这 ...
- OCR文字识别软件许可文件被误删了怎么办
使用任何一款软件,都会有误操作的情况发生,比如清理文件时一不小心删除了许可文件,对于ABBYY FineReader 12这样一款OCR文字识别软件,因失误错误删除了许可文件该怎么办呢?今天就来给大家 ...
- 怎么给OCR文字识别软件设置正确的扫描分辨率
ABBYY FineReader 12是一款专业的OCR文字识别软件,可快速方便地将扫描纸质文档.PDF文件和数码相机的图像转换成可编辑.可搜索的文本,不仅支持对页扫描,还支持多页扫描,扫描分辨率的选 ...
- 怎么使用OCR文字识别软件图像压缩功能
ABBYY FineReader是一款非常实用的OCR文字识别软件,在使用ABBYY FineReader保存文档时可以选择图像格式和压缩方法,通过图像压缩可以减小文件的大小,图像压缩方法视压缩率和数 ...
- OCR文字识别帮助录入文字信息
OCR文字识别是指将图片.照片上的文字内容,直接转换为可编辑文本的过程.目前各行各业不断地应用文字识别产品,解决文字录入工作的烦恼,提高工作效率. OCR文字识别用在哪里? 一个做社区工作的朋友透露, ...
- PHP:基于百度大脑api实现OCR文字识别
有个项目要用到文字识别,网上找了很多资料,效果不是很好,偶然的机会,接触到百度大脑.百度大脑提供了很多解决方案,其中一个就是文字识别,百度提供了三种文字识别,分别是银行卡识别.身份证识别和通用文字识别 ...
随机推荐
- 表格导出到excel的样式消失该如何修改
工作中遇到一需求,要将后台的表格导出到excel后的表格样式该如何修改呢? 其实表格导出首先需要了解两个插件:jquery.table2excel.js和tableExport.js 1.第一步,写一 ...
- CF600E Lomsat gelral——线段树合并/dsu on tree
题目描述 一棵树有$n$个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和. 这个题意是真的窒息...具体意思是说,每个节点有一个颜色,你要找的是每个子树中颜色的众数 ...
- Linux Shell | 解析xml节点
01 xml文件 # user.xml <user> <name>Toy</name> <sex>man</sex> <room/&g ...
- Abp vNext 自定义 Ef Core 仓储引发异常
问题 在使用自定义 Ef Core 仓储和 ABP vNext 注入的默认仓储时,通过两个 Repository 进行 Join 操作,提示 Cannot use multiple DbContext ...
- 深入理解计算机系统 第三章 程序的机器级表示 Part2 第二遍
第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/9943779.html 本章汇编代码中常出现的几个指令及其含义 1.push 操作数的个数:1 将操作数(一般 ...
- Java基础:数组的声明,循环,赋值,拷贝。
数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号. 声明一个数组,并没有将a真正的初始化为一个数组 ...
- yum 配置文件 以及 语法
yum的配置文件 #vi /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache= debugleve ...
- 半自动安装 linux 系统
基于图形软件生成应答文件,实现半自动化安装 linux 操作系统 1.yum install -y system-config-kickstart 安装生成自动化安装操作系统的应答文件 2.syste ...
- bash6——循环
for fruit in apple orange pear #写死 do each ${fruit}s done fruits="apple orange pear" #输入变量 ...
- ZeroC ICE的远程调用框架 AMD
继上一篇<ZeroC ICE的远程调用框架>,本篇再来说其中的AMD.(本篇需要重写) 当在ice文件中声明某个接口方法Method为["amd"]后,接口方法在stu ...