跳到内容。

Tesseract 和 OpenCL

OpenCL 是一种 API,它允许便携式地使用 GPU 计算资源。它支持 Linux、macOS 和 Windows。

现代显卡可以快速完成 Tesseract 所需的某些计算。通过使用这种计算能力,Tesseract 理论上可以更快。

如何使用 OpenCL 构建 Tesseract

重要提示:Tesseract 中的 OpenCL 支持仍被认为是实验性的。它有一些主要错误(请参阅问题 837)。不建议构建带有 OpenCL 支持的 Tesseract(对于任何版本的 Tesseract),除非您是开发人员并希望改进 OpenCL 代码。

在 VS 2010 上使用 OpenCL 构建 Tesseract

  1. 打开 \tesseract-ocr\vs2010\tesseract.sln 下的 Tesseract Visual Studio 2010 解决方案文件

  2. 选择所需的构建配置(LIB_DEBUG / LIB_RELEASE / DLL_DEBUG / DLL_RELEASE)

  3. 在“tesseract”项目中设置 OpenCL 路径
    • 右键单击“tesseract”项目,然后选择“属性”。
    • 头文件路径:转到“配置属性” -> “C/C++” -> “常规” -> “附加包含目录”。添加 OpenCL 头文件所在的目录路径到给定机器上。例如:在安装了 AMD APP SDK 的机器上,此路径将为 $(AMDAPPSDKROOT)include
    • 库文件路径:转到“配置属性” -> “链接器” -> “常规” -> “附加库目录”。添加 OpenCL 库文件所在的目录路径,OpenCL.lib 位于给定机器上。例如:在安装了 AMD APP SDK 的机器上,此路径将为 $(AMDAPPSDKROOT)lib\x86
    • 库引用:转到“配置属性” -> “链接器” -> “输入” -> “附加依赖项”。将 OpenCL.lib 添加到依赖库列表中。
    • 预处理器定义:转到“配置属性” -> “C/C++” -> “预处理器” -> “预处理器定义”。将 USE_OPENCL 添加到预处理器定义列表中。
  4. 重复步骤 3 中的相同步骤,以设置“libtesseract”项目的 OpenCL 路径。

  5. 构建并运行解决方案。

在 Linux 上使用 OpenCL 构建 Tesseract

  1. 确保你已经安装了 OpenCL sdk 和 libtiff-dev。
  2. OpenCL 头文件和库路径目前由 configure.ac 中的变量 OPENCL_HDR_PATH 和 OPENCL_LIB 定义。这些变量必须设置为根据 OpenCL 安装设置的适当路径。
  3. 要在 Linux 上构建,请使用
    ./configure --enable-opencl
    

    或者,如果你想指定 opencl include (/opt/AMDAPP/include/) 和 library (/opt/AMDAPP/lib/x86_64/) 路径

    export LIBRARY_PATH=/opt/AMDAPP/lib/x86_64/:$LIBRARY_PATH
    CPPFLAGS+=-I/opt/AMDAPP/include/ ./configure --enable-opencl 
    

使用 OpenCL 的 Tesseract

通常情况下,Tesseract 使用 *OpenCL 可安装客户端驱动程序* (ICD)。它在运行时测试可用的 OpenCL 驱动程序,因此 Tesseract 二进制文件可以在不同计算机上的不同 GPU 硬件上运行。您只需要为您的 GPU 硬件安装 OpenCL 驱动程序。还存在使用 CPU 而不是 GPU 的通用 OpenCL 驱动程序。可以为计算机系统启用多个 OpenCL 驱动程序。

首次启动带有 OpenCL 支持的 Tesseract 时,它会查找可用的 OpenCL 驱动程序并为每个驱动程序运行基准测试。此外,使用本机 CPU(不使用 OpenCL)运行相同的基准测试。基准测试结果将保存在当前目录中的文件 tesseract_opencl_profile_devices.dat 中,供将来运行使用。Tesseract 从所有基准测试结果中计算加权性能指数,并选择最快的计算方法。删除该文件以强制重新构建。每个 OpenCL 驱动程序的生成的 GPU 代码也会保存在名为 kernel- 加上驱动程序名称加上 .bin 的单独文件中,例如 kernel-Intel(R)_HD_Graphics_IvyBridge_M_GT2.bin。更新 OpenCL 软件后,删除这些文件以强制重新构建。

可以通过设置环境变量 TESSERACT_OPENCL_DEVICE 来覆盖自动选择,例如 TESSERACT_OPENCL_DEVICE=1 选择第一个 OpenCL 设备。由于本机 CPU 在 Tesseract 中也有设备编号(始终是最高编号),因此可以通过设置该编号来禁用 OpenCL 的使用。

OpenCL 可安装客户端驱动程序 (ICD)

这些 Debian 软件包提供了这些驱动程序

可以通过设置环境变量来启用某些驱动程序的调试消息 (示例).

OpenCL 设备(示例)

Linux (x86)

macOS

Windows

性能

OpenCL 只处理 OCR 过程中的某些部分,因此使用 OpenCL 不一定能使 OCR 速度更快。必须进行更精确的测量。

已知问题

OpenCL 仍处于实验阶段,因此可能出现崩溃、错误的 OCR 结果或性能下降而不是提高。