Несколько вопросов о распознавании почерка - PullRequest
1 голос
/ 24 августа 2011

Посоветуете ли вы Zinnia для распознавания почерка? Я искал и нашел несколько библиотек, но некоторые из них требуют обучения написанию почерка каждого человека. Нужна ли циннии тренировка для каждого другого почерка? Я прочитал его сайт, но не смог узнать.

Также мне нужна библиотека на C ++, я могу найти, что к некоторым можно получить доступ с помощью C или Java.

Еще один вопрос, в документах нет ответа:

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

что определено над строкой, что такое 51 и 29.

И могу ли я использовать циннию для латинского алфавита, такого как английский, я видел в 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;
}

Спасибо.

1 Ответ

1 голос
/ 25 августа 2011

Цинния обычно не требует индивидуального обучения. Тем не менее, он работает лучше для символов с большим количеством штрихов, поэтому использование его для алфавитов на основе латинского алфавита может не дать наилучших результатов. Это также зависит от правильного порядка штрихов, поэтому, если вы тренируете его одним способом, чтобы написать «А», и человек, использующий его, пишет его другим способом, он может не распознаваться.

Параметрами add() являются номер точки, x, y. Он имеет привязки для Perl, Ruby и Python, а также нативный интерфейс C / C ++. Написание оболочки JNI тривиально, поэтому ее можно использовать и на Java.

Образец учебного комплекта, я полагаю, состоит из букв латинского алфавита и цифр, так что вы можете просто удалить все японские иероглифы и обучить их проведению тестов. (это будет намного быстрее с меньшим файлом модели).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...