如何将tesseract只识别数字,当它们与字母混合时?

zku*_*nov 55 ocr tesseract

我想用它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中也提到了这两个选项.


mic*_*liu 12

对于tesseract 3,tesseract imagename outputbase digits根据FAQ,命令更简单.但它对我不起作用.

我转而尝试不同的psm选项,找到-psm 6最适合我的情况.

man tesseract 详情.


小智 10

对于tesseract 3,我尝试根据FAQ创建配置文件.

在调用Init函数之前或将其放在一个名为的文本文件中tessdata/configs/digits:

tessedit_char_whitelist 0123456789                 
Run Code Online (Sandbox Code Playgroud)

然后,它通过使用命令工作: tesseract imagename outputbase digits


neo*_*eye 9

如果想要匹配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)


Ble*_*ehi 7

我做的有点不同(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)

通过这种方式,引擎将仅检查数字.


Yer*_*ick 6

当图像仅包含 1 行时,添加“--psm 7 -c tessedit_char_whitelist=0123456789'”对我有用。