如何加快tesseract OCR
问题描述:
我想OCR很多文件(我的意思是在一天300k +范围内)。目前我正在使用Tesseract wrapper for .NET,它的质量都很好,但速度不够好。我平均每次扫描平均扫描半页的20个任务的平均时间为2546秒。使用代码IM:如何加快tesseract OCR
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。
您是否为每个页面创建一个新引擎(调用'new TesseractEngine')? – GWigWam
@GWigWam是的,目前它的工作就是这样。我很确定它不支持并行使用 – TestzWCh
你是对的,它不支持并行使用。然而,创建它是昂贵的。 – GWigWam