强制Tesseract匹配图案(连续四位数字)

3
我正在尝试使用Tesseract(使用Tess4J包装器)仅匹配特定模式。该模式是四个连续的数字,应该是\d\d\d\d。这是我正在提供给tesseract的图像的非常小的子集(平面图受限,因此我谨慎发布更多内容):http://mike724.com/view/a06771 我正在使用以下Java代码:
    File imageFile = new File("/<redacted>/file.pdf");

    Tesseract instance = Tesseract.getInstance();
    instance.setTessVariable("load_system_dawg", "F");
    instance.setTessVariable("load_freq_dawg", "F");
    instance.setTessVariable("user_words_suffix", "");
    instance.setTessVariable("user_patterns_suffix", "\\d\\d\\d\\d");

    try {
        String result = instance.doOCR(imageFile);
        System.out.println(result);
    } catch (TesseractException e) {
        System.err.println(e.getMessage());
    }

我遇到的问题是,Tesseract似乎没有遵守这些配置选项,我仍然在结果中得到文本/单词。我期望只得到房间号码(例如2950)。

Tesseract不是解析器。它只是给你读到的内容。你必须在之后选择你需要的内容! - Alto
嗯,是的,但我想如果我“训练”tesseract,只想要数字并且只想要四个数字一组,那么它会提高准确性。现在的准确性很糟糕,完全无法使用。 - user3426373
添加一个字符白名单(0123456789)也会对您有所帮助! - Alto
2个回答

2

您没有正确配置此项。

user_patterns_suffix是用来指示包含您的模式的文本文件的文件扩展名的,例如:

user_patterns_suffix pats

这意味着你需要把一个文件放到tesseract tessdata文件夹中。
tessdata/eng.pats

假设您使用的语言为英语。
更多信息请参见此处:
http://tesseract-ocr.googlecode.com/svn/trunk/doc/tesseract.1.html#_config_files_and_augmenting_with_user_data
我记得用户模式可能不会比模式前的6个固定字符短,因此您可能无论如何都无法完成此操作,但请先尝试正确的配置。

谢谢!我今天会尝试一下。 - user3426373
此外,您需要在模式开头至少有kSaneNumConcreteChars个字符,但是从我查看代码的情况来看,它被设置为0(在主分支上)。 - user3426373

0

谢谢,我不知道(也找不到)Tess4J中的setConfigs方法。目前我的另一个问题是kSaneNumConcreteChars限制,但我想我只需要使用自定义版本的tesseract即可解决。 - user3426373

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