CV / PPOCR

PPOCR

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

23 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

Démarrage rapide

1. Installer Docker

Exécutez les commandes suivantes sur la carte de développement pour installer 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. Exécuter le projet (une commande, aperçu double mode)

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.

Étape A : télécharger les images

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

Étape B : exécuter en un clic

Pour 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

Pour 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.


🔌 Documentation de l’API

1. Interface OCR (Predict)

Endpoint : POST /api/models/ppocr/predict

Paramètres de requête (Multipart/Form-Data) :

Téléversez file ; vous pouvez utiliser det_threshold, box_threshold, unclip_ratio, drop_score, max_results et include_crops.

Exemples d’utilisation :

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.

Format de réponse (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}
  }
}

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.

2. Interface de configuration système (Config)

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

3. Arguments de ligne de commande

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

🛠️ Guide du développeur (recommandations de production)

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.