获取返回结果
startOcr 方法返回 Future<OcrReturnValues>。无需手动解析 JSON——插件已经提供带类型的 Dart 对象。
OcrReturnValues
class OcrReturnValues {
final List<DocumentRecognitionItem> documentRecognitionResponse;
}
| 属性 | 类型 | 说明 |
|---|---|---|
| documentRecognitionResponse | List<DocumentRecognitionItem> | 列表,用户每完成一次采集对应一个条目。 |
DocumentRecognitionItem
class DocumentRecognitionItem {
final String? ocrKey;
final String? ocrFrontKey;
final String? ocrBackKey;
final String documentType;
}
| 属性 | 类型 | 说明 |
|---|---|---|
| ocrKey | String? | 图像识别密钥,出现在单次采集的证件中(cnhFull、cnhDigital、address、rgCinDigital)。可在 QI Tech 系统的任何其他服务中使用。 |
| ocrFrontKey | String? | 正面图像的识别密钥,出现在双次采集的证件中(cnh、rg、rne、crnm)。 |
| ocrBackKey | String? | 背面图像的识别密钥,出现在双次采集的证件中(cnh、rg、rne、crnm)。 |
| documentType | String | 标识该密钥对应的证件(例如 "cnh"、"rg"、"proof_of_address")。 |
重要
请保存返回的密钥——它们是该图像在 QI Tech 系统其他产品(例如 Onboarding API)中的标识符。
读取返回结果的示例
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}');
}
}
错误处理
注意
与抛出带类型的 FaceReconException 的 startFaceRecon 不同,startOcr 方法抛出的是包含错误信息的 String。请使用通用的 catch (e)。
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');
}
最常见的错误信息
| 错误信息 | 含义 |
|---|---|
User canceled OCR | 用户在完成采集流程前中断了流程。 |
Error executing OCR: <详情> | iOS 原生 SDK 以错误结束流程。 |
at startOcr: <详情> | 调用中缺少某个必填参数。 |
Activity is null | 在 Android 上,SDK 无法获取宿主 activity。 |