已经有一个类似于我们的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[0].Recognize(null);
- IOcrPageCharacters pageCharacters = document.Pages[0].GetRecognizedCharacters();
- for (int i = 0; i < document.Pages[0].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);
- }
- }
- }
- }
- }
- }
- }
复制代码
|