gpt4 book ai didi

c++ - Tesseract 虚假空间识别

转载 作者:可可西里 更新时间:2023-11-01 18:35:40 24 4
gpt4 key购买 nike

我正在使用 tesseract 来识别序列号。这工作可接受,常见问题如错误识别零和“O”,6 和 5,或 M 和 H 存在。除了这个 tesseract 之外,还为识别出的单词添加了空格,而图像中没有空格。下图被识别为"HI 3H"

Example Image 1

此图像生成“FBKHJ 1R1”

Example image 2

所以 tesseract 添加了一个空格,尽管图像中并没有真正的空格。是否有可能参数化 tesseract 的间距行为?

编辑

对不起,忘了补充,我也有包含空格的序列号。所以我无法删除识别序列号内的所有空格。

例如下图序列号中有空格,tesseract识别后结果为:J4 F1583BB。除了对字符的识别是错误的之外,这个图像的空间识别是正确的。

Example image 3

我的 tesseract 实际参数是:

tesseract::TessBaseAPI tess;
tess.Init(NULL, "eng", tesseract::OEM_TESSERACT_ONLY);
tess.SetPageSegMode(tesseract::PSM_SINGLE_BLOCK);
tess.SetVariable("tessedit_char_whitelist",
"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345789");

char* out = tess.GetUTF8Text();
string text = string(out);

编辑

从现有答案中可以看出,例如“J”和“I”之间的空格似乎比其他字符之间的空格多一点。我选择的字体类型是 Monotype 字体。这样做的原因是我认为,这有助于 tesseract 进行字符识别。这种每个字符都具有相同宽度的 Monospace 字体类型的缺点是内核(字符之间的空间)不同。请参阅以下来源的示例图像 Source

Proportional vs. Monospace

您认为哪种字体类型的识别效果会更好?

最佳答案

调整参数 tosp_min_sane_kn_sp 可能会有帮助。我通过这样做解决了问题。

如果没有帮助,您可以尝试其他tosp_* 参数,或者绕过空间源代码“tospace.cpp”

关于c++ - Tesseract 虚假空间识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31072452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com