lang
This commit is contained in:
parent
563a72ad95
commit
30c56a0ec9
11 changed files with 148 additions and 67 deletions
|
@ -5,7 +5,7 @@ plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
group = 'stirling.software'
|
group = 'stirling.software'
|
||||||
version = '0.6.0'
|
version = '0.7.0'
|
||||||
sourceCompatibility = '17'
|
sourceCompatibility = '17'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
|
|
@ -46,7 +46,8 @@ public class OCRController {
|
||||||
public ResponseEntity<byte[]> processPdfWithOCR(@RequestPart(required = true, value = "fileInput") MultipartFile inputFile,
|
public ResponseEntity<byte[]> processPdfWithOCR(@RequestPart(required = true, value = "fileInput") MultipartFile inputFile,
|
||||||
@RequestParam("languages") List<String> selectedLanguages, @RequestParam(name = "sidecar", required = false) Boolean sidecar,
|
@RequestParam("languages") List<String> selectedLanguages, @RequestParam(name = "sidecar", required = false) Boolean sidecar,
|
||||||
@RequestParam(name = "deskew", required = false) Boolean deskew, @RequestParam(name = "clean", required = false) Boolean clean,
|
@RequestParam(name = "deskew", required = false) Boolean deskew, @RequestParam(name = "clean", required = false) Boolean clean,
|
||||||
@RequestParam(name = "clean-final", required = false) Boolean cleanFinal, @RequestParam(name = "ocrType", required = false) String ocrType)
|
@RequestParam(name = "clean-final", required = false) Boolean cleanFinal, @RequestParam(name = "ocrType", required = false) String ocrType,
|
||||||
|
@RequestParam(name = "ocrRenderType", required = false, defaultValue = "hocr") String ocrRenderType)
|
||||||
throws IOException, InterruptedException {
|
throws IOException, InterruptedException {
|
||||||
|
|
||||||
// --output-type pdfa
|
// --output-type pdfa
|
||||||
|
@ -54,6 +55,10 @@ public class OCRController {
|
||||||
throw new IOException("Please select at least one language.");
|
throw new IOException("Please select at least one language.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!ocrRenderType.equals("hocr") && !ocrRenderType.equals("sandwich")) {
|
||||||
|
throw new IOException("ocrRenderType wrong");
|
||||||
|
}
|
||||||
|
|
||||||
// Get available Tesseract languages
|
// Get available Tesseract languages
|
||||||
List<String> availableLanguages = getAvailableTesseractLanguages();
|
List<String> availableLanguages = getAvailableTesseractLanguages();
|
||||||
|
|
||||||
|
@ -76,7 +81,8 @@ public class OCRController {
|
||||||
// Run OCR Command
|
// Run OCR Command
|
||||||
String languageOption = String.join("+", selectedLanguages);
|
String languageOption = String.join("+", selectedLanguages);
|
||||||
|
|
||||||
List<String> command = new ArrayList<>(Arrays.asList("ocrmypdf", "--verbose", "2", "--output-type", "pdf", "--pdf-renderer" , "hocr"));
|
|
||||||
|
List<String> command = new ArrayList<>(Arrays.asList("ocrmypdf", "--verbose", "2", "--output-type", "pdf", "--pdf-renderer" , ocrRenderType));
|
||||||
|
|
||||||
if (sidecar != null && sidecar) {
|
if (sidecar != null && sidecar) {
|
||||||
sidecarTextPath = Files.createTempFile("sidecar", ".txt");
|
sidecarTextPath = Files.createTempFile("sidecar", ".txt");
|
||||||
|
|
|
@ -31,10 +31,10 @@ navbar.convert=تحويل
|
||||||
navbar.security=الأمان
|
navbar.security=الأمان
|
||||||
navbar.other=أخرى
|
navbar.other=أخرى
|
||||||
navbar.darkmode=الوضع الداكن
|
navbar.darkmode=الوضع الداكن
|
||||||
navbar.pageOps = عمليات الصفحة
|
navbar.pageOps=عمليات الصفحة
|
||||||
|
|
||||||
home.multiTool.title = أداة متعددة PDF
|
home.multiTool.title=أداة متعددة PDF
|
||||||
home.multiTool.desc = دمج الصفحات وتدويرها وإعادة ترتيبها وإزالتها
|
home.multiTool.desc=دمج الصفحات وتدويرها وإعادة ترتيبها وإزالتها
|
||||||
|
|
||||||
home.merge.title=دمج ملفات
|
home.merge.title=دمج ملفات
|
||||||
home.merge.desc=دمج ملفات PDF متعددة في ملف واحد بسهولة.
|
home.merge.desc=دمج ملفات PDF متعددة في ملف واحد بسهولة.
|
||||||
|
@ -91,24 +91,40 @@ home.ocr.desc=\u064A\u0642\u0648\u0645 \u0628\u0631\u0646\u0627\u0645\u062C \u06
|
||||||
home.extractImages.title=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631
|
home.extractImages.title=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631
|
||||||
home.extractImages.desc=\u064A\u0633\u062A\u062E\u0631\u062C \u062C\u0645\u064A\u0639 \u0627\u0644\u0635\u0648\u0631 \u0645\u0646 \u0645\u0644\u0641 PDF \u0648\u064A\u062D\u0641\u0638\u0647\u0627 \u0641\u064A \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064A\u062F\u064A
|
home.extractImages.desc=\u064A\u0633\u062A\u062E\u0631\u062C \u062C\u0645\u064A\u0639 \u0627\u0644\u0635\u0648\u0631 \u0645\u0646 \u0645\u0644\u0641 PDF \u0648\u064A\u062D\u0641\u0638\u0647\u0627 \u0641\u064A \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064A\u062F\u064A
|
||||||
|
|
||||||
home.pdfToPDFA.title = \u062A\u062D\u0648\u064A\u0644 \u0645\u0644\u0641\u0627\u062A PDF \u0625\u0644\u0649 PDF / A
|
home.pdfToPDFA.title=\u062A\u062D\u0648\u064A\u0644 \u0645\u0644\u0641\u0627\u062A PDF \u0625\u0644\u0649 PDF / A
|
||||||
home.pdfToPDFA.desc = \u062A\u062D\u0648\u064A\u0644 PDF \u0625\u0644\u0649 PDF / A \u0644\u0644\u062A\u062E\u0632\u064A\u0646 \u0637\u0648\u064A\u0644 \u0627\u0644\u0645\u062F\u0649
|
home.pdfToPDFA.desc=\u062A\u062D\u0648\u064A\u0644 PDF \u0625\u0644\u0649 PDF / A \u0644\u0644\u062A\u062E\u0632\u064A\u0646 \u0637\u0648\u064A\u0644 \u0627\u0644\u0645\u062F\u0649
|
||||||
|
|
||||||
|
|
||||||
home.PDFToWord.title = تحويل PDF إلى Word
|
home.PDFToWord.title=تحويل PDF إلى Word
|
||||||
home.PDFToWord.desc = تحويل PDF إلى تنسيقات Word (DOC و DOCX و ODT)
|
home.PDFToWord.desc=تحويل PDF إلى تنسيقات Word (DOC و DOCX و ODT)
|
||||||
|
|
||||||
home.PDFToPresentation.title = PDF للعرض التقديمي
|
home.PDFToPresentation.title=PDF للعرض التقديمي
|
||||||
home.PDFToPresentation.desc = تحويل PDF إلى تنسيقات عرض تقديمي (PPT و PPTX و ODP)
|
home.PDFToPresentation.desc=تحويل PDF إلى تنسيقات عرض تقديمي (PPT و PPTX و ODP)
|
||||||
|
|
||||||
home.PDFToText.title = تحويل PDF إلى نص / RTF
|
home.PDFToText.title=تحويل PDF إلى نص / RTF
|
||||||
home.PDFToText.desc = تحويل PDF إلى تنسيق نص أو RTF
|
home.PDFToText.desc=تحويل PDF إلى تنسيق نص أو RTF
|
||||||
|
|
||||||
home.PDFToHTML.title = تحويل PDF إلى HTML
|
home.PDFToHTML.title=تحويل PDF إلى HTML
|
||||||
home.PDFToHTML.desc = تحويل PDF إلى تنسيق HTML
|
home.PDFToHTML.desc=تحويل PDF إلى تنسيق HTML
|
||||||
|
|
||||||
|
home.PDFToXML.title=تحويل PDF إلى XML
|
||||||
|
home.PDFToXML.desc=تحويل PDF إلى تنسيق XML
|
||||||
|
|
||||||
|
|
||||||
|
home.ScannerImageSplit.title=كشف / انقسام الصور الممسوحة ضوئيًا
|
||||||
|
home.ScannerImageSplit.desc=تقسيم عدة صور من داخل صورة / ملف PDF
|
||||||
|
|
||||||
|
ScannerImageSplit.selectText.1=عتبة الزاوية:
|
||||||
|
ScannerImageSplit.selectText.2=تعيين الحد الأدنى للزاوية المطلقة المطلوبة لتدوير الصورة (افتراضي: 10).
|
||||||
|
ScannerImageSplit.selectText.3=التسامح:
|
||||||
|
ScannerImageSplit.selectText.4=يحدد نطاق تباين اللون حول لون الخلفية المقدر (الافتراضي: 30).
|
||||||
|
ScannerImageSplit.selectText.5=أدنى مساحة:
|
||||||
|
ScannerImageSplit.selectText.6=تعيين الحد الأدنى لمنطقة الصورة (الافتراضي: 10000).
|
||||||
|
ScannerImageSplit.selectText.7=الحد الأدنى لمنطقة المحيط:
|
||||||
|
ScannerImageSplit.selectText.8=تعيين الحد الأدنى لمنطقة المحيط للصورة
|
||||||
|
ScannerImageSplit.selectText.9=حجم الحدود:
|
||||||
|
ScannerImageSplit.selectText.10=يضبط حجم الحدود المضافة والمزالة لمنع الحدود البيضاء في الإخراج (الافتراضي: 1).
|
||||||
|
|
||||||
home.PDFToXML.title = تحويل PDF إلى XML
|
|
||||||
home.PDFToXML.desc = تحويل PDF إلى تنسيق XML
|
|
||||||
|
|
||||||
navbar.settings=\u0625\u0639\u062F\u0627\u062F\u0627\u062A
|
navbar.settings=\u0625\u0639\u062F\u0627\u062F\u0627\u062A
|
||||||
settings.title=\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A
|
settings.title=\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A
|
||||||
|
@ -182,8 +198,8 @@ pdfOrganiser.header=منظم صفحات PDF
|
||||||
pdfOrganiser.submit=إعادة ترتيب الصفحات
|
pdfOrganiser.submit=إعادة ترتيب الصفحات
|
||||||
|
|
||||||
#multiTool
|
#multiTool
|
||||||
multiTool.title = أداة متعددة PDF
|
multiTool.title=أداة متعددة PDF
|
||||||
multiTool.header = أداة متعددة PDF
|
multiTool.header=أداة متعددة PDF
|
||||||
|
|
||||||
#pageRemover
|
#pageRemover
|
||||||
pageRemover.title=مزيل الصفحة
|
pageRemover.title=مزيل الصفحة
|
||||||
|
@ -329,32 +345,32 @@ pdfToPDFA.credit=\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\
|
||||||
pdfToPDFA.submit=\u062A\u062D\u0648\u064A\u0644
|
pdfToPDFA.submit=\u062A\u062D\u0648\u064A\u0644
|
||||||
|
|
||||||
|
|
||||||
PDFToWord.title = تحويل PDF إلى Word
|
PDFToWord.title=تحويل PDF إلى Word
|
||||||
PDFToWord.header = تحويل PDF إلى Word
|
PDFToWord.header=تحويل PDF إلى Word
|
||||||
PDFToWord.selectText.1 = تنسيق ملف الإخراج
|
PDFToWord.selectText.1=تنسيق ملف الإخراج
|
||||||
PDFToWord.credit = تستخدم هذه الخدمة LibreOffice لتحويل الملفات.
|
PDFToWord.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملفات.
|
||||||
PDFToWord.submit = تحويل
|
PDFToWord.submit=تحويل
|
||||||
|
|
||||||
PDFToPresentation.title = PDF للعرض التقديمي
|
PDFToPresentation.title=PDF للعرض التقديمي
|
||||||
PDFToPresentation.header = PDF للعرض التقديمي
|
PDFToPresentation.header=PDF للعرض التقديمي
|
||||||
PDFToPresentation.selectText.1 = تنسيق ملف الإخراج
|
PDFToPresentation.selectText.1=تنسيق ملف الإخراج
|
||||||
PDFToPresentation.credit = تستخدم هذه الخدمة LibreOffice لتحويل الملف.
|
PDFToPresentation.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملف.
|
||||||
PDFToPresentation.submit = تحويل
|
PDFToPresentation.submit=تحويل
|
||||||
|
|
||||||
|
|
||||||
PDFToText.title = تحويل PDF إلى نص / RTF
|
PDFToText.title=تحويل PDF إلى نص / RTF
|
||||||
PDFToText.header = تحويل PDF إلى نص / RTF
|
PDFToText.header=تحويل PDF إلى نص / RTF
|
||||||
PDFToText.selectText.1 = تنسيق ملف الإخراج
|
PDFToText.selectText.1=تنسيق ملف الإخراج
|
||||||
PDFToText.credit = تستخدم هذه الخدمة LibreOffice لتحويل الملفات.
|
PDFToText.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملفات.
|
||||||
PDFToText.submit = تحويل
|
PDFToText.submit=تحويل
|
||||||
|
|
||||||
|
|
||||||
PDFToHTML.title = PDF إلى HTML
|
PDFToHTML.title=PDF إلى HTML
|
||||||
PDFToHTML.header = PDF إلى HTML
|
PDFToHTML.header=PDF إلى HTML
|
||||||
PDFToHTML.credit = تستخدم هذه الخدمة LibreOffice لتحويل الملفات.
|
PDFToHTML.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملفات.
|
||||||
PDFToHTML.submit = تحويل
|
PDFToHTML.submit=تحويل
|
||||||
|
|
||||||
PDFToXML.title = تحويل PDF إلى XML
|
PDFToXML.title=تحويل PDF إلى XML
|
||||||
PDFToXML.header = تحويل PDF إلى XML
|
PDFToXML.header=تحويل PDF إلى XML
|
||||||
PDFToXML.credit = تستخدم هذه الخدمة LibreOffice لتحويل الملفات.
|
PDFToXML.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملفات.
|
||||||
PDFToXML.submit = تحويل
|
PDFToXML.submit=تحويل
|
||||||
|
|
|
@ -104,6 +104,20 @@ home.PDFToHTML.desc=PDF in HTML-Format konvertieren
|
||||||
home.PDFToXML.title=PDF in XML
|
home.PDFToXML.title=PDF in XML
|
||||||
home.PDFToXML.desc=PDF in XML-Format konvertieren
|
home.PDFToXML.desc=PDF in XML-Format konvertieren
|
||||||
|
|
||||||
|
home.ScannerImageSplit.title=Gescannte Fotos erkennen/aufteilen
|
||||||
|
home.ScannerImageSplit.desc=Teilt mehrere Fotos innerhalb eines Fotos/PDF
|
||||||
|
|
||||||
|
ScannerImageSplit.selectText.1=Winkelschwelle:
|
||||||
|
ScannerImageSplit.selectText.2=Legt den minimalen absoluten Winkel fest, der erforderlich ist, damit das Bild gedreht werden kann (Standard: 10).
|
||||||
|
ScannerImageSplit.selectText.3=Toleranz:
|
||||||
|
ScannerImageSplit.selectText.4=Bestimmt den Bereich der Farbvariation um die geschätzte Hintergrundfarbe herum (Standard: 30).
|
||||||
|
ScannerImageSplit.selectText.5=Mindestbereich:
|
||||||
|
ScannerImageSplit.selectText.6=Legt den minimalen Bereichsschwellenwert für ein Foto fest (Standard: 10000).
|
||||||
|
ScannerImageSplit.selectText.7=Minimaler Konturbereich:
|
||||||
|
ScannerImageSplit.selectText.8=Legt den minimalen Konturbereichsschwellenwert für ein Foto fest
|
||||||
|
ScannerImageSplit.selectText.9=Randgröße:
|
||||||
|
ScannerImageSplit.selectText.10=Legt die Größe des hinzugefügten und entfernten Randes fest, um weiße Ränder in der Ausgabe zu verhindern (Standard: 1).
|
||||||
|
|
||||||
|
|
||||||
navbar.settings=Einstellungen
|
navbar.settings=Einstellungen
|
||||||
settings.title=Einstellungen
|
settings.title=Einstellungen
|
||||||
|
|
|
@ -105,10 +105,22 @@ home.PDFToHTML.desc=Convert PDF to HTML format
|
||||||
home.PDFToXML.title=PDF to XML
|
home.PDFToXML.title=PDF to XML
|
||||||
home.PDFToXML.desc=Convert PDF to XML format
|
home.PDFToXML.desc=Convert PDF to XML format
|
||||||
|
|
||||||
home.ScannerSplit.title=Split Scanner photos
|
home.ScannerImageSplit.title=Detect/Split Scanned photos
|
||||||
home.ScannerSplit.desc=Splits multiple photos from within a photo
|
home.ScannerImageSplit.desc=Splits multiple photos from within a photo/PDF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ScannerImageSplit.selectText.1=Angle Threshold:
|
||||||
|
ScannerImageSplit.selectText.2=Sets the minimum absolute angle required for the image to be rotated (default: 10).
|
||||||
|
ScannerImageSplit.selectText.3=Tolerance:
|
||||||
|
ScannerImageSplit.selectText.4=Determines the range of color variation around the estimated background color (default: 30).
|
||||||
|
ScannerImageSplit.selectText.5=Minimum Area:
|
||||||
|
ScannerImageSplit.selectText.6=Sets the minimum area threshold for a photo (default: 10000).
|
||||||
|
ScannerImageSplit.selectText.7=Minimum Contour Area:
|
||||||
|
ScannerImageSplit.selectText.8=Sets the minimum contour area threshold for a photo
|
||||||
|
ScannerImageSplit.selectText.9=Border Size:
|
||||||
|
ScannerImageSplit.selectText.10=Sets the size of the border added and removed to prevent white borders in the output (default: 1).
|
||||||
|
|
||||||
navbar.settings=Settings
|
navbar.settings=Settings
|
||||||
settings.title=Settings
|
settings.title=Settings
|
||||||
settings.update=Update available
|
settings.update=Update available
|
||||||
|
|
|
@ -104,6 +104,19 @@ home.PDFToHTML.desc=Convertir PDF a formato HTML
|
||||||
home.PDFToXML.title=PDF a XML
|
home.PDFToXML.title=PDF a XML
|
||||||
home.PDFToXML.desc=Convertir PDF a formato XML
|
home.PDFToXML.desc=Convertir PDF a formato XML
|
||||||
|
|
||||||
|
home.ScannerImageSplit.title=Detectar/Dividir fotos escaneadas
|
||||||
|
home.ScannerImageSplit.desc=Dividir varias fotos dentro de una foto/PDF
|
||||||
|
|
||||||
|
ScannerImageSplit.selectText.1=Umbral de ángulo:
|
||||||
|
ScannerImageSplit.selectText.2=Establece el ángulo absoluto mínimo requerido para rotar la imagen (predeterminado: 10).
|
||||||
|
ScannerImageSplit.selectText.3=Tolerancia:
|
||||||
|
ScannerImageSplit.selectText.4=Determina el rango de variación de color alrededor del color de fondo estimado (predeterminado: 30).
|
||||||
|
ScannerImageSplit.selectText.5=Área mínima:
|
||||||
|
ScannerImageSplit.selectText.6=Establece el umbral mínimo de área para una foto (predeterminado: 10000).
|
||||||
|
ScannerImageSplit.selectText.7=Área de contorno mínima:
|
||||||
|
ScannerImageSplit.selectText.8=Establece el umbral mínimo del área de contorno para una foto
|
||||||
|
ScannerImageSplit.selectText.9=Tamaño del borde:
|
||||||
|
ScannerImageSplit.selectText.10=Establece el tamaño del borde agregado y eliminado para evitar bordes blancos en la salida (predeterminado: 1).
|
||||||
|
|
||||||
navbar.settings=Ajustes
|
navbar.settings=Ajustes
|
||||||
settings.title=Ajustes
|
settings.title=Ajustes
|
||||||
|
|
|
@ -110,6 +110,20 @@ home.PDFToHTML.desc=Convertir le PDF au format HTML
|
||||||
home.PDFToXML.title=PDF vers XML
|
home.PDFToXML.title=PDF vers XML
|
||||||
home.PDFToXML.desc=Convertir le PDF au format XML
|
home.PDFToXML.desc=Convertir le PDF au format XML
|
||||||
|
|
||||||
|
home.ScannerImageSplit.title=Détecter/diviser les photos numérisées
|
||||||
|
home.ScannerImageSplit.desc=Divise plusieurs photos à partir d'une photo/PDF
|
||||||
|
|
||||||
|
ScannerImageSplit.selectText.1=Seuil d'angle :
|
||||||
|
ScannerImageSplit.selectText.2=Définit l'angle absolu minimum requis pour la rotation de l'image (par défaut : 10).
|
||||||
|
ScannerImageSplit.selectText.3=Tolérance :
|
||||||
|
ScannerImageSplit.selectText.4=Détermine la plage de variation de couleur autour de la couleur d'arrière-plan estimée (par défaut : 30).
|
||||||
|
ScannerImageSplit.selectText.5=Zone minimale :
|
||||||
|
ScannerImageSplit.selectText.6=Définit le seuil de zone minimum pour une photo (par défaut : 10000).
|
||||||
|
ScannerImageSplit.selectText.7=Zone de contour minimale :
|
||||||
|
ScannerImageSplit.selectText.8=Définit le seuil de zone de contour minimum pour une photo
|
||||||
|
ScannerImageSplit.selectText.9=Taille de la bordure :
|
||||||
|
ScannerImageSplit.selectText.10=Définit la taille de la bordure ajoutée et supprimée pour éviter les bordures blanches dans la sortie (par défaut : 1).
|
||||||
|
|
||||||
navbar.settings=Paramètres
|
navbar.settings=Paramètres
|
||||||
settings.title=Paramètres
|
settings.title=Paramètres
|
||||||
settings.update=Mise à jour disponible
|
settings.update=Mise à jour disponible
|
||||||
|
|
|
@ -281,11 +281,9 @@ function compareVersions(version1, version2) {
|
||||||
<a class="dropdown-item" href="#" th:href="@{change-metadata}" th:classappend="${currentPage}=='change-metadata' ? 'active' : ''" th:title="#{home.changeMetadata.desc}">
|
<a class="dropdown-item" href="#" th:href="@{change-metadata}" th:classappend="${currentPage}=='change-metadata' ? 'active' : ''" th:title="#{home.changeMetadata.desc}">
|
||||||
<img class="icon" src="images/clipboard-data.svg" alt="icon" style="width: 16px; height: 16px; vertical-align: middle;"> <span class="icon-text" th:text="#{home.changeMetadata.title}"></span>
|
<img class="icon" src="images/clipboard-data.svg" alt="icon" style="width: 16px; height: 16px; vertical-align: middle;"> <span class="icon-text" th:text="#{home.changeMetadata.title}"></span>
|
||||||
</a>
|
</a>
|
||||||
<a class="dropdown-item" href="#" th:href="@{extract-image-scans}" th:classappend="${currentPage}=='extract-image-scans' ? 'active' : ''" th:title="#{home.ScannerSplit.desc}">
|
<a class="dropdown-item" href="#" th:href="@{extract-image-scans}" th:classappend="${currentPage}=='extract-image-scans' ? 'active' : ''" th:title="#{home.ScannerImageSplit.desc}">
|
||||||
<img class="icon" src="images/scanner.svg" alt="icon" style="width: 16px; height: 16px; vertical-align: middle;"> <span class="icon-text" th:text="#{home.ScannerSplit.title}"></span>
|
<img class="icon" src="images/scanner.svg" alt="icon" style="width: 16px; height: 16px; vertical-align: middle;"> <span class="icon-text" th:text="#{home.ScannerImageSplit.title}"></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ filter: invert(0.2) sepia(2) saturate(50) hue-rotate(190deg);
|
||||||
<div th:replace="~{fragments/card :: card(cardTitle=#{home.PDFToHTML.title}, cardText=#{home.PDFToHTML.desc}, cardLink='pdf-to-html', svgPath='images/filetype-html.svg')}"></div>
|
<div th:replace="~{fragments/card :: card(cardTitle=#{home.PDFToHTML.title}, cardText=#{home.PDFToHTML.desc}, cardLink='pdf-to-html', svgPath='images/filetype-html.svg')}"></div>
|
||||||
<div th:replace="~{fragments/card :: card(cardTitle=#{home.PDFToXML.title}, cardText=#{home.PDFToXML.desc}, cardLink='pdf-to-xml', svgPath='images/filetype-xml.svg')}"></div>
|
<div th:replace="~{fragments/card :: card(cardTitle=#{home.PDFToXML.title}, cardText=#{home.PDFToXML.desc}, cardLink='pdf-to-xml', svgPath='images/filetype-xml.svg')}"></div>
|
||||||
|
|
||||||
<div th:replace="~{fragments/card :: card(cardTitle=#{home.ScannerSplit.title}, cardText=#{home.ScannerSplit.desc}, cardLink='extract-image-scans', svgPath='images/scanner.svg')}"></div>
|
<div th:replace="~{fragments/card :: card(cardTitle=#{home.ScannerImageSplit.title}, cardText=#{home.ScannerImageSplit.desc}, cardLink='extract-image-scans', svgPath='images/scanner.svg')}"></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html th:lang="${#locale.toString()}" th:lang-direction="#{language.direction}" xmlns:th="http://www.thymeleaf.org">
|
<html th:lang="${#locale.toString()}" th:lang-direction="#{language.direction}" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
|
||||||
<th:block th:insert="~{fragments/common :: head(title=#{extractImageScans.title})}"></th:block>
|
<th:block th:insert="~{fragments/common :: head(title=#{home.ScannerImageSplit.title})}"></th:block>
|
||||||
|
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
@ -12,37 +12,38 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<h2 th:text="#{extractImageScans.header}"></h2>
|
<h2 th:text="#{home.ScannerImageSplit.title}"></h2>
|
||||||
|
|
||||||
<form id="multiPdfForm" th:action="@{extract-image-scans}" method="post" enctype="multipart/form-data">
|
<form id="multiPdfForm" th:action="@{extract-image-scans}" method="post" enctype="multipart/form-data">
|
||||||
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='image/*, application/pdf')}"></div>
|
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='image/*, application/pdf')}"></div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="angleThreshold">Angle Threshold:</label>
|
<label for="angleThreshold" th:text="#{ScannerImageSplit.selectText.1}"></label>
|
||||||
<input type="number" class="form-control" id="angleThreshold" name="angle_threshold" value="5">
|
<input type="number" class="form-control" id="angleThreshold" name="angle_threshold" value="5">
|
||||||
<small id="angleThresholdHelp" class="form-text text-muted">Sets the minimum absolute angle required for the image to be rotated (default: 10).</small>
|
<small id="angleThresholdHelp" class="form-text text-muted" th:text="#{ScannerImageSplit.selectText.2}"></small>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="tolerance">Tolerance:</label>
|
<label for="tolerance" th:text="#{ScannerImageSplit.selectText.3}"></label>
|
||||||
<input type="number" class="form-control" id="tolerance" name="tolerance" value="20">
|
<input type="number" class="form-control" id="tolerance" name="tolerance" value="20">
|
||||||
<small id="toleranceHelp" class="form-text text-muted">Determines the range of color variation around the estimated background color (default: 30).</small>
|
<small id="toleranceHelp" class="form-text text-muted" th:text="#{ScannerImageSplit.selectText.4}"></small>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="minArea">Minimum Area:</label>
|
<label for="minArea" th:text="#{ScannerImageSplit.selectText.5}"></label>
|
||||||
<input type="number" class="form-control" id="minArea" name="min_area" value="8000">
|
<input type="number" class="form-control" id="minArea" name="min_area" value="8000">
|
||||||
<small id="minAreaHelp" class="form-text text-muted">Sets the minimum area threshold for a photo (default: 10000).</small>
|
<small id="minAreaHelp" class="form-text text-muted" th:text="#{ScannerImageSplit.selectText.6}"></small>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="minContourArea">Minimum Contour Area:</label>
|
<label for="minContourArea" th:text="#{ScannerImageSplit.selectText.7}"></label>
|
||||||
<input type="number" class="form-control" id="minContourArea" name="min_contour_area" value="500">
|
<input type="number" class="form-control" id="minContourArea" name="min_contour_area" value="500">
|
||||||
<small id="minContourAreaHelp" class="form-text text-muted">Sets the minimum contour area threshold for a photo (default: 500).</small>
|
<small id="minContourAreaHelp" class="form-text text-muted" th:text="#{ScannerImageSplit.selectText.8}"></small>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="borderSize">Border Size:</label>
|
<label for="borderSize" th:text="#{ScannerImageSplit.selectText.9}"></label>
|
||||||
<input type="number" class="form-control" id="borderSize" name="border_size" value="0">
|
<input type="number" class="form-control" id="borderSize" name="border_size" value="1">
|
||||||
<small id="borderSizeHelp" class="form-text text-muted">Sets the size of the border added and removed to prevent white borders in the output (default: 0).</small>
|
<small id="borderSizeHelp" class="form-text text-muted" th:text="#{ScannerImageSplit.selectText.10}"></small>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{extractImageScans.submit}"></button>
|
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{genericSubmit}"></button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<hr>
|
<hr>
|
||||||
<div id="languages">
|
<div id="languages">
|
||||||
<div th:each="language, iterStat : ${languages}">
|
<div th:each="language, iterStat : ${languages}">
|
||||||
<input type="checkbox" class="form-check-input" th:name="languages" th:value="${language}" th:id="${'language-' + language}" />
|
<input type="checkbox" th:name="languages" th:value="${language}" th:id="${'language-' + language}" />
|
||||||
<label class="form-check-label" th:for="${'language-' + language}" th:text="${(language == 'eng') ? 'English' : language}"></label>
|
<label class="form-check-label" th:for="${'language-' + language}" th:text="${(language == 'eng') ? 'English' : language}"></label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -53,6 +53,13 @@
|
||||||
<input type="checkbox" class="form-check-input" name="clean-final" id="clean-final" />
|
<input type="checkbox" class="form-check-input" name="clean-final" id="clean-final" />
|
||||||
<label class="form-check-label" for="clean-final" th:text="#{ocr.selectText.5}"></label>
|
<label class="form-check-label" for="clean-final" th:text="#{ocr.selectText.5}"></label>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Render Type (Advanced)</label>
|
||||||
|
<select class="form-control" name="ocrRenderType">
|
||||||
|
<option value="hocr">HOCR (Latin/Roman alphabet only)</option>
|
||||||
|
<option value="sandwich">Sandwich</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<br>
|
<br>
|
||||||
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{ocr.submit}"></button>
|
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{ocr.submit}"></button>
|
||||||
</form>
|
</form>
|
||||||
|
|
Loading…
Reference in a new issue