Tes*_*WCh 6 .net c# ocr tesseract
我正在尝试对大量文档进行 OCR(我的意思是每天 300k + 范围)。目前我正在为 .NET使用 Tesseract 包装器,它的质量都很好,但速度不够好。我从同一 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);
}
Run Code Online (Sandbox Code Playgroud)
我得到的平均时间是将图像的分辨率降低一半并将其转换为灰度之后。有什么想法可以加快这个过程吗?我不需要分割文本,只需要一行中的文本。我应该使用一些东西作为c# 的 Matlab 吗?
目前,您TesseractEngine为扫描的每个页面创建一个新对象。创建引擎的成本很高,因为它会读取“tessdata”文件。
你说你有 20 个并行任务在运行。由于引擎无法同时处理多个页面,因此您需要为每个任务创建一个引擎,并将其重用于该任务处理的所有页面。您可以简单地调用using (var page = Engine.Process(pix))以使用现有引擎处理下一页。
重用引擎应该会显着提高性能,因为您只需要创建 20 个引擎而不是 300k。