如何使tesseract只识别数字,当他们混合字母?

我想用tesseract只识别数字。 问题是我有混合
数字和字母,当我使用SetVariable(“tessedit_char_whitelist”,“0123456789”)
对于每个符号tesseract返回错误的数字。

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

注:我设置tesseract只识别数字,所以没有0和0之间的混淆。

只识别数字实际上是在tesseract常见问题页面上回答的。 看到这个页面的更多信息,但如果你有版本3包,configuration文件已经build立。 你只需在命令行中指定:

tesseract image.tif outputbase nobatch digits 

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

对于tesseract 3,根据FAQ ,该命令更简单的tesseract imagename outputbase digits 。 但这对我来说并不适用。

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

man tesseract的细节。

对于tesseract 3,我尝试根据FAQ创buildconfiguration文件。

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

 tessedit_char_whitelist 0123456789 

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

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

我做了一些有点不同(与苔丝二)。 也许这对别人有用。

所以你需要先初始化API。

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

然后设置下列variables

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

这样引擎将只检查数字。

如果你想匹配0-9

 tesseract myimage.png stdout -c tessedit_char_whitelist=0123456789 

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

 tesseract myimage.png stdout -c tessedit_char_whitelist=01234ABCDE 

我所做的就是承认一切,当我有文字的时候,我把所有的字符都拿出来,除了数字

 //This replaces all except numbers from 0 to 9 recognizedText = recognizedText.replaceAll("[^0-9]+", " "); 

这对我来说很好。