OCR文字识别

Posted thethomason

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OCR文字识别相关的知识,希望对你有一定的参考价值。

参考链接

整体流程

  1. 图片预处理:局部自适应去噪、字符区域检测、对字符尺寸进行评估、二值化处理、平滑去噪、倾斜校正
  2. 分割每个字符并构造最小外接矩阵
  3. 版面分析:区分图像部分和文字部分特征描述
  4. 将提取出来的字符与字模库中的字符进行对比(进行必要的动态调整)
  5. 结果输出

为什么要进行二值化处理

通过搜索产生0和1的跃变位置,可以快速准确的提取目标区域的边界像素点。边缘检测和处理

去噪

  1. 原始图像数据与二维高斯滤波模版进行卷积运算(模糊化)
  2. 高斯滤波可以减弱或者消除图像中的低频分量,但是不影响高频分量。低频分量对应于图像中灰度值变化缓慢的区域。因此高斯滤波可以时图像反差增加,边缘明显。

处理细小干扰:将灰度值低于30的值去掉

字符匹配可用的方法

  • 欧氏距离
  • 余弦距离(推荐)
  • QDA
  • L1范数

结果输出

区分相似字符(如W-w, Z-z, 0-O-o,1-l等),单纯依靠特征匹配很难区分出来,需要加入语言模型进行校正。
针对单字的识别方法的准确度不高问题,可以有下面的解决方案:

  • 方案一:

对汉语文本识别处理中加入联想、词组信息,取得了较好的结果。但是准确的分词问题并未得到解决。如果单字识别错误,分词就会更加困难。

  • 方案二:

将基于统计的MARKOV语言模型方法应用到中文文本识别处理中,利用语料统计得到中文相邻字的同现概率矩阵,把具有确定性边界的一个汉字序列(多数情况为一个句子)作为一个处理单元,用动态规划方法求出最佳选择。此方案更加高效。

引用论文:
计算机语言学方法在中文文字识别后处理中的应用

字符分割

  1. 分割单个字符

字符之间的像素理想情况下为零,如果存在噪声,只要噪声不大,就可以实现字符分割。

  1. 分割单行

利用差分差分方程计算每行的开头和结尾

字符识别

和字模库中的文字进行匹配,利用相关系数进行处理

后处理

相近字形处理和上下文关系

引用论文:
对电商平台图片中文字的识别模型研究

概念补充

  • ODE是常微分方程的英文缩写,即ordinary diffrential equation,如果在微分方程中,自变量的个数只有一个,这就是ODE方程,例如形如F(x,y,y‘,y")=0的方程就是一个二阶ODE方程;

  • PDE方程指偏微分方程,即:partial differential equation,指的是自变量的个数为两个或两个以上的微分方程,如y"(t)+y‘(x)=0(这里的导数指的是y对t及x的偏导数)。

从图像中检测目标

两个基本步骤

  1. 检测可能的文字候选区

  2. 利用Hough变换方法分析候选区内扫描线灰度分布对候选区进行证实,并对候选区的形状进行修剪,使其尽可能紧凑的包含文字

现有的提取方法

  • 文理分析。Gabor滤波,空间方差分析等,提取文字区域,具有一定的通用性,但是对于文本的字体和风格比较敏感,存在定位不准和算法复杂度高的缺点

  • 连通元素分析技术。具有很高的处理速度和定位精度,但是只适用于二值图像,不适用于彩色和灰度图像。

下面的算法可以检测出不同大小、方向、排列方式、字体的文本,对弱对比度情况下的文本也比较有效

文本检测技术

  • 基于连通域的方法

  • 基于滑动窗口的方法

  • 基于深度学习的方法

  • 首选基于Region Proposal的方法

  • 其次是基于图像分割的方法

数平精准推荐

先检测文本区域,再找出文本行,获得了相比传统检测方法更好的结果。

实验证明,通过CNN提取深度特征,并结合RNN进行序列学习,能够大幅提高检测精度,尤其对于长文本(水平及具有一定倾斜角度的长文本)的检测。




以上是关于OCR文字识别的主要内容,如果未能解决你的问题,请参考以下文章

OCR文字识别

OCR场景文本识别:文字检测+文字识别

OCR文字识别经典论文详解

ocr文字识别软件

OCR文字识别(初识)

OCR文字识别(初识)