handleOcr function

void handleOcr(
  1. OcrData ocr,
  2. void onFoundMrz(
    1. OcrMrzResult res
    ),
  3. OcrMrzSetting? setting,
  4. List<NameValidationData>? nameValidations,
  5. void mrzLogger(
    1. OcrMrzLog log
    )?,
  6. List<DocumentType> filterTypes, {
  7. bool tryPassportFirst = true,
})

Implementation

void handleOcr(
  OcrData ocr,
  void Function(OcrMrzResult res) onFoundMrz,
  OcrMrzSetting? setting,
  List<NameValidationData>? nameValidations,
  void Function(OcrMrzLog log)? mrzLogger,
  List<DocumentType> filterTypes, {
  bool tryPassportFirst = true,
}) {
  try {
    Map<String, dynamic>? result;
    if (filterTypes.isEmpty || filterTypes.contains(DocumentType.passport)) {
      result = tryParseMrzFromOcrLines(ocr, setting ?? OcrMrzSetting(), nameValidations, mrzLogger);
    }
    if (filterTypes.isEmpty || filterTypes.contains(DocumentType.visa)) {
      result ??= tryParseVisaMrzFromOcrLines(ocr, setting ?? OcrMrzSetting(), nameValidations, mrzLogger);
    }
    if (filterTypes.isEmpty || filterTypes.contains(DocumentType.travelDocument1)) {
      result ??= tryParseTD1FromOcrLines(ocr, setting ?? OcrMrzSetting(), nameValidations, mrzLogger);
    }
    if (filterTypes.isEmpty || filterTypes.contains(DocumentType.travelDocument2)) {
      result ??= tryParseTD2FromOcrLines(ocr, setting ?? OcrMrzSetting(), nameValidations, mrzLogger);
    }

    if (result == null) {
      return;
    }

    final parsed = OcrMrzResult.fromJson(result);
    onFoundMrz(parsed);
  } catch (e, st) {
    log(e.toString());
    log(st.toString());
  }
}