OCR文字识别

article/2025/9/22 4:00:03

 

OCR定义和起源

OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。

OCR的概念是在1929年由德国科学家Tausheck最先提出来的,后来美国科学家Handel也提出了利用技术对文字进行识别的想法。

中国在OCR技术方面的研究工作起步较晚,在70年代才开始对数字、英文字母及符号的识别进行研究,70年代末开始进行汉字识别的研究,到1986年,我国提出“863”高新科技研究计划,汉字识别的研究进入一个实质性的阶段,清华大学的丁晓青教授和中科院分别开发研究,相继推出了中文OCR产品,现为中国最领先汉字OCR技术。

最早的OCR应用是信封上的邮政编码识别。这种技术被使用在了一个非常窄的场景里面,只是要求把填在空格里的数字稳定的有效的检索、识别出来。当时的识别概率能达到92%-93%。这解决一个很大的问题,当时邮寄信都是通过识别码来进行投递的。传统领域内的OCR识别其实与早期的邮政编码识别还是有非常大的相似性,在限定区域内识别文字,比如银行卡、票证、证件(身份证、行驶证、驾驶证)等。

OCR的作用

套用腾讯云戴永楠的话,“OCR就是为了让机器看懂文字”,他说的看懂指的是初步理解文字,并非是识别文字。

OCR的3个步骤,让机器看到文字---让机器认识文字----让机器看懂文字(理解)。目前市面上的很多应用都还局限于让机器认识文字,比如这个字是一还是二或者是3等等。但如果OCR结合NLP,那就能够将机器认识文字带入到机器看懂文字。

OCR应用

基于OCR的应用非常多,比如名片识别、车牌识别、VIN码识别、pdf文档转word、图片转文字等等。有作业帮的拍图搜题,还有曾经法院通过OCR识别文字后自动判卷等等。

目前的OCR应用已经从传统领域的文字识别变为开放场景的文字识别,前者指特定的印刷文本,比如书本、名片、票据、银行卡、证件等等,后者指的是开放场景下的商店招牌、logo、交通指示牌(自动驾驶)等等。局限场景内的文字识别目前不少公司还是采用传统的模式识别,辅以深度学习。但是开放场景内的文字识别,却必须要用到深度学习。

传统领域应用

传统领域内的OCR识别基本涉及裁切及图像矫正、文本行定位、文字识别等等。

边缘检测通常用于银行卡、名片、票据、证件等物件识别。比如名片管家等,打开手机应用之后会显示一个框用于框选证件。用户体验好的会自动去寻找边缘,用户体验差的APP,只能将框与被拍的物件重合之后才能进入到识别。

图像预处理

图像定位

用户在用手机拍摄银行卡、证件、名片时,拍摄的图片中不仅包含主体还有背景,背景是噪声,会对识别产生干扰;用户提供的图片中,主体可能是倾斜的。如下图所示,背景是木制的桌面,主体(身份证)是倾斜的。

为了解决这种问题,需要首先对图像进行定位然后做图像矫正。定位主体的算法非常多,比如边缘检测和基于深度学习。

图像定位的技术在计算机视觉领域中应用的非常广泛,人脸识别和物体识别其实都运行了图像定位的技术。

边缘检测法

首先介绍什么是边缘。在数字图像中,边缘是指图像局部变化最显著的部分,边缘主要存在于目标与目标,目标与背景之间,是图像局部特性的不连续性,如灰度的突变、纹理结构的图标、颜色的图标等。尽管图像的边缘点产生的原因各不相同,但他们都是图形上灰度不连续或灰度几句辩护的点,图像边缘分为阶跃状、斜坡状和屋顶状

基于边缘检测的分析不易受整体光照强度变化的影响,同时利用边缘信息容易凸显目标信息和达到简化处理的目的,因此很多图像理解方法都以边缘为基础。边缘检测强调的是图像对比度。对比度从直观上的理解就是差异的大小,若对于灰度图像来说就是灰度值(亮度值)的差别,对于二值化图就是黑盒白的区别,若对于彩色图像则是颜色的差异了。这些差异可以增强图像中的边界特征,因为这些边界就是图像对比度较大的体现。

 

如果图像主体和背景比较接近,此时边缘检测算法可能会失效。比如将身份证放置于浅色桌面或其它物体上,此时采用边缘检测算法就很难检测到证件边缘进而无法裁切图像导致无法识别。

 

图像矫正

图像矫正常用的是透视变换,下图左这样的是很难进行识别的,必须换成右图所示才能进行识别。

下图是来自于CSDN  Wei_Leng的博客,实际操作中,可能只能够找到图像的3个点,那么根据这三个点是能够确定第4个点的位置,从而进行裁切和透视变换。

 

其它预处理

二值化

对摄像头拍摄的图片,大多数是彩色图像,彩色图像所含信息量巨大,对于图片的内容,我们可以简单的分为前景与背景,为了让计算机更快的,更好的识别文字,我们需要先对彩色图进行处理,使图片只前景信息与背景信息,可以简单的定义前景信息为黑色,背景信息为白色,这就是二值化图了

噪声去除

对于不同的文档,我们对噪声的定义可以不同,根据噪声的特征进行去噪,就叫做噪声去除

 

版面分析

将文档图片分段落,分行的过程就叫做版面分析,由于实际文档的多样性,复杂性,因此,目前还没有一个固定的,最优的切割模型。比较常见的有行切割和列切割。

字符识别

将切割好的字符交给识别引擎识别。

版面恢复

人们希望识别后的文字,仍然像原文档图片那样排列着,段落不变,位置不变,顺序不变,的输出到word文档,pdf文档等,这一过程就叫做版面恢复。

这一步不是必须的,如果是pdf转文字或者图片转文件,那么需要尽可能的恢复原样。可能某些公文系统或者图书扫描领域会用到。

 

后处理及校对

根据特定的语言上下文的关系,对识别结果进行较正,就是后处理。

后处理的方式也很多,比如语义、数组、纠正库等等。后处理和校对可以是自动的也可以是辅助的。比如word文档里面的提示,就属于辅助的,需要人工选择。在一些证件识别领域,后处理可以是自动的,比如如果别克牌的车识别成别克掐,那么可以自动校准为别克牌。

语义后处理的方式较为高级

开放场景应用

开放场景OCR识别的两大步骤是文字检测和文字识别。

相比传统领域的文字检测,开放场景下的文字检测面临的挑战更多。人眼可以在强光、弱光条件下找到文字,甚至能够根据周边环境找到可能的文字(模糊情况下),但是机器目前就很难做到这些。此外,开放场景下的文字类型种类非常多,有各国语言、各种字体,甚至还有颜色及其它物体干扰。

文本检测技术

来源于:http://www.cnblogs.com/skyfsm/p/9776611.html

文本检测不是一件简单的任务,尤其是复杂场景下的文本检测,非常具有挑战性。自然场景下的文本检测有如下几个难点:

  • 文本存在多种分布,文本排布形式多样;
  • 文本存在多个方向;
  • 多种语言混合。

 

交通标志识别

在自动驾驶场景中,交通标志的检测和识别对行车周围环境的理解至关重要。精确的检测对后续识别,辅助定位和导航起着决定性的作用。例如,通过交通标志检测识别限速标志来控制当前车辆的速度;将交通标志嵌入到高精度地图中,对定位导航起到关键的辅助作用等。

交通标志数据集

开发者可以使用德国交通标志识别基准数据集进行训练和测试。如果是在国内进行自动驾驶,那么需要收集国内的交通标志进行训练和测试。CSDN和github上有不少如何用德国交通标识数据集的进行训练的文章或项目。

交通标识识别的难点

交通标志的种类众多,大小、角度不一,本身就很难做到精确检测,并且在真实的行车环境中,拍摄到的交通标志还存在着很多的问题。例如在场景较为复杂的十字路口,存在着很多密集的交通标志,也可能存在很多颜色、形状与交通标志相似的物体,它们会干扰交通标志的精确检测;交通标志的颜色还会受到光照和天气的影响,白天强烈的光照会影响交通标志的检测,夜晚也会受到路灯、车尾灯光反射的影响;拍摄到的交通标志还会受到建筑物、树木、行人等的遮挡;交通标志长期暴露在自然环境下,经受风吹日晒雨淋,与空气中的污染物质发生化学反应,会使交通标志褪色变形。拍摄的图片中存在大量较小的交通标志。如何检测到图片中大量小且密集的交通标志是一个重点,也是一个难点。

 

参考链接:https://new.qq.com/omn/20180810/20180810A1EZHT00

 

 

 

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/LPFM336u.shtml

相关文章

图片识别文字

浏览链接:http://116.62.147.89:8081/OCRUtil/index.html 最终结果图: 如果已经有access_token,请直接跳到第6步 1,注册并登录百度 2,选择管理控制台 3,选择文字识别 4,选择创建应用 按要求填写…

识别图片文字怎么弄?我来教大家怎么识别图片中的文字

有时,我们需要从图片中提取文本以进行编辑或搜索。虽然手动转录是一种选项,但这是费时费力的工作,而且容易出错。为了解决这个问题,出现了各种各样的技术和工具,可以帮助我们自动识别图片中的文字。在本文中&#xff0…

如何识别图片文字?这几个方法助你轻松搞定

你是否有遇到过这样的经历?收到了领导发来的一份资料,但是很多是图片格式,而我们需要用到图片中的文字内容,这时你会怎么解决呢?如果使用传统的方法,一字一句打出来的话,无疑会增加我们的工作。…

navicat12简体中文专业版免费使用教程

1、Navicat Premium 12是一套数据库开发管理工具,支持连接 MySQL、Oracle等多种数据库,可以快速轻松地创建、管理和维护数据库。本教程绝对可用,不像其他的都是大多数搬运别人的文章,也不试试能不能用,简直是浪费大家的…

实测可用 Navicat Premium 12破解解决方案

1.下载安装 64位简体中文版https://pan.baidu.com/share/init?surlk9dYays0z7EdOVNgDS_bQw 提取码:7w9a 2.安装上面版本 3.下载破解补丁https://pan.baidu.com/s/19ct4Afc3bTPdTa35Pldvqg 提取码:r2e5 开始破解: 一.选择补丁版本 简体…

工具篇:Navicat-12版本破解安装

Navicat 12 破解方式,亲测有效 方法如下: 先安装 navicat的exe包将简体中文63位里面的两个文件复制到navicat的安装根目录打开软件,开始会提示你试用到1899年,以后点击试用,就可以一直试用了。就是这么简单。 上面提…

Day15_08_Navicat for MySQ中文破解版(无需激活码)安装教程

Navicat for MySQ中文安装教程 一. 下载中文pojieban Navicat for MySQ 链接: https://pan.baidu.com/s/1DO8yJnvTfBndZJ6Hprr7Og 提取码: ik7d 二. 解压下载后的文件 文件中有两个.exe文件,点击navicat111_mysql_cs_x64.exe 进行安装 三. 点击PatchNavicat.exe选择安装Nav…

Navicat for MySQ中文破解版(无需激活码)

Navicat for MySQ中文破解版(无需激活码) 转载自:https://blog.csdn.net/a599174211/article/details/82795658 1、下载破解版Navicat for MySQ中文破解版 2、解压下载后的文件有两个.exe文件,点navicat111_mysql_cs_x64.exe 进行安装 3、安…

Navicat premium for Mac 12 破解 纯手工

今天用了一天的时间,寻找破解方法。终于找到大神的破解教程。即使在教程下,也折磨了好久。记录一下,方便以后学习。 测试环境:MacOS High Sierra 10.13.4 Windows版破解教程请看 https://www.52pojie.cn/thread-688820-1-1.html破…

Navicat Premium 12 中文版v12.1.19

nacicat premium 12中文版是mac平台上一款易于使用的多连接数据库管理工具,它可以帮助您在单个应用程序中同时连接到MySQL,Oracle,SQL Server,SQLite和PostgreSQL数据库,让对多种数据库的数据库管理变得非常简单,而且Navicat Premium成功结合了其他Navicat成员的功能,并…

navicat 12 for mac 中文破解版使用说明

1. 将下载的Navicat_Premium中文破解版.zip,下载完成后,解压出现如下图两个文件 2. 打开Navicat_Premium_12.0.22.dmg。如果出现打开失败这种情况,请打开mac的未知源选项 打开命令行输入如下代码: sudo spctl --master-disable …

Navicat Premium for Mac 11.1.8 免费中文破解版下载

之前安装的一款数据库软件Navicat试用版本到期了,所以在网上找了一款破解永久使用版Navicat Premium for Mac 11.1.8 完美破解版,完美支持OS X 10.10, 简体中文版,Navicat是最优秀的数据库图形化管理客户端,支持MySQL、SQL Server…

Navicat fro oracle 简体中文破解版(亲测可用)

简单点,直接上货了. 1.下载Navica安装,本人是64位,链接如下(内含使用说明): https://download.csdn.net/download/banglong0/10716809 2.打开Navicat,新建链接。 3.配置连接参数 (注意:箭头标记一定要与在Oracle下载目录下搜索tnsnames.ora 中的SERVICE_NAME一致…

Navicat Premium 11.2.7 中文破解版安装

1.进入链接:下载Navicat Premium;如果链接不存在,可进入网盘下载 2.下载完成解压zip文件,可得到如下文件;选择(x32位和x64位),安装Navicat Premium 3.安装完成后点击PatchNavicat.e…

mysql数据库客户端--navicat for mysql 12中文破解版64位/32位 v12.0.29

navicat 12 for mysql,又被网友称之为navicat for mysql 12,是目前管理和开发MySQL或MariaDB的理想解决方案,为数据库管理、开发和维护提供了一款直观而强大的图形界面,能够同时连接MySQL和MariaDB数据库,并与Amazon R…

vue当中的猫咪瀑布流

效果图 utils utils的index文件 //判断是否是移动端 export const isMobile () > {return !!navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i) }cart.vue src里面的cart.vue 用来写瀑布流的页面<template><div id"waterfall" ref"wate…

iOS开发storyboard拖拽tableView: Static cells的使用

从 object library 中&#xff0c;拖拽一个 UITableView 到 main.storyboard的 UIViewController 中&#xff1b; 设置 table view 的类型为&#xff1a; Static Cells。 设置的方法&#xff1a; 选中 tableview&#xff0c; 在 attributes inspector 中设置。 这时会报错。…

芒果iOS开发之NSComparisonResult比较结果

在学习NSString的时候&#xff0c;可能会经常遇到比较两个字符串的大小&#xff0c;系统已经提供了字符串比较的函数&#xff1a; [objc] view plain copy print ? <span style"font-size:24px;">- (NSComparisonResult)compare:(NSString *)string; </…

iOS用户行为追踪——无侵入埋点

本文章系作者原创文章&#xff0c;如需转载学习&#xff0c;请注明该文章的原始出处和网址链接。   在阅读的过程中&#xff0c;如若对该文章有不懂或值得优化的建议&#xff0c;欢迎大家加QQ&#xff1a;690091622 进行技术交流和探讨。 前言&#xff1a;   前几日做项目,…

猫猫学习ios 之第三方登录友盟实现

一&#xff1a;集成友盟分享 做第三方登录现在大多数用友盟&#xff0c;友盟之中做第三方登录的时候首先下载sdk&#xff0c;然后自己看文档&#xff0c;其实友盟的官方文档写的已经十分清楚了&#xff0c;这里自己写写&#xff0c;做一下笔记 二&#xff1a;详细 友盟&#…