feat: add Structure step to Kombi mode in OCR Overlay page
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 28s
CI / test-go-edu-search (push) Successful in 33s
CI / test-python-klausur (push) Failing after 2m1s
CI / test-python-agent-core (push) Successful in 19s
CI / test-nodejs-website (push) Successful in 19s
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 28s
CI / test-go-edu-search (push) Successful in 33s
CI / test-python-klausur (push) Failing after 2m1s
CI / test-python-agent-core (push) Successful in 19s
CI / test-nodejs-website (push) Successful in 19s
Insert the Struktur detection step between Zuschneiden and PP-OCRv5+Tesseract in the Kombi pipeline on /ai/ocr-overlay. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,7 @@ import { StepOrientation } from '@/components/ocr-pipeline/StepOrientation'
|
|||||||
import { StepDeskew } from '@/components/ocr-pipeline/StepDeskew'
|
import { StepDeskew } from '@/components/ocr-pipeline/StepDeskew'
|
||||||
import { StepDewarp } from '@/components/ocr-pipeline/StepDewarp'
|
import { StepDewarp } from '@/components/ocr-pipeline/StepDewarp'
|
||||||
import { StepCrop } from '@/components/ocr-pipeline/StepCrop'
|
import { StepCrop } from '@/components/ocr-pipeline/StepCrop'
|
||||||
|
import { StepStructureDetection } from '@/components/ocr-pipeline/StepStructureDetection'
|
||||||
import { StepRowDetection } from '@/components/ocr-pipeline/StepRowDetection'
|
import { StepRowDetection } from '@/components/ocr-pipeline/StepRowDetection'
|
||||||
import { StepWordRecognition } from '@/components/ocr-pipeline/StepWordRecognition'
|
import { StepWordRecognition } from '@/components/ocr-pipeline/StepWordRecognition'
|
||||||
import { OverlayReconstruction } from '@/components/ocr-overlay/OverlayReconstruction'
|
import { OverlayReconstruction } from '@/components/ocr-overlay/OverlayReconstruction'
|
||||||
@@ -74,9 +75,13 @@ export default function OcrOverlayPage() {
|
|||||||
const baseSteps = isKombi ? KOMBI_STEPS : PADDLE_DIRECT_STEPS
|
const baseSteps = isKombi ? KOMBI_STEPS : PADDLE_DIRECT_STEPS
|
||||||
setMode(m)
|
setMode(m)
|
||||||
|
|
||||||
// For Kombi: if grid_editor_result exists, jump to grid editor step (5)
|
// For Kombi: if grid_editor_result exists, jump to grid editor step (6)
|
||||||
|
// If word_result exists but no grid, jump to grid editor (6)
|
||||||
|
// If structure_result exists, jump to kombi step (5)
|
||||||
const hasGrid = isKombi && data.grid_editor_result
|
const hasGrid = isKombi && data.grid_editor_result
|
||||||
const activeStep = hasGrid ? 5 : 4
|
const hasWords = isKombi && data.word_result
|
||||||
|
const hasStructure = isKombi && data.structure_result
|
||||||
|
const activeStep = hasGrid ? 6 : hasWords ? 6 : hasStructure ? 5 : 4
|
||||||
setSteps(
|
setSteps(
|
||||||
baseSteps.map((s, i) => ({
|
baseSteps.map((s, i) => ({
|
||||||
...s,
|
...s,
|
||||||
@@ -246,6 +251,11 @@ export default function OcrOverlayPage() {
|
|||||||
case 3:
|
case 3:
|
||||||
return <StepCrop sessionId={sessionId} onNext={handleNext} />
|
return <StepCrop sessionId={sessionId} onNext={handleNext} />
|
||||||
case 4:
|
case 4:
|
||||||
|
if (mode === 'kombi') {
|
||||||
|
return <StepStructureDetection sessionId={sessionId} onNext={handleNext} />
|
||||||
|
}
|
||||||
|
return <PaddleDirectStep sessionId={sessionId} onNext={handleNext} />
|
||||||
|
case 5:
|
||||||
return mode === 'kombi' ? (
|
return mode === 'kombi' ? (
|
||||||
<PaddleDirectStep
|
<PaddleDirectStep
|
||||||
sessionId={sessionId}
|
sessionId={sessionId}
|
||||||
@@ -258,10 +268,8 @@ export default function OcrOverlayPage() {
|
|||||||
runningLabel="PP-OCRv5 + Tesseract laufen..."
|
runningLabel="PP-OCRv5 + Tesseract laufen..."
|
||||||
engineKey="kombi"
|
engineKey="kombi"
|
||||||
/>
|
/>
|
||||||
) : (
|
) : null
|
||||||
<PaddleDirectStep sessionId={sessionId} onNext={handleNext} />
|
case 6:
|
||||||
)
|
|
||||||
case 5:
|
|
||||||
return mode === 'kombi' ? (
|
return mode === 'kombi' ? (
|
||||||
<GridEditor sessionId={sessionId} onNext={handleNext} />
|
<GridEditor sessionId={sessionId} onNext={handleNext} />
|
||||||
) : null
|
) : null
|
||||||
@@ -521,7 +529,7 @@ export default function OcrOverlayPage() {
|
|||||||
: 'text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300'
|
: 'text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300'
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
Kombi (6 Schritte)
|
Kombi (7 Schritte)
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ export const KOMBI_STEPS: PipelineStep[] = [
|
|||||||
{ id: 'deskew', name: 'Begradigung', icon: '📐', status: 'pending' },
|
{ id: 'deskew', name: 'Begradigung', icon: '📐', status: 'pending' },
|
||||||
{ id: 'dewarp', name: 'Entzerrung', icon: '🔧', status: 'pending' },
|
{ id: 'dewarp', name: 'Entzerrung', icon: '🔧', status: 'pending' },
|
||||||
{ id: 'crop', name: 'Zuschneiden', icon: '✂️', status: 'pending' },
|
{ id: 'crop', name: 'Zuschneiden', icon: '✂️', status: 'pending' },
|
||||||
|
{ id: 'structure', name: 'Struktur', icon: '🔍', status: 'pending' },
|
||||||
{ id: 'kombi', name: 'PP-OCRv5 + Tesseract', icon: '🔀', status: 'pending' },
|
{ id: 'kombi', name: 'PP-OCRv5 + Tesseract', icon: '🔀', status: 'pending' },
|
||||||
{ id: 'grid-editor', name: 'Tabelle', icon: '📊', status: 'pending' },
|
{ id: 'grid-editor', name: 'Tabelle', icon: '📊', status: 'pending' },
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user