# OCR-API des Pruefstands (M281)

Ein gemeinsames, auf Platte gesichertes Erkennungsmodell. Alle Binaerdaten als base64.

- GET  /ocr/status                -> { prototypes, path }
- GET  /ocr/api                   -> dieser Text
- POST /ocr/train/font            { fontBase64, chars?, size? }   -> { added, prototypes }
- POST /ocr/train/system          { chars?, size? }               -> { fonts, added, prototypes, skipped[] }  (nur mit KUONEN_PDFTOOLS_LOKALE_SCHRIFTEN=1)
- POST /ocr/train/folder          { folder, chars?, size? }       -> { fonts, added, prototypes, skipped[] }  (nur mit KUONEN_PDFTOOLS_LOKALE_SCHRIFTEN=1)
- POST /ocr/train/fonts-folder    { chars?, size? }               -> { fonts, added, prototypes, skipped[] }  (fester Ordner KUONEN_PDFTOOLS_FONTS, kein Schalter noetig)
- POST /ocr/train/document        { imageBase64, text }           -> { added, prototypes }
- POST /ocr/recognize             { imageBase64, maxDistance? }   -> { text, lines[] }
- GET  /ocr/model                 -> die Modelldatei (JSON) zum Sichern
- POST /ocr/model/import          <Modell-JSON als Rumpf>         -> { prototypes }  (ergaenzend)
- POST /ocr/reset                 -> { prototypes: 0 }

Trainieren aus einem Dokument-Paar (Bild + bekannter Text) ist der Weg, dem Projekt eigene
Trainingsdaten zu geben: das Modell lernt die Glyphen der Vorlage und erkennt sie danach.

SICHERHEIT: /ocr/train/system und /ocr/train/folder lesen das SERVER-Dateisystem (folder ein
beliebiges Verzeichnis) und sind deshalb standardmaessig gesperrt (403). Auf dem Entwicklungs-
rechner mit KUONEN_PDFTOOLS_LOKALE_SCHRIFTEN=1 freischalten. Die uebrigen Wege arbeiten auf
hochgeladenen Daten und bleiben ohne die Variable verfuegbar.

DEMO-MODUS (KUONEN_PDFTOOLS_DEMO=1): das geteilte Modell ist schreibgeschuetzt. Trainieren,
Import und Reset antworten mit 403; Erkennen (/ocr/recognize) und Sichern (/ocr/model) bleiben
offen.