CV / PPOCR

PPOCR

End-to-end text detection and recognition using RKNN PPOCR-Det and PPOCR-Rec.

23 次下载
精度
RKNN

选择你正在使用的设备,设置指南和文档将相应更新。

快速开始

部署
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppocr:latest \
  python web_service.py --platform rk3576 --model_dir /app/model --host 0.0.0.0 --port 8000

REST API

使用 REST API 进行推理。复制以下命令。

Curl
curl http://localhost:8080/v1/chat/completions -d '{
  "model": "ppocr-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
import requests

resp = requests.post(
    "http://localhost:8080/v1/chat/completions",
    json={"model": "ppocr-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())

模型详情

快速开始

1. 安装 Docker

在开发板上运行以下命令安装 Docker:

bash
# Docker
curl -fsSL https://get.docker.com -o get-docker.sh
# Aliyun
sudo sh get-docker.sh --mirror Aliyun
# systemd
sudo systemctl enable docker
sudo systemctl start docker

2. 运行项目(单条命令,双模式预览)

此端到端 OCR 服务来自 reComputer-RK-CV。它会检测文本多边形,按阅读顺序排序,对每个裁剪区域进行透视校正,并识别每一行文本。

模型信息

组件文件
文本检测器model/ppocr_det.rknn
文本识别器model/ppocr_rec.rknn
字符字典model/ppocr_keys_v1.txt
标注字体model/simfang.ttf
输出文本、置信度、四边形坐标、裁剪图和延迟

PPOCR 仅支持静态图像。上游服务特意未包含摄像头、本地视频或 MP4 分析控件。

步骤 A:拉取镜像

bash
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppocr:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppocr:latest

步骤 B:一键运行

适用于 RK3576:

bash
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppocr:latest \
  python web_service.py --platform rk3576 --model_dir /app/model \
  --host 0.0.0.0 --port 8000

适用于 RK3588:

bash
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppocr:latest \
  python web_service.py --platform rk3588 --model_dir /app/model \
  --host 0.0.0.0 --port 8000

打开 http://<BOARD_IP>:8000 或 /docs。


🔌 API 文档

1. OCR 接口(Predict)

端点: POST /api/models/ppocr/predict

请求参数(Multipart/Form-Data):

上传 file;可使用 det_threshold、box_threshold、unclip_ratio、drop_score、max_results 和 include_crops。

使用示例:

bash
curl -X POST "http://<BOARD_IP>:8000/api/models/ppocr/predict" \
  -F "file=@document.jpg" -F "drop_score=0.5" \
  -F "include_crops=false"

可选字段包括 det_threshold、box_threshold、unclip_ratio、drop_score、max_results 和 include_crops。其他端点提供健康状态、配置、最新结构化结果、最新标注 JPEG 和交互式 OpenAPI 文档。

字段默认值说明
det_threshold0.3像素图检测阈值,范围为 0 到 1。
box_threshold0.6DB 文本框最低分数。
unclip_ratio1.5多边形扩展比例,范围为 0.1 到 5。
drop_score0.5合并文本中包含的最低识别置信度。
max_results100发送至识别器的最大区域数。
include_cropsfalse在结果行中包含 base64 JPEG 裁剪图。

响应格式(JSON):

json
{
  "success": true,
  "model": "ppocr",
  "result": {
    "text": "Recognized first line\nRecognized second line",
    "lines": [
      {
        "index": 1,
        "text": "Recognized first line",
        "confidence": 0.9621,
        "accepted": true,
        "box": [[42, 31], [286, 29], [287, 72], [43, 74]]
      }
    ],
    "count": 2,
    "timing_ms": {"detection": 54.2, "recognition": 71.4, "total": 129.8}
  }
}

检测质量会直接影响识别。极小、模糊、弯曲、竖排、低对比度或大角度旋转的文本可能无法检测,简单的阅读顺序启发式方法也可能不适用于复杂的多栏文档。include_crops=true 会增大响应体积,主要用于 Web 结果面板。检测器和识别器是流水线阶段,必须与字符字典和透视裁剪逻辑保持兼容。

2. 系统配置接口(Config)

GET /api/config / POST /api/config.

3. 命令行参数

参数默认值说明
--platform必填rk3576 或 rk3588。
--model_dirmodel模型、字典、字体和示例图像。
--image无服务器启动前分析的静态图像。
--output无--image 的标注 JPG/PNG 输出路径。
--no_server关闭处理完 --image 后退出。
--host / --port0.0.0.0 / 8000服务地址和端口。

分析一个已挂载的图像、保存标注、打印 JSON 并退出:

bash
python web_service.py --platform rk3576 --model_dir model \
  --image /data/document.jpg --output /data/document_result.jpg --no_server

🛠️ 开发者指南(生产环境建议)

本地构建

bash
docker build -f docker/rk3576/ppocr.dockerfile \
  -t rk3576-ppocr:local src/rk3576_ppocr

docker build -f docker/rk3588/ppocr.dockerfile \
  -t rk3588-ppocr:local src/rk3588_ppocr

输入与输出

Input: still image. Output: ordered text lines, confidence scores, quadrilaterals, and annotated image.