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

时间:2011-02-09 12:29:53

标签: ocr tesseract

我想使用tesseract来识别数字。问题是我混合了数字和数字。字母和我使用SetVariable("tessedit_char_whitelist", "0123456789")时 对于每个符号,tesseract返回错误的数字。

我可以设置一个阈值,以便tesseract省略低相似度的符号吗?

注意:我设置tesseract只识别数字,因此O和0之间没有混淆。

10 个答案:

答案 0 :(得分:38)

tesseract FAQ页面上确实只识别出数字。有关详细信息,请参阅该页面,但如果您拥有版本3软件包,则已配置配置文件。您只需在命令行上指定:

tesseract image.tif outputbase nobatch digits

至于阈值,我不确定你的意思。如果您的输入是一种不寻常的字体,也许您可​​能会重新输入您的输入样本。另一种方法是更改​​tesseract的修剪阈值。 FAQ中也提到了这两个选项。

答案 1 :(得分:12)

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

我转而尝试使用不同的psm选项,并发现-psm 6最适合我的情况。

man tesseract了解详情。

答案 2 :(得分:8)

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

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

tessedit_char_whitelist 0123456789                 

然后,它使用命令:tesseract imagename outputbase digits

答案 3 :(得分:7)

我做了一点点(用tess-two)。也许它会对某人有用。

所以你需要首先初始化API。

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(datapath, language, ocrEngineMode);

然后设置以下变量

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");

这样引擎只会检查数字。

答案 4 :(得分:7)

如果想要匹配0-9

tesseract myimage.png stdout -c tessedit_char_whitelist=0123456789

或者如果一个人几乎想要匹配0-9,但是有一个或多个不同的字符

tesseract myimage.png stdout -c tessedit_char_whitelist=01234ABCDE

答案 5 :(得分:3)

您可以指示tesseract仅使用数字,如果这不够准确,那么获得更好结果的最佳机会是通过培训过程: http://www.resolveradiologic.com/blog/2013/01/15/training-tesseract/

答案 6 :(得分:1)

custom_oem=r'digits --oem 1 --psm 7 -c tessedit_char_whitelist=0123456789'

text = tess.image_to_string(croped,config=custom_oem)

我正在使用 tesseract 4.1.1。

为了获得更好的结果,您可能需要考虑图像处理技术。

答案 7 :(得分:0)

版本4中不支持此功能。您仍然可以通过-c tessedit_char_whitelist = 0123456789来使用它,并使用“ --oem 0”来还原为旧模型。

There is a bounty to fix this issue.

可能的解决方法:

@amitdo

所述

答案 8 :(得分:0)

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

答案 9 :(得分:-3)

我所做的就是识别所有内容,当我有文字时,我会删除除数字之外的所有字符

watermark

这对我很有用。