title author date CreateTime categories
WPF 使用 MyScript 的 IInk 做手写识别
lindexi
2019-11-20 08:18:26 +0800
2019-11-18 16:32:28 +0800
WPF

有小伙伴问我可以如何在 WPF 使用其他第三方提供的库进行手写识别,上次 MyScript 的工程师和我吹,他做了世界上识别最好的库,本文就来安利一下大家这个库。这里库是收费的库,但是可以免费使用,只要不是有大量用户,这个库还是免费用的。用这个库可以在 Windows 平台识别数字、多个不同语言、数学公式手写识别

我对比了这个库和微软自带的手写识别,在识别英文和数字上,其实差别不大。但是 MyScript 的 IInk 对数学公式的识别是超级厉害,至少我还没有找到一个比他厉害的。但是在识别中文上就比微软自带的差一点了

在 MyScript 的使用限制是需要指定当前用户书写的内容,如先设置为英文,此时就会使用英文识别。另外识别的计算速度不快,不过做实时识别还是可以的,这要求你的设备不能太差。基本上能将 LoL 运行起来,玩的时候不会砸键盘的设备就能做实时识别

好了,我知道怎么吹小伙伴都是不信的,让我给出一张图片证明。这是一张比较大的 GIF 图片,所以我放在了 sm.ms 上,如果看不到图片就刷新

小伙伴也许会认为我是用了100000挑里面最好的一个放上来,下面就来告诉搭建如何开发

不要问那么多,上车咯

先通过 Github 下载官方的例子 MyScript/interactive-ink-examples-wpf: MyScript Interactive Ink examples and user interface reference implementation for Windows WPF.

下载完成之后,不要急着打开,因为这是一个收费的库,所以需要下载许可证。下载许可证的路线有点长,需要注册帐号写申请,然后这个网站又在国外,所以可能需要小伙伴一点时间。申请帐号地址是 https://developer.myscript.com/getting-started 申请完成会在邮件收到 MyCertificate.cs 文件,将这个文件替换到下载的仓库的 GetStarted\MyCertificate.csDemo\MyCertificate.cs 如果小伙伴都不想申请,或者打不开网站,可以发邮件给我使用我的文件

免费的 MyCertificate.cs 可以用在100个设备上

如果你看到本文时,官方还没有修复 MyScript.InteractiveInk.GetStarted.Wpf-VS2017.csproj 的坑,也就是我在 github 上提出的问题,那么请小伙伴手动删除 <HintPath>..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\PresentationCore.dll</HintPath> 这段代码,以及下面差不多的代码

此时通过 VisualStudio 打开,设置 MyScript.InteractiveInk.GetStarted.Wpf-VS2017 作为启动项目,还原 NuGet 库,然后就可以运行了

此时运行如何编译太久了,请看仓库的 recognition-assets 文件夹是否有内容,在 getRecognitionAssets.ps1 将会下载一些需要的库,可以自己手动下载替换文件。如果你无法下载,请发邮件给我给你文件

运行默认的是文字识别,可以识别英文和数字,可以做到实时识别

如果想要用本文说的手写公式识别功能,请打开 GetStarted\MainWindow.xaml.cs 文件,修改 PART_TYPE 的值

        private const string PART_TYPE = "Drawing";
      

修改之后请重启程序,现在就可以试试公式识别,需要手动点击 Convert 按钮才能识别

这个库好不好用,请小伙伴自己测试如果还是无法编译成功,请找我要编译完成文件

再次说明,我没有收 MyScript 的好处

2019-11-20-WPF-使用-MyScript-的-IInk-做手写识别的更多相关文章

  1. 【2019.11.20】SDN上机第4次作业

    安装OpenDayLight控制器 配置JAVA环境 https://www.opendaylight.org/ 在官网进行下载OpenDayLight控制器 启动OpenDayLight控制器和安装 ...

  2. MyScript 手写识别数学公式、图形 自动计算

    项目的地址  http://git.oschina.net/bimingcong/MyScript #说明:MyScript是一种能够自动识别用户在屏幕上的手势,然后转化为相应的数学公式.图形(比如三 ...

  3. EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)

    传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f( ...

  4. [New!!!]欢迎大佬光临本蒟蒻的博客(2019.11.27更新)

    更新于2019.12.22 本蒟蒻在博客园安家啦!!! 本蒟蒻的博客园主页 为更好管理博客,本蒟蒻从今天开始,正式转入博客园. 因为一些原因,我的CSDN博客将彻底不会使用!!!(带来不便,敬请谅解) ...

  5. 2019.11.9 csp-s 考前模拟

    2019.11.9 csp-s 考前模拟 是自闭少女lz /lb(泪奔 T1 我可能(呸,一定是唯一一个把这个题写炸了的人 题外话: 我可能是一个面向数据编程选手 作为一个唯一一个写炸T1的人,成功通 ...

  6. 只有20行Javascript代码!手把手教你写一个页面模板引擎

    http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...

  7. 最新用WPF为触摸屏写了一个手写程序,双格输入的

    原文:最新用WPF为触摸屏写了一个手写程序,双格输入的 双格输入可以提高手写速度,当前字写完以后可以自动识别提交,写下一个字.这样比单格手写速度提高一倍.特别适合触摸屏程序使用 界面如下: 程序如下: ...

  8. 2019前端面试系列——JS高频手写代码题

    实现 new 方法 /* * 1.创建一个空对象 * 2.链接到原型 * 3.绑定this值 * 4.返回新对象 */ // 第一种实现 function createNew() { let obj ...

  9. WPF启动流程-自己手写Main函数

    WPF一般默认提供一个MainWindow窗体,并在App.Xaml中使用StartupUri标记启动该窗体.以下通过手写实现WPF的启动. 首先先介绍一下VS默认提供的App.Xaml的结构,如下图 ...

  10. .NET Core/.NET5/.NET6 开源项目汇总11:WPF组件库1

    系列目录     [已更新最新开发文章,点击查看详细] WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Frame ...

随机推荐

  1. occ+vtk显示igs模型

    使用Opencascade读取igs文件内模型,使用vtk进行显示. 本案例环境:Opencascade6.6.0 +  vtk-5.10 + VS2005(win32) 使用CMake管理工程. C ...

  2. phalcon常用语法

    打印SQL //在config/service.php中注册服务 $di->set( 'profiler', function () { return new \Phalcon\Db\Profi ...

  3. 深入浅出 Java Concurrency (1) : J.U.C的整体认识[转]

    去年年底有一个Guice的研究计划,可惜由于工作“繁忙”加上实际工作中没有用上导致“无疾而终”,最终只是完成了Guice的初步学习教程,深入的研究没有继续进行下去. 最近一直用的比较多的就是java. ...

  4. 线段树区间更新+区间求和模板(数组实现)洛谷p3372,p3373

    模板题目1:https://www.luogu.org/problemnew/show/P3372 懒惰标记讲解:https://www.cnblogs.com/wushengyang/p/11194 ...

  5. 通过原生JS打印一个空心菱形图案

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 稀疏表示step by step(转)

    原文地址:稀疏表示step by step(转)作者:野火春风 稀疏表示step by step(1)     声明:本人属于绝对的新手,刚刚接触“稀疏表示”这个领域.之所以写下以下的若干个连载,是鼓 ...

  7. Java 线程池 +生产者消费者+MySQL读取300 万条数据

    1.1需求 数据库300 万条用户数据 ,遍历获取所有用户, 各种组合关联, 获取到一个新的json ,存到redis 上. 1.2 难点 数据库比较多, 不可能单线程查询所有的数据到内存. 1.3解 ...

  8. select2下拉内容获取后台数据

    controller(id给select:text给另外的input框) @RequestMapping(value = "findUnit")public @ResponseBo ...

  9. python中的*args与**kwargs的含义与作用

    在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数,用于元组,**kwargs是关键字参数 (字典)例如下面的代 ...

  10. js数组快速排序/去重

    数组的排序  快速排序 思路: (1)在数据集之中,选择一个元素作为”基准”(pivot). (2)所有小于”基准”的元素,都移到”基准”的左边:所有大于”基准”的元素,都移到”基准”的右边. (3) ...