CV / PPOCR

PPOCR

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

7 téléchargements
Précision
RKNN

Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.

Pour commencer

Déployer
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

API REST

Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.

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())

Détails du modèle

PPOCR sur reComputer RK3576 et RK3588

Ce service OCR de bout en bout provient de reComputer-RK-CV. Il détecte les polygones de texte, les trie selon l’ordre de lecture, rectifie chaque zone en perspective et reconnaît chaque ligne.

Informations sur le modèle

ComposantFichier
Détecteur de textemodel/ppocr_det.rknn
Module de reconnaissance de textemodel/ppocr_rec.rknn
Dictionnaire de caractèresmodel/ppocr_keys_v1.txt
Police d’annotationmodel/simfang.ttf
SortieTexte, confiance, coordonnées du quadrilatère, zones et latence

PPOCR ne prend en charge que les images fixes. Le service upstream n’inclut volontairement aucun contrôle de caméra, vidéo locale ou analyse MP4.

Exécuter le service

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

Ouvrez http://<BOARD_IP>:8000 ou /docs.

Arguments de démarrage

ArgumentValeur par défautDescription
--platformObligatoirerk3576 ou rk3588.
--model_dirmodelModèles, dictionnaire, police et image d’exemple.
--imageAucunImage fixe analysée avant le démarrage du serveur.
--outputAucunChemin JPG/PNG annoté pour --image.
--no_serverDésactivéQuitter après le traitement de --image.
--host / --port0.0.0.0 / 8000Adresse et port du service.

Pour analyser une image montée, enregistrer l’annotation, afficher le JSON et quitter :

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

REST API

Endpoint : 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"

Les champs facultatifs sont det_threshold, box_threshold, unclip_ratio, drop_score, max_results et include_crops. Les autres endpoints fournissent l’état, la configuration, le dernier résultat structuré, le dernier JPEG annoté et la documentation OpenAPI interactive.

ChampValeur par défautDescription
det_threshold0.3Seuil de détection de la carte de pixels, de 0 à 1.
box_threshold0.6Score minimal d’une boîte de texte DB.
unclip_ratio1.5Rapport d’expansion du polygone, de 0.1 à 5.
drop_score0.5Confiance de reconnaissance minimale incluse dans le texte combiné.
max_results100Nombre maximal de régions envoyées à la reconnaissance.
include_cropsfalseInclure des zones JPEG base64 dans les lignes de résultat.

Champs importants de la réponse :

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}
  }
}

La qualité de détection affecte directement la reconnaissance. Un texte très petit, flou, courbé, vertical, peu contrasté ou fortement pivoté peut être ignoré, et l’heuristique simple d’ordre de lecture peut ne pas convenir aux documents complexes à plusieurs colonnes. include_crops=true augmente la taille de la réponse et vise surtout le panneau Web des résultats. Détecteur et module de reconnaissance sont des étapes du pipeline et doivent rester compatibles avec le dictionnaire et la logique de recadrage en perspective.

Compiler localement

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

Entrées et sorties

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