Pular para o conteúdo principal

Implementação

O método startOcr abre o fluxo nativo de captura de documento, envia as imagens para a API de OCR da QI Tech e devolve as chaves das imagens processadas.

Mobile Token

Utilizamos um Mobile Token para permitir o acesso autenticado do seu aplicativo à nossa API. Ele provavelmente já foi enviado por e-mail para você. Caso ainda não tenha recebido o seu token, envie um e-mail para suporte.caas@qitech.com.br.

Atenção

Cada ambiente (sandbox e production) exige um Mobile Token diferente.

Assinatura do método

Future<OcrReturnValues> startOcr(
CaaSEnvironment environment,
String mobileToken,
CaaSDocumentType document, {
OcrOptions? options,
})

Os três primeiros parâmetros são posicionais e obrigatórios. As customizações são opcionais e passadas pelo parâmetro nomeado options, descrito em O objeto OcrOptions.

Exemplo mínimo

import 'package:flutter_kyc_qitech/flutter_kyc_qitech.dart';

final _qitechFlutterKycPlugin = FlutterKycQitech();

final result = await _qitechFlutterKycPlugin.startOcr(
CaaSEnvironment.sandbox,
'<YOUR_MOBILE_TOKEN_SENT_BY_QITECH>',
CaaSDocumentType.cnh,
);

for (final item in result.documentRecognitionResponse) {
print('${item.documentType}: ${item.ocrKey ?? item.ocrFrontKey ?? item.ocrBackKey}');
}

Exemplo completo

import 'package:flutter/material.dart';
import 'package:flutter_kyc_qitech/flutter_kyc_qitech.dart';

class OcrButton extends StatelessWidget {
const OcrButton({super.key});

static const String _mobileToken = '<YOUR_MOBILE_TOKEN_SENT_BY_QITECH>';

Future<void> _startOcr() async {
final plugin = FlutterKycQitech();

try {
final result = await plugin.startOcr(
CaaSEnvironment.sandbox,
_mobileToken,
CaaSDocumentType.cnh,
options: OcrOptions(
sessionId: '<SESSION_ID>',
fontColor: '#FFFFFF',
backgroundColor: '#000000',
fontFamily: CaaSFontFamily.openSans,
showIntroductionScreens: true,
showSuccessScreen: false,
audioConfiguration: FaceReconAudioConfiguration.enable,
onboardingTextConfiguration: OnboardingTextConfiguration(
onboardingTitle: 'Dicas Importantes',
onboardingFirstLabel: 'Vá para um local iluminado',
onboardingSecondLabel: 'Retire o documento do plástico',
onboardingThirdLabel: 'Garanta que o documento está corretamente enquadrado',
),
logLevel: CaaSLogLevel.debug,
),
);

for (final item in result.documentRecognitionResponse) {
if (item.ocrKey != null) {
print('Ocr key: ${item.ocrKey} document type: ${item.documentType}');
}
if (item.ocrFrontKey != null) {
print('Ocr front key: ${item.ocrFrontKey} document type: ${item.documentType}');
}
if (item.ocrBackKey != null) {
print('Ocr back key: ${item.ocrBackKey} document type: ${item.documentType}');
}
}
} catch (e) {
// startOcr lança uma String com a mensagem de erro
print('Erro ao executar o OCR: $e');
}
}

@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: _startOcr,
child: const Text('Capturar documento'),
);
}
}
Atenção

Habilite o suporte às orientações Portrait e Landscape Right em sua aplicação para o funcionamento correto do SDK nativo de iOS.

Fluxo de captura por tipo de documento

O parâmetro document define quantas capturas o usuário realizará e, consequentemente, quantos itens o retorno conterá.

Tipo de documentoCapturasRetorno
CaaSDocumentType.cnhFull1 (CNH aberta)1 item com ocrKey
CaaSDocumentType.cnhDigital1 (PDF da CNH digital)1 item com ocrKey
CaaSDocumentType.address1 (comprovante de residência)1 item com ocrKey
CaaSDocumentType.rgCinDigital1 (PDF do RG/CIN digital)1 item com ocrKey
CaaSDocumentType.cnh2 (frente e verso)2 itens: ocrFrontKey e ocrBackKey
CaaSDocumentType.rg2 (frente e verso)2 itens: ocrFrontKey e ocrBackKey
CaaSDocumentType.rne2 (frente e verso)2 itens: ocrFrontKey e ocrBackKey
CaaSDocumentType.crnm2 (frente e verso)2 itens: ocrFrontKey e ocrBackKey

Aplicativo de exemplo

O repositório do plugin contém um aplicativo de exemplo pronto para execução, em flutter_kyc_qitech/example, que demonstra o uso dos três SDKs. Para executá-lo, crie um arquivo .env na pasta example com as credenciais abaixo e rode flutter pub get seguido de flutter run com um dispositivo físico conectado:

FACERECON_API_URL_SANDBOX=''
FACERECON_API_KEY_SANDBOX=''
OCR_MOBILE_TOKEN_SANDBOX=''
DEVICE_SCAN_API_URL_SANDBOX=''
DEVICE_SCAN_API_KEY_SANDBOX=''

Caso ainda não tenha recebido as suas credenciais, entre em contato com o suporte.caas@qitech.com.br.