强制Tesseract匹配模式(连续四位数)

时间:2015-01-11 01:32:48

标签: tesseract tess4j

我正在尝试使用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)。

2 个答案:

答案 0 :(得分:1)

您尚未正确配置。

user_patterns_suffix用于表示包含模式的文本文件的文件扩展名,例如

user_patterns_suffix pats

意味着您需要将文件放在tesseract tessdata文件夹中

tessdata/eng.pats

...假设eng是您使用的语言。

在此处查看更多信息:

http://tesseract-ocr.googlecode.com/svn/trunk/doc/tesseract.1.html#_config_files_and_augmenting_with_user_data

我记得用户模式在模式之前可能不会短于6个固定字符,因此在任何情况下都可能无法完成此操作 - 但首先尝试正确的配置。

答案 1 :(得分:0)

它们看起来像init-only参数;因此,它们需要位于configs文件中,例如,放在bazaar文件夹下的名为configs的文件,将被传递到setConfigs方法。

instance.setConfigs(Arrays.asList("bazaar");

参考文献:
https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc
https://github.com/tesseract-ocr/tesseract/wiki/ControlParams
http://tess4j.sourceforge.net/docs/docs-1.4/