编译环境qt(5.14.2)
问题:在使用QProcess进行进程交互的出现UnKnown error
错误代码:
// 创建一个 tesseract 进程对象 QProcess* process = new QProcess(this); process->setProcessChannelMode(QProcess::SeparateChannels); // 指定 tesseract 可执行文件 process->setProgram("F:\\qt_test_lib\\test_tesseract_mingw32\\tess_ocr\\tesseract.exe"); qDebug() << "指定tesseract:" << process->errorString(); // 指定命令行参数 process->setArguments(args); qDebug() << "指定命令行参数:" << process->errorString(); process->setWorkingDirectory("F:\\qt_test_lib\\test_tesseract_mingw32\\tess_ocr"); qDebug() << "setWorkingDirectory:" << process->errorString(); process->setProcessChannelMode(QProcess::MergedChannels); qDebug() << "setProcessChannelMode:" << process->errorString(); // 启动进程 process->start(); qDebug() << "打开前Error:" << process->errorString(); // 等待进程结束,并获取输出结果 if (process->waitForFinished()) { // 打开输出文件,读取识别结果 QFile outputFile(outputFilePath); if (outputFile.open(QIODevice::ReadOnly | QIODevice::Text)) { QString output = QString::fromUtf8(outputFile.readAll()); // 根据需求处理识别结果 qDebug() << "识别结果:" << output; outputFile.close(); } else { qDebug() << "打开输出文件失败!"; } } else { qDebug() << "进程执行失败!"; }
输出:
指定tesseract: "Unknown error" 指定命令行参数: "Unknown error" setWorkingDirectory: "Unknown error" setProcessChannelMode: "Unknown error" 打开前Error: "Unknown error"
此时将路径等复制到命令行中是可以正常执行的。
使用下面写法QProcess不在报错:
// 获取识别图片的路径 QString imageFilePath = "C:\\Users\\admin\\Desktop\\test_jpg\\test.png"; // 获取输出文件的路径 QString outputFilePath = "F:\\qt_test_lib\\test_tesseract_mingw32\\output_text.txt.txt"; // 设置命令行参数 QStringList args; args << imageFilePath << outputFilePath << "-l" << "chi_sim"; QString program("F:\\qt_test_lib\\test_tesseract_mingw32\\tess_ocr\\tesseract.exe"); QProcess *tesseract=new QProcess; tesseract->start(program,args); if(tesseract->waitForFinished()){ qDebug() << "成功"; }
执行完毕后可在指定文本内得到数据。
标签:process,Unknown,QProcess,error,test,tesseract From: https://www.cnblogs.com/WU20/p/17463016.html