From d32da95f551fbc514cf2e0bff1156005cd1e779e Mon Sep 17 00:00:00 2001 From: Ludy Date: Thu, 15 Aug 2024 11:43:56 +0200 Subject: [PATCH] tessdata available to local Windows users (#1677) tessdata available to local Windows users --- .../software/SPDF/controller/api/misc/OCRController.java | 8 ++++---- .../software/SPDF/controller/web/OtherWebController.java | 7 ++++++- .../software/SPDF/model/ApplicationProperties.java | 9 +++++++++ src/main/resources/settings.yml.template | 3 ++- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java index bb8a18cd..f3ccabf4 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java @@ -13,8 +13,7 @@ import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -27,6 +26,7 @@ import io.github.pixee.security.Filenames; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import stirling.software.SPDF.model.ApplicationProperties; import stirling.software.SPDF.model.api.misc.ProcessPdfWithOcrRequest; import stirling.software.SPDF.utils.ProcessExecutor; import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult; @@ -37,10 +37,10 @@ import stirling.software.SPDF.utils.WebResponseUtils; @Tag(name = "Misc", description = "Miscellaneous APIs") public class OCRController { - private static final Logger logger = LoggerFactory.getLogger(OCRController.class); + @Autowired ApplicationProperties applicationProperties; public List getAvailableTesseractLanguages() { - String tessdataDir = "/usr/share/tessdata"; + String tessdataDir = applicationProperties.getSystem().getTessdataDir(); File[] files = new File(tessdataDir).listFiles(); if (files == null) { return Collections.emptyList(); diff --git a/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java b/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java index 0e1fdf55..4eab1850 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java @@ -6,6 +6,7 @@ import java.util.Collections; import java.util.List; import java.util.stream.Collectors; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -14,10 +15,14 @@ import org.springframework.web.servlet.ModelAndView; import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.tags.Tag; +import stirling.software.SPDF.model.ApplicationProperties; + @Controller @Tag(name = "Misc", description = "Miscellaneous APIs") public class OtherWebController { + @Autowired ApplicationProperties applicationProperties; + @GetMapping("/compress-pdf") @Hidden public String compressPdfForm(Model model) { @@ -97,7 +102,7 @@ public class OtherWebController { } public List getAvailableTesseractLanguages() { - String tessdataDir = "/usr/share/tessdata"; + String tessdataDir = applicationProperties.getSystem().getTessdataDir(); File[] files = new File(tessdataDir).listFiles(); if (files == null) { return Collections.emptyList(); diff --git a/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java b/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java index 6bad4a66..cbb32cff 100644 --- a/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java +++ b/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java @@ -431,6 +431,15 @@ public class ApplicationProperties { private boolean showUpdate; private Boolean showUpdateOnlyAdmin; private boolean customHTMLFiles; + private String tessdataDir; + + public String getTessdataDir() { + return tessdataDir; + } + + public void setTessdataDir(String tessdataDir) { + this.tessdataDir = tessdataDir; + } public boolean isCustomHTMLFiles() { return customHTMLFiles; diff --git a/src/main/resources/settings.yml.template b/src/main/resources/settings.yml.template index 86d88ea1..5c516c1c 100644 --- a/src/main/resources/settings.yml.template +++ b/src/main/resources/settings.yml.template @@ -54,6 +54,7 @@ system: showUpdate: false # see when a new update is available showUpdateOnlyAdmin: false # Only admins can see when a new update is available, depending on showUpdate it must be set to 'true' customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template html files + tessdataDir: /usr/share/tessdata # Path to the directory containing the Tessdata files. This setting is relevant for Windows systems. For Windows users, this path should be adjusted to point to the appropriate directory where the Tessdata files are stored. ui: appName: '' # Application's visible name @@ -69,4 +70,4 @@ metrics: # Automatically Generated Settings (Do Not Edit Directly) AutomaticallyGenerated: - key: example \ No newline at end of file + key: example