diff --git a/ui/designer/components/ocrQueue.ui b/ui/designer/components/ocrQueue.ui
index 7a0ce83..1d17689 100644
--- a/ui/designer/components/ocrQueue.ui
+++ b/ui/designer/components/ocrQueue.ui
@@ -13,155 +13,146 @@
OcrQueue
-
+
-
-
+
- ocr.title
+ ocr.queue.title
-
+
-
-
-
- ocr.queue.title
+
+
+ ocr.queue.addImageButton
-
-
-
-
-
- ocr.queue.addImageButton
-
-
-
- -
-
-
- true
-
-
- ocr.queue.removeSelected
-
-
-
- -
-
-
- true
-
-
- ocr.queue.removeAll
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- ocr.queue.startOcrButton
-
-
-
-
-
-
-
-
-
-
- QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed
-
-
- QAbstractItemView::MultiSelection
-
-
- QAbstractItemView::SelectRows
-
-
- QAbstractItemView::ScrollPerPixel
-
-
- QAbstractItemView::ScrollPerPixel
-
-
-
- -
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- Qt::AlignCenter
-
-
- %v/%m - %p%
-
-
-
-
+
+
+ true
+
+
+ ocr.queue.removeSelected
+
+
-
-
-
- ocr.results
+
+
+ true
+
+
+ ocr.queue.removeAll
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ ocr.queue.startOcrButton
+
+
+
+
+
+
+ -
+
+
-
+
+
+ QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed
+
+
+ QAbstractItemView::MultiSelection
+
+
+ QAbstractItemView::SelectRows
+
+
+ QAbstractItemView::ScrollPerPixel
+
+
+ QAbstractItemView::ScrollPerPixel
+
+
+
+ -
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+ %v/%m - %p%
+
+
+
+
+
+ -
+
+
+ ocr.results
+
+
+
-
+
+
+ true
+
+
+ ocr.results.acceptSelectedButton
+
+
+
+ -
+
+
+ ocr.results.acceptAllButton
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ ocr.results.ignoreValidate
-
-
-
-
-
- true
-
-
- ocr.results.acceptSelectedButton
-
-
-
- -
-
-
- ocr.results.acceptAllButton
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- ocr.results.ignoreValidate
-
-
-
-
diff --git a/ui/designer/components/ocrQueue_ui.py b/ui/designer/components/ocrQueue_ui.py
index b6ae814..eba0cb6 100644
--- a/ui/designer/components/ocrQueue_ui.py
+++ b/ui/designer/components/ocrQueue_ui.py
@@ -25,13 +25,9 @@ class Ui_OcrQueue(object):
if not OcrQueue.objectName():
OcrQueue.setObjectName(u"OcrQueue")
OcrQueue.resize(741, 372)
- self.verticalLayout = QVBoxLayout(OcrQueue)
- self.verticalLayout.setObjectName(u"verticalLayout")
- self.groupBox_2 = QGroupBox(OcrQueue)
- self.groupBox_2.setObjectName(u"groupBox_2")
- self.horizontalLayout = QHBoxLayout(self.groupBox_2)
- self.horizontalLayout.setObjectName(u"horizontalLayout")
- self.groupBox_3 = QGroupBox(self.groupBox_2)
+ self.horizontalLayout_2 = QHBoxLayout(OcrQueue)
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
+ self.groupBox_3 = QGroupBox(OcrQueue)
self.groupBox_3.setObjectName(u"groupBox_3")
self.verticalLayout_2 = QVBoxLayout(self.groupBox_3)
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
@@ -62,11 +58,11 @@ class Ui_OcrQueue(object):
self.verticalLayout_2.addWidget(self.ocr_startButton)
- self.horizontalLayout.addWidget(self.groupBox_3)
+ self.horizontalLayout_2.addWidget(self.groupBox_3)
self.verticalLayout_3 = QVBoxLayout()
self.verticalLayout_3.setObjectName(u"verticalLayout_3")
- self.tableView = QTableView(self.groupBox_2)
+ self.tableView = QTableView(OcrQueue)
self.tableView.setObjectName(u"tableView")
self.tableView.setEditTriggers(QAbstractItemView.DoubleClicked|QAbstractItemView.EditKeyPressed)
self.tableView.setSelectionMode(QAbstractItemView.MultiSelection)
@@ -76,7 +72,7 @@ class Ui_OcrQueue(object):
self.verticalLayout_3.addWidget(self.tableView)
- self.progressBar = QProgressBar(self.groupBox_2)
+ self.progressBar = QProgressBar(OcrQueue)
self.progressBar.setObjectName(u"progressBar")
self.progressBar.setMinimum(0)
self.progressBar.setMaximum(0)
@@ -87,9 +83,9 @@ class Ui_OcrQueue(object):
self.verticalLayout_3.addWidget(self.progressBar)
- self.horizontalLayout.addLayout(self.verticalLayout_3)
+ self.horizontalLayout_2.addLayout(self.verticalLayout_3)
- self.groupBox_5 = QGroupBox(self.groupBox_2)
+ self.groupBox_5 = QGroupBox(OcrQueue)
self.groupBox_5.setObjectName(u"groupBox_5")
self.verticalLayout_4 = QVBoxLayout(self.groupBox_5)
self.verticalLayout_4.setObjectName(u"verticalLayout_4")
@@ -114,10 +110,7 @@ class Ui_OcrQueue(object):
self.verticalLayout_4.addWidget(self.ocr_ignoreValidateCheckBox)
- self.horizontalLayout.addWidget(self.groupBox_5)
-
-
- self.verticalLayout.addWidget(self.groupBox_2)
+ self.horizontalLayout_2.addWidget(self.groupBox_5)
self.retranslateUi(OcrQueue)
@@ -127,7 +120,6 @@ class Ui_OcrQueue(object):
def retranslateUi(self, OcrQueue):
OcrQueue.setWindowTitle(QCoreApplication.translate("OcrQueue", u"OcrQueue", None))
- self.groupBox_2.setTitle(QCoreApplication.translate("OcrQueue", u"ocr.title", None))
self.groupBox_3.setTitle(QCoreApplication.translate("OcrQueue", u"ocr.queue.title", None))
self.ocr_addImageButton.setText(QCoreApplication.translate("OcrQueue", u"ocr.queue.addImageButton", None))
self.ocr_removeSelectedButton.setText(QCoreApplication.translate("OcrQueue", u"ocr.queue.removeSelected", None))
diff --git a/ui/designer/tabs/tabOcr.ui b/ui/designer/tabs/tabOcr.ui
index b03a1f8..f95df60 100644
--- a/ui/designer/tabs/tabOcr.ui
+++ b/ui/designer/tabs/tabOcr.ui
@@ -37,19 +37,112 @@
-
-
-
- tesseractSelector.title
+
+
+
+ 0
+ 0
+
-
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
-
+
+
+ knnModelSelector.title
+
+
+
-
+
+
+
+
+
+ -
+
+
+ 0
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ tesseractSelector.title
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ siftDatabaseSelector.title
+
+
+
-
+
+
+
+
+
+
+
+
-
+
+
+ 0
+ 0
+
+
ocr.title
diff --git a/ui/designer/tabs/tabOcr_ui.py b/ui/designer/tabs/tabOcr_ui.py
index e29f627..1ab57b7 100644
--- a/ui/designer/tabs/tabOcr_ui.py
+++ b/ui/designer/tabs/tabOcr_ui.py
@@ -16,7 +16,7 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QGroupBox, QHBoxLayout, QPushButton,
- QSizePolicy, QVBoxLayout, QWidget)
+ QSizePolicy, QStackedWidget, QVBoxLayout, QWidget)
from ui.implements.components import (DevicesComboBox, FileSelector, OcrQueue)
@@ -50,7 +50,36 @@ class Ui_TabOcr(object):
self.verticalLayout_3.addWidget(self.groupBox)
- self.groupBox_4 = QGroupBox(TabOcr)
+ self.horizontalWidget = QWidget(TabOcr)
+ 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")
@@ -60,10 +89,40 @@ class Ui_TabOcr(object):
self.verticalLayout_5.addWidget(self.tesseractFileSelector)
- self.verticalLayout_3.addWidget(self.groupBox_4)
+ 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.groupBox_2 = QGroupBox(TabOcr)
self.groupBox_2.setObjectName(u"groupBox_2")
+ sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
+ sizePolicy1.setHorizontalStretch(0)
+ sizePolicy1.setVerticalStretch(0)
+ sizePolicy1.setHeightForWidth(self.groupBox_2.sizePolicy().hasHeightForWidth())
+ self.groupBox_2.setSizePolicy(sizePolicy1)
self.horizontalLayout = QHBoxLayout(self.groupBox_2)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.ocrQueue = OcrQueue(self.groupBox_2)
@@ -77,13 +136,18 @@ class Ui_TabOcr(object):
self.retranslateUi(TabOcr)
+ self.deviceDependenciesStackedWidget.setCurrentIndex(0)
+
+
QMetaObject.connectSlotsByName(TabOcr)
# setupUi
def retranslateUi(self, TabOcr):
self.openWizardButton.setText(QCoreApplication.translate("TabOcr", u"openWizardButton", None))
self.groupBox.setTitle(QCoreApplication.translate("TabOcr", u"deviceSelector.title", None))
+ self.groupBox_6.setTitle(QCoreApplication.translate("TabOcr", u"knnModelSelector.title", None))
self.groupBox_4.setTitle(QCoreApplication.translate("TabOcr", u"tesseractSelector.title", None))
+ self.groupBox_5.setTitle(QCoreApplication.translate("TabOcr", u"siftDatabaseSelector.title", None))
self.groupBox_2.setTitle(QCoreApplication.translate("TabOcr", u"ocr.title", None))
pass
# retranslateUi
diff --git a/ui/implements/tabs/tabOcr.py b/ui/implements/tabs/tabOcr.py
index 5238cfb..aa55473 100644
--- a/ui/implements/tabs/tabOcr.py
+++ b/ui/implements/tabs/tabOcr.py
@@ -1,14 +1,17 @@
+import cv2
import pytesseract
# from arcaea_offline_ocr_device_creation_wizard.implements.wizard import Wizard
-from PySide6.QtCore import QModelIndex, Qt, Slot
-from PySide6.QtGui import QColor
-from PySide6.QtWidgets import QFileDialog, QHeaderView, QWidget
+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 PySide6.QtCore import Slot
+from PySide6.QtWidgets import QFileDialog, QWidget
from ui.designer.tabs.tabOcr_ui import Ui_TabOcr
from ui.extends.components.ocrQueue import OcrQueueModel
from ui.extends.settings import Settings
-from ui.extends.tabs.tabOcr import TabDeviceV2OcrRunnable, ScoreInsertConverter
+from ui.extends.tabs.tabOcr import ScoreInsertConverter, TabDeviceV2OcrRunnable
class TabOcr(Ui_TabOcr, QWidget):
@@ -17,10 +20,16 @@ class TabOcr(Ui_TabOcr, QWidget):
self.setupUi(self)
self.openWizardButton.setEnabled(False)
+ self.deviceComboBox.currentIndexChanged.connect(
+ self.changeDeviceDepStackedWidget
+ )
+
self.deviceFileSelector.filesSelected.connect(self.deviceFileSelected)
+ self.knnModelSelector.filesSelected.connect(self.knnModelFileSelected)
self.tesseractFileSelector.filesSelected.connect(
self.tesseractFileSelectorFilesSelected
)
+ self.siftDatabaseSelector.filesSelected.connect(self.siftDatabaseFileSelected)
settings = Settings()
self.deviceFileSelector.selectFile(settings.devicesJsonFile())
@@ -37,17 +46,32 @@ class TabOcr(Ui_TabOcr, QWidget):
# wizard.open()
pass
+ def changeDeviceDepStackedWidget(self):
+ device = self.deviceComboBox.currentData()
+ if isinstance(device, (DeviceV1, DeviceV2)):
+ self.deviceDependenciesStackedWidget.setCurrentIndex(device.version - 1)
+
def deviceFileSelected(self):
selectedFiles = self.deviceFileSelector.selectedFiles()
if selectedFiles:
file = selectedFiles[0]
self.deviceComboBox.loadDevicesJson(file)
+ def knnModelFileSelected(self):
+ selectedFiles = self.knnModelSelector.selectedFiles()
+ if selectedFiles:
+ self.knnModel = cv2.ml.KNearest.load(selectedFiles[0])
+
def tesseractFileSelectorFilesSelected(self):
selectedFiles = self.tesseractFileSelector.selectedFiles()
if selectedFiles:
pytesseract.pytesseract.tesseract_cmd = selectedFiles[0]
+ def siftDatabaseFileSelected(self):
+ selectedFiles = self.siftDatabaseSelector.selectedFiles()
+ if selectedFiles:
+ self.siftDatabase = SIFTDatabase(selectedFiles[0])
+
@Slot()
def on_ocr_addImageButton_clicked(self):
files, _filter = QFileDialog.getOpenFileNames(
@@ -63,7 +87,10 @@ class TabOcr(Ui_TabOcr, QWidget):
index = self.ocrQueueModel.index(row, 0)
imagePath = index.data(OcrQueueModel.ImagePathRole)
runnable = TabDeviceV2OcrRunnable(
- imagePath, self.deviceComboBox.currentData(), self.knn, self.siftDb
+ imagePath,
+ self.deviceComboBox.currentData(),
+ self.knnModel,
+ self.siftDatabase,
)
self.ocrQueueModel.setData(index, runnable, OcrQueueModel.OcrRunnableRole)
self.ocrQueueModel.setData(