(相关资料图)
书写识别,网上的大佬们都有输出。
书写识别存在的2个问题:
直接拿官网的案例(将 Windows Ink 笔划识别为文本和形状 - Windows apps | Microsoft Learn),会发现输出准确度不高。 另外如果书写过快,词组识别也是个问题,毕竟无法准确分割字之间的笔迹。我结合之前开发经验,整理下书写识别比较完善的方案。
1 private ListRecognize(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 // 如果识别过程中出现问题,则返回null21 return statusResult == RecognitionStatus.NoError ?22 recognitionResult.GetAlternatesFromSelection().OfType().Select(i =>i.ToString()).ToList() :23 null;24 }25 }
这里单字识别,想要提高识别率,可以将stroke合并成一个:
1 var points = new StylusPointCollection();2 foreach (var stroke in strokes)3 {4 points.Add(new StylusPointCollection(stroke.StylusPoints));5 }6 var newStroke = new StrokeCollection7 {8 new Stroke(points)9 };
1 public IEnumerableRecognize(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().Select(x =>x.RecognizedString);14 }15 return null;16 }
看下效果图
引用的命名空间是:Windows.Ink和MicroSoft.Ink,需要引用的DLL文件有四个。可点击下载:InkRecognizeDependencies.rar
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以上版本引用了上面4个DLL文件后,还有2个环境问题:
在App.config文件中,对节点startup添加属性 useLegacyV2RuntimeActivationPolicy=\"true\" 修改项目配置为x86标签:
仓储物流“成渝圈”如何乘势而上? 12月3日,连接昆明和万象的中老铁路全线开通运营,被惠及的显...
两件西周青铜簋时隔三千年成功配对 考古工作者介绍,这个铜簋的盖、身分别时隔40余年出土,纹饰...
“医保砍价”不是一个人在战斗 晁星 “我眼泪都快掉下来了”“每一个小群体都不该被放弃”…...
“购物成瘾”真的是一种病 刘艳 牛雅娟 本周日即将迎来“双十二”促销季,很多人又开始摩拳...
因迷恋山间风景,一男子在甘孜州稻城县海拔4000多米的无人区迷失方向,随后与同伴失联。12月的稻城...
嫌疑人DNA信息比中后,成都市公安局刑侦支队技术处DNA实验室民警白小刚一下坐在凳子上,恍惚迟疑间...
一批反映南京大屠杀历史的新书发布 新华社南京12月7日电(记者邱冰清、蒋芳)“以史为鉴,开创未来...
我在现场·照片背后的故事|电影《亲爱的》里面没有的结局,在我眼前“上映” 12月6日,在深圳市...
冥想?泡脚?不如听听助眠音乐 晚上睡不着,白天睡不醒,成为最贴合都市人群的“睡眠画像”。随...
养老话题 老年教育面临缺口 “终身教育”潜力无限 【现实挑战】“新老年”群体愿意在培养兴...
孙海洋被拐14年儿子如何找到的? 警方侦办另一宗拐骗儿童案时发现线索,通过人像比对、DNA确认找...
北京天文馆、圆明园将对未成年人免费开放 12月6日,北京天文馆发布通知称,12月8日起试行对未成...
今年全国粮食总产量再创新高 连续7年保持在1 3万亿斤以上 根据对全国31个省(区、市)的抽样调...
斑块软的很危险 硬的就无碍? 血管里的“垃圾”分类 赶快学起来! 一项最新研究显示:中国...
诺西那生钠注射液大幅降价 聚焦医保谈判背后脊髓性肌萎缩症家庭 医保目录公布那天 好多家长都...
抖音“窗花剪剪”遭抄袭 被判获赔20万元 法院认为“窗花剪剪”的这种表达方式理应受到《著作权...
公安机关近日侦破3起拐卖儿童案件 失散十几年 3组家庭终于团圆了 北京青年报记者12月6日从公...
2021年度十大网络用语发布 本报讯(记者 路艳霞)作为年度“汉语盘点”活动最具网络特色的组成部...
北京天文馆向未成年人免费开放 本报讯(记者 牛伟坤)北京天文馆对票价免费及优惠政策作出调整:1...
2021北京百个网红打卡地发布 本报讯(记者 李洋)2021北京网红打卡地推荐榜单昨晚正式发布。自然...