OCR扫描信件。加载培训信件失败

时间:2011-09-27 19:57:39

标签: java ocr

使用sourceforge的javaocr框架。尝试扫描图像中的字母,并训练系统识别它们。

加载培训师时遇到此异常:

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图像的差异。最低差异“赢”。适用于这种特殊情况,但我仍然有兴趣让OCR运行。

感谢。

/ A

2 个答案:

答案 0 :(得分:0)

好吧,你不会喜欢我的答案,但这里是:Javaocr有点糟糕,而且记录很差。我已经尝试了一些来自demo src的代码但是在其他PNG文件上提供的代码并没有真正认识到这一点。

这是一个实际工作的图书馆:http://asprise.com/product/ocr/download.php?lang=java。然而,它并不是免费的,如果您查看许可证价格,它真的不是免费的,但是你去了。

选项2将尝试使用Google全新的在线ocr服务:http://googlesystem.blogspot.com/2009/09/google-docs-ocr.html。我自己没有尝试过,但你应该得到比Java ocr更好的支持......

答案 1 :(得分:0)

通过编写我自己的比较来解决整个问题。我对图像进行了一些操作(减少了颜色和透明度)并逐个像素地进行了比较并返回了对alafabet图像的差异。最低差异“赢”。适用于这种特殊情况,但我仍然有兴趣让OCR运行。

感谢大家的贡献。

/ A