中文手写输入 (一)

news/2024/10/22 11:40:13/
最近业余时间在学习android的系统,想尝试将中文手写输入支持加到android上去,将最近的学习结果记录下来。

先上个截图:
[img]/upload/attachment/56882/6bec42ff-5f30-3a2b-8baf-cc5030009305.png[/img]

你可以在线测试: [url]http://quake.3322.org/[/url]

我最先google到一个开源的手写输入引擎是Tomoe: [url]http://tomoe.sourceforge.jp[/url],它包括识别引擎,整套的用户界面(GTK)以及SCIM的输入法模块,最初是只支持识别日文,在0.6.0版本red hat的工程师贡献了简体中文字典。因为在android系统上已经有很好的用户界面支持(触摸屏api),其实只需要一个识别引擎就可以了,Tomoe的代码太多,学习起来比较耗费时间。后来在Tomoe的邮件列表上发现了Zinnia: [url]http://zinnia.sourceforge.net/[/url],这个东西很小巧,也很有特色:
1. 基于SVM,识别率高
2. 基于C++标准库,容易移植
3. 提供线程安全库,C/C++/Perl/Ruby/Python容易调用
4. 训练速度和识别速度都很快,识别据说可以达到50~100字/秒

安装zinnia很简单,下载源代码以后解压缩编译安装即可:

./configure
make
sudo make install

因为我对ruby比较熟悉,顺便测试了一下它的ruby库调用,在zinnia源代码目录下面有个ruby目录,运行

ruby extconf.rb
make
sudo make install

就可以安装好它的ruby扩展库,如何调用代码可以看一下ruby目录下面的test.rb
Zinnia通过解析用户输入的笔画顺序以及坐标,列出前N个最合适的文字,输入字符串包括画布宽度/高度以及坐标值,格式如下:

(character
(width canvas width)
(height canvas height)
(strokes
((0-th-stroke 0-th-strokey) ... (0-th-stroke 0-th-strokey))
((1-th-stroke 0-th-strokey) ... (1-th-stroke 1-th-strokey))
((2-th-stroke 2-th-strokey) ... (2-th-stroke 2-th-strokey))
...))


前面的demo是抄袭一个基于ajax的日文手写输入Demo:[url]http://www.chasen.org/~taku/software/ajax/hwr/[/url],后台是通过ruby调用zinnia,你可以从附件下载到源代码。
测试下来有少量的字识别率不高,比如"子","人"等,猜测可能和模型数据和算法都有关系。

因为zinnia是基于C++的,下一步要学习一下如何在android上交叉编译,过一段时间再写第2篇博客介绍。

http://www.ppmy.cn/news/695517.html

相关文章

如何在Windows 10上使用手写输入

Windows 10’s handwriting keyboard allows you to enter text into any application with a pen or other stylus. It even works on old desktop applications. Windows 10的手写键盘允许您使用笔或其他手写笔在任何应用程序中输入文本。 它甚至可以在旧的桌面应用程序上运行…

Go 接口声明

Go 语言中的接口是一种非常强大的特性,它允许我们定义一组方法,然后将其绑定到不同的数据类型上。本文将详细介绍 Go 语言中接口的声明、实现和使用方法,包括接口的定义、接口实现、接口类型断言等方面。 接口的定义 在 Go 语言中&#xff…

系列二、RocketMQ基本概念 系统架构

一、基本概念 1.1、消息(Message) 消息是指,消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须输入一个主题。 1.2、主题(Topic) Topic表示一类消息的集合,每个…

使用鲁大师检测旧电脑信息如下:

电脑概览信息:电脑型号 惠普 康柏14 Notebook PC 笔记本电脑 (扫描时间:2018年04月24日)操作系统 Windows 10 专业版 64位 ( DirectX 12 )处理器 英特尔 第四代酷睿 i5-4200M 2.50GHz 双核主板 惠普 225B ( 英特尔 Haswell - Lynx Point )内存 4 GB ( 威…

vmware VM虚拟机去虚拟化教程 硬件虚拟机 过鲁大师检测

一 准备工作 1. 这里演示的VM虚拟机版本是12.5.9 虚拟机系统是win7 64位 2. 用到的工具 winhex和Phoenix BIOS Editor 下载地址工具 链接:https://pan.baidu.com/s/1b3FfA3FyQ_lnFQSjpCGLGg?pwd1221 提取码:1221 3. 注意&#…

系统自带测试软件,无需鲁大师检测!Windows自带工具检查系统健康度

前段时间的单位体检,小编的结果那真是惨不忍睹,眼睛已瞎、颈椎要废、器官也都快成石榴了,平常用的太狠,现在明显扛不住了。天天伴随大家休闲、工作的电脑也是如此,经过了1年的折腾,软硬件的健康度也在直线下降中。懒得重装系统的家伙们肯定会用第三方检测、清理、修复程序…

鲁大师从服务器获取信息失败怎么办,云服务器 鲁大师

云服务器 鲁大师 内容精选 换一换 系统盘:云服务器中安装操作系统的云硬盘,类似于电脑中的C盘。系统盘在购买云服务器时自动购买并挂载,无法单独购买。系统盘的最大容量为1024 GB。系统盘在购买云服务器时自动购买并挂载,无法单独购买。系统盘的最大容量为1024 GB。数据盘:…

鲁大师测试软件的算法,鲁大师是如何检测内存的?检测内存的方法

大家知道 鲁大师 是如何检测内存的吗?今天小编就为大家讲一下鲁大师检测内存的方法吧,有需要的小伙伴可以一起来看看喔。 RAM测试: 我们先来介绍一下鲁大师的RAM测试理念,前面介绍的了很多关于RAM 的概念,就是想要说明鲁大师的RA…