CV / PPOCR
PPOCR
End-to-end text detection and recognition using RKNN PPOCR-Det and PPOCR-Rec.
Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.
Aan de slag
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
Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.
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())Modeldetails
Snel aan de slag
1. Docker installeren
Voer de volgende opdrachten op het ontwikkelbord uit om Docker te installeren:
# 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 docker2. Het project uitvoeren (één opdracht, voorbeeld in twee modi)
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
| Component | Bestand |
|---|---|
| Tekstdetector | model/ppocr_det.rknn |
| Tekstherkenner | model/ppocr_rec.rknn |
| Tekenwoordenboek | model/ppocr_keys_v1.txt |
| Annotatielettertype | model/simfang.ttf |
| Uitvoer | Tekst, 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.
Stap A: Images ophalen
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:latestStap B: Met één klik uitvoeren
Voor 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 8000Voor RK3588:
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 8000Open http://<BOARD_IP>:8000 of /docs.
🔌 API-documentatie
1. OCR-interface (Predict)
Endpoint: POST /api/models/ppocr/predict
Aanvraagparameters (Multipart/Form-Data):
Upload file; gebruik desgewenst det_threshold, box_threshold, unclip_ratio, drop_score, max_results en include_crops.
Gebruiksvoorbeelden:
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.
| Veld | Standaard | Beschrijving |
|---|---|---|
det_threshold | 0.3 | Detectiedrempel voor de pixelkaart, van 0 tot 1. |
box_threshold | 0.6 | Minimale DB-tekstvakscore. |
unclip_ratio | 1.5 | Uitbreidingsverhouding van het polygoon, van 0.1 tot 5. |
drop_score | 0.5 | Minimale herkenningsbetrouwbaarheid in de gecombineerde tekst. |
max_results | 100 | Maximumaantal regio’s dat naar herkenning wordt gestuurd. |
include_crops | false | Base64 JPEG-uitsneden opnemen in resultaatregels. |
Antwoordformaat (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.
2. Interface voor systeemconfiguratie (Config)
GET /api/config / POST /api/config.
3. Opdrachtregelargumenten
| Argument | Standaard | Beschrijving |
|---|---|---|
--platform | Vereist | rk3576 of rk3588. |
--model_dir | model | Modellen, woordenboek, lettertype en voorbeeldafbeelding. |
--image | Geen | Stilstaand beeld dat vóór serverstart wordt geanalyseerd. |
--output | Geen | Pad voor geannoteerd JPG/PNG van --image. |
--no_server | Uit | Afsluiten na verwerking van --image. |
--host / --port | 0.0.0.0 / 8000 | Serviceadres en poort. |
Een gekoppelde afbeelding analyseren, de annotatie opslaan, JSON afdrukken en afsluiten:
python web_service.py --platform rk3576 --model_dir model \
--image /data/document.jpg --output /data/document_result.jpg --no_server🛠️ Ontwikkelaarshandleiding (aanbevelingen voor productie)
Lokaal bouwen
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_ppocrInvoer en uitvoer
Input: still image. Output: ordered text lines, confidence scores, quadrilaterals, and annotated image.