diff --git a/admin-lehrer/components/grid-editor/useGridEditor.ts b/admin-lehrer/components/grid-editor/useGridEditor.ts index 188357d..3e9288e 100644 --- a/admin-lehrer/components/grid-editor/useGridEditor.ts +++ b/admin-lehrer/components/grid-editor/useGridEditor.ts @@ -28,6 +28,11 @@ export function useGridEditor(sessionId: string | null) { const [ipaMode, setIpaMode] = useState('auto') const [syllableMode, setSyllableMode] = useState('auto') + // OCR Quality Steps (A/B testing toggles) + const [ocrEnhance, setOcrEnhance] = useState(true) + const [ocrMaxCols, setOcrMaxCols] = useState(0) // 0 = unlimited (admin pipeline default) + const [ocrMinConf, setOcrMinConf] = useState(0) // 0 = auto from quality score + // Undo/redo stacks store serialized zone arrays const undoStack = useRef([]) const redoStack = useRef([]) @@ -52,6 +57,9 @@ export function useGridEditor(sessionId: string | null) { const params = new URLSearchParams() params.set('ipa_mode', ipaMode) params.set('syllable_mode', syllableMode) + params.set('enhance', String(ocrEnhance)) + if (ocrMaxCols > 0) params.set('max_cols', String(ocrMaxCols)) + if (ocrMinConf > 0) params.set('min_conf', String(ocrMinConf)) const res = await fetch( `${KLAUSUR_API}/api/v1/ocr-pipeline/sessions/${sessionId}/build-grid?${params}`, { method: 'POST' }, @@ -70,7 +78,7 @@ export function useGridEditor(sessionId: string | null) { } finally { setLoading(false) } - }, [sessionId, ipaMode, syllableMode]) + }, [sessionId, ipaMode, syllableMode, ocrEnhance, ocrMaxCols, ocrMinConf]) const loadGrid = useCallback(async () => { if (!sessionId) return @@ -85,6 +93,9 @@ export function useGridEditor(sessionId: string | null) { const params = new URLSearchParams() params.set('ipa_mode', ipaMode) params.set('syllable_mode', syllableMode) + params.set('enhance', String(ocrEnhance)) + if (ocrMaxCols > 0) params.set('max_cols', String(ocrMaxCols)) + if (ocrMinConf > 0) params.set('min_conf', String(ocrMinConf)) const buildRes = await fetch( `${KLAUSUR_API}/api/v1/ocr-pipeline/sessions/${sessionId}/build-grid?${params}`, { method: 'POST' }, @@ -981,5 +992,11 @@ export function useGridEditor(sessionId: string | null) { setIpaMode, syllableMode, setSyllableMode, + ocrEnhance, + setOcrEnhance, + ocrMaxCols, + setOcrMaxCols, + ocrMinConf, + setOcrMinConf, } } diff --git a/admin-lehrer/components/ocr-pipeline/StepGridReview.tsx b/admin-lehrer/components/ocr-pipeline/StepGridReview.tsx index cb25e45..c19fd97 100644 --- a/admin-lehrer/components/ocr-pipeline/StepGridReview.tsx +++ b/admin-lehrer/components/ocr-pipeline/StepGridReview.tsx @@ -61,6 +61,12 @@ export function StepGridReview({ sessionId, onNext, saveRef }: StepGridReviewPro setIpaMode, syllableMode, setSyllableMode, + ocrEnhance, + setOcrEnhance, + ocrMaxCols, + setOcrMaxCols, + ocrMinConf, + setOcrMinConf, } = useGridEditor(sessionId) const [showImage, setShowImage] = useState(true) @@ -256,6 +262,34 @@ export function StepGridReview({ sessionId, onNext, saveRef }: StepGridReviewPro Alle akzeptieren )} + {/* OCR Quality Steps (A/B Testing) */} + | + + + +