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;
}
| Atributo | Tipo | Descrição |
|---|---|---|
| documentRecognitionResponse | List<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;
}
| Atributo | Tipo | Descrição |
|---|---|---|
| ocrKey | String? | 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. |
| ocrFrontKey | String? | Chave de identificação da imagem da frente, presente em documentos de captura dupla (cnh, rg, rne, crnm). |
| ocrBackKey | String? | Chave de identificação da imagem do verso, presente em documentos de captura dupla (cnh, rg, rne, crnm). |
| documentType | String | Identifica 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
| Mensagem | Significado |
|---|---|
User canceled OCR | O 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 null | No Android, o SDK não conseguiu obter a activity hospedeira. |