我正在尝试使用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)。
答案 0 :(得分:1)
您尚未正确配置。
user_patterns_suffix用于表示包含模式的文本文件的文件扩展名,例如
user_patterns_suffix pats
意味着您需要将文件放在tesseract tessdata文件夹中
tessdata/eng.pats
...假设eng是您使用的语言。
在此处查看更多信息:
我记得用户模式在模式之前可能不会短于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/