parse method

MrzResult? parse(
  1. OcrData ocrData, {
  2. MrzValidationSettings settings = const MrzValidationSettings(),
})

Implementation

MrzResult? parse(OcrData ocrData, {MrzValidationSettings settings = const MrzValidationSettings()}) {
  final potentialLines = _findPotentialMrzLines(ocrData.lines.map((e) => e.text).toList());
  if (potentialLines == null) return null;

  final firstCleanedLength = potentialLines.first.toUpperCase().replaceAll(RegExp(r'[^A-Z0-9<]'), '').length;
  int targetLength;
  if ((firstCleanedLength - 44).abs() <= 5) targetLength = 44;
  else if ((firstCleanedLength - 36).abs() <= 5) targetLength = 36;
  else if ((firstCleanedLength - 30).abs() <= 5) targetLength = 30;
  else return null;

  final normalizedLines = potentialLines.map((line) => normalizeLine(line, targetLength)).toList();

  final candidate = MrzCandidate(lines: normalizedLines);
  _aggregator.add(candidate);

  return _aggregator.buildResult(settings);
}