2011-08-24 52 views
1

您是否建议百日草属手写识别? 我搜索并找到了一些图书馆,但其中一些需要针对每个不同人的手写作进行培训。百日草是否需要针对每一个不同的手写作进行训练? 我读了它的网站,但找不到。关于手写识别的几个问题

另外我需要一个C++库,我可以找到一些可以使用C或Java访问。

一个问题,没有在文档没有答案:

character->add(0, 51, 29); 

什么上面一行定义,什么是51和29

,我可以使用百日草的拉丁字母,如英语,我在google上看到只有日语用法的例子。 下面是示例代码,在百日草的网站:

#include <iostream> 
#include "zinnia.h" 

int main(int argc, char **argv) { 
    zinnia::Recognizer *recognizer = zinnia::Recognizer::create(); 
    if (!recognizer->open("/usr/local/lib/zinnia/model/tomoe/handwriting-ja.model")) { 
    std::cerr << recognizer->what() << std::endl; 
    return -1; 
    } 

    zinnia::Character *character = zinnia::Character::create(); 
    character->clear(); 
    character->set_width(300); 
    character->set_height(300); 
    character->add(0, 51, 29); 
    character->add(0, 117, 41); 
    character->add(1, 99, 65); 
    character->add(1, 219, 77); 
    character->add(2, 27, 131); 
    character->add(2, 261, 131); 
    character->add(3, 129, 17); 
    character->add(3, 57, 203); 
    character->add(4, 111, 71); 
    character->add(4, 219, 173); 
    character->add(5, 81, 161); 
    character->add(5, 93, 281); 
    character->add(6, 99, 167); 
    character->add(6, 207, 167); 
    character->add(6, 189, 245); 
    character->add(7, 99, 227); 
    character->add(7, 189, 227); 
    character->add(8, 111, 257); 
    character->add(8, 189, 245); 

    zinnia::Result *result = recognizer->classify(*character, 10); 
    if (!result) { 
    std::cerr << recognizer->what() << std::endl; 
    return -1; 
    } 
    for (size_t i = 0; i < result->size(); ++i) { 
    std::cout << result->value(i) << "\t" << result->score(i) << std::endl; 
    } 
    delete result; 

    delete character; 
    delete recognizer; 

    return 0; 
} 

感谢。

回答

1

百日草通常不需要个别培训。但是,对于笔画较多的字符,它的效果会更好,因此将它用于基于拉丁字母的字母可能不会给您最好的效果。它也依赖于正确的笔画顺序,所以如果你用一种方法来编写'A',并且使用它的人以另一种方式写它,它可能不会被识别。

add()的参数是点号x,y。它具有Perl,Ruby和Python以及本机C/C++接口的绑定。编写一个JNI包装是很简单的,所以它也可以在Java中使用。

样本训练集有我相信的拉丁字母和数字,所以您可以删除所有日语字符并训练它来进行测试。 (使用较小的模型文件会更快)。

+0

感谢您的回复,并且您是否了解CellWriter?它的网站上说,它必须接受每个使用应用程序的人的培训。是否可以使用通用数据集进行训练并使用? – merveotesi

+0

对不起,我还没有尝试过。这取决于它使用的算法,我猜。 –