diff --git a/ui/designer/tabs/tabOcr/tabOcr_B30.ui b/ui/designer/tabs/tabOcr/tabOcr_B30.ui index 42df52c..5965a79 100644 --- a/ui/designer/tabs/tabOcr/tabOcr_B30.ui +++ b/ui/designer/tabs/tabOcr/tabOcr_B30.ui @@ -59,11 +59,11 @@ - siftDatabaseSelector.title + phashDatabaseSelector.title - + diff --git a/ui/designer/tabs/tabOcr/tabOcr_B30_ui.py b/ui/designer/tabs/tabOcr/tabOcr_B30_ui.py index adf42f1..be0f290 100644 --- a/ui/designer/tabs/tabOcr/tabOcr_B30_ui.py +++ b/ui/designer/tabs/tabOcr/tabOcr_B30_ui.py @@ -1,126 +1,126 @@ -# -*- coding: utf-8 -*- - -################################################################################ -## Form generated from reading UI file 'tabOcr_B30.ui' -## -## Created by: Qt User Interface Compiler version 6.5.1 -## -## WARNING! All changes made in this file will be lost when recompiling UI file! -################################################################################ - -from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, - QMetaObject, QObject, QPoint, QRect, - QSize, QTime, QUrl, Qt) -from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, - QFont, QFontDatabase, QGradient, QIcon, - QImage, QKeySequence, QLinearGradient, QPainter, - QPalette, QPixmap, QRadialGradient, QTransform) -from PySide6.QtWidgets import (QApplication, QComboBox, QGroupBox, QHBoxLayout, - QSizePolicy, QVBoxLayout, QWidget) - -from ui.implements.components.fileSelector import FileSelector -from ui.implements.components.ocrQueue import OcrQueue - -class Ui_TabOcr_B30(object): - def setupUi(self, TabOcr_B30): - if not TabOcr_B30.objectName(): - TabOcr_B30.setObjectName(u"TabOcr_B30") - TabOcr_B30.resize(555, 461) - TabOcr_B30.setWindowTitle(u"TabOcr_B30") - self.verticalLayout_3 = QVBoxLayout(TabOcr_B30) - self.verticalLayout_3.setObjectName(u"verticalLayout_3") - self.groupBox = QGroupBox(TabOcr_B30) - self.groupBox.setObjectName(u"groupBox") - self.verticalLayout = QVBoxLayout(self.groupBox) - self.verticalLayout.setObjectName(u"verticalLayout") - self.b30TypeComboBox = QComboBox(self.groupBox) - self.b30TypeComboBox.setObjectName(u"b30TypeComboBox") - - self.verticalLayout.addWidget(self.b30TypeComboBox) - - - self.verticalLayout_3.addWidget(self.groupBox) - - self.horizontalLayout = QHBoxLayout() - self.horizontalLayout.setObjectName(u"horizontalLayout") - self.groupBox_3 = QGroupBox(TabOcr_B30) - self.groupBox_3.setObjectName(u"groupBox_3") - self.verticalLayout_4 = QVBoxLayout(self.groupBox_3) - self.verticalLayout_4.setObjectName(u"verticalLayout_4") - self.knnModelSelector = FileSelector(self.groupBox_3) - self.knnModelSelector.setObjectName(u"knnModelSelector") - - self.verticalLayout_4.addWidget(self.knnModelSelector) - - - self.horizontalLayout.addWidget(self.groupBox_3) - - self.groupBox_5 = QGroupBox(TabOcr_B30) - self.groupBox_5.setObjectName(u"groupBox_5") - self.verticalLayout_6 = QVBoxLayout(self.groupBox_5) - self.verticalLayout_6.setObjectName(u"verticalLayout_6") - self.b30KnnModelSelector = FileSelector(self.groupBox_5) - self.b30KnnModelSelector.setObjectName(u"b30KnnModelSelector") - - self.verticalLayout_6.addWidget(self.b30KnnModelSelector) - - - self.horizontalLayout.addWidget(self.groupBox_5) - - - self.verticalLayout_3.addLayout(self.horizontalLayout) - - self.horizontalLayout_3 = QHBoxLayout() - self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") - self.groupBox_4 = QGroupBox(TabOcr_B30) - self.groupBox_4.setObjectName(u"groupBox_4") - self.verticalLayout_5 = QVBoxLayout(self.groupBox_4) - self.verticalLayout_5.setObjectName(u"verticalLayout_5") - self.siftDatabaseSelector = FileSelector(self.groupBox_4) - self.siftDatabaseSelector.setObjectName(u"siftDatabaseSelector") - - self.verticalLayout_5.addWidget(self.siftDatabaseSelector) - - - self.horizontalLayout_3.addWidget(self.groupBox_4) - - self.groupBox_2 = QGroupBox(TabOcr_B30) - self.groupBox_2.setObjectName(u"groupBox_2") - self.verticalLayout_2 = QVBoxLayout(self.groupBox_2) - self.verticalLayout_2.setObjectName(u"verticalLayout_2") - self.imageSelector = FileSelector(self.groupBox_2) - self.imageSelector.setObjectName(u"imageSelector") - - self.verticalLayout_2.addWidget(self.imageSelector) - - - self.horizontalLayout_3.addWidget(self.groupBox_2) - - - self.verticalLayout_3.addLayout(self.horizontalLayout_3) - - self.ocrQueue = OcrQueue(TabOcr_B30) - self.ocrQueue.setObjectName(u"ocrQueue") - sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ocrQueue.sizePolicy().hasHeightForWidth()) - self.ocrQueue.setSizePolicy(sizePolicy) - - self.verticalLayout_3.addWidget(self.ocrQueue) - - - self.retranslateUi(TabOcr_B30) - - QMetaObject.connectSlotsByName(TabOcr_B30) - # setupUi - - def retranslateUi(self, TabOcr_B30): - self.groupBox.setTitle(QCoreApplication.translate("TabOcr_B30", u"b30type", None)) - self.groupBox_3.setTitle(QCoreApplication.translate("TabOcr_B30", u"knnModelSelector.title", None)) - self.groupBox_5.setTitle(QCoreApplication.translate("TabOcr_B30", u"b30KnnModelSelector.title", None)) - self.groupBox_4.setTitle(QCoreApplication.translate("TabOcr_B30", u"siftDatabaseSelector.title", None)) - self.groupBox_2.setTitle(QCoreApplication.translate("TabOcr_B30", u"imageSelector.title", None)) - pass - # retranslateUi - +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file 'tabOcr_B30.ui' +## +## Created by: Qt User Interface Compiler version 6.5.2 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, + QMetaObject, QObject, QPoint, QRect, + QSize, QTime, QUrl, Qt) +from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, + QFont, QFontDatabase, QGradient, QIcon, + QImage, QKeySequence, QLinearGradient, QPainter, + QPalette, QPixmap, QRadialGradient, QTransform) +from PySide6.QtWidgets import (QApplication, QComboBox, QGroupBox, QHBoxLayout, + QSizePolicy, QVBoxLayout, QWidget) + +from ui.implements.components.fileSelector import FileSelector +from ui.implements.components.ocrQueue import OcrQueue + +class Ui_TabOcr_B30(object): + def setupUi(self, TabOcr_B30): + if not TabOcr_B30.objectName(): + TabOcr_B30.setObjectName(u"TabOcr_B30") + TabOcr_B30.resize(555, 461) + TabOcr_B30.setWindowTitle(u"TabOcr_B30") + self.verticalLayout_3 = QVBoxLayout(TabOcr_B30) + self.verticalLayout_3.setObjectName(u"verticalLayout_3") + self.groupBox = QGroupBox(TabOcr_B30) + self.groupBox.setObjectName(u"groupBox") + self.verticalLayout = QVBoxLayout(self.groupBox) + self.verticalLayout.setObjectName(u"verticalLayout") + self.b30TypeComboBox = QComboBox(self.groupBox) + self.b30TypeComboBox.setObjectName(u"b30TypeComboBox") + + self.verticalLayout.addWidget(self.b30TypeComboBox) + + + self.verticalLayout_3.addWidget(self.groupBox) + + self.horizontalLayout = QHBoxLayout() + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.groupBox_3 = QGroupBox(TabOcr_B30) + self.groupBox_3.setObjectName(u"groupBox_3") + self.verticalLayout_4 = QVBoxLayout(self.groupBox_3) + self.verticalLayout_4.setObjectName(u"verticalLayout_4") + self.knnModelSelector = FileSelector(self.groupBox_3) + self.knnModelSelector.setObjectName(u"knnModelSelector") + + self.verticalLayout_4.addWidget(self.knnModelSelector) + + + self.horizontalLayout.addWidget(self.groupBox_3) + + self.groupBox_5 = QGroupBox(TabOcr_B30) + self.groupBox_5.setObjectName(u"groupBox_5") + self.verticalLayout_6 = QVBoxLayout(self.groupBox_5) + self.verticalLayout_6.setObjectName(u"verticalLayout_6") + self.b30KnnModelSelector = FileSelector(self.groupBox_5) + self.b30KnnModelSelector.setObjectName(u"b30KnnModelSelector") + + self.verticalLayout_6.addWidget(self.b30KnnModelSelector) + + + self.horizontalLayout.addWidget(self.groupBox_5) + + + self.verticalLayout_3.addLayout(self.horizontalLayout) + + self.horizontalLayout_3 = QHBoxLayout() + self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") + self.groupBox_4 = QGroupBox(TabOcr_B30) + self.groupBox_4.setObjectName(u"groupBox_4") + self.verticalLayout_5 = QVBoxLayout(self.groupBox_4) + self.verticalLayout_5.setObjectName(u"verticalLayout_5") + self.phashDatabaseSelector = FileSelector(self.groupBox_4) + self.phashDatabaseSelector.setObjectName(u"phashDatabaseSelector") + + self.verticalLayout_5.addWidget(self.phashDatabaseSelector) + + + self.horizontalLayout_3.addWidget(self.groupBox_4) + + self.groupBox_2 = QGroupBox(TabOcr_B30) + self.groupBox_2.setObjectName(u"groupBox_2") + self.verticalLayout_2 = QVBoxLayout(self.groupBox_2) + self.verticalLayout_2.setObjectName(u"verticalLayout_2") + self.imageSelector = FileSelector(self.groupBox_2) + self.imageSelector.setObjectName(u"imageSelector") + + self.verticalLayout_2.addWidget(self.imageSelector) + + + self.horizontalLayout_3.addWidget(self.groupBox_2) + + + self.verticalLayout_3.addLayout(self.horizontalLayout_3) + + self.ocrQueue = OcrQueue(TabOcr_B30) + self.ocrQueue.setObjectName(u"ocrQueue") + sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ocrQueue.sizePolicy().hasHeightForWidth()) + self.ocrQueue.setSizePolicy(sizePolicy) + + self.verticalLayout_3.addWidget(self.ocrQueue) + + + self.retranslateUi(TabOcr_B30) + + QMetaObject.connectSlotsByName(TabOcr_B30) + # setupUi + + def retranslateUi(self, TabOcr_B30): + self.groupBox.setTitle(QCoreApplication.translate("TabOcr_B30", u"b30type", None)) + self.groupBox_3.setTitle(QCoreApplication.translate("TabOcr_B30", u"knnModelSelector.title", None)) + self.groupBox_5.setTitle(QCoreApplication.translate("TabOcr_B30", u"b30KnnModelSelector.title", None)) + self.groupBox_4.setTitle(QCoreApplication.translate("TabOcr_B30", u"phashDatabaseSelector.title", None)) + self.groupBox_2.setTitle(QCoreApplication.translate("TabOcr_B30", u"imageSelector.title", None)) + pass + # retranslateUi + diff --git a/ui/designer/tabs/tabOcr/tabOcr_Device.ui b/ui/designer/tabs/tabOcr/tabOcr_Device.ui index c7c81a0..4fab6c0 100644 --- a/ui/designer/tabs/tabOcr/tabOcr_Device.ui +++ b/ui/designer/tabs/tabOcr/tabOcr_Device.ui @@ -28,11 +28,22 @@ - - - deviceSelector.useAutoFactor - - + + + + + deviceSelector.useAutoFactor + + + + + + + SizesV2 + + + + @@ -126,11 +137,11 @@ - siftDatabaseSelector.title + phashDatabaseSelector.title - + @@ -161,17 +172,17 @@
ui.implements.components.fileSelector
1 - - DevicesComboBox - QComboBox -
ui.implements.components.devicesComboBox
-
OcrQueue QWidget
ui.implements.components.ocrQueue
1
+ + DevicesComboBox + QComboBox +
ui.implements.components.devicesComboBox
+
diff --git a/ui/designer/tabs/tabOcr/tabOcr_Device_ui.py b/ui/designer/tabs/tabOcr/tabOcr_Device_ui.py index e6d51cf..40ab0ab 100644 --- a/ui/designer/tabs/tabOcr/tabOcr_Device_ui.py +++ b/ui/designer/tabs/tabOcr/tabOcr_Device_ui.py @@ -1,155 +1,166 @@ -# -*- coding: utf-8 -*- - -################################################################################ -## Form generated from reading UI file 'tabOcr_Device.ui' -## -## Created by: Qt User Interface Compiler version 6.5.2 -## -## WARNING! All changes made in this file will be lost when recompiling UI file! -################################################################################ - -from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, - QMetaObject, QObject, QPoint, QRect, - QSize, QTime, QUrl, Qt) -from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, - QFont, QFontDatabase, QGradient, QIcon, - QImage, QKeySequence, QLinearGradient, QPainter, - QPalette, QPixmap, QRadialGradient, QTransform) -from PySide6.QtWidgets import (QApplication, QCheckBox, QGroupBox, QHBoxLayout, - QPushButton, QSizePolicy, QStackedWidget, QVBoxLayout, - QWidget) - -from ui.implements.components.devicesComboBox import DevicesComboBox -from ui.implements.components.fileSelector import FileSelector -from ui.implements.components.ocrQueue import OcrQueue - -class Ui_TabOcr_Device(object): - def setupUi(self, TabOcr_Device): - if not TabOcr_Device.objectName(): - TabOcr_Device.setObjectName(u"TabOcr_Device") - TabOcr_Device.resize(632, 527) - TabOcr_Device.setWindowTitle(u"TabOcr_Device") - self.verticalLayout_3 = QVBoxLayout(TabOcr_Device) - self.verticalLayout_3.setObjectName(u"verticalLayout_3") - self.openWizardButton = QPushButton(TabOcr_Device) - self.openWizardButton.setObjectName(u"openWizardButton") - - self.verticalLayout_3.addWidget(self.openWizardButton) - - self.groupBox = QGroupBox(TabOcr_Device) - self.groupBox.setObjectName(u"groupBox") - self.verticalLayout = QVBoxLayout(self.groupBox) - self.verticalLayout.setObjectName(u"verticalLayout") - self.deviceUseAutoFactorCheckBox = QCheckBox(self.groupBox) - self.deviceUseAutoFactorCheckBox.setObjectName(u"deviceUseAutoFactorCheckBox") - - self.verticalLayout.addWidget(self.deviceUseAutoFactorCheckBox) - - self.deviceFileSelector = FileSelector(self.groupBox) - self.deviceFileSelector.setObjectName(u"deviceFileSelector") - - self.verticalLayout.addWidget(self.deviceFileSelector) - - self.deviceComboBox = DevicesComboBox(self.groupBox) - self.deviceComboBox.setObjectName(u"deviceComboBox") - - self.verticalLayout.addWidget(self.deviceComboBox) - - - self.verticalLayout_3.addWidget(self.groupBox) - - self.horizontalWidget = QWidget(TabOcr_Device) - self.horizontalWidget.setObjectName(u"horizontalWidget") - sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.horizontalWidget.sizePolicy().hasHeightForWidth()) - self.horizontalWidget.setSizePolicy(sizePolicy) - self.horizontalLayout_2 = QHBoxLayout(self.horizontalWidget) - self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") - self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) - self.groupBox_6 = QGroupBox(self.horizontalWidget) - self.groupBox_6.setObjectName(u"groupBox_6") - self.verticalLayout_6 = QVBoxLayout(self.groupBox_6) - self.verticalLayout_6.setObjectName(u"verticalLayout_6") - self.knnModelSelector = FileSelector(self.groupBox_6) - self.knnModelSelector.setObjectName(u"knnModelSelector") - - self.verticalLayout_6.addWidget(self.knnModelSelector) - - - self.horizontalLayout_2.addWidget(self.groupBox_6) - - self.deviceDependenciesStackedWidget = QStackedWidget(self.horizontalWidget) - self.deviceDependenciesStackedWidget.setObjectName(u"deviceDependenciesStackedWidget") - self.deviceV1 = QWidget() - self.deviceV1.setObjectName(u"deviceV1") - self.verticalLayout_2 = QVBoxLayout(self.deviceV1) - self.verticalLayout_2.setObjectName(u"verticalLayout_2") - self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) - self.groupBox_4 = QGroupBox(self.deviceV1) - self.groupBox_4.setObjectName(u"groupBox_4") - self.verticalLayout_5 = QVBoxLayout(self.groupBox_4) - self.verticalLayout_5.setObjectName(u"verticalLayout_5") - self.tesseractFileSelector = FileSelector(self.groupBox_4) - self.tesseractFileSelector.setObjectName(u"tesseractFileSelector") - - self.verticalLayout_5.addWidget(self.tesseractFileSelector) - - - self.verticalLayout_2.addWidget(self.groupBox_4) - - self.deviceDependenciesStackedWidget.addWidget(self.deviceV1) - self.deviceV2 = QWidget() - self.deviceV2.setObjectName(u"deviceV2") - self.verticalLayout_4 = QVBoxLayout(self.deviceV2) - self.verticalLayout_4.setObjectName(u"verticalLayout_4") - self.verticalLayout_4.setContentsMargins(0, 0, 0, 0) - self.groupBox_5 = QGroupBox(self.deviceV2) - self.groupBox_5.setObjectName(u"groupBox_5") - self.verticalLayout_7 = QVBoxLayout(self.groupBox_5) - self.verticalLayout_7.setObjectName(u"verticalLayout_7") - self.siftDatabaseSelector = FileSelector(self.groupBox_5) - self.siftDatabaseSelector.setObjectName(u"siftDatabaseSelector") - - self.verticalLayout_7.addWidget(self.siftDatabaseSelector) - - - self.verticalLayout_4.addWidget(self.groupBox_5) - - self.deviceDependenciesStackedWidget.addWidget(self.deviceV2) - - self.horizontalLayout_2.addWidget(self.deviceDependenciesStackedWidget) - - - self.verticalLayout_3.addWidget(self.horizontalWidget) - - self.ocrQueue = OcrQueue(TabOcr_Device) - self.ocrQueue.setObjectName(u"ocrQueue") - sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) - sizePolicy1.setHorizontalStretch(0) - sizePolicy1.setVerticalStretch(0) - sizePolicy1.setHeightForWidth(self.ocrQueue.sizePolicy().hasHeightForWidth()) - self.ocrQueue.setSizePolicy(sizePolicy1) - - self.verticalLayout_3.addWidget(self.ocrQueue) - - - self.retranslateUi(TabOcr_Device) - - self.deviceDependenciesStackedWidget.setCurrentIndex(0) - - - QMetaObject.connectSlotsByName(TabOcr_Device) - # setupUi - - def retranslateUi(self, TabOcr_Device): - self.openWizardButton.setText(QCoreApplication.translate("TabOcr_Device", u"openWizardButton", None)) - self.groupBox.setTitle(QCoreApplication.translate("TabOcr_Device", u"deviceSelector.title", None)) - self.deviceUseAutoFactorCheckBox.setText(QCoreApplication.translate("TabOcr_Device", u"deviceSelector.useAutoFactor", None)) - self.groupBox_6.setTitle(QCoreApplication.translate("TabOcr_Device", u"knnModelSelector.title", None)) - self.groupBox_4.setTitle(QCoreApplication.translate("TabOcr_Device", u"tesseractSelector.title", None)) - self.groupBox_5.setTitle(QCoreApplication.translate("TabOcr_Device", u"siftDatabaseSelector.title", None)) - pass - # retranslateUi - +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file 'tabOcr_Device.ui' +## +## Created by: Qt User Interface Compiler version 6.5.2 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, + QMetaObject, QObject, QPoint, QRect, + QSize, QTime, QUrl, Qt) +from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, + QFont, QFontDatabase, QGradient, QIcon, + QImage, QKeySequence, QLinearGradient, QPainter, + QPalette, QPixmap, QRadialGradient, QTransform) +from PySide6.QtWidgets import (QApplication, QCheckBox, QGroupBox, QHBoxLayout, + QPushButton, QSizePolicy, QStackedWidget, QVBoxLayout, + QWidget) + +from ui.implements.components.devicesComboBox import DevicesComboBox +from ui.implements.components.fileSelector import FileSelector +from ui.implements.components.ocrQueue import OcrQueue + +class Ui_TabOcr_Device(object): + def setupUi(self, TabOcr_Device): + if not TabOcr_Device.objectName(): + TabOcr_Device.setObjectName(u"TabOcr_Device") + TabOcr_Device.resize(632, 527) + TabOcr_Device.setWindowTitle(u"TabOcr_Device") + self.verticalLayout_3 = QVBoxLayout(TabOcr_Device) + self.verticalLayout_3.setObjectName(u"verticalLayout_3") + self.openWizardButton = QPushButton(TabOcr_Device) + self.openWizardButton.setObjectName(u"openWizardButton") + + self.verticalLayout_3.addWidget(self.openWizardButton) + + self.groupBox = QGroupBox(TabOcr_Device) + self.groupBox.setObjectName(u"groupBox") + self.verticalLayout = QVBoxLayout(self.groupBox) + self.verticalLayout.setObjectName(u"verticalLayout") + self.horizontalLayout = QHBoxLayout() + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.deviceUseAutoFactorCheckBox = QCheckBox(self.groupBox) + self.deviceUseAutoFactorCheckBox.setObjectName(u"deviceUseAutoFactorCheckBox") + + self.horizontalLayout.addWidget(self.deviceUseAutoFactorCheckBox) + + self.deviceSizesV2CheckBox = QCheckBox(self.groupBox) + self.deviceSizesV2CheckBox.setObjectName(u"deviceSizesV2CheckBox") + self.deviceSizesV2CheckBox.setText(u"SizesV2") + + self.horizontalLayout.addWidget(self.deviceSizesV2CheckBox) + + + self.verticalLayout.addLayout(self.horizontalLayout) + + self.deviceFileSelector = FileSelector(self.groupBox) + self.deviceFileSelector.setObjectName(u"deviceFileSelector") + + self.verticalLayout.addWidget(self.deviceFileSelector) + + self.deviceComboBox = DevicesComboBox(self.groupBox) + self.deviceComboBox.setObjectName(u"deviceComboBox") + + self.verticalLayout.addWidget(self.deviceComboBox) + + + self.verticalLayout_3.addWidget(self.groupBox) + + self.horizontalWidget = QWidget(TabOcr_Device) + self.horizontalWidget.setObjectName(u"horizontalWidget") + sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.horizontalWidget.sizePolicy().hasHeightForWidth()) + self.horizontalWidget.setSizePolicy(sizePolicy) + self.horizontalLayout_2 = QHBoxLayout(self.horizontalWidget) + self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") + self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) + self.groupBox_6 = QGroupBox(self.horizontalWidget) + self.groupBox_6.setObjectName(u"groupBox_6") + self.verticalLayout_6 = QVBoxLayout(self.groupBox_6) + self.verticalLayout_6.setObjectName(u"verticalLayout_6") + self.knnModelSelector = FileSelector(self.groupBox_6) + self.knnModelSelector.setObjectName(u"knnModelSelector") + + self.verticalLayout_6.addWidget(self.knnModelSelector) + + + self.horizontalLayout_2.addWidget(self.groupBox_6) + + self.deviceDependenciesStackedWidget = QStackedWidget(self.horizontalWidget) + self.deviceDependenciesStackedWidget.setObjectName(u"deviceDependenciesStackedWidget") + self.deviceV1 = QWidget() + self.deviceV1.setObjectName(u"deviceV1") + self.verticalLayout_2 = QVBoxLayout(self.deviceV1) + self.verticalLayout_2.setObjectName(u"verticalLayout_2") + self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) + self.groupBox_4 = QGroupBox(self.deviceV1) + self.groupBox_4.setObjectName(u"groupBox_4") + self.verticalLayout_5 = QVBoxLayout(self.groupBox_4) + self.verticalLayout_5.setObjectName(u"verticalLayout_5") + self.tesseractFileSelector = FileSelector(self.groupBox_4) + self.tesseractFileSelector.setObjectName(u"tesseractFileSelector") + + self.verticalLayout_5.addWidget(self.tesseractFileSelector) + + + self.verticalLayout_2.addWidget(self.groupBox_4) + + self.deviceDependenciesStackedWidget.addWidget(self.deviceV1) + self.deviceV2 = QWidget() + self.deviceV2.setObjectName(u"deviceV2") + self.verticalLayout_4 = QVBoxLayout(self.deviceV2) + self.verticalLayout_4.setObjectName(u"verticalLayout_4") + self.verticalLayout_4.setContentsMargins(0, 0, 0, 0) + self.groupBox_5 = QGroupBox(self.deviceV2) + self.groupBox_5.setObjectName(u"groupBox_5") + self.verticalLayout_7 = QVBoxLayout(self.groupBox_5) + self.verticalLayout_7.setObjectName(u"verticalLayout_7") + self.phashDatabaseSelector = FileSelector(self.groupBox_5) + self.phashDatabaseSelector.setObjectName(u"phashDatabaseSelector") + + self.verticalLayout_7.addWidget(self.phashDatabaseSelector) + + + self.verticalLayout_4.addWidget(self.groupBox_5) + + self.deviceDependenciesStackedWidget.addWidget(self.deviceV2) + + self.horizontalLayout_2.addWidget(self.deviceDependenciesStackedWidget) + + + self.verticalLayout_3.addWidget(self.horizontalWidget) + + self.ocrQueue = OcrQueue(TabOcr_Device) + self.ocrQueue.setObjectName(u"ocrQueue") + sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) + sizePolicy1.setHorizontalStretch(0) + sizePolicy1.setVerticalStretch(0) + sizePolicy1.setHeightForWidth(self.ocrQueue.sizePolicy().hasHeightForWidth()) + self.ocrQueue.setSizePolicy(sizePolicy1) + + self.verticalLayout_3.addWidget(self.ocrQueue) + + + self.retranslateUi(TabOcr_Device) + + self.deviceDependenciesStackedWidget.setCurrentIndex(0) + + + QMetaObject.connectSlotsByName(TabOcr_Device) + # setupUi + + def retranslateUi(self, TabOcr_Device): + self.openWizardButton.setText(QCoreApplication.translate("TabOcr_Device", u"openWizardButton", None)) + self.groupBox.setTitle(QCoreApplication.translate("TabOcr_Device", u"deviceSelector.title", None)) + self.deviceUseAutoFactorCheckBox.setText(QCoreApplication.translate("TabOcr_Device", u"deviceSelector.useAutoFactor", None)) + self.groupBox_6.setTitle(QCoreApplication.translate("TabOcr_Device", u"knnModelSelector.title", None)) + self.groupBox_4.setTitle(QCoreApplication.translate("TabOcr_Device", u"tesseractSelector.title", None)) + self.groupBox_5.setTitle(QCoreApplication.translate("TabOcr_Device", u"phashDatabaseSelector.title", None)) + pass + # retranslateUi + diff --git a/ui/extends/tabs/tabOcr/tabOcr_Device.py b/ui/extends/tabs/tabOcr/tabOcr_Device.py index 8ea963a..72ab204 100644 --- a/ui/extends/tabs/tabOcr/tabOcr_Device.py +++ b/ui/extends/tabs/tabOcr/tabOcr_Device.py @@ -5,8 +5,8 @@ from typing import Tuple from arcaea_offline.database import Database from arcaea_offline.models import Chart, Score from arcaea_offline_ocr.device.shared import DeviceOcrResult -from arcaea_offline_ocr.device.v2.ocr import DeviceV2Ocr -from arcaea_offline_ocr.device.v2.rois import DeviceV2AutoRois, DeviceV2Rois +from arcaea_offline_ocr.device.v2 import DeviceV2AutoRois, DeviceV2Ocr, DeviceV2Rois +from arcaea_offline_ocr.device.v2.sizes import SizesV1, SizesV2 from arcaea_offline_ocr.utils import imread_unicode from PySide6.QtCore import QDateTime, QFileInfo @@ -18,17 +18,23 @@ import exif class TabDeviceV2OcrRunnable(OcrRunnable): - def __init__(self, imagePath, device, knnModel, siftDb): + def __init__(self, imagePath, device, knnModel, phashDb, *, sizesV2: bool): super().__init__() self.imagePath = imagePath self.device = device self.knnModel = knnModel - self.siftDb = siftDb + self.phashDb = phashDb + self.sizesV2 = sizesV2 def run(self): try: rois = DeviceV2Rois(self.device, imread_unicode(self.imagePath)) - ocr = DeviceV2Ocr(self.knnModel, self.siftDb) + rois.sizes = ( + SizesV2(self.device.factor) + if self.sizesV2 + else SizesV1(self.device.factor) + ) + ocr = DeviceV2Ocr(self.knnModel, self.phashDb) result = ocr.ocr(rois) self.signals.resultReady.emit(result) except Exception: @@ -38,16 +44,19 @@ class TabDeviceV2OcrRunnable(OcrRunnable): class TabDeviceV2AutoRoisOcrRunnable(OcrRunnable): - def __init__(self, imagePath, knnModel, siftDb): + def __init__(self, imagePath, knnModel, phashDb, *, sizesV2: bool): super().__init__() self.imagePath = imagePath self.knnModel = knnModel - self.siftDb = siftDb + self.phashDb = phashDb + self.sizesV2 = sizesV2 def run(self): try: rois = DeviceV2AutoRois(imread_unicode(self.imagePath)) - ocr = DeviceV2Ocr(self.knnModel, self.siftDb) + factor = rois.sizes.factor + rois.sizes = SizesV2(factor) if self.sizesV2 else SizesV1(factor) + ocr = DeviceV2Ocr(self.knnModel, self.phashDb) result = ocr.ocr(rois) self.signals.resultReady.emit(result) except Exception: diff --git a/ui/implements/tabs/tabOcr/tabOcr_B30.py b/ui/implements/tabs/tabOcr/tabOcr_B30.py index 44452b9..7426d56 100644 --- a/ui/implements/tabs/tabOcr/tabOcr_B30.py +++ b/ui/implements/tabs/tabOcr/tabOcr_B30.py @@ -2,6 +2,7 @@ import logging import cv2 from arcaea_offline_ocr.b30.chieri.v4.ocr import ChieriBotV4Ocr +from arcaea_offline_ocr.phash_db import ImagePHashDatabase from arcaea_offline_ocr.sift_db import SIFTDatabase from arcaea_offline_ocr.utils import imread_unicode from PySide6.QtCore import Signal, Slot @@ -34,10 +35,11 @@ class TabOcr_B30(Ui_TabOcr_B30, QWidget): self.imageSelector.filesSelected.connect(self.imageSelected) self.knnModelSelector.filesSelected.connect(self.knnModelSelected) self.b30KnnModelSelector.filesSelected.connect(self.b30KnnModelSelected) - self.siftDatabaseSelector.filesSelected.connect(self.siftDatabaseSelected) + # self.siftDatabaseSelector.filesSelected.connect(self.siftDatabaseSelected) + self.phashDatabaseSelector.filesSelected.connect(self.phashDatabaseSelected) self.knnModelSelector.connectSettings(KNN_MODEL_FILE) - self.siftDatabaseSelector.connectSettings(SIFT_DATABASE_FILE) + # self.siftDatabaseSelector.connectSettings(SIFT_DATABASE_FILE) self.imagePath = None # for checking only self.img = None @@ -45,7 +47,8 @@ class TabOcr_B30(Ui_TabOcr_B30, QWidget): self.paddle = None self.knnModel = None self.b30KnnModel = None - self.siftDatabase = None + # self.siftDatabase = None + self.phashDatabase = None self.ocr = None @@ -54,7 +57,7 @@ class TabOcr_B30(Ui_TabOcr_B30, QWidget): settings = Settings() logger.info("Applying default settings...") self.knnModelSelector.selectFile(settings.knnModelFile()) - self.siftDatabaseSelector.selectFile(settings.siftDatabaseFile()) + # self.siftDatabaseSelector.selectFile(settings.siftDatabaseFile()) self.ocrQueueModel = OcrQueueModel(self) self.ocrQueue.setModel(self.ocrQueueModel) @@ -84,6 +87,12 @@ class TabOcr_B30(Ui_TabOcr_B30, QWidget): self.siftDatabase = SIFTDatabase(siftDatabasePath) self.tryPrepareOcr.emit() + def phashDatabaseSelected(self): + if selectedFiles := self.phashDatabaseSelector.selectedFiles(): + phashDatabasePath = selectedFiles[0] + self.phashDatabase = ImagePHashDatabase(phashDatabasePath) + self.tryPrepareOcr.emit() + def prepareOcr(self): b30Type = self.b30TypeComboBox.currentData() if not b30Type: @@ -94,13 +103,13 @@ class TabOcr_B30(Ui_TabOcr_B30, QWidget): not self.imagePath or not self.knnModel or not self.b30KnnModel - or not self.siftDatabase + or not self.phashDatabase ): return self.ocrQueueModel.clear() - ocr = ChieriBotV4Ocr(self.knnModel, self.b30KnnModel, self.siftDatabase) + ocr = ChieriBotV4Ocr(self.knnModel, self.b30KnnModel, self.phashDatabase) ocr.set_factor(self.img) self.ocr = ocr @@ -116,7 +125,7 @@ class TabOcr_B30(Ui_TabOcr_B30, QWidget): not self.imagePath or not self.knnModel or not self.b30KnnModel - or not self.siftDatabase + or not self.phashDatabase ): return diff --git a/ui/implements/tabs/tabOcr/tabOcr_Device.py b/ui/implements/tabs/tabOcr/tabOcr_Device.py index a1d0936..8e3bd44 100644 --- a/ui/implements/tabs/tabOcr/tabOcr_Device.py +++ b/ui/implements/tabs/tabOcr/tabOcr_Device.py @@ -6,6 +6,7 @@ import cv2 from arcaea_offline_ocr.device.v1.definition import DeviceV1 from arcaea_offline_ocr.device.v2.definition import DeviceV2 from arcaea_offline_ocr.sift_db import SIFTDatabase +from arcaea_offline_ocr.phash_db import ImagePHashDatabase from PySide6.QtCore import Qt, Slot from PySide6.QtWidgets import QApplication, QFileDialog, QWidget @@ -38,11 +39,12 @@ class TabOcr_Device(Ui_TabOcr_Device, QWidget): self.deviceFileSelector.filesSelected.connect(self.deviceFileSelected) self.knnModelSelector.filesSelected.connect(self.knnModelFileSelected) - self.siftDatabaseSelector.filesSelected.connect(self.siftDatabaseFileSelected) + # self.siftDatabaseSelector.filesSelected.connect(self.siftDatabaseFileSelected) + self.phashDatabaseSelector.filesSelected.connect(self.phashDatabaseFileSelected) self.deviceFileSelector.connectSettings(DEVICES_JSON_FILE) self.knnModelSelector.connectSettings(KNN_MODEL_FILE) - self.siftDatabaseSelector.connectSettings(SIFT_DATABASE_FILE) + # self.siftDatabaseSelector.connectSettings(SIFT_DATABASE_FILE) settings = Settings() logger.info("Applying default settings...") @@ -50,7 +52,7 @@ class TabOcr_Device(Ui_TabOcr_Device, QWidget): self.tesseractFileSelector.selectFile(settings.tesseractPath()) self.deviceComboBox.selectDevice(settings.deviceUuid()) self.knnModelSelector.selectFile(settings.knnModelFile()) - self.siftDatabaseSelector.selectFile(settings.siftDatabaseFile()) + # vself.siftDatabaseSelector.selectFile(settings.siftDatabaseFile()) self.ocrQueueModel = OcrQueueModel(self) self.ocrQueue.setModel(self.ocrQueueModel) @@ -96,6 +98,10 @@ class TabOcr_Device(Ui_TabOcr_Device, QWidget): if selectedFiles := self.siftDatabaseSelector.selectedFiles(): self.siftDatabase = SIFTDatabase(selectedFiles[0]) + def phashDatabaseFileSelected(self): + if selectedFiles := self.phashDatabaseSelector.selectedFiles(): + self.phashDatabase = ImagePHashDatabase(selectedFiles[0]) + @Slot() def on_ocr_addImageButton_clicked(self): files, _filter = QFileDialog.getOpenFileNames( @@ -115,14 +121,16 @@ class TabOcr_Device(Ui_TabOcr_Device, QWidget): runnable = TabDeviceV2AutoRoisOcrRunnable( imagePath, self.knnModel, - self.siftDatabase, + self.phashDatabase, + sizesV2=self.deviceSizesV2CheckBox.isChecked(), ) else: runnable = TabDeviceV2OcrRunnable( imagePath, self.deviceComboBox.currentData(), self.knnModel, - self.siftDatabase, + self.phashDatabase, + sizesV2=self.deviceSizesV2CheckBox.isChecked(), ) self.ocrQueueModel.setData(index, runnable, OcrQueueModel.OcrRunnableRole) self.ocrQueueModel.setData(