+ {/* Loading */}
+ {detecting && (
+
+
+ Zeilenerkennung laeuft...
+
+ )}
+
+ {/* Images: overlay vs clean */}
+
+
+
+ Mit Zeilen-Overlay
+
+
+ {rowResult ? (
+ // eslint-disable-next-line @next/next/no-img-element
+
}`})
+ ) : (
+
+ {detecting ? 'Erkenne Zeilen...' : 'Keine Daten'}
+
+ )}
+
+
+
+
+ Entzerrtes Bild
+
+
+ {/* eslint-disable-next-line @next/next/no-img-element */}
+

+
+
+
+
+ {/* Row summary */}
+ {rowResult && (
+
+
+
+ Ergebnis: {rowResult.total_rows} Zeilen erkannt
+
+
+ {rowResult.duration_seconds}s
+
+
+
+ {/* Type summary badges */}
+
+ {Object.entries(rowResult.summary).map(([type, count]) => (
+
+ {type}: {count}
+
+ ))}
+
+
+ {/* Row list */}
+
+ {rowResult.rows.map((row) => (
+
+ R{row.index}
+
+ {row.row_type}
+
+ y={row.y}
+ h={row.height}px
+ {row.word_count} Woerter
+ {row.gap_before > 0 && (
+ gap={row.gap_before}px
+ )}
+
+ ))}
+
+
+ )}
+
+ {/* Controls */}
+ {rowResult && (
+
+
+
+
+
+
+ {/* Ground truth */}
+ {!gtSaved ? (
+ <>
+
setGtNotes(e.target.value)}
+ className="px-2 py-1 text-xs border rounded dark:bg-gray-700 dark:border-gray-600 w-48"
+ />
+
+
+ >
+ ) : (
+
+ Ground Truth gespeichert
+
+ )}
+
+
+
+
+ )}
+
+ {error && (
+
+ {error}
+
+ )}
+
+ )
+}