test_inference_js.md 2.8 KB

Web 端基础预测功能测试

Web 端主要基于 Jest-Puppeteer 完成 e2e 测试,其中 Puppeteer 操作 Chrome 完成推理流程,Jest 完成测试流程。

Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome Jest 是一个 JavaScript 测试框架,旨在确保任何 JavaScript 代码的正确性。

环境准备

  • 安装 Node(包含 npm ) (https://nodejs.org/zh-cn/download/)
  • 确认是否安装成功,在命令行执行

    # 显示所安 node 版本号,即表示成功安装
    node -v
    
  • 确认 npm 是否安装成成

    # npm 随着 node 一起安装,一般无需额外安装
    # 显示所安 npm 版本号,即表示成功安装
    npm -v
    

使用

# web 测试环境准备
bash test_tipc/prepare_js.sh 'js_infer'
# web 推理测试
bash test_tipc/test_inference_js.sh

流程设计

paddlejs prepare
  1. 判断 node, npm 是否安装
  2. 下载测试模型,当前检测模型是 ch_PP-OCRv2_det_infer ,识别模型是 ch_PP-OCRv2_rec_infer[1, 3, 32, 320]。如果需要替换模型,可直接将模型文件放在test_tipc/web/models/目录下。
  3. 转换模型, model.pdmodel model.pdiparams 转换为 model.json chunk.dat(检测模型保存地址:test_tipc/web/models/ch_PP-OCRv2/det,识别模型保存地址:test_tipc/web/models/ch_PP-OCRv2/rec)
  4. 安装最新版本 ocr sdk @paddlejs-models/ocr@latest
  5. 安装测试环境依赖 puppeteer、jest、jest-puppeteer,如果检查到已经安装,则不会进行二次安装

###### paddlejs infer test

  1. Jest 执行 server command:python3 -m http.server 9811 开启本地服务
  2. 启动 Jest 测试服务,通过 jest-puppeteer 插件完成 chrome 操作,加载 @paddlejs-models/ocr 脚本完成推理流程
  3. 测试用例为原图识别后的文本结果与预期文本结果(expect.json)进行对比,测试通过有两个标准:

    • 原图识别结果逐字符与预期结果对比,误差不超过 10个字符
    • 原图识别结果每个文本框字符内容与预期结果进行相似度对比,相似度不小于 0.9(全部一致则相似度为1)。

    只有满足上述两个标准,视为测试通过。通过为如下显示: