C# 手写识别方案整理
书写识别,网上的大佬们都有输出。
书写识别存在的2个问题:
- 直接拿官网的案例(将 Windows Ink 笔划识别为文本和形状 - Windows apps | Microsoft Learn),会发现输出准确度不高。
- 另外如果书写过快,词组识别也是个问题,毕竟无法准确分割字之间的笔迹。
我结合之前开发经验,整理下书写识别比较完善的方案。
单个字的识别方案:
1 private List<string> Recognize(StrokeCollection strokes)
2 {
3 if (strokes == null || strokes.Count == 0)
4 return null;
5 // 创建识别器
6 var recognizers = new Recognizers();
7 var chineseRecognizer = recognizers.GetDefaultRecognizer(0x0804);
8 using var recContext = chineseRecognizer.CreateRecognizerContext();
9 // 根据StrokeCollection构造 Ink 类型的笔迹数据。
10 using var stream = new MemoryStream();
11 strokes.Save(stream);
12 using var inkStorage = new Ink();
13 inkStorage.Load(stream.ToArray());
14 using var inkStrokes = inkStorage.Strokes;
15 //设置笔画数据
16 using (recContext.Strokes = inkStrokes)
17 {
18 //识别笔画数据
19 var recognitionResult = recContext.Recognize(out var statusResult);
20 // 如果识别过程中出现问题,则返回null
21 return statusResult == RecognitionStatus.NoError ?
22 recognitionResult.GetAlternatesFromSelection().OfType<RecognitionAlternate>().Select(i => i.ToString()).ToList() :
23 null;
24 }
25 }
多字的识别方案:
1 public IEnumerable<string> Recognize(StrokeCollection strokes)
2 {
3 if (strokes == null || strokes.Count == 0)
4 return null;
5
6 using var analyzer = new InkAnalyzer();
7 analyzer.AddStrokes(strokes,0x0804);
8 analyzer.SetStrokesType(strokes, StrokeType.Writing);
9 var status = analyzer.Analyze();
10 if (status.Successful)
11 {
12 var alternateCollection = analyzer.GetAlternates();
13 return alternateCollection.OfType<AnalysisAlternate>().Select(x => x.RecognizedString);
14 }
15 return null;
16 }
看下效果图


引用的命名空间是:Windows.Ink和MicroSoft.Ink,需要引用的DLL文件有四个。
IACore.dll、IALoader.dll、IAWinFX.dll,这三个DLL文件都是Intel集成显卡驱动的重要组成部分,包含了图形处理模块,尤其是IAWinFX为WPF应用提供了支持硬件加速的图形渲染。
以及Microsoft.Ink.dll
值得说明一下,Windows.Ink与Microsoft.Ink在平台支持上不同,如果有要适配不同版本的windows,需要去上方代码修改下
Microsoft.Ink支持 Windows XP、Vista 和 Win7 等旧版 Windows,兼容性高。但Win10及以上版本,官方推荐使用Windows.Ink- Windows.Ink,则仅支持Win8以上版本
DLL引用环境遇到问题,可以参考这篇博客 【WPF】提高InkAnalyer手写汉字识别的准确率 - 大佛脚下 - 博客园 (cnblogs.com)
参考博客列表:
C# vs2012 如何实现手写识别?快来看看吧~_手写识别控件_想吃米豆腐的博客-CSDN博客
C# 实现手写输入功能_zls365365的博客-CSDN博客
【WPF】提高InkAnalyer手写汉字识别的准确率 - 大佛脚下 - 博客园 (cnblogs.com)
C# 手写识别方案整理的更多相关文章
- 10分钟教你用python 30行代码搞定简单手写识别!
欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 手写笔记还是电子笔记好呢? 毕业季刚结束,眼瞅着2018级小萌新马上就要来了,老腊肉小编为了咱学弟学妹们的学习,绞尽脑汁准备编一套大学秘籍, ...
- [纯C#实现]基于BP神经网络的中文手写识别算法
效果展示 这不是OCR,有些人可能会觉得这东西会和OCR一样,直接进行整个字的识别就行,然而并不是. OCR是2维像素矩阵的像素数据.而手写识别不一样,手写可以把用户写字的笔画时间顺序,抽象成一个维度 ...
- Tensorflow之基于MNIST手写识别的入门介绍
Tensorflow是当下AI热潮下,最为受欢迎的开源框架.无论是从Github上的fork数量还是star数量,还是从支持的语音,开发资料,社区活跃度等多方面,他当之为superstar. 在前面介 ...
- Tensorflow快餐教程(1) - 30行代码搞定手写识别
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lusing/article/details ...
- 【Win 10 应用开发】手写识别
记得前面(忘了是哪天写的,反正是前些天,请用力点击这里观看)老周讲了一个14393新增的控件,可以很轻松地结合InkCanvas来完成涂鸦.其实,InkCanvas除了涂鸦外,另一个大用途是墨迹识别, ...
- JS / Egret 单笔手写识别、手势识别
UnistrokeRecognizer 单笔手写识别.手势识别 UnistrokeRecognizer : https://github.com/RichLiu1023/UnistrokeRecogn ...
- (手写识别) Zinnia库及其实现方法研究
Zinnia库及其实现方法研究 (转) zinnia是一个开源的手写识别库.采用C++实现.具有手写识别,学习以及文字模型数据制作转换等功能. 项目地址 [http://zinnia.sourcefo ...
- android 开源 OCR 项目 及手写识别
http://blog.csdn.net/archfree/article/details/6023676 1)一个为Android平台,将识别由手机的相机拍摄的图像文本应用程序. http://co ...
- TensorFlow 入门之手写识别(MNIST) softmax算法
TensorFlow 入门之手写识别(MNIST) softmax算法 MNIST flyu6 softmax回归 softmax回归算法 TensorFlow实现softmax softmax回归算 ...
随机推荐
- liunx密码破解
重启系统后出现GRUB界面在引导装载程序菜单上,用上下方向键选择你忘记密码的那个系统键入"e" 来进入编辑模式.进入"编辑模式"之后用上下方向键上下移动光标,找 ...
- 功能测试--Fiddler
Fiddler(更推荐Charles,很好用) 1.fiddler是什么?------客户端的所有请求都要先经过fiddler,然后转发到服务器:反之,服务器的所有响应,也会先经过fiddler,然后 ...
- Mysql 行号+分组行号+取Top记录 SQL
Mysql 行号+分组行号+取Top记录 SQL select * from ( SELECT (@rowNum := @rowNum + 1) as rowNum -- 全量行号 , a.col1 ...
- C# 返回指定目录下所有文件信息
返回指定目录下所有文件信息 /// <summary> /// 返回指定目录下所有文件信息 /// </summary> /// <param name="st ...
- spring-service.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- 关于windows cmd 控制台输出中文
由于中文在window 输出总是优乱码可能性 ,先建cmd.reg 负责下面内容 ,双击运行即可. Windows Registry Editor Version 5.00 [HKEY_CURR ...
- 远程链接linux编程shell脚本
WinSCP-5.15.3-Setup.exe https://pan.baidu.com/s/1zr7ipq8i5rqm8tYS8GeKsQ
- 文件上传 upload-labs Pass-17 二次渲染
Pass-17 审计源码 $is_upload = false; $msg = null; if (isset($_POST['submit'])){ // 获得上传文件的基本信息,文件名,类型,大小 ...
- java的maven项目打包成.exe可执行文件
打包exe可执行脚本: 1.源代码maven项目写完后打包成可执行jar包,此处我使用的是assembly插件. <plugin> <groupId>org.apache.ma ...
- 【新版】使用 go-cqhttp 扫码登录,一键接入 ChatGPT 机器人到 QQ 群
目录 项目效果 安装 go-cqhttp 虚拟文件 启动 ChatGPT 项目效果 由于 ChatGPT 目前只能在漂亮国使用,所以想要在国内使用 ChatGPT 必然险阻重重 不仅时时刻刻要跟企鹅公 ...