周四刚从济南回来,周五一到公司,就安排了一个为平台软键盘集成手写输入法的任务。说实话,我对这种研究探索实践的任务还是很感兴趣的。

概述

Tegaki

Tegaki (http://tegaki.org/),是一款开源的中文和日文的手写识别项目。它有如下特点:

  • 免费并且开源
  • 跨平台
  • 关注于中文(简体中文和繁体中文)和日文
  • 支持两种识别引擎(Zinnia和Wagomu)
  • 渴望在台式PC和移动设备上均可工作

安装请按照文档(http://tegaki.org/userdoc/)进行。除了下载主程序外,还需要对应识别引擎的model文件,放在相应的路径下。

Zinnia

Zinnia (http://zinnia.sourceforge.net/),是一个简单的,可定制化的和跨平台的在线手写识别系统,它建立在SVM(Support Vector Machines,支持向量机)的基础上。Zinnia接受用户笔迹输入,这些笔迹表现为一系列坐标的序列,然后,通过SVM输入前n个最佳识别。为了跨平台, Zinnia并不包含任何的渲染功能,即获得用户输入的功能并不包含在内。除了识别功能,Zinnia还提供了一个训练模型,可以花费很小的代价就可以创造一个手写识别系统。它有如下特点:

  • 使用SVM,识别准确率高
  • 跨平台和紧凑--可以运行在POSIX和Windows上(建立在C++/STL的基础上)
  • 提供了线程安全的C/C++/Perl/Ruby/Python库
  • 识别速度快(每秒50到100个字符)
  • 快速训练


开源许可证:The BSD 2-Clause License

Tomoe

Tomoe(http://tomoe.sourceforge.jp/)(Tegaki Online MOji recognition Engine),是一款手写识别引擎。原本只支持日文,最新版本(0.6.0,2014-11-27)已支持中文。

开源许可证:LGPLv2

该引擎我并未实际运行查看过结果。

集成

Tegaki

后端开发语言为Python。内置的两个识别引擎,Zinnia为Python调用DLL,Wagomu为Python直接实现。前端界面使用Python的pygtk。
内置的两个识别引擎,均需要model识别文件。
由于Tegaki开发语言为Python,运行的时候需要自带Python解释器,增加体积。另外,Tegaki并没有提供Java库供开发。

Zinnia

Zinnia开发语言为C/C++,提供了C/C++的库。使用SWIG也提供了Perl/Ruby/Python库。
官方并没提供Java的库供使用,Github上有Java版本的开源实现。
需要model识别文件。

Tomoe

Tomoe开发语言为C,除了C库外,还提供了Python和Ruby的库。
需要xml识别文件。

方案

要集成到Teller9平台中,前端展示界面使用SWING/AWT,后端处理使用Java,至于是全部使用Java,还是使用Java通过JNI调用DLL,均可以。
前端展示的话,我在网上找到一例子hanzidict(http://www.kiang.org/jordan/software/hanzilookup/hanzidict.html>),也是手写识别的,用java写的,也提供源代码,许可证为GPL。下载的hanzidict.jar可以直接运行查看效果。其使用的技术还没有研究,据其介绍,字典来自于CEDICT()。他的UI代码可以直接使用,用于Zinnia。

最终结果

上述方案的识别率都不高,可能原因是识别文件数据少的问题,或者学习算法训练不够的原因,均被摒弃。
接下来的方向是使用商业的手写识别方案,比如这个灵云(
http://www.hcicloud.com/)。

标签: none

添加新评论