2

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

在此处输入图像描述

我尝试使用来自 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 G

4

1 回答 1

2

如果不对图像进行大量预处理,我认为您无法获得一个 ocr 框架来识别该图像中的字母。

这是您可能会尝试的一些预处理的粗略想法(这是很多工作,需要对阈值等进行大量调整,即使那样我也不能保证它会起作用):

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