[Doc] add readme for js packages (#421)

* add contributor

* add package readme

* refine ocr readme

* refine ocr readme
This commit is contained in:
Double_V
2022-10-24 16:18:00 +08:00
committed by GitHub
parent 828a81d81c
commit a823d4eebf
14 changed files with 715 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
[中文版](./README_cn.md)
# detect
detect model is used to detect the position of label frame in the image.
<img src="https://img.shields.io/npm/v/@paddle-js-models/detect?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/detect" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/detect?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/detect" alt="downloads">
# Usage
```js
import * as det from '@paddle-js-models/detect';
// Load model
await det.load();
// Get label index, confidence and coordinates
const res = await det.detect(img);
res.forEach(item => {
// Get label index
console.log(item[0]);
// Get label confidence
console.log(item[1]);
// Get label left coordinates
console.log(item[2]);
// Get label top coordinates
console.log(item[3]);
// Get label right coordinates
console.log(item[4]);
// Get label bottom coordinates
console.log(item[5]);
});
```
# effect
![img.png](https://user-images.githubusercontent.com/43414102/153805288-80f289bf-ca92-4788-b1dd-44854681a03f.png)

View File

@@ -0,0 +1,38 @@
[English](./README.md)
# detect
detect模型用于检测图像中label框选位置。
<img src="https://img.shields.io/npm/v/@paddle-js-models/detect?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/detect" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/detect?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/detect" alt="downloads">
# 使用
```js
import * as det from '@paddle-js-models/detect';
// 模型加载
await det.load();
// 获取label对应索引、置信度、检测框选坐标
const res = await det.detect(img);
res.forEach(item => {
// 获取label对应索引
console.log(item[0]);
// 获取label置信度
console.log(item[1]);
// 获取检测框选left顶点
console.log(item[2]);
// 获取检测框选top顶点
console.log(item[3]);
// 获取检测框选right顶点
console.log(item[4]);
// 获取检测框选bottom顶点
console.log(item[5]);
});
```
# 效果
![img.png](https://user-images.githubusercontent.com/43414102/153805288-80f289bf-ca92-4788-b1dd-44854681a03f.png)

View File

@@ -0,0 +1,38 @@
[中文版](./README_cn.md)
# Facedetect
Facedetect is used for face detection in image. It provides a simple interface. At the same time, you can use your own model.
<img src="https://img.shields.io/npm/v/@paddle-js-models/facedetect?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/facedetect" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/facedetect?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/facedetect" alt="downloads">
# Usage
```js
import { FaceDetector } from '@paddle-js-models/facedetect';
const faceDetector = new FaceDetector();
await faceDetector.init();
// Required parameterimgEle(HTMLImageElement)
// Optional parameter: shrink, threshold
// Result is face area information. It includes left, top, width, height, confidence
const res = await faceDetector.detect(
imgEle,
{ shrink: 0.4, threshold: 0.6 }
);
```
# Performance
+ **multi small-sized face**
<img width="500" src="https://mms-voice-fe.cdn.bcebos.com/pdmodel/face/detection/pic/small.png"/>
+ **single big-sized face**
<img width="500" src="https://mms-voice-fe.cdn.bcebos.com/pdmodel/face/detection/pic/big.png"/>
# Postprocess
This model has a better recognition effect for small-sized faces, and the image will be shrink before prediction, so it is necessary to transform the prediction output data.
<img width="500" src="https://mms-voice-fe.cdn.bcebos.com/pdmodel/face/detection/pic/example.png"/>
The red line indicates the predicted output result, and the green line indicates the converted result. dx dy fw fh are known parameters.
# Reference
[original model link](https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.2/modules/image/face_detection/pyramidbox_lite_mobile)

View File

@@ -0,0 +1,37 @@
[English](./README.md)
# Facedetect
Facedetect 实现图像中的人脸检测,提供的接口简单,支持用户传入模型。
<img src="https://img.shields.io/npm/v/@paddle-js-models/facedetect?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/facedetect" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/facedetect?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/facedetect" alt="downloads">
# 使用
```js
import { FaceDetector } from '@paddle-js-models/facedetect';
const faceDetector = new FaceDetector();
await faceDetector.init();
// 使用时必传图像元素HTMLImageElement支持指定图片缩小比例shrink、置信阈值threshold
// 结果为人脸区域信息,包括:左侧 left上部 top区域宽 width区域高 height置信度 confidence
const res = await faceDetector.detect(
imgEle,
{ shrink: 0.4, threshold: 0.6 }
);
```
# 效果
+ **多个小尺寸人脸**
<img width="500" src="https://mms-voice-fe.cdn.bcebos.com/pdmodel/face/detection/pic/small.png"/>
+ **单个大尺寸人脸**
<img width="500" src="https://mms-voice-fe.cdn.bcebos.com/pdmodel/face/detection/pic/big.png"/>
# 数据后处理
此人脸检测模型对小尺寸人脸具有更好的识别效果,图像在预测前会进行缩小,因此需要对预测输出数据进行变换,及为**数据后处理过程**。示意如下:
<img width="500" src="https://mms-voice-fe.cdn.bcebos.com/pdmodel/face/detection/pic/example.png"/>
红线标识的是预测输出结果,绿线标识的是经过转换后的结果,二者变换过程所涉及到的 dx dy fw fh均为已知量。
# 参考
[源模型链接](https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.2/modules/image/face_detection/pyramidbox_lite_mobile)

View File

@@ -0,0 +1,93 @@
[中文版](./README_cn.md)
# humanseg
A real-time human-segmentation model. You can use it to change background. The output of the model is gray value. Model supplies simple api for users.
Api drawHumanSeg can draw human segmentation with a specified background.
Api blurBackground can draw human segmentation with a blurred origin background.
Api drawMask can draw the background without human.
<img src="https://img.shields.io/npm/v/@paddle-js-models/humanseg?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/humanseg" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/humanseg?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/humanseg" alt="downloads">
# Usage
```js
import * as humanseg from '@paddle-js-models/humanseg';
// load humanseg model, use 398x224 shape model, and preheat
await humanseg.load();
// use 288x160 shape model, preheat and predict faster with a little loss of precision
// await humanseg.load(true, true);
// get the gray value [2, 398, 224] or [2, 288, 160];
const { data } = await humanseg.getGrayValue(img);
// background canvas
const back_canvas = document.getElementById('background') as HTMLCanvasElement;
// draw human segmentation
const canvas1 = document.getElementById('back') as HTMLCanvasElement;
humanseg.drawHumanSeg(data, canvas1, back_canvas) ;
// blur background
const canvas2 = document.getElementById('blur') as HTMLCanvasElement;
humanseg.blurBackground(data, canvas2) ;
// draw the mask with background
const canvas3 = document.getElementById('mask') as HTMLCanvasElement;
humanseg.drawMask(data, canvas3, back_canvas);
```
## gpu pipeline
```js
// 引入 humanseg sdk
import * as humanseg from '@paddle-js-models/humanseg/lib/index_gpu';
// load humanseg model, use 398x224 shape model, and preheat
await humanseg.load();
// use 288x160 shape model, preheat and predict faster with a little loss of precision
// await humanseg.load(true, true);
// background canvas
const back_canvas = document.getElementById('background') as HTMLCanvasElement;
// draw human segmentation
const canvas1 = document.getElementById('back') as HTMLCanvasElement;
await humanseg.drawHumanSeg(input, canvas1, back_canvas) ;
// blur background
const canvas2 = document.getElementById('blur') as HTMLCanvasElement;
await humanseg.blurBackground(input, canvas2) ;
// draw the mask with background
const canvas3 = document.getElementById('mask') as HTMLCanvasElement;
await humanseg.drawMask(input, canvas3, back_canvas);
```
# Online experience
image human segmentationhttps://paddlejs.baidu.com/humanseg
video-streaming human segmentationhttps://paddlejs.baidu.com/humanStream
# Performance
<img width="800" src="https://user-images.githubusercontent.com/10822846/126873788-1e2d4984-274f-45be-8716-2a87ddda8c75.png"/>
<img width="800" src="https://user-images.githubusercontent.com/10822846/126873838-e5b68c9b-279f-4cb4-ae90-6aaaecd06aa4.png"/>
# Used in Video Meeting
<p>
<img width="400" src="https://user-images.githubusercontent.com/10822846/126872499-c3fd680e-a01b-4daa-b0cb-acd3290862bd.gif"/>
<img width="400" src="https://user-images.githubusercontent.com/10822846/126872930-4f4c5c5d-5c51-44fe-b2d6-3f83c4e124bc.png"/>
</p>

View File

@@ -0,0 +1,94 @@
[English](./README.md)
# 人像分割
实时的人像分割模型。使用者可以用于背景替换。需要使用接口 getGrayValue 获取灰度值。
然后使用接口 drawHumanSeg 绘制分割出来的人像,实现背景替换;使用接口 blurBackground 实现背景虚化;也可以使用 drawMask 接口绘制背景,可以配置参数来获取全黑背景或者原图背景。
<img src="https://img.shields.io/npm/v/@paddle-js-models/humanseg?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/humanseg" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/humanseg?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/humanseg" alt="downloads">
# 使用
```js
// 引入 humanseg sdk
import * as humanseg from '@paddle-js-models/humanseg';
// 默认下载 398x224 shape 的模型,默认执行预热
await humanseg.load();
// 指定下载更轻量模型, 该模型 shape 288x160预测过程会更快但会有少许精度损失
// await humanseg.load(true, true);
// 获取分割后的像素 alpha 值,大小为 [2, 398, 224] 或者 [2, 288, 160]
const { data } = await humanseg.getGrayValue(img);
// 获取 background canvas
const back_canvas = document.getElementById('background') as HTMLCanvasElement;
// 背景替换, 使用 back_canvas 作为新背景实现背景替换
const canvas1 = document.getElementById('back') as HTMLCanvasElement;
humanseg.drawHumanSeg(data, canvas1, back_canvas) ;
// 背景虚化
const canvas2 = document.getElementById('blur') as HTMLCanvasElement;
humanseg.blurBackground(data, canvas2) ;
// 绘制人型遮罩,在新背景上隐藏人像
const canvas3 = document.getElementById('mask') as HTMLCanvasElement;
humanseg.drawMask(data, canvas3, back_canvas);
```
## gpu pipeline
```js
// 引入 humanseg sdk
import * as humanseg from '@paddle-js-models/humanseg/lib/index_gpu';
// 默认下载 398x224 shape 的模型,默认执行预热
await humanseg.load();
// 指定下载更轻量模型, 该模型 shape 288x160预测过程会更快但会有少许精度损失
// await humanseg.load(true, true);
// 获取 background canvas
const back_canvas = document.getElementById('background') as HTMLCanvasElement;
// 背景替换, 使用 back_canvas 作为新背景实现背景替换
const canvas1 = document.getElementById('back') as HTMLCanvasElement;
await humanseg.drawHumanSeg(input, canvas1, back_canvas) ;
// 背景虚化
const canvas2 = document.getElementById('blur') as HTMLCanvasElement;
await humanseg.blurBackground(input, canvas2) ;
// 绘制人型遮罩,在新背景上隐藏人像
const canvas3 = document.getElementById('mask') as HTMLCanvasElement;
await humanseg.drawMask(input, canvas3, back_canvas);
```
# 在线体验
图片人像分割https://paddlejs.baidu.com/humanseg
基于视频流人像分割https://paddlejs.baidu.com/humanStream
# 效果
从左到右:原图、背景虚化、背景替换、人型遮罩
<img width="800" src="https://user-images.githubusercontent.com/10822846/126873788-1e2d4984-274f-45be-8716-2a87ddda8c75.png"/>
<img width="800" src="https://user-images.githubusercontent.com/10822846/126873838-e5b68c9b-279f-4cb4-ae90-6aaaecd06aa4.png"/>
# 视频会议
<p>
<img width="400" src="https://user-images.githubusercontent.com/10822846/126872499-c3fd680e-a01b-4daa-b0cb-acd3290862bd.gif"/>
<img width="400" src="https://user-images.githubusercontent.com/10822846/126872930-4f4c5c5d-5c51-44fe-b2d6-3f83c4e124bc.png"/>
</p>

View File

@@ -0,0 +1,93 @@
[中文版](./README_cn.md)
# humanseg
A real-time human-segmentation model. You can use it to change background. The output of the model is gray value. Model supplies simple api for users.
Api drawHumanSeg can draw human segmentation with a specified background.
Api blurBackground can draw human segmentation with a blurred origin background.
Api drawMask can draw the background without human.
<img src="https://img.shields.io/npm/v/@paddle-js-models/humanseg?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/humanseg" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/humanseg?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/humanseg" alt="downloads">
# Usage
```js
import * as humanseg from '@paddle-js-models/humanseg';
// load humanseg model, use 398x224 shape model, and preheat
await humanseg.load();
// use 288x160 shape model, preheat and predict faster with a little loss of precision
// await humanseg.load(true, true);
// get the gray value [2, 398, 224] or [2, 288, 160];
const { data } = await humanseg.getGrayValue(img);
// background canvas
const back_canvas = document.getElementById('background') as HTMLCanvasElement;
// draw human segmentation
const canvas1 = document.getElementById('back') as HTMLCanvasElement;
humanseg.drawHumanSeg(data, canvas1, back_canvas) ;
// blur background
const canvas2 = document.getElementById('blur') as HTMLCanvasElement;
humanseg.blurBackground(data, canvas2) ;
// draw the mask with background
const canvas3 = document.getElementById('mask') as HTMLCanvasElement;
humanseg.drawMask(data, canvas3, back_canvas);
```
## gpu pipeline
```js
// 引入 humanseg sdk
import * as humanseg from '@paddle-js-models/humanseg/lib/index_gpu';
// load humanseg model, use 398x224 shape model, and preheat
await humanseg.load();
// use 288x160 shape model, preheat and predict faster with a little loss of precision
// await humanseg.load(true, true);
// background canvas
const back_canvas = document.getElementById('background') as HTMLCanvasElement;
// draw human segmentation
const canvas1 = document.getElementById('back') as HTMLCanvasElement;
await humanseg.drawHumanSeg(input, canvas1, back_canvas) ;
// blur background
const canvas2 = document.getElementById('blur') as HTMLCanvasElement;
await humanseg.blurBackground(input, canvas2) ;
// draw the mask with background
const canvas3 = document.getElementById('mask') as HTMLCanvasElement;
await humanseg.drawMask(input, canvas3, back_canvas);
```
# Online experience
image human segmentationhttps://paddlejs.baidu.com/humanseg
video-streaming human segmentationhttps://paddlejs.baidu.com/humanStream
# Performance
<img width="800" src="https://user-images.githubusercontent.com/10822846/126873788-1e2d4984-274f-45be-8716-2a87ddda8c75.png"/>
<img width="800" src="https://user-images.githubusercontent.com/10822846/126873838-e5b68c9b-279f-4cb4-ae90-6aaaecd06aa4.png"/>
# Used in Video Meeting
<p>
<img width="400" src="https://user-images.githubusercontent.com/10822846/126872499-c3fd680e-a01b-4daa-b0cb-acd3290862bd.gif"/>
<img width="400" src="https://user-images.githubusercontent.com/10822846/126872930-4f4c5c5d-5c51-44fe-b2d6-3f83c4e124bc.png"/>
</p>

View File

@@ -0,0 +1,94 @@
[English](./README.md)
# 人像分割
实时的人像分割模型。使用者可以用于背景替换。需要使用接口 getGrayValue 获取灰度值。
然后使用接口 drawHumanSeg 绘制分割出来的人像,实现背景替换;使用接口 blurBackground 实现背景虚化;也可以使用 drawMask 接口绘制背景,可以配置参数来获取全黑背景或者原图背景。
<img src="https://img.shields.io/npm/v/@paddle-js-models/humanseg?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/humanseg" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/humanseg?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/humanseg" alt="downloads">
# 使用
```js
// 引入 humanseg sdk
import * as humanseg from '@paddle-js-models/humanseg';
// 默认下载 398x224 shape 的模型,默认执行预热
await humanseg.load();
// 指定下载更轻量模型, 该模型 shape 288x160预测过程会更快但会有少许精度损失
// await humanseg.load(true, true);
// 获取分割后的像素 alpha 值,大小为 [2, 398, 224] 或者 [2, 288, 160]
const { data } = await humanseg.getGrayValue(img);
// 获取 background canvas
const back_canvas = document.getElementById('background') as HTMLCanvasElement;
// 背景替换, 使用 back_canvas 作为新背景实现背景替换
const canvas1 = document.getElementById('back') as HTMLCanvasElement;
humanseg.drawHumanSeg(data, canvas1, back_canvas) ;
// 背景虚化
const canvas2 = document.getElementById('blur') as HTMLCanvasElement;
humanseg.blurBackground(data, canvas2) ;
// 绘制人型遮罩,在新背景上隐藏人像
const canvas3 = document.getElementById('mask') as HTMLCanvasElement;
humanseg.drawMask(data, canvas3, back_canvas);
```
## gpu pipeline
```js
// 引入 humanseg sdk
import * as humanseg from '@paddle-js-models/humanseg/lib/index_gpu';
// 默认下载 398x224 shape 的模型,默认执行预热
await humanseg.load();
// 指定下载更轻量模型, 该模型 shape 288x160预测过程会更快但会有少许精度损失
// await humanseg.load(true, true);
// 获取 background canvas
const back_canvas = document.getElementById('background') as HTMLCanvasElement;
// 背景替换, 使用 back_canvas 作为新背景实现背景替换
const canvas1 = document.getElementById('back') as HTMLCanvasElement;
await humanseg.drawHumanSeg(input, canvas1, back_canvas) ;
// 背景虚化
const canvas2 = document.getElementById('blur') as HTMLCanvasElement;
await humanseg.blurBackground(input, canvas2) ;
// 绘制人型遮罩,在新背景上隐藏人像
const canvas3 = document.getElementById('mask') as HTMLCanvasElement;
await humanseg.drawMask(input, canvas3, back_canvas);
```
# 在线体验
图片人像分割https://paddlejs.baidu.com/humanseg
基于视频流人像分割https://paddlejs.baidu.com/humanStream
# 效果
从左到右:原图、背景虚化、背景替换、人型遮罩
<img width="800" src="https://user-images.githubusercontent.com/10822846/126873788-1e2d4984-274f-45be-8716-2a87ddda8c75.png"/>
<img width="800" src="https://user-images.githubusercontent.com/10822846/126873838-e5b68c9b-279f-4cb4-ae90-6aaaecd06aa4.png"/>
# 视频会议
<p>
<img width="400" src="https://user-images.githubusercontent.com/10822846/126872499-c3fd680e-a01b-4daa-b0cb-acd3290862bd.gif"/>
<img width="400" src="https://user-images.githubusercontent.com/10822846/126872930-4f4c5c5d-5c51-44fe-b2d6-3f83c4e124bc.png"/>
</p>

View File

@@ -0,0 +1,32 @@
[中文版](./README_cn.md)
# mobilenet
mobilenet model can classify img. It provides simple interfaces to use. You can use your own category model to classify img.
<img src="https://img.shields.io/npm/v/@paddle-js-models/mobilenet?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/mobilenet" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/mobilenet?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/mobilenet" alt="downloads">
# Usage
```js
import * as mobilenet from '@paddle-js-models/mobilenet';
// You need to specify your model path and the binary file count
// If your has mean and std params, you need to specify them.
// map is the results your model can classify.
await mobilenet.load({
path,
mean: [0.485, 0.456, 0.406],
std: [0.229, 0.224, 0.225]
}, map);
// get the result the mobilenet model classified.
const res = await mobilenet.classify(img);
```
# Online experience
mobileNethttps://paddlejs.baidu.com/mobilenet
winehttps://paddlejs.baidu.com/wine
# Performance
<img alt="image" src="https://user-images.githubusercontent.com/43414102/156393394-ab1c9e4d-2960-4fcd-ba22-2072fa9b0e9d.png">

View File

@@ -0,0 +1,31 @@
[English](./README.md)
# mobilenet
mobilenet 模型可以对图片进行分类,提供的接口简单,使用者传入自己的分类模型去分类。
<img src="https://img.shields.io/npm/v/@paddle-js-models/mobilenet?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/mobilenet" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/mobilenet?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/mobilenet" alt="downloads">
# 使用
```js
import * as mobilenet from '@paddle-js-models/mobilenet';
// 使用者需要提供分类模型的地址和二进制参数文件个数,且二进制参数文件,参考 chunk_1.dat、chunk_2.dat...
// 模型参数支持 mean 和 std。如果没有则不需要传
// 还需要传递分类映射文件
await mobilenet.load({
path,
mean: [0.485, 0.456, 0.406],
std: [0.229, 0.224, 0.225]
}, map);
// 获取图片分类结果
const res = await mobilenet.classify(img);
```
# 在线体验
1000物品识别https://paddlejs.baidu.com/mobilenet
酒瓶识别https://paddlejs.baidu.com/wine
# 效果
<img alt="image" src="https://user-images.githubusercontent.com/43414102/156393394-ab1c9e4d-2960-4fcd-ba22-2072fa9b0e9d.png">

View File

@@ -0,0 +1,36 @@
[中文版](./README_cn.md)
# OCR
OCR is a text recognition module, which includes two models: ocr_detection and ocr_recognition。 ocr_detection model detects the region of the text in the picture, ocr_recognition model can recognize the characters (Chinese / English / numbers) in each text area.
<img src="https://img.shields.io/npm/v/@paddle-js-models/ocr?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/ocr" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/ocr?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/ocr" alt="downloads">
The module provides a simple and easy-to-use interface. Users only need to upload pictures to obtain text recognition results.
The ocr_detection and ocr_recognition models are compressed from [PP-OCRv3](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_en/PP-OCRv3_introduction_en.md) which released by [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR), which greatly improves the running speed on js at a small loss of accuracy.
The input shape of the ocr_recognition model is [1, 3, 48, 320], and the selected area of the picture text box will be processed before the model reasoning: the width height ratio of the selected area of the picture text box is < = 10, and the whole selected area will be transferred into the recognition model; If the width height ratio of the frame selected area is > 10, the frame selected area will be cropped according to the width, the cropped area will be introduced into the recognition model, and finally the recognition results of each part of the cropped area will be spliced.
# Usage
```js
import * as ocr from '@paddle-js-models/ocr';
// Model initialization
await ocr.init();
// Get the text recognition result API, img is the user's upload picture, and option is an optional parameter
// option.canvas as HTMLElementCanvasif the user needs to draw the selected area of the text box, pass in the canvas element
// option.style as objectif the user needs to configure the canvas style, pass in the style object
// option.style.strokeStyle as stringselect a color for the text box
// option.style.lineWidth as numberwidth of selected line segment in text box
// option.style.fillStyle as stringselect the fill color for the text box
const res = await ocr.recognize(img, option?);
// character recognition results
console.log(res.text);
// text area points
console.log(res.points);
```
# Performance
<img alt="ocr" src="https://user-images.githubusercontent.com/43414102/156380942-2ee5ad8d-d023-4cd3-872c-b18ebdcbb3f3.gif">

View File

@@ -0,0 +1,39 @@
[English](./README.md)
# OCR
ocr 为文本识别模块包括两个模型ocr_detection 和 ocr_recognition。ocr_detection 模型检测图片中文本所在区域ocr_recognition 模型可识别每个文本区域内的字符(中文/英文/数字)。
<img src="https://img.shields.io/npm/v/@paddle-js-models/ocr?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/ocr" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/ocr?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/ocr" alt="downloads">
模块提供简单易用的接口,使用者只需上传图片即可获取文本识别结果。
ocr_detection和ocr_recognition模型是[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)发布[PP-OCRv3](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/PP-OCRv3_introduction.md)模型的压缩版本在损失一小部分精度的情况下大幅提升在js上的运行速度。
ocr_recognition模型输入shape为[1, 3, 48, 320],模型推理前会对图片文本框选区域进行处理:图片文本框选区域宽高比 <= 10将整个框选区域传入识别模型框选区域宽高比 > 10则对框选区域按宽度进行裁剪将裁剪区域传入识别模型最终拼接裁剪区域每一部分的识别结果。
# 使用
```js
import * as ocr from '@paddle-js-models/ocr';
// 模型初始化
await ocr.init();
// 获取文本识别结果APIimg为用户上传图片option为可选参数
// option.canvas as HTMLElementCanvas若用户需要绘制文本框选区域传入canvas元素
// option.style as object若用户需要配置canvas 样式传入style 对象
// option.style.strokeStyle as string文本框选颜色
// option.style.lineWidth as number文本框选线段宽度
// option.style.fillStyle as string文本框选填充颜色
const res = await ocr.recognize(img, option?);
// 识别文字结果
console.log(res.text);
// 文本区域坐标
console.log(res.points);
```
# 在线体验
https://paddlejs.baidu.com/ocr
# 效果
<img alt="ocr" src="https://user-images.githubusercontent.com/43414102/156380942-2ee5ad8d-d023-4cd3-872c-b18ebdcbb3f3.gif">

View File

@@ -0,0 +1,28 @@
[中文版](./README_cn.md)
# ocr_detection
ocr_detection model is used to detect the text area in the image.
<img src="https://img.shields.io/npm/v/@paddle-js-models/ocrdet?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/ocrdet" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/ocrdet?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/ocrdet" alt="downloads">
The ocr_detection model is compressed from [PP-OCRv3](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_en/PP-OCRv3_introduction_en.md) which released by [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR), which greatly improves the running speed on js at a small loss of accuracy.
# Usage
```js
import * as ocr from '@paddle-js-models/ocrdet';
// Load ocr_detect model
await ocr.load();
// Get text area points
const res = await ocr.detect(img);
```
# Online experience
https://paddlejs.baidu.com/ocrdet
# Performance
<img alt="image" src="https://user-images.githubusercontent.com/43414102/156394295-5650b6c5-65c4-42a7-bccc-3ed459577b9d.png">

View File

@@ -0,0 +1,24 @@
[English](./README.md)
# ocr_detection
ocr_detection模型用于检测图像中文字区域。
<img src="https://img.shields.io/npm/v/@paddle-js-models/ocrdet?color=success" alt="version"> <img src="https://img.shields.io/bundlephobia/min/@paddle-js-models/ocrdet" alt="size"> <img src="https://img.shields.io/npm/dm/@paddle-js-models/ocrdet?color=orange" alt="downloads"> <img src="https://img.shields.io/npm/dt/@paddle-js-models/ocrdet" alt="downloads">
ocr_detection模型是[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)发布[PP-OCRv3](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/PP-OCRv3_introduction.md)模型的压缩版本压缩后的模型仅0.47M在损失一小部分精度的情况下大幅提升在js上的运行速度。
# 使用
```js
import * as ocr from '@paddle-js-models/ocrdet';
// ocr_detect模型加载
await ocr.load();
// 获取文字区域坐标
const res = await ocr.detect(img);
```
# 效果
<img alt="image" src="https://user-images.githubusercontent.com/43414102/156394295-5650b6c5-65c4-42a7-bccc-3ed459577b9d.png">