我正在尝试让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/