我需要编写一些代码来在 C#中调用tesseract OCR 。我安装了它并使用以下代码。但它不起作用:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.WorkingDirectory = tempDir.FullName;
// doesn't work
startInfo.Arguments = string.Format("/C tesseract {0} {1}", imgName, textName);
// this works
//startInfo.Arguments = string.Format("/C copy {0} {1}", imgName, textName);
Process p = new Process();
p.StartInfo = startInfo;
p.Start();
p.WaitForExit();
p.Close();
不会抛出异常或错误。我只是无法在目录中获取输出文件。我尝试了一个内置命令,例如copy
注释它并且它有效。我试图获取进程的标准输出,但它总是抛出“进程退出”异常。
之后,我尝试在命令窗口中调用 tesseract。我 cd 进入临时目录,运行tesseract img.png output
,有趣的事情发生了:
- 当通过 Start->Run->cmd 启动命令窗口时,它工作正常。
- 在 Visual Studio 解决方案资源管理器中启动命令窗口时,右键单击 -> 打开命令提示符(这是VS Productivity Power Tools的一个功能),它显示“tesseract 未被识别为内部或外部命令”。
我检查了环境变量中的PATH,它是正确的。我能看到的唯一区别是 VS 提示显示“使用 Microsoft Visual Studio 2010 x86 工具的设置环境”。在顶端。它不是搜索 PATH 变量来查找命令吗?他们不是一样的吗?它是否与我的 C# 代码失败有关?
我的操作系统是 Windows Server 2008 64 位。