如何加速 tesseract OCR

How to speed up tesseract OCR

我正在尝试对大量文档进行 OCR(我的意思是每天超过 300k 个文档)。目前我正在使用 Tesseract wrapper for .NET 并且它的质量都很好但是速度不够好。我从同一个 pdf 并行扫描半页的 20 个任务平均每次扫描 2,546 秒。我使用的代码:

using (var engine = new TesseractEngine(Tessdata, "eng", EngineMode.TesseractOnly))
        {
            Page page;
            page = engine.Process(image, srcRect);        
            var text = page.GetText();
            return Task.FromResult(text);
        }

我得到的平均时间是在将图像分辨率降低一半并将其转换为灰度之后。有什么想法可以加快这个过程吗?我不需要分割文本,只需要一行中的文本。我是否应该使用 Matlab for c#?

目前,您为扫描的每个页面创建一个新的 TesseractEngine 对象。创建引擎的成本很高,因为它会读取 'tessdata' 个文件。

你说你有 20 个并行任务 运行。由于引擎无法一次处理多个页面,因此您需要为每个任务创建一个引擎并将其重新用于该任务处理的所有页面。您只需调用 using (var page = Engine.Process(pix)) 即可使用现有引擎处理下一页。

重用引擎应该会显着提高性能,因为您只需创建 20 个引擎而不是 300k。