Python 如何使Tesseract更快

Python 如何使Tesseract更快,python,c++,performance,tesseract,Python,C++,Performance,Tesseract,这是一个远大的目标,但我不得不问。我需要任何可能使Tesseract OCR引擎更快的想法。我正在处理200万个PDF文件,其中包含大约2000万页的文本,我需要尽我所能获得每一点性能。目前的估计是,如果我什么都不做,这将需要大约一年的时间来完成 我已经调整了输入图像以获得一些增强效果,但我需要考虑其他方法。我不认为图像的改进在这一点上对我有任何帮助 例如: 可以用优化标志或类似的东西重新编译Tesseract吗 共享CPU内存或GPU可以投入使用吗 我能告诉Tesseract使用更多的内存吗

这是一个远大的目标,但我不得不问。我需要任何可能使Tesseract OCR引擎更快的想法。我正在处理200万个PDF文件,其中包含大约2000万页的文本,我需要尽我所能获得每一点性能。目前的估计是,如果我什么都不做,这将需要大约一年的时间来完成

我已经调整了输入图像以获得一些增强效果,但我需要考虑其他方法。我不认为图像的改进在这一点上对我有任何帮助

例如:

  • 可以用优化标志或类似的东西重新编译Tesseract吗
  • 共享CPU内存或GPU可以投入使用吗
  • 我能告诉Tesseract使用更多的内存吗(我有很多这样的内存)
  • 有没有其他方法能使CPU绑定的C++程序更快?
目前,Tesseract由我们的任务运行程序芹菜运行,芹菜使用多处理来完成其工作。这样,我可以使服务器看起来像这样:


我(显然)不知道我在说什么,因为我是一个Python开发者,TestSerACT是用C++编写的,但是如果有任何方法能促进这里的话,我会喜欢想法。p> 我也有巨大的OCR需求,而Tesseract的速度非常慢。我最后去了一家餐馆。不过,你不必自己建造它;您可以使用像这样的高性能库,它恰好易于使用

那么问题有两个部分:

1) 将字符与非字符分开。
2) 将字符送入网络

假设您批量输入大小为
1000
的字符,将每个字符的大小调整为尺寸
8 x 8
(64像素),并且希望识别26个字母(小写和大写)、10个数字和10个特殊字符(总共72个字形)。然后,解析所有1000个字符的结果是两个(非关联!)矩阵乘积:

A
dot
B
)dot
C

A
将是
1000 x 64
矩阵,
B
将是
64 x 256
矩阵,
C
将是
256 x 72
矩阵

对我来说,这比Tesseract快几个数量级。只要测试一下你的计算机能以多快的速度完成那些矩阵积(元素是浮点数)

矩阵积是非关联的,因为在第一个矩阵积之后,必须应用一个称为ReLU的(廉价)函数

我花了几个月的时间让整个enchilada从头开始工作,但OCR是我项目的主要部分

此外,分割字符也很重要。根据你的PDF,它可以是任何东西,从计算机视觉的简单练习到人工智能的开放研究问题


我不是说这是最简单或最有效的方法。。。这就是我所做的

谢谢你的回复。这听起来像是一个非常令人印象深刻的设置。不幸的是,我们没有资源做类似的事情。