http://www.iteye.com/topic/288045
你可以在线测试: http://quake.3322.org/
我最先google到一个开源的手写输入引擎是Tomoe: http://tomoe.sourceforge.jp,它包括识别引擎,整套的用户界面(GTK)以及SCIM的输入法模块,最初是只支持识别日文,在0.6.0版本red hat的工程师贡献了简体中文字典。因为在android系统上已经有很好的用户界面支持(触摸屏api),其实只需要一个识别引擎就可以了,Tomoe的代码太多,学习起来比较耗费时间。后来在Tomoe的邮件列表上发现了Zinnia: http://zinnia.sourceforge.net/,这个东西很小巧,也很有特色:
1. 基于SVM,识别率高
2. 基于C++标准库,容易移植
3. 提供线程安全库,C/C++/Perl/Ruby/Python容易调用
4. 训练速度和识别速度都很快,识别据说可以达到50~100字/秒
安装zinnia很简单,下载源代码以后解压缩编译安装即可:
- ./configure
- make
- sudo make install
./configure
make
sudo make install
因为我对ruby比较熟悉,顺便测试了一下它的ruby库调用,在zinnia源代码目录下面有个ruby目录,运行
- ruby extconf.rb
- make
- sudo make install
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))
- ...))
(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:http://www.chasen.org/~taku/software/ajax/hwr/,后台是通过ruby调用zinnia,你可以从附件下载到源代码。
测试下来有少量的字识别率不高,比如"子","人"等,猜测可能和模型数据和算法都有关系。
因为zinnia是基于C++的,下一步要学习一下如何在android上交叉编译,过一段时间再写第2篇博客介绍。
- 大小: 70.1 KB
分享到:
相关推荐
1. **Android手写输入API**: Android SDK中的`android.inputmethodservice.InputMethodService`类是实现手写输入服务的基础。开发者需要继承这个类,并覆写其中的方法来处理手写轨迹的捕捉、识别和转换为文本。`...
本项目"最新android手写输入 很值得借鉴"着重关注了手写输入的实现、保存以及真实字迹的保持,这将是一个对开发者非常有价值的参考资源。 首先,我们来看`AddImageActivity.java`。这个类很可能是应用的主要活动之...
在Android平台上,手写输入是一种常见的输入方式,尤其对于不熟悉拼音或键盘输入的用户,如老年人或非汉语使用者。本资源"Android手机手写输入源码"提供了一个完整的工程,用于实现Android设备上的手写输入功能。...
1. SurfaceView与Canvas:在Android中,为了实现实时的手写输入,通常会使用SurfaceView来创建一个独立的绘图表面,然后通过Canvas进行绘制操作。SurfaceView提供了高效的图形渲染性能,适合用于需要连续更新视图的...
Android手写识别SDK是Google ML Kit的一个重要子组件,它为开发者提供了强大的工具,以便在Android应用程序中实现手写文字的识别和解析。ML Kit是Google提供的机器学习服务框架,旨在简化移动应用开发中的复杂AI功能...
二、Android手写输入 在Android平台上,手写输入主要依赖于Android SDK中的InputMethodService和InputConnection接口。开发者可以通过实现这些接口,创建自定义的输入法服务,支持手写识别。Android还提供了android...
这个"android手写轨迹保存(防有道云笔记手写输入)"的项目,旨在提供一个能够记录用户手写输入并进行编辑的示例。下面将详细阐述这个项目中的核心知识点。 1. 手写轨迹获取: - 在Android中,我们可以利用...
【标题】"手写记事本"是一款专为Android用户设计的记事工具,它集成了便签功能和手绘涂鸦,旨在提供一个个性化且便捷的记录方式。这款应用允许用户通过手写的方式记录生活点滴,同时也支持文字输入,满足不同场景下...
"android android_handwriting android手写"这一标签明确了这个输入法是专为Android系统设计的,并且专注于手写输入。Android系统以其开放性和可定制性著称,因此开发一款针对其优化的手写输入法是十分必要的。 ...
对于Android手写签名功能,我们可以利用触摸屏设备的输入事件来捕捉用户的笔迹。这涉及到Android的MotionEvent类,它封装了触控屏幕时的坐标信息。通过监听ACTION_DOWN、ACTION_MOVE和ACTION_UP等事件,我们可以记录...
开发者需要编写算法来分析用户的手写输入,决定何时换行,以及如何调整已有的签批内容布局。 4. **原比例缩放**:保持原笔迹比例缩放意味着签批的内容在放大或缩小时,线条的粗细和形状应保持一致,不因缩放而变形...
例如,Android 和 iOS 系统都内置了手写输入功能,用户也可以下载第三方输入法应用,如百度输入法、搜狗输入法等,这些应用提供了更多个性化和高级的选项。在这些应用中,"HandInput"可能是特定的手写输入模块或工具...
"android手写Http协议上传文件"这个主题就是关于如何利用Socket编程实现一个简单的HTTP协议来上传本地文件到服务器的过程。下面将详细讲解这个过程涉及的关键知识点。 1. **HTTP协议基础**: HTTP(超文本传输协议...
这个项目的核心目标是提供一个用户友好的界面,让用户能够通过触屏进行手写输入,然后将签名转换为图像(Bitmap)以便于存储和传输。以下是对这个"Android电子签名手写板"项目的详细分析和相关知识点: 1. **手写板...
1. **Android绘图API**:Android提供了多种API供用户进行手写输入,例如`Canvas`类,它允许我们在`Bitmap`上绘制线条、形状和文本。`Path`对象用于构建复杂的路径,可以用来模拟手写笔迹。`MotionEvent`则用于处理...
首先,我们需要创建一个可以进行手写输入的界面。这通常通过使用`Canvas`和`SurfaceView`来实现。`SurfaceView`是Android提供的一种高性能视图,适合处理大量的图形更新。我们可以在`SurfaceView`上绘制用户的手写...
该压缩包文件“Android应用源码PDF手写签名商业源码.zip”主要包含了一个Android应用程序的源代码,用于实现PDF文档的手写签名功能。在移动设备上,这种功能对于签署电子文档尤其有用,例如合同、协议等。让我们深入...
在Android平台上,手写输入和涂鸦功能是许多应用程序中不可或缺的部分,特别是在教育、艺术、设计和便签类应用中。本源码实现了一个高效、用户友好的手写与涂鸦系统,旨在提供一个全面的解决方案,让用户可以自由地...