Tesseract 如何使用 OpenCL?

5 parallel-processing gpu tesseract opencl

我正在从事一个项目,该项目要求我使用 Tesseract 加快文本识别过程。我看到一篇文章说 Tesseract 正在与 OpenCL 一起工作,以将一些计算密集型任务卸载到可用的 CPU 或 GPU 上。
是否有关于“Tesseract 如何利用 OpenCL 将计算密集型任务卸载到并行 CPU 内核或 GPU”的定性解释?

Tesseract 源的链接在这里https://code.google.com/p/tesseract-ocr/source/browse/#git%2Fopencl

Dar*_*ros 1

Tesseract 是一种 OCR,因此它可以检测图像中的图案/字母。粗略地说,这是图像处理,其中每个像素都可以并行计算,因此非常适合 GPU(OpenCL/CUDA/等)。

它的详细使用方式很难理解,但基本上它在 OpenCL 中处理以下内容(如分析代码打印的那样):

 composeRGBPixel: 0.073872 (w=1.2)
 HistogramRect: 0.121674 (w=2.4)
 ThresholdRectToPix: 0.050257 (w=4.5)
 getLineMasksMorph: 0.350409 (w=5.0)
Run Code Online (Sandbox Code Playgroud)

所以基本上,是在 GPU 中进行一些像素转换(非常高效),然后是直方图,最后对图像进行阈值处理。

分析代码只是测量每个 OpenCL 设备所花费的时间,并选择最好的一个。其他方法也是可能的。

选择最佳设备后,设备的任务就是执行计算负载。对于 GPU,它将使用所有着色核心(计算核心)。如果是 CPU,它将简单地运行一个线程池。但 OpenCL 不会实现 GPU-CPU 工作平衡。

  • 那么您对于提高 Tesseract 文本提取的速度有什么建议吗?目前,每个图像大约需要 10 - 15 秒,具体取决于图像的大小。 (3认同)