FramePipelineConfig.forMode constructor

FramePipelineConfig.forMode(
  1. ScanMode mode
)

Creates a pipeline config optimized for the given scan mode.

Implementation

factory FramePipelineConfig.forMode(ScanMode mode) {
  switch (mode) {
    case ScanMode.qr:
    case ScanMode.barcode:
    case ScanMode.multiCode:
      return const FramePipelineConfig(
        preprocessing: PreprocessingStrategy(
          enableBinarization: true,
          binarizationType: BinarizationType.otsu,
          enableNoiseReduction: false,
        ),
        qualityGate: QualityGateConfig(
          minBlurScore: 30.0,
          enableGlareDetection: false,
        ),
        maxFps: 20,
        enableMultiPassOcr: false,
        enableBarcodeFallback: true,
      );

    case ScanMode.document:
      return const FramePipelineConfig(
        preprocessing: PreprocessingStrategy(
          enableEdgeDetection: true,
          enableNoiseReduction: true,
          noiseReductionStrength: 0.5,
        ),
        qualityGate: QualityGateConfig(
          minBlurScore: 60.0,
          minCoverageRatio: 0.2,
          enableGlareDetection: true,
        ),
        maxFps: 10,
        enableMultiPassOcr: false,
      );

    case ScanMode.ocr:
    case ScanMode.invoice:
    case ScanMode.receipt:
    case ScanMode.businessCard:
      return const FramePipelineConfig(
        preprocessing: PreprocessingStrategy(
          enableContrastEnhancement: true,
          enableSharpening: true,
          enableBinarization: true,
          binarizationType: BinarizationType.sauvola,
        ),
        qualityGate: QualityGateConfig(
          minBlurScore: 50.0,
          minContrastRatio: 0.25,
        ),
        maxFps: 12,
        enableMultiPassOcr: true,
      );

    case ScanMode.passport:
    case ScanMode.vin:
      return const FramePipelineConfig(
        preprocessing: PreprocessingStrategy(
          enableContrastEnhancement: true,
          enableSharpening: true,
          enableBinarization: true,
          binarizationType: BinarizationType.sauvola,
        ),
        qualityGate: QualityGateConfig(
          minBlurScore: 60.0,
          minContrastRatio: 0.3,
        ),
        maxFps: 12,
        enableMultiPassOcr: true,
      );

    case ScanMode.face:
      return const FramePipelineConfig(
        preprocessing: PreprocessingStrategy(
          enableGammaCorrection: true,
          gamma: 0.7,
          enableNoiseReduction: true,
          noiseReductionStrength: 0.3,
        ),
        qualityGate: QualityGateConfig(
          minBlurScore: 40.0,
          enableGlareDetection: false,
        ),
        maxFps: 15,
        enableMultiPassOcr: false,
      );

    default:
      return const FramePipelineConfig();
  }
}