'use client'
import type { OCRItem } from '../types'
const API_BASE = process.env.NEXT_PUBLIC_KLAUSUR_SERVICE_URL || 'http://localhost:8086'
export default function LabelingTab({
queue,
currentItem,
currentIndex,
correctedText,
setCorrectedText,
onGoToPrev,
onGoToNext,
onConfirm,
onCorrect,
onSkip,
onSelectItem,
}: {
queue: OCRItem[]
currentItem: OCRItem | null
currentIndex: number
correctedText: string
setCorrectedText: (text: string) => void
onGoToPrev: () => void
onGoToNext: () => void
onConfirm: () => void
onCorrect: () => void
onSkip: () => void
onSelectItem: (item: OCRItem, index: number) => void
}) {
return (
{/* Left: Image Viewer */}
Bild
{currentIndex + 1} / {queue.length}
{currentItem ? (

{
const target = e.target as HTMLImageElement
target.style.display = 'none'
}}
/>
) : (
Keine Bilder in der Warteschlange
)}
{/* Right: OCR Text & Actions */}
{/* OCR Result */}
OCR-Ergebnis
{currentItem?.ocr_confidence && (
0.8
? 'bg-green-100 text-green-800'
: currentItem.ocr_confidence > 0.5
? 'bg-yellow-100 text-yellow-800'
: 'bg-red-100 text-red-800'
}`}>
{Math.round(currentItem.ocr_confidence * 100)}% Konfidenz
)}
{currentItem?.ocr_text || Kein OCR-Text}
{/* Correction Input */}
Korrektur
{/* Actions */}
{/* Keyboard Shortcuts */}
Tastaturkuerzel:
Enter = Bestaetigen | S = Ueberspringen
Pfeiltasten = Navigation
{/* Bottom: Queue Preview */}
Warteschlange ({queue.length} Items)
{queue.slice(0, 10).map((item, idx) => (
))}
{queue.length > 10 && (
+{queue.length - 10} mehr
)}
)
}