OCR技术初识
一、什么是OCR
OCR英文全称是Optical Character Recognition,中文叫做光学字符识别。它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并转换成一种计算机能够接受、人又可以理解的格式。这一概念最早于 1929 年由德国科学家 Tausheck 提出。信息资源数字化工作的目标对象,是大量甚至海量的纸质载体或固体载体形态的文献资源,OCR 凭借自身的智能识别及批量操作性能得以在信息资源数字化工作中广泛应用。
二、OCR的一般流程
图像分析->预处理->行列切割->字符识别->后处理识别矫正
OCR 文本识别,是信息资源数字化 OCR 识别生命周期中的最后阶段,是决定识别准确度的关键阶段。
识别效果的好坏直接影响了后期的处理。
三、OCR的一般识别方法
1.谷歌开源OCR引擎Tesseract
Tesseract 是一个google支持的开源ocr项目,其项目地址:https://github.com/tesseract-ocr/tesseract。
其最新版本3.0已经支持中文OCR,并提供了一个命令行工具,但其识别效率仍然存在诸多问题。
2.OCR开放平台
例如百度的平台,自己写个python脚本,调用开放平台的服务,返回的就是识别结果。但问题是代价高昂,最重要的问题是开发者无法后期控制,因为要借用别人的东西,就无法在识别上做改进,只能完善预处理和后期矫正部分。
3.字符模板匹配
对于一些场景简单的识别,比如文字种类少,规整,清晰度较高的图像,首先定义出文字模板,例如数字(0~9),字母(A~Z,a~z),然后用该模板滑动匹配图像上的字符,这种策略虽然简单但是相当有效。但是应用范围太窄,遇到模板库大的情况就不适用了。
4.OCR的一般识别方法
特征设计、特征提取、分类得出结果
第一步是特征设计和提取,特征设计就是要为字符设计它独有的的特征,来为后面的特征分类做好准备。字符有啥特征呢?有结构特征,即字符的端点、交叉点、圈的个数、横线竖线条数等等,都是可以利用的字符特征。比如“品”字,它的特征就是它有3个圈,6条横线,6条竖线。除了结构特征,还有大量人工专门设计的字符特征,据说都能得到不错的效果。最后再将这些特征送入分类器(SVM)做分类,得出识别结果。这种方式最大的缺点就是,人们需要花费大量时间做特征的设计,这是一件相当费工夫的事情。通过人工设计的特征(例如HOG)来训练字符识别模型,此类单一的特征在字体变化,模糊或背景干扰时泛化能力迅速下降。而且过度依赖字符切分的结果,在字符扭曲、粘连、噪声干扰的情况下,切分的错误传播尤其突出。
5.基于深度学习下的CNN字符识别
在OCR系统中,人工神经网络主要充当特征提取器和分类器的功能,输入是字符图像,输出是识别结果。
但是神经网络同样包含缺点,其需要大量的训练数据,并且耗时巨大。
四、OCR 文本识别阶段识别准确度影响因素分析
文本识别阶段 OCR 软件的性能优劣主要体现在对形近字符的辨识、对图像噪声的免疫力、对标点符号的辨识、数字图像预处理能力、能够辨识的内容范围、交互界面便捷性、软件自学习功能等 7 个方面。
1.对形近字的辨识
形近字符(如“籍”和“藉”、“璧”和“壁”)之间在笔画边缘部分存在较大相似度,辨识过程中容易造成 OCR 软件的误判。
2.对数字图像噪声的免疫力
数字图像的预处理操作,一般都对数字图像中的噪声进行了降噪处理。但是,受数字图像预处理程度、文本型数字图像自身质量等因素影响,在对文本型数字图像进行 OCR 识别时数字图像中往往仍然存在着不同程度的噪声。
3.数字图像的预处理能力
在对文本型数字图像(尤其是原始印刷、排版质量欠佳的数字图像)进行正式识别之前,需要借助 OCR 软件的图像预处理功能对数字图像进行微调,微调效果对识别准确度有直接影响。OCR 软件的图像预处理功能主要包括图像旋转、倾斜矫正、剪切以及亮度、对比度、饱和度、清晰度调整等。
如何提高图像预处理能力
(1)图像倾斜矫正
文本型数字图像中的字符一旦偏离水平或垂直方向,影响 OCR 软件对其进行文本定位和字符分割,进而影响后续的识别准确度。因此,OCR 识别之前应进行数字图像倾斜校正,OCR 软件应具备自动校正和人工校正两种校正功能。
(2)图像反白
数字图像经二值化处理之后,数字图像中的字符图案呈黑色,其余背景部分呈白色。经反白处理之后,数字图像中的字符图案呈白色,其余背景部分呈黑色。借助图像反白处理,可以在黑色背景下把存在于数字图像中的噪点凸显出来,便于后续的降噪处理。
(3)图像旋转
因原始文献资料印刷排版质量或者数字扫描成像阶段操作不慎,容易造成文本型数字图像在水平或垂直方向上产生一定角度的倾斜。为确保对文本型数字图像的精确识别,OCR 软件应具备图像旋转功能,一般应支持在顺时针(或逆时针)方向上连续旋转 90 度,并支持在顺时针(或逆时针)方向上连续旋转任意角度以供选择。
(4)图像剪裁
因原始文献资料印刷排版质量欠佳,或流通使用过程中产生污损,或在数字扫描成像阶段操作不慎,容易在文本型数字图像边沿或文字区域形成明显的噪点。借助数字图像剪裁功能,OCR软件可以轻松去除这部分噪点。
OCR技术初识的更多相关文章
- OCR技术
"起初我写这篇教程是在情人节,OCR可以带给你一整年的爱". 你之前肯定已经见过,OCR技术被应用于在平板电脑上将扫描文件处理成手写字迹,还被应用于谷歌最近添加到他们的Transl ...
- 你知道现在有一种新的OCR技术叫“移动端车牌识别”吗?
核心内容:车牌识别.OCR识别技术.移动端车牌识别.手机端车牌识别.安卓车牌识别.Android车牌识别.iOS车牌识别 一.移动端车牌识别OCR技术研发原理 移动端车牌识别是基于OCR识别的一种应用 ...
- 【OCR技术系列之一】字符识别技术总览
最近入坑研究OCR,看了比较多关于OCR的资料,对OCR的前世今生也有了一个比较清晰的了解.所以想写一篇关于OCR技术的综述,对OCR相关的知识点都好好总结一遍,以加深个人理解. 什么是OCR? OC ...
- OCR技术浅探:基于深度学习和语言模型的印刷文字OCR系统
作者: 苏剑林 系列博文: 科学空间 OCR技术浅探:1. 全文简述 OCR技术浅探:2. 背景与假设 OCR技术浅探:3. 特征提取(1) OCR技术浅探:3. 特征提取(2) OCR技术浅探:4. ...
- Python爬虫入门教程 56-100 python爬虫高级技术之验证码篇2-开放平台OCR技术
今日的验证码之旅 今天你要学习的验证码采用通过第三方AI平台开放的OCR接口实现,OCR文字识别技术目前已经比较成熟了,而且第三方比较多,今天采用的是百度的. 注册百度AI平台 官方网址:http:/ ...
- OCR技术浅析-无代码篇(1)
图像识别中最贴近我们生活的可能就是 OCR 技术了. OCR 的定义:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打 ...
- 【OCR技术系列之七】端到端不定长文字识别CRNN算法详解
在以前的OCR任务中,识别过程分为两步:单字切割和分类任务.我们一般都会讲一连串文字的文本文件先利用投影法切割出单个字体,在送入CNN里进行文字分类.但是此法已经有点过时了,现在更流行的是基于深度学习 ...
- ABBYY OCR技术教电脑阅读缅甸语(下)
文本行检测到之后,我们开始寻找单词和字母之间的间隙,这一次,我们运用了水平直方图,将大的间隙假设为单词之间的空隙,小的间隙理解为字母之间的空隙,检测缅甸文本中的空隙几乎没有出现问题,不像泰语,几乎没有 ...
- ABBYY OCR技术教电脑阅读缅甸语(上)
缅甸联邦共和国,原名缅甸,是东南亚的一个国家,从1962年到2010年,缅甸一直被政变后上台的军政府统治,直至最近5年它才对外界开放,与其他国家建立了贸易与文化联系. 缅甸语由很多方言组成,但所有方言 ...
随机推荐
- vue 获取屏幕宽高 width height
/** * 获取屏幕宽高 */ Vue.prototype.getViewportSize = function(){ return { width: window.innerWidt ...
- OpenVPN简介及架构详解
OpenVPN简介 1 简介 VPN(Virtual Private Network)直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道. OpenVPN无疑是Linux ...
- Hadoop生态集群hdfs原理(转)
初步掌握HDFS的架构及原理 原文地址:https://www.cnblogs.com/codeOfLife/p/5375120.html 目录 HDFS 是做什么的 HDFS 从何而来 为什么选 ...
- 新发现:排序算法时间复杂度只有O(3n),命名为"wgw"排序法
思路:首先在待排序数组i[]中找出最大的值,以(最大值+1)的大小创建一个空数组kk[],然后遍历待排序数组i[]中的值n,其值n对应数组kk[]中的第n个元素加1.最后再把数组kk[]排好序的值赋回 ...
- 【LeetCode每天一题】Multiply Strings(字符串乘法)
Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and ...
- Pandas 常见的基本方法
说明:文章所有内容均截选自实验楼教程[Pandas 使用教程],想要查看教程完整内容,点击教程即可~ 前言: Pandas 是非常著名的开源数据处理工具,我们可以通过它对数据集进行快速读取.转换.过滤 ...
- SpringMVC连接多数据源配置
在spring-config-datasource.xml中配置: <ds:ibatis-config> <ds:sql-map-client id="sqlMapClie ...
- jupyter 快捷键
Jupyter Notebook 的快捷键 Jupyter Notebook 有两种键盘输入模式.编辑模式,允许你往单元中键入代码或文本:这时的单元框线是绿色的.命令模式,键盘输入运行程序命令:这时的 ...
- win10升级后,无法ping通vmware的centos解决方法
win10是lenovo thinkpad460上面的,是正版的.无法做设置,不让其自动升级.10月8日节后第一天上班,电脑要求更新,我就点更新. 结果就发现无法ping通vmware中的centos ...
- iOS 崩溃分析
崩溃统计分析,在APP中是非常常见一种优化APP,发现APP的BUG的方式. 1.异常处理 可通过try catch 方式处理,如果发生异常,会走catch ,最终走fianlly.对一些我们不想他崩 ...