现代办公要将纸质文档转换为电子文档的需求越来越多,目前针对这种应用场景的系统为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. [开源] .NET数据库ORM类库 Insql

    介绍 新年之际,给大家介绍个我自己开发的ORM类库Insql.TA是一个轻量级的.NET ORM类库 . 对象映射基于Dapper , Sql配置灵感来自于Mybatis.简单优雅性能是TA的追求. ...

  2. Font Awesome(一套很棒的图标库)

    Font Awesome 是一个非常方便的图标库.这些图标都是矢量图形,被保存在 .svg 的文件格式中.这些图标就和字体一样,你可以通过像素单位指定它们的大小,它们将会继承其父HTML元素的字体大小 ...

  3. Java控制并发线程数的Semaphore

    Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源.以前我都觉得从字面上很难理解Semaphore所表达的含义,只能把它比作是控制流量的红绿 ...

  4. webpack4 自学笔记五(tree-shaking)

    全部的代码及笔记都可以在我的github上查看, 欢迎star: https://github.com/Jasonwang911/webpackStudyInit/tree/master/ThreeS ...

  5. .30-浅析webpack源码之doResolve事件流(2)

    这里所有的插件都对应着一个小功能,画个图整理下目前流程: 上节是从ParsePlugin中出来,对'./input.js'入口文件的路径做了处理,返回如下: ParsePlugin.prototype ...

  6. [转]WordPress 主题教程 #2:模板文件和模板

    本文转自:http://blog.wpjam.com/m/wp-theme-lesson-2-template-files-and-templates/ 模板文件(template files)和模板 ...

  7. OpenGL学习笔记:Console工程下如何不显示控制台黑窗口只显示Windows窗口

    刚学习OpenGL,绘制图形的时候,如果不进行设置,运行的时候会先出现黑窗口再出现Windows窗口. 其实要去除控制台窗口非常简单,只需要修改工程设置,把子系统改成Windows,程序的入口点改成m ...

  8. Java 获取系统时间

    1. Date类 Date day=new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss&q ...

  9. 这些天C#面试有感

    为何面试 为何面试! 还用问?肯定是因为要离职啊 - -!离职原因就不说了,说来说去就是那么几个原因:这里主要讲我这些天面试遇到的问题,以及对面试的一些感受吧[断续更新

  10. 24.Linux-Nand Flash驱动(分析MTD层并制作NAND驱动)

    1.本节使用的nand flash型号为K9F2G08U0M,它的命令如下: 1.1我们以上图的read id(读ID)为例,它的时序图如下: 首先需要使能CE片选 1)使能CLE 2)发送0X90命 ...