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



我正在尝试让Tesseract(使用Tess4J包装器)仅匹配特定模式。模式是连续四位数字,我认为这将是\d\d\d\d\d。这是我正在输入的图片的一小部分(平面图受到限制,所以我谨慎地发布更多内容):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)。

您尚未正确配置此项。

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 个固定字符,因此您在任何情况下都可能无法完成此操作 - 但请先尝试正确的配置。

它们看起来像仅初始化参数;因此,它们需要位于配置文件中,例如,名为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/ControlParamshttp://tess4j.sourceforge.net/docs/docs-1.4/

最新更新