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.
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'),
);
}
}
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 documento | Capturas | Retorno |
|---|---|---|
CaaSDocumentType.cnhFull | 1 (CNH aberta) | 1 item com ocrKey |
CaaSDocumentType.cnhDigital | 1 (PDF da CNH digital) | 1 item com ocrKey |
CaaSDocumentType.address | 1 (comprovante de residência) | 1 item com ocrKey |
CaaSDocumentType.rgCinDigital | 1 (PDF do RG/CIN digital) | 1 item com ocrKey |
CaaSDocumentType.cnh | 2 (frente e verso) | 2 itens: ocrFrontKey e ocrBackKey |
CaaSDocumentType.rg | 2 (frente e verso) | 2 itens: ocrFrontKey e ocrBackKey |
CaaSDocumentType.rne | 2 (frente e verso) | 2 itens: ocrFrontKey e ocrBackKey |
CaaSDocumentType.crnm | 2 (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.