当前位置:网站首页>图片提取文字很神奇?试试三步实现OCR!
图片提取文字很神奇?试试三步实现OCR!
2022-07-27 21:49:00 【英特尔边缘计算社区】

关于OCR
OCR(Optical Character Recognition,光学字符识别)简而言之就是一种可以将图片、扫描文档或者摄像头捕捉的自然场景中的文字转换为数字化的机器编码形式文字的系统,通过提取转换从而能够更加方便的对这些文字信息来进行数字化的存储和搜索,减少输入时间,并且减轻手工查找、核对的痛苦。本文开头提到的银行账号、快递地址信息等的自动化提取以及输入,是其典型应用。

随着深度学习技术的飞速发展,利用基于神经网络的深度学习技术来实现OCR具有鲁棒性更强、准确度更高、方便使用等特点。
因此接下来我们会重点介绍如何利用深度学习技术来实现OCR。希望通过今天的内容介绍,大家能够大概了解什么是OCR,以及怎么样利用你手边个人电脑或者笔记本上的CPU,快速实现OCR的推理,实现基于深度学习的手写体数字识别。
利用深度学习技术来实现OCR
在本课程,我们会提供一个利用深度学习模型来实现OCR的简单Demo,并利用英特尔开源工具套件OpenVINO来对该模型去进行性能优化与加速。只要利用本次课程提供的源代码,并学会接下来的三个简单步骤,大家就可以非常方便的利用一个Jupyter Notebook页面来实现基于MNIST这样的开源手写数字数据集的手写数字识别。

在Demo中,考虑到我们需要对每一个数的图片进行判断确定每张图片中的手写数字是数字0~9这10类中的哪一类,因此在这个OCR Demo中需要搭建并训练一个可以实现图片分类的神经网络模型,这个模型能够为0~9这10个类别中的每一个类别返回类别的概率,那么拥有最大概率的类别所代表的数字就会被判定为我们这个图片中最终所识别的手写数字。
课程操作三步骤
接下来就让我们一起来看看具体的代码吧。

步骤一:进行环境搭建。我们需要安装OpenVINO开发工具包以及相应的Python工具包。

步骤二:进行神经网络模型的搭建与训练。在这里我们只需要上图这样几行代码,就能够搭建一个简单的神经网络模型。

此外,我们还需要去定义最终模型的输出,我们可以如上图增加一层softmax层来获取每个类别的概率,选择概率最大的类别所代表的数字就会作为图片识别的最终结果并进行模型的训练。接下来,大家可以看到整个模型训练已经正在运行了,运行速度也不容小觑。
步骤三:利用OpenVINO提供的模型优化器,Model Optimizer (mo)对整个神经网络模型进行优化。整个优化的过程运行起来,如下图。

在mo运行结束之后,我们就会得到保存为中间格式的模型文件,分别是xml文件和bin文件,这两个模型就保存了文件的模型结构以及模型的权重。
接下来,我们就可以用OpenVINO去进行推理了,推理的代码也是相当的简单方便,整个OCR实现的完整代码,可以参考这里(https://www.kaggle.com/code/raymondlo84/mnist-with-openvino-and-tensorflow-on-kaggle)去进行下载。
最后,我们来看一看整个模型运行的效果吧!我们来打印一些测试的MNIST开源数据集上的手写体数字识别结果。

可以看到这些识别的效果还是相当惊艳的,准确度甚至可以达到99%以上,你还在等什么呢?快来根据我们提供的源代码,对着课程视频和Nono一起来试试吧!

完整代码下载地址:https://www.kaggle.com/code/raymondlo84/mnist-with-openvino-and-tensorflow-on-kaggle
边栏推荐
- [actf freshmen 2020] crypto AES
- How difficult is it to apply for a doctorate under the post system in northern Europe?
- Yuanuniverse office, the ultimate dream of migrant workers
- 蚁剑常见报错
- 英特尔发布开源AI参考套件
- 传奇服中怎么刷装备
- [极客大挑战 2019]RCE ME
- [NCTF2019]babyRSA1
- Senior how to determine the standard of software test completion
- [roarctf2019] babyrsa Wilson theorem
猜你喜欢

Why does redis cluster use reverse proxy? Just read this one

J9 Digital Science Popularization: how does the double consensus of Sui network work?

智能便利店带你解锁未来科技购物体验

『百日百题 · 基础篇』备战面试,坚持刷题 第三话——分支语句!

7月第3周榜单丨飞瓜数据B站UP主排行榜发布!

荣耀多款产品齐发,笔记本MagicBook V 14售价6199元起

Common errors reported by ant sword

A great thinking problem cf1671d insert a progression

C语言实现五子棋游戏

Legendary server: what must be modified when the GOM geem2 engine is updated?
随机推荐
永州出入境检验实验室建设那些事
J9 Digital Science Popularization: how does the double consensus of Sui network work?
永州清洁级动物实验室建设选址注意事项
[NCTF2019]babyRSA1
MATLAB | 那些你不得不知道的MATLAB小技巧(二)
Cache and MMU management
论文写作全攻略|一篇学术科研论文该怎么写
Shell programming specifications and variables
[GWCTF 2019]枯燥的抽奖
Unity implements simple Sketchpad drawing function (notes)
永州植物细胞实验室建设布局方案
Notes on Shangpin project in shangsilicon Valley (I)
NPM related information
The second uncle cured my spiritual internal friction and made me angry out of station B
JS promotion: array flattening in JS
2022最新抖音直播监控全套监控(五)商品详情监控
Assertion mechanism in test class
If we were the developer responsible for repairing the collapse of station B that night
英特尔发布开源AI参考套件
永州分析实验室建设选址概述