1

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

任何帮助或指导表示赞赏!

4

2 回答 2

0

大多数可以用来提高性能的事情都与 Tesseract API 本身分开发生:

  1. 在单独的非 UI 线程上运行 OCR
  2. OCR 对最后一张图像完成后,抓取一个新图像以启动 OCR 。尝试捕获而不是setRepeatingRequest.
  3. 在 OCR 之前对图像进行下采样,使其更小
  4. 试验不同的 Tesseract 页面分割模式,看看你的数据最快的是什么
  5. 重新训练 Tesseract 训练的数据文件以使用更少的字符和更小的字典,具体取决于您的应用程序的用途
  6. 修改Tesseract 以仅执行识别传递 #1
  7. 不要忘记完全考虑 OpenCV 或其他方法

你没有说你现在使用什么 Tesseract API 设置,也没有描述你的应用程序在一般意义上做什么,所以很难告诉你从哪里开始,但这些点应该让你开始。

于 2016-01-10T16:43:38.670 回答
0

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

  1. 初始化 tesseract 与OEM_TESSERACT_ONLY
  2. 不要使用成熟的训练数据,而是使用https://github.com/tesseract-ocr/tessdata_fast中的更快替代方案。
  3. 将识别移至计算线程。
于 2021-05-12T13:13:18.307 回答