关于手写识别的几个问题

Posted

技术标签:

【中文标题】关于手写识别的几个问题【英文标题】:A few questions about handwriting recognition 【发布时间】:2011-11-02 21:06:05 【问题描述】:

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

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

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

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

上面定义了什么,51和29是什么。

我可以将百日草用于像英语这样的拉丁字母吗,我在谷歌上看到的只有日语用法示例。 这是 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;

谢谢。

【问题讨论】:

【参考方案1】:

Zinnia 通常不需要个人培训。但是,它对于具有更多笔划的字符表现更好,因此将它用于基于拉丁字母的字母可能不会给您最好的结果。它还依赖于正确的笔顺,所以如果你用一种写“A”的方式训练它,而使用它的人用另一种方式写它,它可能不会被识别。

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

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

【讨论】:

谢谢回复,你知道CellWriter吗?它在其网站上说必须为每个使用应用程序的人进行培训。是否可以使用通用数据集对其进行训练并使用? 对不起,我没试过。我猜这取决于它使用的算法。

以上是关于关于手写识别的几个问题的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5/pyqt4 是不是已经支持带有手写识别的 QtVirtualKeyboard?

求用matlab编写的手写英文字母识别的代码

图像识别基于模板匹配之手写数字识别系统GUI界面

图像识别基于模板匹配之手写数字识别系统GUI界面

使用Logistic Regression Algorithm进行多分类数字识别的Octave仿真

PHP - 如何在网站上进行手写识别日语