Skip to main content

Introdução

Este documento descreve o processo de integração, uso e configuração do SDK FlexScanner no ecossistema iOS utilizando Swift. A solução é orientada para captura documental offline com validação de qualidade, correção geométrica e extração de metadados visuais. A documentação visa auxiliar desenvolvedores a integrar o SDK com confiabilidade e com aplicação das melhores práticas.

Requisitos Técnicos Mínimos

  • Xcode 13 ou superior
  • iOS 13+
  • Swift 5+
  • Permissões de câmera e armazenamento
  • Integração via CocoaPods, Swift Package Manager (SPM) ou framework embutido

Observação sobre Licenciamento

O SDK requer licenciamento ativo via licenseKey e companyName, sob validação offline local. As licenças são geradas pela Valid com validade contratual e são obrigatórias para o funcionamento.

Instalação

Via CocoaPods

pod 'FlexDocScanner'

Via Swift Package Manager

Adicione a URL fornecida pela Valid no campo de dependências do projeto.

Framework Manual

  • Importe FlexDocScanner.framework no projeto.
  • Adicione em Frameworks, Libraries and Embedded Content com a opção Embed & Sign.
  • Certifique-se de que as dependências como OpenCV estejam corretamente linkadas.

Permissões Necessárias (Info.plist)

info.plist
<key>NSCameraUsageDescription</key>
<string>Necessário para captura de documentos</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Necessário para salvar imagens processadas</string>

Inicialização do SDK

FlexDocScanner.initialize(
  withLicenseKey: "SUA_CHAVE_API",
  companyName: "Valid",
  delegate: self
)

Execução do Scanner

let config = ScanConfig(
    documentType: .idCard,
    autoCapture: true,
    enableOCR: true,
    flashMode: .auto
)

FlexDocScanner.shared.startScanner(from: self, with: config)

Callback de Resultado

extension ViewController: FlexDocScannerDelegate {
    func didFinishScanning(result: ScanResult) {
        switch result {
        case .success(let document):
            print("Imagem: \(document.imagePath)")
        case .failure(let error):
            print("Erro: \(error.localizedDescription)")
        }
    }
}

Parâmetros Avançados Disponíveis

  • colorDepth: .grayscale, .binary, .color
  • outputFormat: .jpg, .png, .bmp
  • aspectRatio: proporção customizada do documento
  • brightnessThresholds: valores mínimos/máximos de brilho permitido
  • manualShutter: ativa modo de captura manual

Exibição de Preview

A versão iOS também permite renderizar uma tela de revisão da imagem capturada antes da confirmação.
FlexDocScanner.shared.presentPreview(from: self, document: document)

Resultado do Documento

struct ScannedDocument {
    let imagePath: String
    let glareRatio: Double
    let skewAngle: Double
    let tiltRatio: Double
    let qualityScore: Double
    let metadata: [String: Any]
}

Parametrização Estática (via Recompilação da Lib)

Os seguintes parâmetros são ajustáveis apenas recompilando a biblioteca nativa:
  • MAX_SKEW_ANGLE: 15.0
  • MIN_CORNER_ANGLE_DEGREES: 80
  • MAX_BRIGHT_RATIO: 0.50