Tesseract OCR (C++) 无法评估输出字符串

Tesseract OCR (C++) Cannot Evaluate Output String

我正在尝试从 OpenCV 矩阵 window 中提取输出字符串并对其进行评估,但它似乎 return 类似于“someString\n”而不是“someString”。这使得很难比较已知有 (x) 个空格的数量。

我试过了:

创建一个省略空格的字符数组(我知道我只评估 5 个索引)

std::string redef;
    char charArr[100] = {NULL};
    strcpy_s(charArr, str.c_str());

    for (int i = 0; i < 5; i++)
    {
        if (charArr[i] != ' ')
        {
            redef += charArr[i];
        }
    }
    std::cout << "analyseAction ran:" << redef << "white-space?";

但是字符串 return 类似于

analyseAction ran:redefString
white-space?

main函数中的相关代码运行:

api->Recognize(0);
            outText = api->GetUTF8Text();
            analyseAction(outText);

波纹管,请注意运行 else 语句,因为当 long 在 window.

中直观显示时,redef 不等于“long”
void analyseAction(std::string str)
{
    std::string redef;
    char charArr[100] = {NULL};
    strcpy_s(charArr, str.c_str());

    for (int i = 0; i < 5; i++)
    {
        if (charArr[i] != ' ')
        {
            redef += charArr[i];
        }
    }
    std::cout << "analyseAction ran:" << redef << "white-space?";

//alot of missing code, trying to show what is relevant

    if (redef == "long") //check if it has white space after long, seems like it new line's
    {
        //NOTE FOR FUTURE: Stop being lazy and make this a function of its own
        //BUY
        std::cout << "Long ran";
        for (int i = 0; i < a; i++) //no comma with first line so 0 element 
        {
            context += inData[i];
        }
        x = std::stoi(context);

        for (int i = a+1; i < a1; i++) 
        {
            context += inData[i]; 
        }
        y = std::stoi(context);

        simClick(x,y);
        //BUY CONFIRM
        for (int i = a1+1; i < b; i++) //starting from pipeline??
        {
            context += inData[i];
        }
        x = std::stoi(context);

        for (int i = b+1; i < b1; i++) //starting with comma? +1 to fix
        {
            context += inData[i];
        }
        y = std::stoi(context);

        simClick(x, y);

    }
    else
    {
        std::cout << "long does not match";
    }
}

我很困惑,为什么字符串出现换行?我怎样才能成功评估输出?我是 C++ 的菜鸟,所以非常感谢任何帮助。

至于为什么返回一个字符串和一个换行符,我无法回答。但是我可以为您提供一个替代系统来完成您想要完成的任务。删除 analyseAction 函数中的第一个 for 循环和 if 语句中的“长”传递... if(charArr[0] == 'l') {//do stuff} 如果您正在评估许多以“l”开头的单词,这确实有一个限制,在这种情况下评估单词的前两个或三个字母,只要它们不少于 2 或 3 个字母的单词。 PS。这是在手机上写的。