2014-09-09 2 views
2

Я пытаюсь использовать рамки OCr распознавать эти типы изображений: Эти 2 буквы Г.Java - один распознавание символов с помощью образа

enter image description here

Я попытался с помощью aocr.jar из asprise, но этот код, похоже, не делает этого трюка.

import com.asprise.ocr.Ocr; 
import java.io.File; 
public class textRecognizer { 

    public static void main(String args[]){ 
     Ocr.setUp(); 
     Ocr ocr = new Ocr(); 
     ocr.startEngine("eng", Ocr.SPEED_FAST); 
     String s = ocr.recognize(new File[] {new File("C:\\Users\\juchtdi\\Pictures\\letter.png")}, Ocr.RECOGNIZE_TYPE_ALL, Ocr.OUTPUT_FORMAT_PLAINTEXT, 0, null); 
     System.out.println(s.length());  
     System.out.println(s); 
     ocr.stopEngine(); 
    } 
} 

У кого-нибудь есть идея, как я могу это сделать? В конечном итоге с другими структурами?

спасибо :)

Edit: составителя прошло без каких-либо исключений во время выполнения. s.length() возвращается 0. Так кажется, он вообще ничего не читает.

Когда я заменяю изображение изображением реального текста, он отлично выводит текст.

я ожидал/надеялся, что вернуть G

+1

Это изображение выглядит очень жестким. Вы уверены, что есть какая-либо инфраструктура, которая может справиться с этим? – Simon

+0

Не совсем уверен. В основном надеется. Он также не должен быть Java-каркасом. Также, спасибо BackSlash. – dendimiiii

+0

Пожалуйста, улучшите свой вопрос: что вы ожидали, как он терпит неудачу и что вы пробовали? – llogiq

ответ

2

Я не думаю, что вы могли бы получить основу OCr признать письмо в этом изображении без значительной предобработки изображения.

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

  1. Для каждой точки вычислить плотность точек, окружающих ее, и отфильтровать все точки, расположенные в местах, где плотность точек низкая.
  2. Затем выполните одно из следующих действий: a) Используйте морфологию, чтобы попытаться сделать из нее один объект. б) Попробуйте найти контуры буквы, а затем заполните ее с использованием алгоритма водораздела.
  3. Теперь запустите OCR, как и раньше.
+0

Я считаю, что ваше решение является лучшим, но параметризация - это кошмар. Поскольку во всем мире есть много «точек», определение того, что такое низкая плотность, будет очень ... – rlinden

+0

Спасибо за ваш ответ. Я стараюсь работать с этой идеей в качестве основы. Спасибо! – dendimiiii