CV / PPOCR

PPOCR

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

7 downloads
Precisie
RKNN

Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.

Aan de slag

Implementeren
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

Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.

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

Modeldetails

PPOCR op reComputer RK3576 en RK3588

Deze end-to-end OCR-service komt uit reComputer-RK-CV. Hij detecteert tekstpolygonen, sorteert ze in leesvolgorde, corrigeert elk fragment perspectivisch en herkent elke tekstregel.

Modelinformatie

ComponentBestand
Tekstdetectormodel/ppocr_det.rknn
Tekstherkennermodel/ppocr_rec.rknn
Tekenwoordenboekmodel/ppocr_keys_v1.txt
Annotatielettertypemodel/simfang.ttf
UitvoerTekst, betrouwbaarheid, vierhoekscoördinaten, uitsneden en latentie

PPOCR ondersteunt alleen stilstaande beelden. De upstream-service bevat bewust geen besturing voor camera, lokale video of MP4-analyse.

De service uitvoeren

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

Open http://<BOARD_IP>:8000 of /docs.

Opstartargumenten

ArgumentStandaardBeschrijving
--platformVereistrk3576 of rk3588.
--model_dirmodelModellen, woordenboek, lettertype en voorbeeldafbeelding.
--imageGeenStilstaand beeld dat vóór serverstart wordt geanalyseerd.
--outputGeenPad voor geannoteerd JPG/PNG van --image.
--no_serverUitAfsluiten na verwerking van --image.
--host / --port0.0.0.0 / 8000Serviceadres en poort.

Een gekoppelde afbeelding analyseren, de annotatie opslaan, JSON afdrukken en afsluiten:

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"

Optionele velden zijn det_threshold, box_threshold, unclip_ratio, drop_score, max_results en include_crops. Andere endpoints bieden status, configuratie, het nieuwste gestructureerde resultaat, de nieuwste geannoteerde JPEG en interactieve OpenAPI-documentatie.

VeldStandaardBeschrijving
det_threshold0.3Detectiedrempel voor de pixelkaart, van 0 tot 1.
box_threshold0.6Minimale DB-tekstvakscore.
unclip_ratio1.5Uitbreidingsverhouding van het polygoon, van 0.1 tot 5.
drop_score0.5Minimale herkenningsbetrouwbaarheid in de gecombineerde tekst.
max_results100Maximumaantal regio’s dat naar herkenning wordt gestuurd.
include_cropsfalseBase64 JPEG-uitsneden opnemen in resultaatregels.

Belangrijke antwoordvelden:

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

De detectiekwaliteit beïnvloedt herkenning rechtstreeks. Zeer kleine, wazige, gebogen, verticale, contrastarme of sterk gedraaide tekst kan worden gemist, en de eenvoudige leesvolgordeheuristiek past mogelijk niet bij complexe documenten met meerdere kolommen. include_crops=true vergroot het antwoord en is vooral bedoeld voor het webresultatenpaneel. Detector en herkenner zijn pipelinefasen en moeten compatibel blijven met het tekenwoordenboek en de perspectiefuitsnede.

Lokaal bouwen

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

Invoer en uitvoer

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