Tesseract getutf8text 性能

Tesseract getutf8text performance

我一直在使用一个使用 Tesseract API 的应用程序来支持 OCR。这是通过使用显示相机输出 (Camera2 API) 的 Surfaceview 和用于从相机获取图像的 ImageReader 实例来完成的。相机设置为 setRepeatingRequest 类型,因此可以非常频繁地获取新图像。当我调用 getutf8text() 方法以获取图像中的可读文本时,它会使显示在 Surfaceview 上的相机预览滞后。 Tesseract API 中是否有任何可以设置的设置,以便它加快 getutf8text() 方法调用或我可以做的任何其他事情以使预览 Surfaceview 不滞后?

感谢任何帮助或指导!

您可以执行的大多数提高性能的操作都与 Tesseract API 本身分开进行:

  1. 运行 OCR 在单独的 non-UI 线程上
  2. 在 OCR 在最后一张图像上完成后,抓取一张新图像以在上开始 OCR。尝试 capture 而不是 setRepeatingRequest.
  3. 在 OCR 之前对图像进行下采样,使其更小
  4. 试验不同的 Tesseract 页面分段模式,看看哪种模式对您的数据最快
  5. Re-train Tesseract 训练数据文件使用更少的字符和更小的字典,具体取决于您的应用的用途
  6. Modify Tesseract 仅执行识别传递 #1
  7. 不要忘记完全考虑 OpenCV 或其他方法

你没有说明你现在使用的 Tesseract API 设置,你也没有描述你的应用程序在一般意义上的作用,所以很难告诉你从哪里开始,但是这些要点应该可以帮助您入门。

您还可以尝试一些其他的事情。

  1. OEM_TESSERACT_ONLY
  2. 初始化tesseract
  3. 不使用成熟的训练数据,而是使用 https://github.com/tesseract-ocr/tessdata_fast 中更快的替代方法。
  4. 将识别移动到计算线程。