diff --git a/.gitignore b/.gitignore
index 9d85e7a8cf7038d61fade0c1f6437b1b82dd1f82..caf886a2b581b5976ea391aca5d7a56041bdbaa8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,3 +29,5 @@ paddleocr.egg-info/
/deploy/android_demo/app/PaddleLite/
/deploy/android_demo/app/.cxx/
/deploy/android_demo/app/cache/
+test_tipc/web/models/
+test_tipc/web/node_modules/
diff --git a/test_tipc/docs/test_inference_js.md b/test_tipc/docs/test_inference_js.md
new file mode 100644
index 0000000000000000000000000000000000000000..c0b7d653aef8c5e583fa86b7947a3b563d03c32f
--- /dev/null
+++ b/test_tipc/docs/test_inference_js.md
@@ -0,0 +1,50 @@
+# 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/)
+* 确认是否安装成功,在命令行执行
+```sh
+# 显示所安 node 版本号,即表示成功安装
+node -v
+```
+* 确认 npm 是否安装成成
+```sh
+# npm 随着 node 一起安装,一般无需额外安装
+# 显示所安 npm 版本号,即表示成功安装
+npm -v
+```
+
+#### 使用
+```sh
+# 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/目录下。
+ - 文本检测模型:https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_det_infer.tar
+ - 文本识别模型:https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_rec_infer.tar
+ - 文本识别模型[1, 3, 32, 320]:https://paddlejs.bj.bcebos.com/models/ch_PP-OCRv2_rec_infer.tar
+ - 保证较为准确的识别效果,需要将文本识别模型导出为输入shape是[1, 3, 32, 320]的静态模型
+ 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)。
+
+ 只有满足上述两个标准,视为测试通过。通过为如下显示:
+
diff --git a/test_tipc/prepare_js.sh b/test_tipc/prepare_js.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7bcdeb35a40245351031f2125dcb4cb6e96bc503
--- /dev/null
+++ b/test_tipc/prepare_js.sh
@@ -0,0 +1,92 @@
+#!/bin/bash
+
+set -o errexit
+set -o nounset
+shopt -s extglob
+
+# paddlejs prepare 主要流程
+# 1. 判断 node, npm 是否安装
+# 2. 下载测试模型,当前检测模型是 ch_PP-OCRv2_det_infer ,识别模型是 ch_PP-OCRv2_rec_infer [1, 3, 32, 320]。如果需要替换模型,可直接将模型文件放在test_tipc/web/models/目录下。
+# - 文本检测模型:https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_det_infer.tar
+# - 文本识别模型:https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_rec_infer.tar
+# - 文本识别模型[1, 3, 32, 320]:https://paddlejs.bj.bcebos.com/models/ch_PP-OCRv2_rec_infer.tar
+# - 保证较为准确的识别效果,需要将文本识别模型导出为输入shape[1, 3, 32, 320]的静态模型
+# 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,如果检查到已经安装,则不会进行二次安装
+
+# 判断是否安装了node
+if ! type node >/dev/null 2>&1; then
+ echo -e "\033[31m node 未安装 \033[0m"
+ exit
+fi
+
+# 判断是否安装了npm
+if ! type npm >/dev/null 2>&1; then
+ echo -e "\033[31m npm 未安装 \033[0m"
+ exit
+fi
+
+# MODE be 'js_infer'
+MODE=$1
+# js_infer MODE , load model file and convert model to js_infer
+if [ ${MODE} != "js_infer" ];then
+ echo "Please change mode to 'js_infer'"
+ exit
+fi
+
+
+# saved_model_name
+det_saved_model_name=ch_PP-OCRv2_det_infer
+rec_saved_model_name=ch_PP-OCRv2_rec_infer
+
+# model_path
+model_path=test_tipc/web/models/
+
+rm -rf $model_path
+
+echo ${model_path}${det_saved_model_name}
+echo ${model_path}${rec_saved_model_name}
+
+# download ocr_det inference model
+wget -nc -P $model_path https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_det_infer.tar
+cd $model_path && tar xf ch_PP-OCRv2_det_infer.tar && cd ../../../
+
+# download ocr_rec inference model
+wget -nc -P $model_path https://paddlejs.bj.bcebos.com/models/ch_PP-OCRv2_rec_infer.tar
+cd $model_path && tar xf ch_PP-OCRv2_rec_infer.tar && cd ../../../
+
+MYDIR=`pwd`
+echo $MYDIR
+
+pip3 install paddlejsconverter
+
+# convert inference model to web model: model.json、chunk.dat
+paddlejsconverter \
+ --modelPath=$model_path$det_saved_model_name/inference.pdmodel \
+ --paramPath=$model_path$det_saved_model_name/inference.pdiparams \
+ --outputDir=$model_path$det_saved_model_name/ \
+
+paddlejsconverter \
+ --modelPath=$model_path$rec_saved_model_name/inference.pdmodel \
+ --paramPath=$model_path$rec_saved_model_name/inference.pdiparams \
+ --outputDir=$model_path$rec_saved_model_name/ \
+
+# always install latest ocr sdk
+cd test_tipc/web
+echo -e "\033[33m Installing the latest ocr sdk... \033[0m"
+npm install @paddlejs-models/ocr@latest
+npm info @paddlejs-models/ocr
+echo -e "\033[32m The latest ocr sdk installed completely.!~ \033[0m"
+
+# install dependencies
+if [ `npm list --dept 0 | grep puppeteer | wc -l` -ne 0 ] && [ `npm list --dept 0 | grep jest | wc -l` -ne 0 ];then
+ echo -e "\033[32m Dependencies have installed \033[0m"
+else
+ echo -e "\033[33m Installing dependencies ... \033[0m"
+ npm install jest jest-puppeteer puppeteer
+ echo -e "\033[32m Dependencies installed completely.!~ \033[0m"
+fi
+
+# del package-lock.json
+rm package-lock.json
diff --git a/test_tipc/test_inference_js.sh b/test_tipc/test_inference_js.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e96b187526a390391380a9000988d42ecd3aab38
--- /dev/null
+++ b/test_tipc/test_inference_js.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+set -o errexit
+set -o nounset
+
+cd test_tipc/web
+# run ocr test in chrome
+./node_modules/.bin/jest --config ./jest.config.js
diff --git a/test_tipc/web/expect.json b/test_tipc/web/expect.json
new file mode 100644
index 0000000000000000000000000000000000000000..a60c80a7c855729c7e1fd5f21d18449d33d2c7af
--- /dev/null
+++ b/test_tipc/web/expect.json
@@ -0,0 +1,20 @@
+{
+ "text": [
+ "纯臻营养护发素",
+ "产品信息/参数",
+ "(45元/每公斤,100公斤起订)",
+ "每瓶22元,1000瓶起订)",
+ "【品牌】:代加工方式/OEMODM",
+ "【品名】:纯臻营养护发素",
+ "【产品编号】:YM-X-3011",
+ "ODMOEM",
+ "【净含量】:220ml",
+ "【适用人群】:适合所有肤质",
+ "【主要成分】:鲸蜡硬脂醇、燕麦β-葡聚",
+ "糖、椰油酰胺丙基甜菜碱、泛醌",
+ "(成品包材)",
+ "【主要功能】:可紧致头发磷层,从而达到",
+ "即时持久改善头发光泽的效果,给干燥的头",
+ "发足够的滋养"
+ ]
+}
diff --git a/test_tipc/web/index.html b/test_tipc/web/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..39921fbf0fddc00efe516d85e2b80d0467e87d39
--- /dev/null
+++ b/test_tipc/web/index.html
@@ -0,0 +1,13 @@
+
+
+