C#在OCR应用程序中使用并行任务?

时间:2011-04-26 21:56:52

标签: c# parallel-processing parallel-extensions

我正在构建一个Windows服务应用程序,它将包含扫描图像的目录作为输入。我的应用程序将遍历所有图像,对于每个图像,它将执行一些OCR操作以获取条形码,发票号和客户编号。

一些背景信息:

  1. 应用程序执行的任务非常耗费CPU
  2. 有大量图像需要处理,扫描图像文件很大(~2MB)
  3. 该应用程序在具有16GB RAM的8核服务器上运行。
  4. 我的问题:

    由于它在文件系统上处理图像,我不确定如果我以一种使用.NET并行任务的方式更改我的应用程序它是否真的会有所作为。

    有人可以就此提出建议吗?

    非常感谢!

2 个答案:

答案 0 :(得分:1)

我认为答案是'它取决于'。

我尝试使用某种类型的性能监控(即使是任务管理器中的那个)运行应用程序,看看CPU有多高。

如果CPU最大化;它会改善性能,以便在并列中运行它。如果没有,磁盘是瓶颈而没有其他一些变化,你可能不会获得太多(如果有的话)。

答案 1 :(得分:1)

如果处理图像比从磁盘读取N个图像花费的时间更长,那么同时处理多个图像就是一个胜利。图中您可以在100毫秒内(包括查找时间)从磁盘读取2 MB文件。图一秒钟将8张图像读入内存。

因此,如果每个图像的图像处理时间超过一秒,则I / O不是问题。同时做。如果需要,你可以缩小它(例如,如果处理需要1/2秒,那么你最好只有4个并发图像)。

您应该能够相当快地进行测试:编写一个随机从磁盘读取图像的程序,并计算打开,读取和关闭文件的平均时间。还要编写一个程序来处理图像样本并计算平均处理时间。这些数字应该告诉你并发处理是否有用。