EasyclickOCR模块的正确用法

EasyclickOCR模块的正确用法

一、核心函数(官方明确支持)

函数 版本要求 说明 参数示例
ocr.newOcr() EC 9.17.0+ 实例化OCR对象 (9.17+版本必须用它初始化,而非全局ocr let o = ocr.newOcr();(文档示例)
o.initOcr(config) EC 9.17.0+ 初始化OCR引擎(需传入引擎类型及参数) o.initOcr({"type": "paddleOcrOnnxV4", "modelsDir": "", "numThread": 2})
o.ocrImage(img) EC 8.2.0+ 识别Image对象 (输入为image类型,来自截图/裁剪) o.ocrImage(targetImg, 20000, {})
o.ocrBitmap(bitmap) EC 5.17.0+ 识别Bitmap对象 (输入为bitmap类型,底层Android Bitmap) o.ocrBitmap(bitmap, 20000, {"token": "xxx"})
o.releaseAll() EC 5.17.0+ 释放OCR实例资源 o.releaseAll()(文档示例)
o.getErrorMsg() EC 5.17.0+ 获取错误信息 loge("错误:" + o.getErrorMsg())

二、关键文档细节

  1. 9.17+版本必须用ocr.newOcr()初始化
    文档原文:"ocr.newOcr 实例一个ocr 初始化一个ocr实例 适配版本 EC安卓 9.17.0+",并给出示例:
javascript 复制代码
   function main() {
     let o = ocr.newOcr(); // 实例化OCR对象(9.17+必须)
     // 这里做初始化和识别
     o.releaseAll() // 释放资源
   }
  1. 支持Image和Bitmap双输入
    • Image输入 :用o.ocrImage(img, timeout, extra),参数为image对象(来自images.captureScreen()images.read()等)。
    • Bitmap输入 :用o.ocrBitmap(bitmap, timeout, extra),参数为bitmap对象(Android原生Bitmap,可通过images.getBitmap(img)转换)。
      文档原文:"识别有两种图像方式 image 和bitmap""ocr.ocrBitmap 识别文字 对Bitmap进行OCR",并返回包含label(文字)、confidence(准确度)、x/y/width/height(坐标)的JSON。

三、正确代码示例

1. 9.17+版本:用ocr.newOcr()初始化+PaddleOCR ONNX V4识别
javascript 复制代码
// 脚本停止回调(释放资源)
setStopCallback(function () {
  logi("释放OCR实例")
  if (paddleOcrOnnx) {
    paddleOcrOnnx.releaseAll() // 释放实例资源
    paddleOcrOnnx = null
  }
})

// 初始化环境(申请截图权限)
function initEnv() {
  if (!startEnv()) exit()
  if (!image.requestScreenCapture(10000, 0)) {
    loge("截图权限失败")
    exit()
  }
  sleep(1000) // 等待权限生效
}

// 初始化PaddleOCR ONNX V4(用newOcr实例化)
function initPaddleOcr() {
  // 1. 实例化OCR对象(9.17+必须)
  let paddleOcrOnnx = ocr.newOcr()
  // 2. 配置引擎参数(文档示例)
  let paddleOnnxMap = {
    "type": "paddleOcrOnnxV4", // 引擎类型(文档支持)
    "modelsDir": "", // 模型目录(可选)
    "numThread": 2, // 线程数
    "padding": 60, // 白边
    "maxSideLen": 960 // 最大边长
  }
  // 3. 初始化引擎
  if (!paddleOcrOnnx.initOcr(paddleOnnxMap)) {
    loge("OCR初始化失败:" + paddleOcrOnnx.getErrorMsg())
    exit()
  }
  return paddleOcrOnnx
}

// OCR识别(用Image输入)
function ocrWithImage(ocrInstance) {
  // 截图(生成Image对象)
  let img = image.captureFullScreenEx() // 文档支持的截图函数
  if (!img) {
    loge("截图失败")
    return
  }
  // 识别Image对象(文档函数:ocrImage)
  let result = ocrInstance.ocrImage(img, 20 * 1000, {}) // 超时20秒
  if (result) {
    logd("OCR结果(Image输入):" + JSON.stringify(result))
    // 解析结果(文档格式:label/confidence/x/y/width/height)
    for (let i = 0; i < result.length; i++) {
      let item = result[i]
      logd(`文字:${item.label} 准确度:${item.confidence} 位置:${item.x},${item.y},${item.width},${item.height}`)
    }
  }
  image.recycle(img) // 回收Image资源
}

// OCR识别(用Bitmap输入)
function ocrWithBitmap(ocrInstance) {
  // 截图并转换为Bitmap(文档支持)
  let img = image.captureFullScreenEx()
  let bitmap = images.getBitmap(img) // 转换为Bitmap对象
  image.recycle(img) // 回收Image资源
  
  // 识别Bitmap对象(文档函数:ocrBitmap)
  let result = ocrInstance.ocrBitmap(bitmap, 20 * 1000, {"token": "xxx"})
  if (result) {
    logd("OCR结果(Bitmap输入):" + JSON.stringify(result))
  }
  images.recycleBitmap(bitmap) // 回收Bitmap资源
}

// 主函数
function main() {
  initEnv()
  // 1. 用newOcr实例化(9.17+必须)
  let paddleOcrOnnx = initPaddleOcr()
  // 2. 分别用Image和Bitmap输入识别
  ocrWithImage(paddleOcrOnnx)
  ocrWithBitmap(paddleOcrOnnx)
  // 3. 释放资源(setStopCallback也会处理)
  paddleOcrOnnx.releaseAll()
}

main()

四、总结

  1. 9.17+版本 :必须用ocr.newOcr()实例化OCR对象,再用o.initOcr()初始化引擎。
  2. 输入支持 :同时支持image(高层封装)和bitmap(底层Android Bitmap)两种输入,分别对应o.ocrImage()o.ocrBitmap()
  3. 资源管理 :每个实例需用o.releaseAll()释放,脚本停止时用setStopCallback兜底。
相关推荐
Sour13 天前
PDF翻译卡住不动怎么办?扫描件、OCR 和大文件排查清单
前端·pdf·ocr
旗讯数字13 天前
旗讯 OCR 工业手写识别解决方案|破解车间纸质表单录入难题,加速生产数字化转型
大数据·ocr
XTIOT66613 天前
多形态护照 OCR 读取器传输机制、识别算法与行业落地技术对比
大数据·人工智能·嵌入式硬件·物联网·ocr
天天代码码天天13 天前
用 TensorRT 加速 PP-OCR:一套 C++ DLL + C# 调用的高性能 OCR 推理方案
c++·c#·ocr
2401_8856651914 天前
基于OpenCV的模板匹配OCR实战:银行卡与身份证数字识别完整教程
人工智能·python·opencv·计算机视觉·ocr
东集Seuic14 天前
食品标签新规 GB 7718-2025 倒计时:产线“首件检验”如何用东集小码哥CRUISE Ge2-M跑通 OCR 智能核对?
大数据·人工智能·ocr
小鹏linux14 天前
鸿蒙PC迁移:Tesseract OCR C++ 三方库鸿蒙适配全记录
c++·ocr·harmonyos
开开心心就好14 天前
自动生成小学数学题库支持导出Word
人工智能·安全·leetcode·贪心算法·ocr·音视频·语音识别
FL162386312915 天前
基于C#winform使用纯opencv部署ppocrv5和ppocrv6的onnx模型进行OCR文件检测识别
opencv·c#·ocr
AI人工智能+15 天前
智能文档抽取系统以专业的文档解析底座和大模型智能语义理解能力为核心,洞察文档的语义内涵与逻辑结构
深度学习·自然语言处理·ocr·文档抽取