Java - 通过图像识别一个字符

时间:2014-09-09 09:23:49

标签: java ocr image-recognition text-recognition

我正在尝试使用Ocr框架来识别这些类型的图像: 这些是2个字母G.

enter image description here

我尝试使用asprise的aocr.jar,但是这段代码似乎没有做到这一点..

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();
    }
}

任何人都知道如何才能使这项工作成功?最终与其他框架?

谢谢:)

编辑: 编译没有任何运行时异常。 s.length()返回0.所以看来他什么都没读。

当我用真实图像替换图像时,它会完美地输出文本。

我期望/希望它回归 1 ģ

1 个答案:

答案 0 :(得分:2)

我不认为你可以得到一个ocr框架来识别这张图片中的字母而不需要对图像进行大量的预处理。

这里有一个粗略的想法,你可能会尝试一些预处理(这需要很多工作,需要大量调整阈值等等,即便如此我也不能保证它会工作):

  1. 对于每个点计算围绕它的点的密度,并过滤掉位于点密度低的地方的所有点。
  2. 然后执行以下操作之一:a)使用形态学尝试从中制作一个对象。 b)尝试找到字母的轮廓,然后使用分水岭算法填充它。
  3. 现在像以前一样运行OCR。