一、OCR简介

1 什么是OCR技术?
OCR英文全称是Optical Character Recognition,中文叫做光学字符识别。它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并转换成一种计算机能够接受、人又可以理解的格式。文字识别是计算机视觉研究领域的分支之一,而且这个课题已经是比较成熟了,并且在商业中已经有很多落地项目了。

2 OCR技术的分类:
2.1 按主题划分:手写体识别和印刷体识别。

(1)印刷体大多都是规则的字体,技术上的难点是,在印刷过程中字体很可能变得断裂或者墨水粘连,使得OCR识别异常困难。当然这些都可以通过一些图像处理的技术帮他尽可能的还原,进而提高识别率。总的来说,单纯的印刷体识别在业界已经能做到很不错了,但说100%识别是肯定不可能的,但是说识别得不错那是没毛病。

(2)手写体识别一直是OCR界一直想攻克的难关,但是时至今天,识别难度还是很大。为什么手写体识别这么难识别?因为人类手写的字往往带有个人特色,每个人写字的风格基本不一样,虽然人类可以读懂你写的文字,但是机器缺很难。印刷体一般都比较规则,字体都基本就那几十种,机器学习这几十种字体并不是一件难事,但是手写体,每个人都有一种字体的话,那机器该学习多少字体啊?这就是难度所在。


2.2 按识别的内容来分类
对于我们国人来说主要分成三类:汉字、英文字母、阿拉伯数字。识别数字是最简单了,毕竟要识别的字符只有0~9,而英文字母识别要识别的字符有26个(如果算上大小写的话那就52个),而中文识别,要识别的字符高达数千个因为汉字的字形各不相同,结构非常复杂(比如带偏旁的汉字)如果要将这些字符都比较准确地识别出来,是一件相当具有挑战性的事情。但是,并不是所有应用都需要识别如此庞大的汉字集,比如车牌识别,我们的识别目标仅仅是数十个中国各省和直辖市的简称,难度就大大减少了。当然,在一些文档自动识别的应用是需要识别整个汉字集的,所以要保证识别的整体的识别还是很困难的。

2.3 OCR流程

判断页面上的文本朝向,因为我们得到的这页文档往往都不是很完美的,很可能带有倾斜或者污渍,那么我们要做的第一件事就是进行图像预处理,做角度矫正和去噪。
对文档版面进行分析,进每一行进行行分割,把每一行的文字切割下来,最后再对每一行文本进行列分割,切割出每个字符,将该字符送入训练好的OCR识别模型进行字符识别,得到结果。
对其进行识别结果的矫正和优化,比如我们可以设计一个语法检测器,去检测字符的组合逻辑是否合理。比如,考虑单词Because,我们设计的识别模型把它识别为8ecause,那么我们就可以用语法检测器去纠正这种拼写错误,并用B代替8并完成识别矫正。这样子,

整个OCR流程就走完了。从大的模块总结而言,一套OCR流程可以分为:
版面分析 -> 预处理-> 行列切割 -> 字符识别 -> 后处理识别矫正
从上面的流程图可以看出,要做字符识别并不是单纯一个OCR模块就能实现的(如果单纯的OCR模块,识别率相当低),都要各个模块的组合来保证较高的识别率。

二、部分源代码

clc
clear all
close all
Symbols =['0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '-'];
P3 = [];
Result = [];
path = 'C:\Users\lenovo\Desktop\23149049ocr\';          % working Path
ext = '_bold.bmp';                  %Train Data Files Extension name
P = zeros(16,12,11);% Read 0-9 digits data
for i = 0: 9file = [path,char(48 + i) , ext];      % char(48) => '0'P(:,:,i + 1) = imread(file);P3 = [P3,P(:,:,i + 1)'];
end%  imshow(P(:,:,1));i = i + 1;
% read other symbolsfile = [path,'dash' , ext];P(:,:,i + 1) = imread(file);P3 = [P3,P(:,:,i + 1)'];% figure
%  for i = 1:11
%       subplot( 11, 1, i );
%       imshow( P(:,:,i) );
%   endP1 = reshape(P3, 12 * 16, 11);T = zeros(11,11);
for i = 1:11T(i,i) = 1;
end[R,Q] = size(P1);
[S2,Q] = size(T);S1 =   25;net = newff(minmax(P1),[S1 S1 S2],{'logsig' 'logsig','logsig'},'traingdx');net.performFcn = 'sse';
net.trainParam.goal = 0.05;
net.trainParam.show = 100;
net.trainParam.epochs = 5000;
net.trainParam.mc = 0.95;[net,tr] = train(net,P1,T);sept2 = []; %character segment start-end pos
Test1 =[];
file = [path,'test_bold2.bmp'];
a = imread(file);
figure;
subplot(3,24,1:24);
imshow(a);j =1;seg1 = a;b = sum(seg1) ; % character segment, if the vertical projection is zero, means the space between characters.b(find(b < 1) ) = 0;c = find(b == 0);d= find(b > 0);e = find(c > d(1));sept2 = [];for k = 1:size(e,2) -1    % delete repeated zero positionif( c(e(k + 1)) - c(e(k)) > 1) sept2 = [sept2, c(e( k ))];sept2 = [sept2, c(e(k + 1))];end    end%figuresept2 = [1, sept2];chCount = size(sept2);for k = 1: chCount(2) -1Test1 = [];tmp = zeros(16,1);z =   a(:,sept2(k)+1: sept2( k+1 ));t1 = size(z);if(t1(2)> 2) tt1 = size(z);
%         if( tt1(2) < 11)
%             z = [z,tmp];
%         endtt1 = size(z);
%         if( tt1(2) < 11)
%            z = [tmp,z,tmp];
%         endz2 = imresize(z,[16,12],'bilinear');
%         z2 = ~z2;
%         z2 = ~z2;
%         z2 = double(z2);
%         z2 = imnoise(z2,'salt & pepper', 0.4);z2 = ~z2;z2 = ~z2;subplot(3,24,24+k);imshow(z2);z2 =z2';z3 = reshape(z2,16 * 12,1);Test1 = [Test1,z3];%figure;%imshow(z2);%title('TRUE');%   end

三、运行结果

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.

【印刷数字识别】基于matlab OCR识别系统【含Matlab源码 438期】相关推荐

  1. 【Matlab水果识别】自助水果超市【含GUI源码 594期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]自助水果超市[含GUI源码 594期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]倪云峰,叶健,樊娇娇 ...

  2. 【Matlab破损识别】机器视觉+SVM玉米种子破损识别(带面板)【含GUI源码 1651期】

    一.代码运行视频(哔哩哔哩) [Matlab破损识别]机器视觉+SVM玉米种子破损识别(带面板)[含GUI源码 1651期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考 ...

  3. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  4. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...

  5. 【Matlab指纹识别】指纹识别匹配门禁系统【含GUI源码 587期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别匹配门禁系统[含GUI源码 587期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  6. 【Matlab水果识别】苹果质量检测及分级系统(带面板)【含GUI源码 1613期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]苹果质量检测及分级系统(带面板)[含GUI源码 1613期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  7. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

  8. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  9. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  10. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

最新文章

  1. RetinaFace,最强开源人脸检测算法
  2. 算法导论之斐波那契堆
  3. 【深度学习】干货!小显存如何训练大模型
  4. idea The origin server did not find a current representation for the target resource or is not willi
  5. 高级service之ipc ADIL用法
  6. Linux添加授信根证书,linux系统添加根证书 linux证书信任列表
  7. add p4 多个文件_绘图技巧01:继承特性创建对象之神器ADD
  8. python函数归值_Python函数基础与函数递归
  9. 华为手机短息没有声音解决方案
  10. 自定义列_如何对Pandas DataFrame进行自定义排序
  11. 洛谷——P1000 超级玛丽游戏
  12. linux编写的员工管理系统,员工信息管理系统设计与实现(叶晖).doc
  13. 37.JavaScript对象与JSON格式的转换,JSON.stringify、JSON.parse方法的使用方法和注意事项
  14. python第二版答案第六章_Python语言程序设计基础(第2版) 课后题 第六章
  15. 2007电脑报专用版SN(备忘之用)
  16. 《最优化方法》——数学基础知识线性规划无约束优化算法初步
  17. 创业者的心得:心有菩提手有刀,欲成舍利却成妖(转)
  18. 只能输入零和非零开头的数字的正则表达式
  19. redis 内存分析工具 RMA 使用
  20. 物联网将IT安全推向边缘

热门文章

  1. WebLogic 11gR1修改jdk版本
  2. 正则表达式批量重命名
  3. [查阅]MSIL Instruction Set
  4. 2020-12-05
  5. Atitit 提升记忆效率 有损压缩原理总结 目录 1. 常见方法 1 1.1. 抽象化提升一层 概念化 1 1.2. 骨架 ,目录化 大纲化 归纳整理 1 1.3. 提取关键词 ,摘要 ,
  6. Atitit oil painting article list sumup s55 C:\Users\Administrator\Desktop\油画技术资料包\Atitit Atitit 图像
  7. atitit 文件搜索 映象文件夹结构模式.docxAtitit 百度网盘 文件 与跨机器 文件 搜索 查询 检索 解决方案 最小化索引法 映象文件夹结构模式. 1. 生成文件夹 结构信息 1
  8. Atitit 理财之道 attilax著 1. 融资 3 1.1. 融资账户余渠道 3 2. 风控 3 3. 3 4. 投资 3 5. 线上财富与资源 3 5.1. Jd流量 飞猪流量 3 5.
  9. atitit 项目管理 package 模块管理 包管理 依赖管理 maven attilax总结.docx
  10. Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结