CV / PPOCR
PPOCR
Detects text polygons, rectifies each region, recognizes the text, and returns coordinates and confidence.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
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 8000REST API
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
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())Modelldetails
PPOCR auf reComputer RK3576 und RK3588
Dieser End-to-End-OCR-Dienst stammt aus reComputer-RK-CV. Er erkennt Textpolygone, sortiert sie in Lesereihenfolge, entzerrt jeden Ausschnitt perspektivisch und erkennt jede Textzeile.
Modellinformationen
| Komponente | Datei |
|---|---|
| Textdetektor | model/ppocr_det.rknn |
| Texterkenner | model/ppocr_rec.rknn |
| Zeichenwörterbuch | model/ppocr_keys_v1.txt |
| Beschriftungsschrift | model/simfang.ttf |
| Ausgabe | Text, Konfidenz, Viereckkoordinaten, Ausschnitte und Latenz |
PPOCR unterstützt nur Standbilder. Der Upstream-Dienst enthält bewusst keine Kamera-, lokale Video- oder MP4-Analyse-Steuerung.
Dienst starten
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 8000Öffnen Sie http://<BOARD_IP>:8000 oder /docs.
Startargumente
| Argument | Standard | Beschreibung |
|---|---|---|
--platform | Erforderlich | rk3576 oder rk3588. |
--model_dir | model | Modelle, Wörterbuch, Schrift und Beispielbild. |
--image | Kein Wert | Standbild, das vor dem Serverstart analysiert wird. |
--output | Kein Wert | Pfad für annotiertes JPG/PNG von --image. |
--no_server | Aus | Nach Verarbeitung von --image beenden. |
--host / --port | 0.0.0.0 / 8000 | Dienstadresse und Port. |
So analysieren Sie ein eingebundenes Bild, speichern die Annotation, geben JSON aus und beenden:
python web_service.py --platform rk3576 --model_dir model \
--image /data/document.jpg --output /data/document_result.jpg --no_serverREST API
Endpunkt: 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"Optionale Felder sind det_threshold, box_threshold, unclip_ratio, drop_score, max_results und include_crops. Weitere Endpunkte liefern Zustand, Konfiguration, das neueste strukturierte Ergebnis, das neueste annotierte JPEG und interaktive OpenAPI-Dokumentation.
| Feld | Standard | Beschreibung |
|---|---|---|
det_threshold | 0.3 | Pixelkarten-Erkennungsschwelle von 0 bis 1. |
box_threshold | 0.6 | Minimaler DB-Textbox-Wert. |
unclip_ratio | 1.5 | Polygonerweiterungsverhältnis von 0.1 bis 5. |
drop_score | 0.5 | Minimale Erkennungskonfidenz im kombinierten Text. |
max_results | 100 | Maximale Anzahl an Regionen für die Erkennung. |
include_crops | false | Base64-JPEG-Ausschnitte in Ergebniszeilen einschließen. |
Wichtige Antwortfelder:
{
"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}
}
}Die Erkennungsqualität beeinflusst die Texterkennung direkt. Sehr kleiner, unscharfer, gekrümmter, vertikaler, kontrastarmer oder stark gedrehter Text kann fehlen; die einfache Lesereihenfolge eignet sich möglicherweise nicht für komplexe mehrspaltige Dokumente. include_crops=true vergrößert die Antwort und ist hauptsächlich für die Web-Ergebnisansicht gedacht. Detektor und Erkenner sind Pipeline-Stufen und müssen mit Zeichenwörterbuch und Perspektivausschnitt kompatibel bleiben.
Lokal bauen
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_ppocrEingaben und Ausgaben
Input: still image. Output: ordered text lines, confidence scores, quadrilaterals, and annotated image.