Pular para o conteúdo principal

Coletando os Retornos

O método startOcr retorna um Future<OcrReturnValues>. Não é necessário realizar nenhuma decodificação manual de JSON — o plugin já entrega objetos Dart tipados.

OcrReturnValues

class OcrReturnValues {
final List<DocumentRecognitionItem> documentRecognitionResponse;
}
AtributoTipoDescrição
documentRecognitionResponseList<DocumentRecognitionItem>Lista com uma entrada por captura realizada pelo usuário.

DocumentRecognitionItem

class DocumentRecognitionItem {
final String? ocrKey;
final String? ocrFrontKey;
final String? ocrBackKey;
final String documentType;
}
AtributoTipoDescrição
ocrKeyString?Chave de identificação da imagem, presente em documentos de captura única (cnhFull, cnhDigital, address, rgCinDigital). Pode ser utilizada em qualquer outro serviço do sistema QI Tech.
ocrFrontKeyString?Chave de identificação da imagem da frente, presente em documentos de captura dupla (cnh, rg, rne, crnm).
ocrBackKeyString?Chave de identificação da imagem do verso, presente em documentos de captura dupla (cnh, rg, rne, crnm).
documentTypeStringIdentifica a qual documento aquela chave se refere (ex.: "cnh", "rg", "proof_of_address").
Importante

Armazene as chaves retornadas — elas são o identificador da imagem nos demais produtos do sistema QI Tech, como a API de Onboarding.

Exemplo de leitura do retorno

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

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}');
}
}

Tratamento de erros

Atenção

Diferentemente de startFaceRecon, que lança uma FaceReconException tipada, o método startOcr lança uma String com a mensagem de erro. Utilize um catch (e) genérico.

try {
final result = await plugin.startOcr(
CaaSEnvironment.sandbox,
'<YOUR_MOBILE_TOKEN_SENT_BY_QITECH>',
CaaSDocumentType.cnh,
);
// ...
} catch (e) {
print('Erro ao executar o OCR: $e');
}

Mensagens de erro mais comuns

MensagemSignificado
User canceled OCRO usuário interrompeu o fluxo de captura antes de concluí-lo.
Error executing OCR: <detalhe>O SDK nativo de iOS encerrou o fluxo com erro.
at startOcr: <detalhe>Algum parâmetro obrigatório não foi informado na chamada.
Activity is nullNo Android, o SDK não conseguiu obter a activity hospedeira.