自己动手实现Android平台手写体数字识别之概述和训练集准备

Android NCNN识别文字(OCR) Android 使用NCNN+OpenCV识别文字,标记文字框 阅读详情

打算把两年前做的Android平台上的手写体数字识别软件的实现过程一步一步地写下来,提供完整的代码给和我当年一样对这种基础的模式识别毫无头绪的同学。不过我现在还是对这些算法一知半解。。。

整个算法处理流程如下:


首先是识别算法的数据集的准备,这里使用MNIST手写体图像集。MNIST是研究人员采集的很多很多不同的人手写的数字扫描成的图像集,包含60000个训练样本和10000个测试样本,每个样本是8位的灰度图像。可以从这里下载http://yann.lecun.com/exdb/mnist/,数据集包含训练集和测试集,分别包含图像文件和标签文件,训练集以如下的结构存储(测试集类似):

TRAINING SET LABEL FILE (train-labels-idx1-ubyte)
[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000801(2049) magic number (MSB first) 
0004     32 bit integer  60000            number of items 
0008     unsigned byte                  label 
0009     unsigned byte                  label 
........ 
xxxx     unsigned byte                  label 
The labels values are 0 to 9. 

TRAINING SET IMAGE FILE (train-images-idx3-ubyte)
[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000803(2051) magic number 
0004     32 bit integer  60000            number of images 
0008     32 bit integer  28               number of rows 
0012     32 bit integer  28               number of columns 
0016     unsigned byte                  pixel 
0017     unsigned byte                  pixel 
........ 
xxxx     unsigned byte                  pixel 

一开始用的MATLAB,由于用的不太熟练,就改用C#进行处理了。首先提取灰度图像的像素点,然后根据设定的阈值(也可以采用动态阈值等方法)进行二值化,再进行归一化处理,原始灰度图像为28x28,裁编之后均为20x20的图像。

原始图像如下:


归一化之后的图像如下:


MNIST处理的代码可以在这里获取:

https://sourceforge.net/projects/andocrrecog/files/PreProcessMNIST/

经过处理后所有训练样本和测试样本都被转换成20x20的归一化图像。


TensorFlow手写句子识别:端到端CTC建模实战 手写句子识别是OCR领域的高阶任务,本质是图像空间与字符序列的时空联合建模,区别于单字分类或印刷体识别。其核心在于解决字符粘连、笔画断裂、书写抖动等真实笔迹特征带来的对齐难题,关键技术包括CNN特征提取、BiLSTM序列建模与CTC损失函数。相比传统‘先分割后识别’流程,端到端方案避免了分割错误累积与上下文丢失,显著提升长句和连笔场景下的字符准确率。在医疗处方、档案数字化、教育手写批改等垂直场景中,该技术已实现CER<7.5%的工程可用水平。本文基于TensorFlow 2.x,详解从数据清洗、自适应预处理 阅读详情

相关推荐

GRI科研实习:本科生如何用机器学习解码衰老多尺度动力学

衰老研究正从表型观察迈向多尺度动力学建模,其核心是整合分子、细胞与个体层面的时序生理信号,并利用深度学习挖掘隐含耦合规律。机器学习在生物医学中的价值,不仅在于提升预测精度,更在于构建可解释、可验证的机制假说——如将生物物理方程嵌入损失函数,或用图神经网络刻画器官间交互。这类交叉研究高度依赖真实数据、领域指导与算力基建,而MITACS GRI项目正是少有的面向本科生开放全流程科研实践的国际平台。它不筛选论文产出者,而是识别具备‘科研直觉’的学习者:能从课设中提炼方法论,从开源项目中建立领域信用,从失败调试中显

weixin_34274029的博客 590

Android opencv实现文字识别

Android 文字识别         因为公司下个项目要用到OCR(光学字符识别),我们组leader就让我准备一下我的项目是主要参考的是tess_two Android图片文字识别,选拍照或者从本地相册选取照片,然后调用本地裁剪,最后开始识别,识别结果还可以,希望能对大家有帮助。先上图再说: OCR文字识别离不开tesseract,tesseract是Google开源的OCR识别工具...

qq_35820350的博客 1万+

AI、机器学习与深度学习的技术选型地图:能力边界与落地成本全解析

人工智能(AI)是一类以模拟人类智能行为为目标的系统性能力集合,其核心在于界定‘问题是否属于智能范畴’;机器学习作为实现AI目标的关键方法层,通过数据驱动自动提炼规则,解决传统编程难以覆盖的概率性推断问题;深度学习则是面向图像、语音、文本等高维非结构化数据的专用工具层,依赖海量标注与算力支撑。三者构成从确定性规则→统计建模→端到端感知的能力跃迁谱系,技术价值不仅体现在准确率提升,更在于对数据质量、工程成本与业务可解释性的综合权衡。典型应用场景包括智能客服意图识别、工业质检缺陷判别、金融风控决策支持等。本文聚

congji3817的博客 405

android 离线文字识别开源库 tesseract

android 离线文字识别开源库 tesseract

weixin_43888347的博客 8374

Android AI应用开发:手写识别

基于Google ML模型开发Android手写文字识别应用

伯特立的专栏 1301

Android手写识别

今天工作效率太高了,ios 和 android 都找齐了,大下喜欢一定要好评呀。回到正题:这是一个免费的手写识别引擎,可以二次开发,但也有前提的,具体自己看里面的文档吧,自己用很合适!这东西小巧、速度快,精度优秀,所以用了它以后开源的就可以下课啦。对了android 有两个版本,这个版本是加强版的,应该和ios 的加强版本一样。好像就是包含的字多一点。

Android开发百度人证识别练习项目Demo

首先要登陆百度智能云(可点击这个连接https://ai.baidu.com/solution/faceprint?track=cp:ainsem|pf:pc|pp:chanpin-renlianshibie|pu:renlianshibie-jiejuefangan-shimingrenzheng|ci:|kw:10010166),然后依次点击:开放能力——》文字识别——》身份证识别——》立即使...

yaoyaoyao_123的博客 739

Android手写数字识别源码.zip

基于tensorflow的安卓手写数字识别源码及apk文件,使用前请阅读文件说明

android自动识别文字,Android文字识别tesseract ocr -训练样本库 识别字库

目录安装tesseract ocr引擎和jTessBoxEditor安装jTessBoxEditor开始制作box准备好训练的图片将图片转为tif格式的样本图片合并样本图片修改box文件用脚本生成 或按下面步骤生成font_properties生成训练生成字符集文件生成shape文件生成聚集字符特征文件生成字符正常化特征文件合成最终文件改名2.合并字库文件在上一篇文章tess_two Androi...

weixin_39835991的博客 825

实现手写字体识别(90%的识别率)

步骤流程1、环境配置获取百度SDK2、具体实现步骤①获取access_token②手写字体识别③成果展示 1、环境配置 程序整体是由python实现的,环境所包含的第三方库有requests、json、base64、pyinstaller。没有这些库的同学可以win+R输入cmd进入命令行终端pip install 库名。 获取百度SDK 浏览器搜索百度云,如未注册请先注册,然后登录点击管理控制台。点击左侧产品服务→人工智能→文字识别。点击创建应用,输入应用名称如“Baidu_OCR”,选择用途如“学习办公”,最后进行简单应用描述,即可点击“立即创建”。会出现应用列表,包括AppID、API

jni编译zinnia手写识别库

zinnia是一个开源的手写识别库。采用C++实现。具有手写识别,学习以及文字模型数据制作转换等功能。

自己动手实现Android平台手写体数字识别之识别算法准备

上一篇博文里已经将MNIST的训练集和测试集都归一化成了20x20的图像,现在就可以选择一个合适的算法做识别了。 我这里并没有用很牛逼的算法(本身就是非专业的,自然也想不到啥牛逼算法),都是按照书上讲的从13特征点,Fisher分类开始做,然后引入了书上讲的比较多的BP神经网络,再后来结合了PCA去提取特征向量。 最终用PCA+BP Neural Network的算法训练60000个样本,测试

chenxupro的专栏 5161

别再只盯着meta包了!盘点R语言中7个元分析工具包的特色与适用场景

本文深入评测了R语言中7个主流元分析工具包(meta、metafor、netmeta、mada、mvmeta、metasens、rmeta)的核心功能与适用场景,帮助研究者根据具体需求精准选型。通过对比表格和实际代码示例,详细解析了各工具包在传统两两比较、网络Meta分析、诊断准确性研究等不同场景下的差异化优势,并提供了性能对比和组合使用建议。

weixin_30736301的博客 296

可部署手语识别:专家验证数据与轻量级注意力模型

在人工智能落地过程中,模型能否真正部署到真实环境,往往比单纯追求准确率更具挑战。数据质量、推理延迟、设备算力共同决定了技术的实用边界。从可部署手语识别切入,深入解析专家验证数据为何是低资源语言场景中决定模型效果的关键,并拆解轻量级注意力模型如何通过时空注意力机制在有限参数下高效捕捉手语动作的精细变化。该技术路径不仅适用于孟加拉手语,更可迁移到方言识别、稀缺手写体等场景,为边缘设备上的实时交互提供可行方案。

weixin_34239169的博客 422

手把手教你用Trae配置Python开发环境(含Claude 3.5代码生成实战)

本文详细介绍了如何使用字节跳动推出的Trae智能开发环境配置Python开发环境,并实战演示了Claude 3.5代码生成功能。从环境准备到项目初始化,再到AI辅助编码和调试优化,全面展示了Trae在提升开发效率方面的强大能力,特别适合Python开发者快速搭建项目和解决复杂问题。

weixin_28309571的博客 977

Linux-VMware安装后没有虚拟网卡VMnet1和VMnet8(亲测有效,一步一步跟着绝对成功)

VMware-安装后没有虚拟网卡VMnet1和VMnet8 就这个破东西我昨天弄了一天,网上什么VMware卸载重装,用CCleaner清理注册表什么的操作我全用了,但是昨天就是弄不好,同样的操作我昨天试了无数遍一直觉得可能是 持续更新中… 文章参考学习地址:https://blog.youkuaiyun.com/qq_42445139/article/details/87872130 ...

杨的博客 8851

OCR-EDR:视觉引导的OCR纠错技术实战指南

OCR(光学字符识别)是文档数字化的基础能力,但实际落地中常因图像质量、字体形变、版面干扰导致局部识别错误。传统纯文本纠错丢失关键视觉线索,规则引擎难以覆盖长尾形近字,而端到端重训OCR模型成本过高。OCR-EDR作为一种轻量级纠错增强范式,融合视觉特征提取、语义约束建模与序列编辑决策,实现‘看图改错’——在保留原始OCR输出基础上,精准定位并修正高价值错字。该技术特别适用于金融票据、政务档案、医疗报告等对关键字段容错率极低的场景,具备小样本训练、低延迟部署、高业务可解释性等工程优势。

weixin_33841503的博客 276

【R】R画图不显示中文问题

系统mac os 11 RstutioVersion1.2.1335 RVersion3.6.2 画图里的中文一直显示成方框。 ggplot()+geom_point(aes(x=ta1$X2011年,y=ta1$X2012))+ xlab("2011年")+ylab("2021年") 解决方案: 使用showtext。 install.packages("showtext", repos = "https://mirrors.ustc.edu.cn/CRAN/") in...

weixin_41772125的博客 1万+

Android Studio实现文字识别(基于百度云OCR)

前言:之前配置好Android Studio后,一直在参与课程的两个项目,未能及时更新。今天验收好,跟大家分享一下其中我负责的相机相册调用以及实现文字识别的部分。 项目环境: 1、Android Studio 4.1.1 2、华为Nova 3e (安卓9)以及 华为 P20(安卓10) 3、百度智能云-文字识别OCR-通用文字识别(高精度版) 项目流程 一、调用手机相机/相册 注意有些部分是文字识别的方法(已注明),如果不需要文字识别功能,则不需要其代码。 1.activity_main.xml和

qq_43388666的博客 1万+

DoDAF2.0与UAF1.0与UPDM与IBD与Rhapsody与MagicDraw与SysML

参考:fr=ge_alafr=ge_ala。

计算机辅助工程 1420

阿里云一键登录Java后端实战:5分钟搞定号码认证服务集成(附完整代码)

本文详细介绍了如何在Java后端项目中快速集成阿里云号码认证服务(PNVS),实现高效、安全的一键登录功能。文章从核心架构、安全机制解析入手,提供了完整的Maven依赖配置、服务端环境准备、核心业务逻辑实现(包括Token验证、用户处理、异常降级)以及生产环境下的性能优化、监控与部署方案,并附有可直接使用的完整代码示例。

p1q2r的博客 845

android中tesseract-ocr的介绍

最近在做身份证号码识别,在网上搜索的一番后发现目前开源的OCR中tesseract-ocr算是比较强大的了,它由HP于1985年到1995年间开发,后来由google直接负责,经过谷歌进一步开发后,目前的tesseract-ocr有了显著的改进。 tesseract-ocr和Leptonica图像库一起工作,它可以读取多种图像格式,并将其转换成超过60种语言的文本。可以工作在Linux,Wind...

810364804 698

单细胞分析实战:用R语言绘制带连线的堆叠柱状图(附完整代码)

本文详细介绍了如何使用R语言绘制带连线的堆叠柱状图进行单细胞转录组数据分析,特别适用于展示细胞比例变化趋势。通过完整代码示例和实战技巧,帮助研究者优化多组别比较的可视化效果,提升科研图表质量。

yhn4567890的博客 390

Android studio 手写输入字体,自动识别

Android studio 手写输入

afufufufu的博客 965

核心组件大换血:Backbone与Neck魔改篇:YOLO26魔改Neck:引入BiFPN(双向特征金字塔),多尺度融合能力飙升

本文深入解析了YOLO26目标检测模型中Neck部分的优化策略,重点探讨了BiFPN(双向特征金字塔网络)的原理与实现。文章首先指出YOLO26原生FPN+PAN结构在多尺度特征融合上的局限性,特别是在小目标检测和边缘部署场景中的性能瓶颈。随后系统梳理了Neck网络的演进历程,从FPN、PANet到BiFPN和ASFF,详细对比了各架构的特点。核心部分展示了如何将BiFPN引入YOLO26,包括可学习权重融合、双向跨尺度连接等关键技术实现,并提供了PyTorch代码示例。本文为需要提升小目标检测性能或优化边

ZDQ58818的博客 246

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pyTorch入门(六)——实战Android Minist OpenCV手写数字识别(附源码地址)

学更好的别人,做更好的自己。——《微卡智享》本文长度为4239字,预计阅读12分钟前言前面几篇文章实现了pyTorch训练模型,然后在Windows平台用C++ OpenCV DNN推理都实现了,这篇就来看看在Android端直接实现一个手写数字识别的功能。本篇最后会放出源码地址。实现效果代码实现微卡智享实现Android端后写数字识别,一个是项目的OpenCV的环境搭建,详细的搭建可以看《Ope...

Vaccae的博客 1455

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 基于Flex的实时H.264流转发平台之流媒体推送端(librtmp)
下一篇: 自己动手实现Android平台手写体数字识别之识别算法准备
chenxupro
博客等级 码龄19年 49粉丝 51原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值