如何加快tesseract OCR

时间:2017-06-02 07:03:15

标签: c# .net ocr tesseract

我试图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#?

这样的东西吗?

1 个答案:

答案 0 :(得分:4)

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

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

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