refactor: rename PaddleOCR → PP-OCRv5 in frontend, remove Kombi-Vergleich tab
Some checks failed
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-school (push) Successful in 27s
CI / test-go-edu-search (push) Successful in 26s
CI / test-python-klausur (push) Failing after 1m53s
CI / test-python-agent-core (push) Successful in 16s
CI / test-nodejs-website (push) Successful in 16s

Since ocr_region_paddle() now runs RapidOCR locally (same PP-OCRv5 models),
the "PaddleOCR (Hetzner)" labels were misleading. Renamed to "PP-OCRv5 (lokal)".
Removed the Kombi-Vergleich tab since both sides would produce identical results.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-03-14 09:11:26 +01:00
parent b83b38e7f2
commit 4a15d46dfd
4 changed files with 26 additions and 61 deletions

View File

@@ -30,11 +30,11 @@ export function PaddleDirectStep({
sessionId,
onNext,
endpoint = 'paddle-direct',
title = 'Paddle Direct',
description = 'PaddleOCR erkennt alle Woerter direkt auf dem Originalbild — ohne Begradigung, Entzerrung oder Zuschnitt.',
title = 'PP-OCRv5 Direct',
description = 'PP-OCRv5 (lokal via RapidOCR) erkennt alle Woerter direkt auf dem Originalbild — ohne Begradigung, Entzerrung oder Zuschnitt.',
icon = '⚡',
buttonLabel = 'PaddleOCR starten',
runningLabel = 'PaddleOCR laeuft...',
buttonLabel = 'PP-OCRv5 starten',
runningLabel = 'PP-OCRv5 laeuft...',
engineKey = 'paddle_direct',
}: PaddleDirectStepProps) {
const [phase, setPhase] = useState<Phase>('idle')

View File

@@ -108,7 +108,7 @@ export function StepWordRecognition({ sessionId, onNext, goToStep, skipHealGaps
setGridResult(null)
try {
// PaddleOCR forces words_first on the backend, so align frontend accordingly
// PP-OCRv5 forces words_first on the backend, so align frontend accordingly
const effectiveGridMethod = eng === 'paddle' ? 'words_first' : gridMethod
const useStream = effectiveGridMethod === 'v2'
@@ -133,7 +133,7 @@ export function StepWordRecognition({ sessionId, onNext, goToStep, skipHealGaps
throw new Error(err.detail || 'Worterkennung fehlgeschlagen')
}
// words_first / paddle returns plain JSON (no streaming)
// words_first / pp-ocrv5 returns plain JSON (no streaming)
if (!useStream) {
const data = await res.json() as GridResult
applyGridResult(data)
@@ -820,7 +820,7 @@ export function StepWordRecognition({ sessionId, onNext, goToStep, skipHealGaps
<option value="auto">Auto (RapidOCR wenn verfuegbar)</option>
<option value="rapid">RapidOCR (ONNX)</option>
<option value="tesseract">Tesseract</option>
<option value="paddle">PaddleOCR (Hetzner)</option>
<option value="paddle">PP-OCRv5 (lokal)</option>
</select>
{/* Pronunciation selector (only for vocab) */}
@@ -846,13 +846,11 @@ export function StepWordRecognition({ sessionId, onNext, goToStep, skipHealGaps
{/* Show which engine was used */}
{usedEngine && (
<span className={`px-2 py-0.5 rounded text-[10px] uppercase font-semibold ${
usedEngine === 'rapid'
usedEngine === 'rapid' || usedEngine === 'paddle'
? 'bg-purple-100 dark:bg-purple-900/30 text-purple-700 dark:text-purple-300'
: usedEngine === 'paddle'
? 'bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300'
: 'bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-400'
}`}>
{usedEngine}
{usedEngine === 'paddle' ? 'pp-ocrv5' : usedEngine}
</span>
)}