Android Tesseract getutf8text性能

Android Tesseract getutf8text性能,android,tesseract,tess-two,Android,Tesseract,Tess Two,我一直在使用一个使用Tesseract API的应用程序来支持OCR。这是通过使用显示相机输出的Surfaceview(Camera2 API)和用于从相机获取图像的ImageReader实例来完成的。摄像机设置为setRepeatingRequest类型,因此新图像非常频繁。当我调用getutf8text()方法以获取图像中的可读文本时,它会使Surfaceview上显示的相机预览延迟。 Tesseract API中是否有任何可以设置的设置,以便加快getutf8text()method调用,

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


感谢您的帮助和指导

大多数提高性能的方法都是与Tesseract API本身分开进行的:

  • 在单独的非UI线程上运行OCR
  • 在最后一张图像上完成OCR后,抓取一张新图像以启动OCR。尝试而不是
    设置RepeatingRequest
  • 在OCR之前对图像进行下采样,使其更小
  • 使用不同的Tesseract页面分割模式进行实验,查看数据中最快的是什么
  • 根据应用程序的用途,重新训练Tesseract训练过的数据文件,使其使用更少的字符和更小的字典
  • Tesseract仅执行识别过程#1
  • 不要忘记考虑OpenCV或其他方法
    您没有说明您现在使用的Tesseract API设置,也没有描述您的应用程序在一般意义上的功能,因此很难告诉您从何处开始,但以下几点应该可以帮助您开始使用。

    您可以做的大多数提高性能的事情都是与Tesseract API本身分开进行的:

  • 在单独的非UI线程上运行OCR
  • 在最后一张图像上完成OCR后,抓取一张新图像以启动OCR。尝试而不是
    设置RepeatingRequest
  • 在OCR之前对图像进行下采样,使其更小
  • 使用不同的Tesseract页面分割模式进行实验,查看数据中最快的是什么
  • 根据应用程序的用途,重新训练Tesseract训练过的数据文件,使其使用更少的字符和更小的字典
  • Tesseract仅执行识别过程#1
  • 不要忘记考虑OpenCV或其他方法
    您没有说明您现在使用的Tesseract API设置,也没有描述您的应用程序在一般意义上的功能,因此很难告诉您从何处开始,但这些要点应该可以帮助您开始。

    您还可以尝试其他一些方法

  • 仅使用原始设备制造商的原始设备制造商的原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商
  • 不要使用完整的培训数据,而是使用来自的更快的替代方案
  • 将识别移动到计算线程

  • 你还可以尝试其他一些事情

  • 仅使用原始设备制造商的原始设备制造商的原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商原始设备制造商
  • 不要使用完整的培训数据,而是使用来自的更快的替代方案
  • 将识别移动到计算线程

  • 将getutf8text()方法放入AsyncTask(doInBackround)中是有效的。如果在AsyncTask运行时捕获了任何新图像,我将放弃它们,因为ImageReader队列的限制仅设置为一个。将getutf8text()方法放入AsyncTask(doInBackround)中是有效的。如果在AsyncTask运行时捕获了任何新图像,我将丢弃它们,因为ImageReader队列的限制仅设置为一个。