Tesseract使用字母子集
我在Ubuntu Linux上使用tesseract-ocr这个软件包,已经用了有一段时间了。我觉得为了提高识别的准确性,我只需要字母表中的一部分字母。具体来说,我需要的字母是:
0123456789abcdefghijklmnopqrstuvwxyz
就这些,连大写字母都不需要。有没有人能帮我一下,告诉我怎么让tesseract只匹配这部分字母呢?
谢谢!
2 个回答
1
你要找的是Tesseract的白名单。如果你在用Python并且在和它以及API打交道,我觉得这个应该能用(这是在Tesseract的Google小组找到的)。
api.SetVariable("tessedit_char_whitelist", "abcdefghijklmnopqrstuvwxyz0123456789 ");
不过,我不太确定这是哪个版本的Tesseract。
7
import tesseract
api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_DEFAULT)
api.SetVariable("tessedit_char_whitelist", "0123456789abcdefghijklmnopqrstuvwxyz")
api.SetPageSegMode(tesseract.PSM_AUTO)
所以只需要在 api.SetVariable
中设置你自己的字符集合。
Tesseract 2.03 使用
TessBaseAPI::SetVariable("tessedit_char_whitelist", "0123456789");
在调用初始化函数之前,或者把这个放在一个名为 tessdata/configs/digits 的文本文件中:
tessedit_char_whitelist 0123456789
然后你的命令行变成:
tesseract image.tif outputbase nobatch digits
警告:在旧的和新的配置变量合并之前,你必须也有 nobatch 参数。
Tesseract 3 已经创建了一个数字配置文件,所以只需运行一个 这样的 tesseract 命令:
tesseract imagename outputbase digits