Example #1
0
 private RecognitionResult CreateRecognitionResult( 
     int recResultCode, 
     int[][] marks, 
     bool[] sectionsValidity, 
     StampResult stampResult, 
     string stampNumber, 
     string[] stampNumberAlts)
 {
     var recResult = new RecognitionResult(recResultCode)
     {
         StampResult = stampResult,
         StampNumber = stampNumber,
         StampNumberAlts = stampNumberAlts,
         BulletinNumber = recResultCode != (int)OcrRecognitionResult.MARK ? _ocr.BulletinNumber : -1,
         Marks = marks,
         SectionsValidity = sectionsValidity
     };
     FindStampNumber(recResult);
     CreateStampInfo(recResult);
     if (recResult.ResultCode == OcrRecognitionResult.OK && recResult.StampOk)
     {
         if (recResult.BulletinNumber < 0 ||
             recResult.BulletinNumber >= _electionManager.SourceData.Blanks.Length)
         {
             recResult.BlankType = BlankType.Bad;
             recResult.ResultDescription = "Недопустимый номер бюллетеня " + recResult.BulletinNumber;
         }
         else
         {
             var blank = _electionManager.SourceData.Blanks[recResult.BulletinNumber];
             if (_electionManager.SourceData.IsVotingModeValidForBlank(blank, _recognitionStartVotingMode))
             {
                 Logger.LogVerbose(Message.RecognizerBulletinRecognized);
                 for (int i = 0; i < recResult.Marks.Length; i++)
                 {
                     var curSectionMarks = recResult.Marks[i];
                     if (recResult.SectionsValidity[i])
                     {
                         recResult.BlankType = BlankType.Valid;
                         break;
                     }
                     if (curSectionMarks.Length > 0)
                         recResult.BulletinWithExtraLabels = true;
                     else
                         recResult.BulletinWithoutLabels = true;
                 }
                 if (recResult.BlankType != BlankType.Valid)
                 {
                     if (recResult.BulletinWithExtraLabels)
                         recResult.BlankType = BlankType.TooManyMarks;
                     if (recResult.BulletinWithoutLabels)
                         recResult.BlankType = BlankType.NoMarks;
                 }
                 recResult.ResultDescription = string.Format(
                     "Бюллетень N {0} {1}. Печать: {2}. {3}. Время: {4}",
                     recResult.BlankTypeDescription,
                     blank.Marker,
                     recResult.StampDescription,
                     GetSquareDescription(recResultCode, recResult.Marks),
                     DateTime.Now.ToString("HH:mm:ss.fff"));
                 Logger.LogVerbose(Message.RecognizerBulletinResult,
                     recResult.BlankTypeDescription,
                     _recognitionStartVotingMode);
             }
             else
             {
                 recResult.BlankType = BlankType.BadMode;
                 recResult.ResultDescription = "Бюллетень не имеет текущего режима голосования";
                 Logger.LogVerbose(Message.RecognizerWrongModeForBulletin);
             }
         }
     }
     else
     {
         recResult.BlankType = BlankType.Bad;
         CreateBadBulletinInfo(recResult);
         recResult.ResultDescription = string.Format("Бюллетень неустановленной формы ({0}).",
             recResult.BadBulletinDescription);
         Logger.LogVerbose(Message.RecognizerNuf, recResult.ResultDescription);
     }
     var blankConfig = _config.Blanks.Get(recResult.BlankType, _sheetType);
     if (recResult.BlankType == BlankType.Bad &&
         recResult.BadBulletinReason == BadBulletinReason.Stamp &&
         _config.Blanks.Get(BlankType.BadStamp) != null)
     {
         blankConfig = _config.Blanks.Get(BlankType.BadStamp);
     }
     var imageFilePrefixStringBuilder = new StringBuilder();
     imageFilePrefixStringBuilder.Append(blankConfig.ImageFilePrefix);
     if (!string.IsNullOrEmpty(recResult.BadBulletinFilePrefix))
     {
         imageFilePrefixStringBuilder.Append('-');
         imageFilePrefixStringBuilder.Append(recResult.BadBulletinFilePrefix);
     }
     if (_config.Ocr.Stamp.TestLevel == StampTestLevel.Halftone)
     {
         imageFilePrefixStringBuilder.Append('-');
         imageFilePrefixStringBuilder.Append(recResult.StampNumber);
     }
     recResult.ImageFilePrefix = imageFilePrefixStringBuilder.ToString();
     recResult.Marking = blankConfig.Marking;
     if (_recognitionStartVotingMode == VotingMode.Test)
         blankConfig = _config.Blanks.Get(BlankType.Test);
     recResult.ImageSavingType = blankConfig.ImageSavingType;
     return recResult;
 }
Example #2
0
 private void WriteRecognitionResultToLog( 
     RecognitionResult recResult, StampResult stampResult, string stampNumber, string additionalInfo)
 {
     try
     {
         var recLogSb = new StringBuilder();
         recLogSb.Append(_recognitionStartVotingMode);
         recLogSb.Append(',');
         recLogSb.Append(GetImageFileName(recResult.ImageFilePrefix));
         recLogSb.Append(',');
         recLogSb.Append(_ocr.BulletinNumber);
         recLogSb.Append(',');
         recLogSb.Append(_scannerManager.SerialNumber);
         recLogSb.Append(',');
         recLogSb.Append(recResult.IntResultCode);
         recLogSb.Append(',');
         recLogSb.Append(stampNumber);
         recLogSb.Append(',');
         recLogSb.Append(stampResult);
         recLogSb.Append(',');
         recLogSb.Append(additionalInfo);
         if (!_scannerManager.SheetProcessingSession.Closed)
         {
             recLogSb.Append('\t');
             recLogSb.Append(_scannerManager.SheetProcessingSession.Id);
         }
         _recognitionResultLogger.LogInfo(Message.RecognizerLog, recLogSb.ToString());
     }
     catch (Exception ex)
     {
         Logger.LogError(Message.RecognizerLogError, ex);
     }
 }