diff --git a/apps/client/src/services/content_renderer.ts b/apps/client/src/services/content_renderer.ts index 40480e073..c65b2ff06 100644 --- a/apps/client/src/services/content_renderer.ts +++ b/apps/client/src/services/content_renderer.ts @@ -46,9 +46,9 @@ async function getRenderedContent(this: {} | { ctx: string }, entity: FNote | FA } else if (type === "code") { await renderCode(entity, $renderedContent); } else if (["image", "canvas", "mindMap"].includes(type)) { - renderImage(entity, $renderedContent, options); + await renderImage(entity, $renderedContent, options); } else if (!options.tooltip && ["file", "pdf", "audio", "video"].includes(type)) { - renderFile(entity, type, $renderedContent); + await renderFile(entity, type, $renderedContent); } else if (type === "mermaid") { await renderMermaid(entity, $renderedContent); } else if (type === "render" && entity instanceof FNote) { @@ -133,7 +133,7 @@ async function renderCode(note: FNote | FAttachment, $renderedContent: JQuery, options: Options = {}) { +async function renderImage(entity: FNote | FAttachment, $renderedContent: JQuery, options: Options = {}) { const encodedTitle = encodeURIComponent(entity.title); let url; @@ -173,9 +173,39 @@ function renderImage(entity: FNote | FAttachment, $renderedContent: JQuery) { +async function addOCRTextIfAvailable(note: FNote, $content: JQuery) { + try { + const response = await fetch(`api/ocr/notes/${note.noteId}/text`); + if (response.ok) { + const data = await response.json(); + if (data.success && data.hasOcr && data.text) { + const $ocrSection = $(` +
+
+ ${t("ocr.extracted_text")} +
+
+
+ `); + + $ocrSection.find('.ocr-content').text(data.text); + $content.append($ocrSection); + } + } + } catch (error) { + // Silently fail if OCR API is not available + console.debug('Failed to fetch OCR text:', error); + } +} + +async function renderFile(entity: FNote | FAttachment, type: string, $renderedContent: JQuery) { let entityType, entityId; if (entity instanceof FNote) { @@ -211,6 +241,11 @@ function renderFile(entity: FNote | FAttachment, type: string, $renderedContent: $content.append($videoPreview); } + // Add OCR text display for file notes + if (entity instanceof FNote) { + await addOCRTextIfAvailable(entity, $content); + } + if (entityType === "notes" && "noteId" in entity) { // TODO: we should make this available also for attachments, but there's a problem with "Open externally" support // in attachment list diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index a5d715e50..fc6b6534d 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -2005,6 +2005,7 @@ "add-column": "Add Column" }, "ocr": { + "extracted_text": "Extracted Text (OCR)", "extracted_text_title": "Extracted Text (OCR)", "loading_text": "Loading OCR text...", "no_text_available": "No OCR text available",