现代办公要将纸质文档转换为电子文档的需求越来越多,目前针对这种应用场景的系统为OCR系统,也就是光学字符识别系统,例如对于古老出版物的数字化。但是目前OCR系统主要针对文字的识别上,对于出版物的版面以及版面文字的格式的恢复,并没有给出相应的解决方案。对于版面恢复中主要遇到的困难是文字字体的恢复。对于汉字字体识别问题,目前主要有几种方法,但是都是基于人工特征提取的方法。以往的方法主要分为两大类,第一种为整体分析法,将一整片数据看做采用小波纹理分析抽取字体特征用于分类;使用滤波器提取文字的全局文字特征作为分类特征;使用小波包做多级分解,提取字体纹理特征的方法了;使用人工经验方式提取特征。可以看到这些方法都有一个重要的缺陷,如果一个文字整个版面含有不同的字体信息,这种场景就不能采用整体分析法。第二种为个体分析法,个体分析法对象为单个字符图像,依然采用小波分解提取特征。这种方法需要知道单个汉字的图像,对于现代出版物的识别系统中,可以很容易得到单个汉字的图像。很显然这种方法可以解决整体法不能解决文字中夹杂其他字符比如英文的情况。另外有人提出特征点的方法来处理汉字字体识别,但是特征点的提取也是有问题,因为定义提取的特征需要人为干预。
  由此可见,在考察完整体法和个体法来看,个体法明显更灵活并适用于多种情况。但是应该看到传统方法基本上都是采用图像处理的方法,计算复杂度都很高。另外不同汉字的外形差异是不一样的,而采用图像处理的方法往往不能有效解决这个问题。
  综上所述,我们可以看到传统汉字字体识别方法的不足,因为汉字字符的复杂性,特征提取方法不能处理多变的汉字外形,特征点提取方法需要人工专家定义重要的特征点位置。而且,对于哪些特征点重要也不能给出统一的标准。故而基于CNN网络的字体识别方法可以靠卷积核以及池化层,自动生成特征,这就避免人为特征提取上的不稳定性以及盲点。我们通过计算机内嵌的字体生成实验数据,然后训练CNN深度学习网络。最终实现结果显示出了良好的稳定性,较高的正确率,一次训练多次使用等通用性好的优点。
  与传统特征提取方法不同,卷积神经网络通过卷积核提取特征,每一个神经元和前一层的局部感受区域相连,通过卷积核计算局部特征。以卷积窗口的移动生成特征平面,每一个特征平面共享一个卷积核,做到权值共享,降低了权值的数量的优点。CNN网络主要用于识别二维图像,由于共享权值采用监督学习的方式得到。所以避免了人为提取特征,故而CNN具备从训练数据中学习共享权值的优点。通常CNN网络分为多层,其中一种叫卷基层,一种叫池化层,卷基层和池化层可以有多个。分别用于特征的提取和特征参数的处理。

基于CNN网络的汉字图像字体识别及其原理的更多相关文章

  1. [Python]基于CNN的MNIST手写数字识别

    目录 一.背景介绍 1.1 卷积神经网络 1.2 深度学习框架 1.3 MNIST 数据集 二.方法和原理 2.1 部署网络模型 (1)权重初始化 (2)卷积和池化 (3)搭建卷积层1 (4)搭建卷积 ...

  2. 【python / mxnet / gluoncv / jupyter notebook】基于mxnet和gluoncv的图像内容识别

    程序环境为高性能集群:CPU:Intel Xeon Gold 6140 Processor * 2(共36核心)内存:512GB RAMGPU:Tesla P100-PCIE-16GB * 2 In  ...

  3. 卷积神经网络(CNN)学习算法之----基于LeNet网络的中文验证码识别

    由于公司需要进行了中文验证码的图片识别开发,最近一段时间刚忙完上线,好不容易闲下来就继上篇<基于Windows10 x64+visual Studio2013+Python2.7.12环境下的C ...

  4. 基于LeNet网络的中文验证码识别

    基于LeNet网络的中文验证码识别 由于公司需要进行了中文验证码的图片识别开发,最近一段时间刚忙完上线,好不容易闲下来就继上篇<基于Windows10 x64+visual Studio2013 ...

  5. MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网络训练实现及比较(三)

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前两篇文章MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网 ...

  6. OverFeat:基于卷积网络的集成识别、定位与检测

    摘要:我们提出了一个使用卷积网络进行分类.定位和检测的集成框架.我们展示了如何在ConvNet中有效地实现多尺度和滑动窗口方法.我们还介绍了一种新的深度学习方法,通过学习预测对象边界来定位.然后通过边 ...

  7. 数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10

    简介 在上一篇博客:数据挖掘入门系列教程(十一点五)之CNN网络介绍中,介绍了CNN的工作原理和工作流程,在这一篇博客,将具体的使用代码来说明如何使用keras构建一个CNN网络来对CIFAR-10数 ...

  8. Java基于opencv实现图像数字识别(五)—投影法分割字符

    Java基于opencv实现图像数字识别(五)-投影法分割字符 水平投影法 1.水平投影法就是先用一个数组统计出图像每行黑色像素点的个数(二值化的图像): 2.选出一个最优的阀值,根据比这个阀值大或小 ...

  9. Java基于opencv实现图像数字识别(四)—图像降噪

    Java基于opencv实现图像数字识别(四)-图像降噪 我们每一步的工作都是基于前一步的,我们先把我们前面的几个函数封装成一个工具类,以后我们所有的函数都基于这个工具类 这个工具类呢,就一个成员变量 ...

随机推荐

  1. Deep learning with Python 学习笔记(1)

    深度学习基础 Python 的 Keras 库来学习手写数字分类,将手写数字的灰度图像(28 像素 ×28 像素)划分到 10 个类别 中(0~9) 神经网络的核心组件是层(layer),它是一种数据 ...

  2. k-近邻算法(KNN)

    最近邻算法可以说是最简单的分类算法,其思想是将被预测的项归类为和它最相近的项相同的类.我们通过简单的计算比较即将被预测的项与已有训练集中各项的距离(差距),选择其中差距最小的一项,该项的类别即为我们即 ...

  3. 装饰者模式的学习(c#)

    案例转自https://www.cnblogs.com/stonefeng/p/5679638.html //主体基类 using System;using System.Collections.Ge ...

  4. Visual Studio 命令提示符

    Visual Studio 命令提示和 SDK 命令提示会自动设置环境变量,使您能够轻松使用 .NET Framework 工具. 在 .NET Framework 4 版 和更高版本中,应使用 Vi ...

  5. 简单的SpringMVC经典案例

    主题:构建一个基于SpringMVC的HelloWord Web 项目 目的:快速体验什么是SpringMVC 方案: 1.创建工程,命名:SpringMVC 2.导包 3.在SRC下添加spring ...

  6. centos下MySQL Workbench连接时崩溃的解决方法

    在centos6.5中使用MySQL Workbench 6.3.8链接数据库崩溃,如果是在终端使用命令“mysql-workbench”打开的话会有如下错误提示: /usr/libexec/mysq ...

  7. EF框架的三种模式

    Database First就是先建数据库或使用已有的数据库.然后在vs中添加ADO.Net实体数据模型,设置连接并且选择需要的数据库和表.它是以数据库设计为基础的,并根据数据库自动生成实体数据模型, ...

  8. 实例化Flask的参数 及 对app的配置

    Flask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢? 有一个神奇的东西叫 Flask配置 , 这个东西怎么用呢? 它能给我们带来怎么样的方便呢? 首先展示一下: from ...

  9. 卸载阿里云自带svn

  10. 【代码笔记】iOS-UIActionSheet动态添加按钮

    一,效果图. 二,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIVi ...