CV / PPOCR

PPOCR

Detects text polygons, rectifies each region, recognizes the text, and returns coordinates and confidence.

7 次下载
精度
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())

模型详情

在 reComputer RK3576 和 RK3588 上运行 PPOCR

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

模型信息

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

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

运行服务

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

启动参数

参数默认值说明
--platform必填rk3576rk3588
--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

REST API

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

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_thresholdbox_thresholdunclip_ratiodrop_scoremax_resultsinclude_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
{
  "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 结果面板。检测器和识别器是流水线阶段,必须与字符字典和透视裁剪逻辑保持兼容。

本地构建

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.