Tesseract使用字母子集

1 投票
2 回答
5273 浏览
提问于 2025-04-17 19:41

我在Ubuntu Linux上使用tesseract-ocr这个软件包,已经用了有一段时间了。我觉得为了提高识别的准确性,我只需要字母表中的一部分字母。具体来说,我需要的字母是:

0123456789abcdefghijklmnopqrstuvwxyz

就这些,连大写字母都不需要。有没有人能帮我一下,告诉我怎么让tesseract只匹配这部分字母呢?

谢谢!

2 个回答

1

你要找的是Tesseract的白名单。如果你在用Python并且在和它以及API打交道,我觉得这个应该能用(这是在Tesseract的Google小组找到的)。

api.SetVariable("tessedit_char_whitelist", "abcdefghijklmnopqrstuvwxyz0123456789 ");

不过,我不太确定这是哪个版本的Tesseract。

7

来自 python-tesseract 项目页面

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-ocr 项目常见问题解答

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

撰写回答