Использование фреймворка javaocr из sourceforge. Попытка отсканировать буквы с изображения и научить систему распознавать их.
Получение этого исключения при загрузке трейнера:
java.io.IOException: Expected to decode 26 characters but actually decoded 33 characters in training: /Developer/MAckan/bin/LETTERS/trainLetters.PNG
at net.sourceforge.javaocr.ocrPlugins.mseOCR.TrainingImageLoader.load(TrainingImageLoader.java:111)
Мой код такой:
loader.load(this,ClassLoader.getSystemResource("LETTERS/trainLetters.PNG").getPath(), new CharacterRange('A', 'Z'), images);
Другой вопрос, как заставить его тренировать скандинавские буквы. Если я введу диапазон A-Ö, он ожидает 150 символов.
Затем, когда я сканирую, я пытаюсь отсканировать строку на изображении в то время:
scanner.addTrainingImages(images);
final CharacterRange[] cr = new CharacterRange[1];
cr[0] = new CharacterRange('A', 'Z');
// get the first line of letters
final int x1 = 0;
final int y1 = 130;
final int x2 = 640;
final int y2 = 170;
for (int i = 0; i < 15; i++) {
final String text = scanner.scan(boardImage, x1, y1 + (i * 40), x2,
y2 + (i * 40), cr);
System.out.println("scanned " + text);
}
И я действительно получаю вывод, но не ожидаемый вывод ...
Кто-нибудь имеет опыт работы со структурой javaocr?
Обновление:
Решил вопрос обучения. На тренировочном образе отсутствовала пара символов, а скандинавский не поддерживается (?). По-прежнему получаю странный вывод.
Update2:
Решил всю проблему с написанием собственного сравнения вместо этого. Я сделал некоторые манипуляции с изображениями (уменьшенные цвета и прозрачность) и сравнил пиксель за пикселем и возвратил различие против изображений alafabet. Самый низкий diff "выигрывает". Работает для этого конкретного случая, но я все еще заинтересован в запуске OCR.
Спасибо.
* * Тысяча двадцать-один / А * * тысяча двадцать две