如何在TrainingImageLoader中加载带有png的前100个字符

5
我想要绘制前100个字符的最佳PNG文件,但如果不能全部完成,则不进行操作。
文件在这里:http://abatis.org.uk/projects/txt2fig.png
            File fff = new File("C:\\Users\\lll\\Desktop\\txt2fig.png");
            OCRScanner scanner = new OCRScanner();
            TrainingImageLoader loader = new TrainingImageLoader();
            HashMap<Character, ArrayList<TrainingImage>> trainingImageMap = new HashMap<Character, ArrayList<TrainingImage>>();
            loader.load(fff.getAbsolutePath(), new CharacterRange('A', 'Z'), trainingImageMap);
            scanner.addTrainingImages(trainingImageMap);

            Image image = ImageIO.read(fff);
            PixelImage pixelImage = new PixelImage(image);
            pixelImage.toGrayScale(true);
            pixelImage.filter();

            String text = scanner.scan(image, 0, 0, 0, 0, null);
            System.out.println(text);

异常:

java.io.IOException: Expected to decode 26 characters but actually decoded 911 characters in training: C:\Users\lll\Desktop\txt2fig.png
    at net.sourceforge.javaocr.ocrPlugins.mseOCR.TrainingImageLoader.load(TrainingImageLoader.java:107)
    at net.sourceforge.javaocr.ocrPlugins.mseOCR.TrainingImageLoader.load(TrainingImageLoader.java:83)

我的pom文件中的库:

        <dependency>
            <groupId>net.sourceforge.javaocr</groupId>
            <artifactId>javaocr-core</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.javaocr.plugins</groupId>
            <artifactId>javaocr-plugin-awt</artifactId>
            <version>1.0</version>
        </dependency>

我知道:

在IT技术中,

new CharacterRange ('A', 'Z')

文件中应包括第一个和最后一个字符,有什么方法可以绕过这个要求吗?

1个回答

0

你不理解这个工具的概念。你把带有文本的图像作为训练图像进行OCR,而训练图像应该只包含对应于ASCII代码0x20h到0x7Ch(或超过此范围)的训练字符,按照数字顺序排列,至少如下所示:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

请注意训练图像的开头有一个空格。
首先尝试分析javaocr-20100605.zip / ocrTests /目录下的样本图像和训练图像,例如将trainingImages/hpljPica.jpg 文件作为训练图像和文件 hpljPicaSample.jpg 作为要分析的图像。使用Java OCR GUI中名为Mean Square OCR Recognizer的功能选项卡(通过java -jar JavaOCR.jar执行)进行操作。稍后,您可以尝试使用自己的训练图像,该图像由要分析的图像组成。为此,您可以使用Java OCR GUI中称为Character Extractor的选项卡中的功能来从图像中提取字符。因此,请按其ASCII代码顺序排列输出文件并从它们组合成您的训练图像。
以下的屏幕截图显示了如何在GUI中使用OCR及其结果。
使用带有GUI的Java OCR工具进行OCR,从空格到~ OCR with Java OCR tool from space to ~

OCR结果 - 您可以看到一些OCR错误 OCR结果 - 您可以看到一些OCR错误

正如您所看到的,至少发生了两个识别错误,但并不多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接