2015-12-23 99 views
0

我正在使用tessearct wrapper for C# v3。需要的是获得位于图像顶部的12位数字号码。下面做工作,但速度很慢(42秒我的电脑):tesseract包装 - 性能下降

public string GetIdentityNumber(string path) 
{ 
    string identityNum = string.Empty; 
    Regex regex = new Regex(@"[\d]{4}\s+[\d]{4}\s+[\d]{4}"); 

    try 
    { 
     using (var engine = new TesseractEngine(@".\tessdata", "eng", EngineMode.Default)) 
     { 
      using (var img = Pix.LoadFromFile(path)) 
      { 
       using (var page = engine.Process(img, PageSegMode.SingleBlock)) 
       { 
        using (var iter = page.GetIterator()) 
        { 
         string text; 
         Match match; 
         iter.Begin(); 
         do 
         { 
          text = iter.GetText(PageIteratorLevel.TextLine); 
          match = regex.Match(text); 
          if (match.Success) 
          { 
           identityNum = match.ToString(); 
           break; 
          } 
         } 
         while (iter.Next(PageIteratorLevel.TextLine)); 
        } 
       } 
      } 
     } 
    } 
    catch 
    { 

    } 

    return identityNum; 
} 

大约需要40秒执行page.GetIterator()方法。有没有人知道任何设置或方法来提高性能?

回答

0

除了限制图片(基本上是裁剪)到您感觉文本将会被放置的区域之外,因此处理的次数会减少,所以没有太多的工作要做。

Tesseract不知道它的速度。