主题
字库找字错误码说明 - DictFindStrErrorCodes
概述
以下接口在字库不存在或传入文字不在字库中时写入统一错误码,可用 GetLastError() / GetLastErrorString() 读取:
- 找字:
FindStr/FindStrDetail/FindStrAll/FindStrFromPtr/FindStrFromPtrAll - 字库识字:
OcrFromDict/OcrFromDictDetails/OcrFromDictPtr/OcrFromDictPtrDetails
dict(字库名)和 str(查找文字)都按 | 分段,规则一致,兼容性优先:
- 字库名:有一段能加载就继续;全部都加载不到才 →
9001 - 查找文字:有一段能用字库词条拼出就继续找字;全部都拼不出才 →
9002
空名字(dict="")表示使用当前已加载的全部字库;若此时一个字库都没有,同样是 9001。
失败时建议同时调用:
GetLastError():获取错误码(正整数,如9002)GetLastErrorString():获取中文说明,括号内是缺失的字库名或传入文字(用完后FreeStringPtr释放)
cpp
int32_t outX = 0, outY = 0;
int ret = ola.FindStr(0, 0, 0, 0, "你好", "000000", "mydict", 0.9, &outX, &outY);
if (ret < 0) {
int err = GetLastError(); // 9001 / 9002;屏幕未找到时为 0,ret 为 -1
char* msg = (char*)GetLastErrorString();
// 9002 时 msg 类似:字库中找不到指定文字(你好)
// 若这里中文是乱码,说明入参编码与 SetDefaultEncode 不一致
FreeStringPtr((int64_t)msg);
}判断找字是否成功:
FindStr请用ret >= 0。-1只表示屏幕上未找到(至少有一个字库可用,且至少有一段文字能拼出);-9001/-9002是字库校验失败。
通用错误(10xx)
| 返回值 | GetLastError | 说明 | 排查建议 |
|---|---|---|---|
-1001 | 1001 | 权限不足 / 未登录 | Login/Reg;FeatureList 须含字库 / Dict 相关特性 |
字库找字错误(90xx)
| 返回值 | GetLastError | 说明 | GetLastErrorString 示例 | 排查建议 |
|---|---|---|---|---|
-9001 | 9001 | 全部指定字库都加载不到 | 字库不存在(mydict) 或 字库不存在(dict1|dict2) | 先 ImportTxtDict / InitDictFromTxt / InitDictFromDir;a|b 时只要有一个能加载就会继续;空名字时至少要有一个已加载字库 |
-9002 | 9002 | 全部查找文字都无法用字库拼出 | 字库中找不到指定文字(你好) 或 字库中找不到指定文字(你好|世界) | 仅当 ` |
-1 | 0 | 屏幕上未找到(仅 FindStr) | 无此次字库错误 | 字库与文字已通过校验,只是当前画面没有匹配 |
字符串类接口(OcrFromDict*、FindStrDetail 等)失败时返回空字符串 / 空结果,不返回负数;请用 GetLastError() 读 9001 / 9002。
分段规则(与错误码对应)
| 入参 | 示例 | 行为 |
|---|---|---|
dict | dict1|dict2 | 有一个能加载就用已加载的继续;两个都加载不到才 9001,详情列出全部缺失名 |
dict | ""(空) | 使用当前全部已加载字库;一个都没有则 9001,详情为「未指定字库且当前没有任何已加载字库」 |
str(仅 FindStr 系列) | 你好|世界 | 有一段能被字库词条覆盖(整词或单字拼接)就继续找字;两段都拼不出才 9002,详情列出全部缺失文字 |
9002 的详情就是插件内部解码后的 UTF-8 文字。编码正确时应能看到正常中文;编码错误时这里会是乱码,便于对照入参。
相关接口
| 接口 | 说明 |
|---|---|
| FindStr | 区域找字,失败返回 -1 / -9001 / -9002 |
| FindStrDetail | 找字详情 JSON |
| FindStrAll | 全部命中 |
| OcrFromDict | 字库识字 |
| ImportTxtDict | 导入内存字库 |
| GetLastError | 读取错误码 |
| GetLastErrorString | 读取错误说明 |
| 文字识别模块总览 | 字库识字与找字选型 |
