QProcess提示Unknown error
编译环境(windows 10/qt 5.14.2/mingw32)
问题:在使用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() << "成功";
}
执行完毕后可在指定文本内得到数据。