You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中Tesseract 4设置黑白名单无效果的技术求助

Tesseract LSTM模式下黑白名单无效的解决方案

你遇到的问题核心在于LSTM引擎使用的黑白名单变量名与传统引擎不同,旧的tessedit_char_*系列变量仅对传统Tesseract引擎生效,而你使用的是EngineMode.LstmOnly,需要替换为LSTM专属的变量。

解决步骤

  1. 替换变量名
    将原代码中的黑白名单变量替换为LSTM模式对应的名称:

    • 黑名单:lstm_choice_blacklist
    • 白名单:lstm_choice_whitelist
  2. 确保变量生效
    部分版本的Tesseract需要在设置变量后重新初始化引擎,调用tesseract.Init()确保配置生效。

  3. 可选:调整页面分割模式
    如果PageSegMode.Auto导致识别逻辑异常,可以尝试更具体的分割模式(如PageSegMode.SingleLine),让Tesseract更聚焦于目标文本区域。

修改后的代码

private TesseractEngine tesseract = new TesseractEngine(path, "eng", EngineMode.LstmOnly);

// 使用LSTM模式专属的黑白名单变量
tesseract.SetVariable("lstm_choice_blacklist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
tesseract.SetVariable("lstm_choice_whitelist", "123");
// 重新初始化引擎确保变量生效
tesseract.Init();

using (var page = tesseract.Process(image, rec, PageSegMode.Auto))
{
    text = page.GetText(); // 此时应仅输出"123"
    using (var iterator = page.GetIterator())
    {
        iterator.Begin();
        do
        {
             string symbol = iterator.GetText(PageIteratorLevel.Symbol);
        } while (iterator.Next(PageIteratorLevel.Symbol));
    }
}

额外排查点

  • 确认Tesseract版本:必须使用4.1及以上版本,该版本才修复了LSTM模式下黑白名单的支持问题。
  • 图像预处理:如果图像存在噪声、模糊或倾斜,先进行二值化、去噪、矫正等预处理,能提升黑白名单的过滤效果。
  • 训练数据检查:若使用自定义训练模型,需确保模型支持黑白名单过滤逻辑。

内容的提问来源于stack exchange,提问作者MR.ROBOT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:27:29