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

如何在C# IronTesseract中动态适配运算符号实现无分支判断

解决方案

核心思路

  1. 从OCR识别结果里提取实际存在的运算符(+或-)
  2. 用该运算符分割文本得到两个数字字符串
  3. 通过运算符映射对应的计算逻辑,避免重复if判断

修改后的完整代码

var Ocr = new IronTesseract();
string? path = Console.ReadLine();
string[] Signs = {"+", "-"};

using (var Input = new OcrInput(path))
{
    var Result = Ocr.Read(Input);
    // 提取文本中存在的运算符
    var operatorSign = Signs.FirstOrDefault(s => Result.Text.Contains(s));
    
    if (!string.IsNullOrEmpty(operatorSign))
    {
        Console.Clear();
        string TrimmedResult = Result.Text.Trim();
        // 用提取到的运算符分割字符串
        string[] numbers = TrimmedResult.Split(new[] { operatorSign }, StringSplitOptions.RemoveEmptyEntries);
        
        if (numbers.Length == 2 
            && int.TryParse(numbers[0].Trim(), out int firstNumber) 
            && int.TryParse(numbers[1].Trim(), out int secondNumber))
        {
            Console.WriteLine($"{firstNumber} is the first number.");
            Console.WriteLine($"{secondNumber} is the second number.");
            
            // 根据运算符执行对应计算
            int resultMath = operatorSign switch
            {
                "+" => firstNumber + secondNumber,
                "-" => firstNumber - secondNumber,
                _ => 0 // 兜底,实际前面判断过不会走到这
            };
            
            Console.WriteLine(resultMath);
        }
        else
        {
            Console.WriteLine("无法识别有效的数字运算式");
        }
    }
    Console.ReadKey();
}

关键改进点

  • 用FirstOrDefault直接从Signs数组里找出文本中存在的运算符,简化判断逻辑
  • 使用提取到的运算符分割字符串,动态获取两个数字
  • 用switch表达式匹配运算符执行对应计算,代码简洁易维护
  • 替换Convert.ToInt32为int.TryParse,避免数字格式错误导致程序崩溃

内容的提问来源于stack exchange,提问作者Ahmed Sherif

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:57:43