diff --git a/frontend/src/routes/documents/[id]/+page.svelte b/frontend/src/routes/documents/[id]/+page.svelte index b9e0e994..5a524328 100644 --- a/frontend/src/routes/documents/[id]/+page.svelte +++ b/frontend/src/routes/documents/[id]/+page.svelte @@ -7,6 +7,7 @@ import TranscriptionEditView from '$lib/components/TranscriptionEditView.svelte' import TranscriptionReadView from '$lib/components/TranscriptionReadView.svelte'; import TranscriptionPanelHeader from '$lib/components/TranscriptionPanelHeader.svelte'; import type { TranscriptionBlockData } from '$lib/types'; +import { getErrorMessage } from '$lib/errors'; let { data } = $props(); @@ -129,6 +130,7 @@ async function reviewToggle(blockId: string) { let ocrRunning = $state(false); let ocrProgressMessage = $state(''); +let ocrErrorMessage = $state(''); let ocrPollTimer = $state | null>(null); function translateOcrProgress(code: string): string { @@ -154,6 +156,7 @@ function translateOcrProgress(code: string): string { async function triggerOcr(scriptType: string) { ocrRunning = true; + ocrErrorMessage = ''; try { const res = await fetch(`/api/documents/${doc.id}/ocr`, { method: 'POST', @@ -165,10 +168,14 @@ async function triggerOcr(scriptType: string) { pollOcrJob(data.jobId); } else { ocrRunning = false; + const body = await res.json().catch(() => null); + const code = (body as { code?: string } | null)?.code; + ocrErrorMessage = code ? getErrorMessage(code) : m.ocr_status_error(); } } catch (e) { console.error('Failed to trigger OCR:', e); ocrRunning = false; + ocrErrorMessage = m.ocr_status_error(); } } @@ -185,6 +192,9 @@ function pollOcrJob(jobId: string) { ocrPollTimer = null; ocrRunning = false; ocrProgressMessage = ''; + if (job.status === 'FAILED') { + ocrErrorMessage = m.ocr_status_error(); + } await loadTranscriptionBlocks(); annotationReloadKey++; panelMode = transcriptionBlocks.length > 0 ? 'read' : 'edit'; @@ -399,6 +409,11 @@ onMount(() => { onClose={() => (transcribeMode = false)} />
+ {#if ocrErrorMessage} +
+

{ocrErrorMessage}

+
+ {/if} {#if ocrRunning}