Richard.Ma 发表于 2017-5-22 17:58:54

如何使用LEADTOOLS OCR文字识别获取每行文本


已经有一个类似于我们的IOcrZoneCharacters.GetWords方法的方法,但是要检索整行文本。 OCR引擎识别的每个字符都有一个位置。 我们可以通过OcrCharacter结构的position属性访问这个位置。 这返回一个或多个OcrCharacterPosition枚举成员:


下面是一个小代码段,它使用OcrCharacterPosition一次写入一整行识别的文本。
using (RasterCodecs codecs = new RasterCodecs())
{
   codecs.Options.RasterizeDocument.Load.XResolution = 300;
   codecs.Options.RasterizeDocument.Load.YResolution = 300;
   RasterImage image = codecs.Load(inputFile);
   using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Professional, false))
   {
      ocrEngine.Startup(null, null, null, @"C:\LEADTOOLS 19\Bin\Common\OcrProfessionalRuntime64");
      using (IOcrDocument document = ocrEngine.DocumentManager.CreateDocument())
      {
         document.Pages.AddPage(image, null);
         document.Pages.Recognize(null);
         IOcrPageCharacters pageCharacters = document.Pages.GetRecognizedCharacters();
         for (int i = 0; i < document.Pages.Zones.Count; i++)
         {
            IOcrZoneCharacters zoneCharacters = pageCharacters.FindZoneCharacters(i);
            if (zoneCharacters != null)
            {
               foreach (var ocrCharacter in zoneCharacters)
               {
                  OcrCharacterPosition position;
                  position = ocrCharacter.Position;
                  if ((position & OcrCharacterPosition.EndOfLine) == OcrCharacterPosition.EndOfLine)
                  {
                     Console.Write(ocrCharacter.Code + "\n");
                  }
                  else
                  {
                     Console.Write(ocrCharacter.Code);
                  }
               }
            }
         }
      }
   }
}

页: [1]
查看完整版本: 如何使用LEADTOOLS OCR文字识别获取每行文本