当前位置:首页 > 资讯 > 正文

手写图片的自动识别

手写图片的自动识别

因为我最近在学习结合框架的开发,所以我的第一次测试选取的是实现上传页面的前后端书写。

pytesseract介绍

pytesseract是基于Python的OCR工具, 底层使用的是Google的Tesseract-OCR 引擎,支持识别图片中的文字,支持jpeg, png, gif, bmp, tiff等图片格式。

OCR介绍

OCR(Optical character recognition,光学字符识别)是一种将图像中的手写字或者印刷文本转换为机器编码文本的技术。通过数字方式存储文本数据更容易保存和编辑,可以存储大量数据,比如1G的硬盘可以存储数百万本书。

OCR技术可以将图片,纸质文档中的文本转换为数字形式的文本。OCR过程一般包括以下步骤:

  • 图像预处理
  • 文本定位
  • 字符分割
  • 字符识别 最初由惠普开发,后来Google赞助的开源OCR引擎 tesseract 提供了比较精确的文字识别API,本文将要介绍的Python库Pytesseract就是基于Tesseract-OCR 引擎。

pytesseract的安装以及环境配置

参考文章

手写图片的自动识别 手写图片的自动识别 手写图片的自动识别 手写图片的自动识别

目录结构

手写图片的自动识别

url.py

 

view.py

 

home.html

 

该方法虽然可以实现电子版文字、图片和字符的分析,但是对于手写体,还是存在一些不足,无法识别。

是一个基于飞桨开发的多语言工具包,它具备实用性和轻量级的特点,支持超过80种语言的文字识别。 的一大特色是提供了一系列预训练模型,这些模型包括文本检测、文本方向分类和文本识别等多种类型,以实现高精度的效果。

PaddleOCR模型训练源码

分别上传下面两张图片

手写图片的自动识别 手写图片的自动识别

手写图片的自动识别

 

该方法比较于方法1,可以很好的识别手写图片。但是我们可以清楚的看到,对于数字的分析,仍然还会有一些出入,如上面示例中的识别为,书写字体较斜而影响识别顺序;对于和的识别,经过多次测试,我发现大部分的都会被识别为,所以将代码中的正则表达式修改为,但是还会出现识别不出来的情况。 在这里我遇到的难题主要是书写字体较斜而影响识别顺序,导致直接影响与标准答案的对比。

中第三方库非常多,比如、、等等。 是一个用 编写的 库,用于识别图像中的文字并输出为文本,支持 80 多种语言。 检测部分使用算法,识别模型为,由3个组件组成:特征提取、序列标记、解码,整个深度学习过程基于实现。

这段代码用于从指定路径读取图片,对其进行预处理(包括灰度转换和二值化),并通过轮廓检测识别出图片中的字符。随后,使用库对处理过的图像进行文字识别,并将识别结果输出显示。但是,需要注意的是,若在正常的网络下加载运行,时间比较久,建议使用代理打开模式的网络情况下运行。

手写图片的自动识别

原始图片:

手写图片的自动识别

处理后的图片: 手写图片的自动识别

手写图片的自动识别

 

从它的运行结果来看,将图片进行处理后,对于字母识别情况不会因为书写字体较斜而影响识别顺序,比较于前一种效果较好。对于字符和的识别方面,比较于前一种较差。 在这里我遇到的难题是:在这三种模型中,无法找到一个较好的模型可以准确识别字符和。

由于还没有系统的学习过机器学习,所以这个过程还有很多不足,在接下来的空闲时间里,我会继续系统的学习机器学习来尝试训练模型。

参考文章

文件目录

手写图片的自动识别

运行结果

手写图片的自动识别

手写图片的自动识别 从第1次到第15次,损失值逐渐减小,准确率逐渐增加

上传图片: 手写图片的自动识别

运行结果:

手写图片的自动识别

可以看到识别的数字很乱,且这段代码的缺点在于每识别一次图片,该模型就会从第一次开始训练模型,耗费时间较长。

运行代码

testnum.py

 

这段代码首先训练一个简单的神经网络来识别数据集中的手写数字,其次使用一个方法来分割图片中的各个数字,分割每个数字后,使用你现有的模型逐个进行识别。

testnum1.py

 

参考文章

参考链接

经过测试一些常见付费文字识别的API,例如百度、阿里云,最终选择百度的OCR识别手写字模型。

标准答案一栏需要自己手动输入,在第二次程序打开时,会自动读取存储的标准答案;在修改标准答案后,也可以自动存储到文件。 手写图片的自动识别

手写图片的自动识别