您是否建议百日草手写识别? 我搜索并找到了一些图书馆,但其中一些图书馆需要对每个不同的人的手写作进行培训。百日草是否需要针对每种不同的手写作进行培训? 我读了它的网站,但无法找到。
此外,我需要一个C ++库,我可以找到一些可以使用C或Java访问。
还有一个问题,文档中没有答案:
character->add(0, 51, 29);
上面定义的是什么,51和29是什么。
我可以将zinnia用于像英语这样的拉丁字母,我只在google上看到日语用法示例。 以下是zinnia网站上的示例代码:
#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;
}
感谢。
答案 0 :(得分:1)
百日草通常不需要个人训练。但是,对于具有更多笔划的字符,它表现更好,因此将其用于基于拉丁语的字母表可能无法为您提供最佳效果。它也取决于正确的笔划顺序,所以如果你用一种方式训练'A',而使用它的人以另一种方式写它,它可能无法被识别。
add()
的参数是点数x,y。它具有Perl,Ruby和Python的绑定以及本机C / C ++接口。编写JNI包装器非常简单,因此也可以从Java中使用它。
我相信样本训练集有拉丁字母和数字,所以你可以删除所有日文字符并训练它来进行测试。 (使用较小的模型文件会快得多)。