diff --git a/admin-lehrer/components/ocr-pipeline/DewarpControls.tsx b/admin-lehrer/components/ocr-pipeline/DewarpControls.tsx
index 02c3c1e..b5c0308 100644
--- a/admin-lehrer/components/ocr-pipeline/DewarpControls.tsx
+++ b/admin-lehrer/components/ocr-pipeline/DewarpControls.tsx
@@ -29,7 +29,7 @@ export function DewarpControls({
onNext,
isApplying,
}: DewarpControlsProps) {
- const [manualScale, setManualScale] = useState(0)
+ const [manualScale, setManualScale] = useState(100)
const [gtFeedback, setGtFeedback] = useState<'correct' | 'incorrect' | null>(null)
const [gtNotes, setGtNotes] = useState('')
const [gtSaved, setGtSaved] = useState(false)
@@ -94,22 +94,22 @@ export function DewarpControls({
{/* Manual scale slider */}
{dewarpResult && (
-
Manuelle Staerke
+
Korrekturstaerke
- -3.0
+ 0%
setManualScale(parseFloat(e.target.value))}
+ onChange={(e) => setManualScale(parseInt(e.target.value))}
className="flex-1 h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700 accent-teal-500"
/>
- +3.0
- {manualScale.toFixed(1)}
+ 200%
+ {manualScale}%
- 0 = keine Korrektur, positiv = nach rechts entzerren, negativ = nach links
+ 100% = automatisch erkannte Korrektur, 0% = keine, 200% = doppelt so stark
)}
diff --git a/klausur-service/backend/cv_vocab_pipeline.py b/klausur-service/backend/cv_vocab_pipeline.py
index 6b05018..d70f9ce 100644
--- a/klausur-service/backend/cv_vocab_pipeline.py
+++ b/klausur-service/backend/cv_vocab_pipeline.py
@@ -668,13 +668,13 @@ def dewarp_image_manual(img: np.ndarray, displacement_map: np.ndarray,
Args:
img: BGR image (deskewed, before dewarp).
displacement_map: The displacement map from auto-dewarp.
- scale: Manual scale factor (-3.0 to +3.0).
+ scale: Fraction of auto-detected correction (0.0 = none, 1.0 = auto, 2.0 = double).
Returns:
Corrected image.
"""
- scale = max(-3.0, min(3.0, scale))
- if abs(scale) < 0.01:
+ scale = max(0.0, min(2.0, scale))
+ if scale < 0.01:
return img
return _apply_displacement_map(img, displacement_map, scale=scale)
diff --git a/klausur-service/backend/ocr_pipeline_api.py b/klausur-service/backend/ocr_pipeline_api.py
index 54eebac..07e57f4 100644
--- a/klausur-service/backend/ocr_pipeline_api.py
+++ b/klausur-service/backend/ocr_pipeline_api.py
@@ -400,9 +400,9 @@ async def manual_dewarp(session_id: str, req: ManualDewarpRequest):
if deskewed_bgr is None:
raise HTTPException(status_code=400, detail="Deskew must be completed before dewarp")
- scale = max(-3.0, min(3.0, req.scale))
+ scale = max(0.0, min(2.0, req.scale))
- if displacement_map is None or abs(scale) < 0.01:
+ if displacement_map is None or scale < 0.01:
# No displacement map or zero scale — use deskewed as-is
dewarped_bgr = deskewed_bgr
else: