CV / PPOCR
PPOCR
Detects text polygons, rectifies each region, recognizes the text, and returns coordinates and confidence.
Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.
Pour commencer
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 8000API REST
Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "ppocr-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'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
| Composant | Fichier |
|---|---|
| Détecteur de texte | model/ppocr_det.rknn |
| Module de reconnaissance de texte | model/ppocr_rec.rknn |
| Dictionnaire de caractères | model/ppocr_keys_v1.txt |
| Police d’annotation | model/simfang.ttf |
| Sortie | Texte, 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
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 8000RK3588
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 8000Ouvrez http://<BOARD_IP>:8000 ou /docs.
Arguments de démarrage
| Argument | Valeur par défaut | Description |
|---|---|---|
--platform | Obligatoire | rk3576 ou rk3588. |
--model_dir | model | Modèles, dictionnaire, police et image d’exemple. |
--image | Aucun | Image fixe analysée avant le démarrage du serveur. |
--output | Aucun | Chemin JPG/PNG annoté pour --image. |
--no_server | Désactivé | Quitter après le traitement de --image. |
--host / --port | 0.0.0.0 / 8000 | Adresse et port du service. |
Pour analyser une image montée, enregistrer l’annotation, afficher le JSON et quitter :
python web_service.py --platform rk3576 --model_dir model \
--image /data/document.jpg --output /data/document_result.jpg --no_serverREST API
Endpoint : POST /api/models/ppocr/predict
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.
| Champ | Valeur par défaut | Description |
|---|---|---|
det_threshold | 0.3 | Seuil de détection de la carte de pixels, de 0 à 1. |
box_threshold | 0.6 | Score minimal d’une boîte de texte DB. |
unclip_ratio | 1.5 | Rapport d’expansion du polygone, de 0.1 à 5. |
drop_score | 0.5 | Confiance de reconnaissance minimale incluse dans le texte combiné. |
max_results | 100 | Nombre maximal de régions envoyées à la reconnaissance. |
include_crops | false | Inclure des zones JPEG base64 dans les lignes de résultat. |
Champs importants de la réponse :
{
"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
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_ppocrEntrées et sorties
Input: still image. Output: ordered text lines, confidence scores, quadrilaterals, and annotated image.