我想用它tesseract来识别数字.问题是我有数字和字母的混合,当我SetVariable("tessedit_char_whitelist", "0123456789")
用于每个符号时,tesseract返回错误的数字.
我可以设置一个阈值,以便tesseract省略低相似性的符号吗?
注意:我设置tesseract只识别数字,因此O和0之间没有混淆.
Jer*_*rry 40
在tesseract FAQ页面上实际上只能识别数字.有关详细信息,请参阅该页面,但如果您拥有版本3软件包,则已配置配置文件.您只需在命令行上指定:
tesseract image.tif outputbase nobatch digits
Run Code Online (Sandbox Code Playgroud)
至于门槛值,我不确定你的意思.如果您的输入是一种不寻常的字体,也许您可能会重新输入您的输入样本.另一种方法是更改tesseract的修剪阈值.FAQ中也提到了这两个选项.
小智 10
对于tesseract 3,我尝试根据FAQ创建配置文件.
在调用Init函数之前或将其放在一个名为的文本文件中tessdata/configs/digits:
tessedit_char_whitelist 0123456789
Run Code Online (Sandbox Code Playgroud)
然后,它通过使用命令工作: tesseract imagename outputbase digits
如果想要匹配0-9
tesseract myimage.png stdout -c tessedit_char_whitelist=0123456789
Run Code Online (Sandbox Code Playgroud)
或者,如果一个人几乎想要匹配0-9,但有一个或多个不同的字符
tesseract myimage.png stdout -c tessedit_char_whitelist=01234ABCDE
Run Code Online (Sandbox Code Playgroud)
我做的有点不同(tess-two).也许它会对某些人有用.
所以你需要先初始化API.
TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(datapath, language, ocrEngineMode);
Run Code Online (Sandbox Code Playgroud)
然后设置以下变量
baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_SINGLE_LINE);
baseApi.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST, "!?@#$%&*()<>_-+=/:;'\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
baseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, ".,0123456789");
baseApi.setVariable("classify_bln_numeric_mode", "1");
Run Code Online (Sandbox Code Playgroud)
通过这种方式,引擎将仅检查数字.