OCR 模块
accbotTsSdk 同时暴露了 android.ocr 和 android.paddleOcr 两条 OCR 能力线,但它们都不是 Android 主程序默认注册的内建路由,而是插件能力。
这意味着:
- tsSdk 层虽然能直接访问
android.ocr/android.paddleOcr - Android 主程序默认并没有
ocr/paddleocr路由 - 只有
android.app.loadPlugin(...)成功后,插件路由才会被动态挂载
如果你只是看到 SDK 上有 android.ocr / android.paddleOcr 对象,不代表设备当前已经具备可返回 OCR 结果的底层能力。
插件部署方式
插件 zip 通过 tsSdk 文件 API 推送到设备,然后加载:
// 1. 推送插件 zip 到设备(不走 adb push)
await android.file.writeBase64(
'/data/local/tmp/paddleocr-plugin.zip',
base64Content,
)
// 2. 加载插件
await android.app.loadPlugin('/data/local/tmp/paddleocr-plugin.zip')
// 3. 确认已加载
const plugins = await android.app.listPlugins()android.ocr
android.ocr 的用户入口来自 util 层封装,应按 全屏识别 / 区域识别 / Base64 图片识别 来理解,而不是直接按 autoCode 底层签名调用。
ocr(qua?)
全屏识别入口。
- 参数:
qua?: number:识别阈值 / 相似度,默认80
- 返回值:
Promise<OcrRes[]> - 说明:该方法等价于内部调用全屏坐标
(-1, -1, -1, -1)的 OCR
const result = await android.ocr.ocr()
console.log(result)ocrArea(qua, x1, y1, x2, y2)
识别屏幕指定区域的文本。
- 参数:
qua: number:识别阈值 / 相似度,通常 1-100x1: numbery1: numberx2: numbery2: number
- 返回值:
Promise<OcrRes[]>
const result = await android.ocr.ocrArea(80, 0, 0, 1080, 400)
console.log(result)ocrBase64(imageBase64, qua)
识别 Base64 编码图片中的文本。
- 参数:
imageBase64: stringqua: number
- 返回值:
Promise<OcrBase64Res[]> - 注意:用户入口的参数顺序是
ocrBase64(imageBase64, qua),不是 autoCode 的ocrBase64(qua, imageBase64)
android.paddleOcr
android.paddleOcr 是另一条独立的插件能力线,当前对外暴露风格不是 util 层包装,而是直接沿用当前 autoCode 风格入口。
ocr(qua, x1?, y1?, x2?, y2?)
PaddleOCR 识别入口。
- 返回值:
Promise<PaddleOcrResponse>
ocrBase64(qua, imageBase64)
PaddleOCR 的 Base64 图片识别入口。
- 注意:这里的参数顺序当前是
ocrBase64(qua, imageBase64),和android.ocr.ocrBase64(imageBase64, qua)不一样
语言相关方法
switchLang(lang)currentLang()listLangs()addLang(lang, path)removeLang(lang)
插件前置条件
android.ocr背后对应ocr-plugin(百度商业 OCR,已停用)android.paddleOcr背后对应paddleocr-plugin(PaddleOCR 多语言 OCR,活跃)- 它们都不是 Android 主程序默认注册能力
- 只有在
android.app.loadPlugin(...)成功后,相关 OCR 路由才会动态出现
验证方式
插件 zip 需先通过 tsSdk 文件 API 推送到设备(android.file.writeBase64()),再调用 loadPlugin 加载。不走 adb push。
Node.js 侧验证请按 tsSdk 用户入口测试:
// PaddleOCR
await android.paddleOcr.switchLang('cyrillic')
const result = await android.paddleOcr.ocr(80)
console.log(result)返回值说明
android.ocr 返回值
每个结果项包含:
label:识别文本qua:置信度x、y:文本区域左上角坐标x2、y2:文本区域右下角坐标
android.paddleOcr 返回值
返回 PaddleOcrResponse:
results:识别结果数组,每项包含text(文本)、confidence(置信度 0~1)、box(四点坐标数组)timeMs:识别耗时(毫秒)
注意事项
- OCR 是插件能力,需要先
loadPlugin再调用 OCR 方法 - 全屏识别结果可能较多,业务中建议缩小识别区域
- 如果只是定位界面元素,优先尝试
android.acc;如果控件文本无法直接从节点树获得,再考虑 OCR - PaddleOCR 支持多语言切换(中文
ch、俄语cyrillic),通过switchLang(lang)切换 android.ocr.ocrBase64(imageBase64, qua)和android.paddleOcr.ocrBase64(qua, imageBase64)参数顺序不同,注意区分
