CV / PPOCR

PPOCR

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

7 Downloads
Präzision
RKNN

Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.

Erste Schritte

Bereitstellen
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

Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.

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

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

KomponenteDatei
Textdetektormodel/ppocr_det.rknn
Texterkennermodel/ppocr_rec.rknn
Zeichenwörterbuchmodel/ppocr_keys_v1.txt
Beschriftungsschriftmodel/simfang.ttf
AusgabeText, 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

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

Öffnen Sie http://<BOARD_IP>:8000 oder /docs.

Startargumente

ArgumentStandardBeschreibung
--platformErforderlichrk3576 oder rk3588.
--model_dirmodelModelle, Wörterbuch, Schrift und Beispielbild.
--imageKein WertStandbild, das vor dem Serverstart analysiert wird.
--outputKein WertPfad für annotiertes JPG/PNG von --image.
--no_serverAusNach Verarbeitung von --image beenden.
--host / --port0.0.0.0 / 8000Dienstadresse und Port.

So analysieren Sie ein eingebundenes Bild, speichern die Annotation, geben JSON aus und beenden:

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

REST API

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

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.

FeldStandardBeschreibung
det_threshold0.3Pixelkarten-Erkennungsschwelle von 0 bis 1.
box_threshold0.6Minimaler DB-Textbox-Wert.
unclip_ratio1.5Polygonerweiterungsverhältnis von 0.1 bis 5.
drop_score0.5Minimale Erkennungskonfidenz im kombinierten Text.
max_results100Maximale Anzahl an Regionen für die Erkennung.
include_cropsfalseBase64-JPEG-Ausschnitte in Ergebniszeilen einschließen.

Wichtige Antwortfelder:

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

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

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

Eingaben und Ausgaben

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