获取返回结果
注意
在 Android 和 iOS 上,startOcr 的 Promise 解析出的都是 JSON 字符串。访问字段前必须调用 JSON.parse()。TypeScript 中声明的类型为 OCR_RETURN_VALUES | string。
返回结构
type OCR_RETURN_VALUES = {
DocumentRecognitionResponse: {
ocr_key?: string;
ocr_front_key?: string;
ocr_back_key?: string;
document_type: string;
}[];
};
| 属性 | 类型 | 说明 |
|---|---|---|
| ocr_key | string | 图像识别密钥,出现在单次采集的证件中(cnh_full、cnh_digital、proof_of_address、rg_cin_digital)。可在 QI Tech 系统的任何其他服务中使用。 |
| ocr_front_key | string | 正面图像的识别密钥,出现在双次采集的证件中(cnh、rg、rne、crnm)。 |
| ocr_back_key | string | 背面图像的识别密钥,出现在双次采集的证件中(cnh、rg、rne、crnm)。 |
| document_type | string | 标识该密钥对应的证件(例如 "cnh"、"rg"、"proof_of_address")。 |
重要
请保存返回的密钥——它们是该图像在 QI Tech 系统其他产品(例如 Onboarding API)中的标识符。
单次采集的证件
{
"DocumentRecognitionResponse": [
{ "ocr_key": "5d0f0e1c-8f9e-4b6c-9c3d-2f8a1b4e7c10", "document_type": "cnh_full" }
]
}
双次采集的证件
{
"DocumentRecognitionResponse": [
{ "ocr_front_key": "5d0f0e1c-8f9e-4b6c-9c3d-2f8a1b4e7c10", "document_type": "cnh" },
{ "ocr_back_key": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "document_type": "cnh" }
]
}
读取返回结果的示例
startOcr(CAAS_ENVIRONMENT.SANDBOX, mobileToken, CAAS_DOCUMENT_TYPE.CNH)
.then((response) => {
const { DocumentRecognitionResponse } = JSON.parse(response as string);
if (DocumentRecognitionResponse.length === 1) {
const { ocr_key, document_type } = DocumentRecognitionResponse[0];
console.log('Ocr key: ' + ocr_key + ' document type: ' + document_type);
} else if (DocumentRecognitionResponse.length === 2) {
const { ocr_front_key } = DocumentRecognitionResponse[0];
const { ocr_back_key } = DocumentRecognitionResponse[1];
console.log('Ocr front key: ' + ocr_front_key + ' / Ocr back key: ' + ocr_back_key);
}
})
.catch((error) => {
console.log('Error executing Ocr. Error: ' + error);
});
错误处理
当用户中断流程或原生 SDK 发生错误时,Promise 会被 reject。
| 场景 | 错误信息 |
|---|---|
| 用户取消了流程 | User canceled OCR |
| iOS 原生 SDK 发生错误 | Error executing OCR: <详情> |
| 原生模块未正确链接 | The package 'react-native-qi-tech-module' doesn't seem to be linked... |
注意
如果遇到链接错误,请确认您在 iOS 上执行了 pod install、在安装包之后重新构建了应用,并且没有在未执行 prebuild 的 Expo managed workflow 中运行。