From b83465020a7a0e53a6ef85a768118a1aa5e3d498 Mon Sep 17 00:00:00 2001 From: Marcel Date: Tue, 14 Apr 2026 13:07:39 +0200 Subject: [PATCH] fix(backend): store error rate for segmentation training runs setCer() was called for recognition training but not for segmentation. The OCR service now returns cer = 1 - accuracy for segtrain; persist it so the admin panel can display Fehlerrate for both training types. Co-Authored-By: Claude Sonnet 4.6 --- .../org/raddatz/familienarchiv/service/OcrTrainingService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/OcrTrainingService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/OcrTrainingService.java index 9c8f4e5d..820ab2f5 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/OcrTrainingService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/OcrTrainingService.java @@ -162,11 +162,12 @@ public class OcrTrainingService { return Objects.requireNonNull(txTemplate.execute(status -> { run.setStatus(TrainingStatus.DONE); run.setCompletedAt(Instant.now()); + run.setCer(result.cer()); run.setLoss(result.loss()); run.setAccuracy(result.accuracy()); run.setEpochs(result.epochs()); OcrTrainingRun updated = trainingRunRepository.save(run); - log.info("[trainingRun={}] Segmentation training completed — epochs={}", runId, result.epochs()); + log.info("[trainingRun={}] Segmentation training completed — cer={} epochs={}", runId, result.cer(), result.epochs()); return updated; })); } catch (Exception e) {