wip: DeviceV2 ocr support

This commit is contained in:
283375 2023-08-15 15:33:11 +08:00
parent 0126ce6b9a
commit 044a8eb07a
5 changed files with 335 additions and 168 deletions

View File

@ -13,155 +13,146 @@
<property name="windowTitle"> <property name="windowTitle">
<string>OcrQueue</string> <string>OcrQueue</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
<widget class="QGroupBox" name="groupBox_2"> <widget class="QGroupBox" name="groupBox_3">
<property name="title"> <property name="title">
<string>ocr.title</string> <string>ocr.queue.title</string>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
<widget class="QGroupBox" name="groupBox_3"> <widget class="QPushButton" name="ocr_addImageButton">
<property name="title"> <property name="text">
<string>ocr.queue.title</string> <string>ocr.queue.addImageButton</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QPushButton" name="ocr_addImageButton">
<property name="text">
<string>ocr.queue.addImageButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_removeSelectedButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>ocr.queue.removeSelected</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_removeAllButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>ocr.queue.removeAll</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="ocr_startButton">
<property name="text">
<string>ocr.queue.startOcrButton</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_3"> <widget class="QPushButton" name="ocr_removeSelectedButton">
<item> <property name="enabled">
<widget class="QTableView" name="tableView"> <bool>true</bool>
<property name="editTriggers"> </property>
<set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set> <property name="text">
</property> <string>ocr.queue.removeSelected</string>
<property name="selectionMode"> </property>
<enum>QAbstractItemView::MultiSelection</enum> </widget>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="verticalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
<property name="horizontalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
</widget>
</item>
<item>
<widget class="QProgressBar" name="progressBar">
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>0</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="format">
<string notr="true">%v/%m - %p%</string>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<widget class="QGroupBox" name="groupBox_5"> <widget class="QPushButton" name="ocr_removeAllButton">
<property name="title"> <property name="enabled">
<string>ocr.results</string> <bool>true</bool>
</property>
<property name="text">
<string>ocr.queue.removeAll</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="ocr_startButton">
<property name="text">
<string>ocr.queue.startOcrButton</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QTableView" name="tableView">
<property name="editTriggers">
<set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="verticalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
<property name="horizontalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
</widget>
</item>
<item>
<widget class="QProgressBar" name="progressBar">
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>0</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="format">
<string notr="true">%v/%m - %p%</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="title">
<string>ocr.results</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QPushButton" name="ocr_acceptSelectedButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>ocr.results.acceptSelectedButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_acceptAllButton">
<property name="text">
<string>ocr.results.acceptAllButton</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="ocr_ignoreValidateCheckBox">
<property name="text">
<string>ocr.results.ignoreValidate</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QPushButton" name="ocr_acceptSelectedButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>ocr.results.acceptSelectedButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_acceptAllButton">
<property name="text">
<string>ocr.results.acceptAllButton</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="ocr_ignoreValidateCheckBox">
<property name="text">
<string>ocr.results.ignoreValidate</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
</layout> </layout>

View File

@ -25,13 +25,9 @@ class Ui_OcrQueue(object):
if not OcrQueue.objectName(): if not OcrQueue.objectName():
OcrQueue.setObjectName(u"OcrQueue") OcrQueue.setObjectName(u"OcrQueue")
OcrQueue.resize(741, 372) OcrQueue.resize(741, 372)
self.verticalLayout = QVBoxLayout(OcrQueue) self.horizontalLayout_2 = QHBoxLayout(OcrQueue)
self.verticalLayout.setObjectName(u"verticalLayout") self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.groupBox_2 = QGroupBox(OcrQueue) self.groupBox_3 = 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.groupBox_3.setObjectName(u"groupBox_3") self.groupBox_3.setObjectName(u"groupBox_3")
self.verticalLayout_2 = QVBoxLayout(self.groupBox_3) self.verticalLayout_2 = QVBoxLayout(self.groupBox_3)
self.verticalLayout_2.setObjectName(u"verticalLayout_2") self.verticalLayout_2.setObjectName(u"verticalLayout_2")
@ -62,11 +58,11 @@ class Ui_OcrQueue(object):
self.verticalLayout_2.addWidget(self.ocr_startButton) 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 = QVBoxLayout()
self.verticalLayout_3.setObjectName(u"verticalLayout_3") self.verticalLayout_3.setObjectName(u"verticalLayout_3")
self.tableView = QTableView(self.groupBox_2) self.tableView = QTableView(OcrQueue)
self.tableView.setObjectName(u"tableView") self.tableView.setObjectName(u"tableView")
self.tableView.setEditTriggers(QAbstractItemView.DoubleClicked|QAbstractItemView.EditKeyPressed) self.tableView.setEditTriggers(QAbstractItemView.DoubleClicked|QAbstractItemView.EditKeyPressed)
self.tableView.setSelectionMode(QAbstractItemView.MultiSelection) self.tableView.setSelectionMode(QAbstractItemView.MultiSelection)
@ -76,7 +72,7 @@ class Ui_OcrQueue(object):
self.verticalLayout_3.addWidget(self.tableView) self.verticalLayout_3.addWidget(self.tableView)
self.progressBar = QProgressBar(self.groupBox_2) self.progressBar = QProgressBar(OcrQueue)
self.progressBar.setObjectName(u"progressBar") self.progressBar.setObjectName(u"progressBar")
self.progressBar.setMinimum(0) self.progressBar.setMinimum(0)
self.progressBar.setMaximum(0) self.progressBar.setMaximum(0)
@ -87,9 +83,9 @@ class Ui_OcrQueue(object):
self.verticalLayout_3.addWidget(self.progressBar) 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.groupBox_5.setObjectName(u"groupBox_5")
self.verticalLayout_4 = QVBoxLayout(self.groupBox_5) self.verticalLayout_4 = QVBoxLayout(self.groupBox_5)
self.verticalLayout_4.setObjectName(u"verticalLayout_4") self.verticalLayout_4.setObjectName(u"verticalLayout_4")
@ -114,10 +110,7 @@ class Ui_OcrQueue(object):
self.verticalLayout_4.addWidget(self.ocr_ignoreValidateCheckBox) self.verticalLayout_4.addWidget(self.ocr_ignoreValidateCheckBox)
self.horizontalLayout.addWidget(self.groupBox_5) self.horizontalLayout_2.addWidget(self.groupBox_5)
self.verticalLayout.addWidget(self.groupBox_2)
self.retranslateUi(OcrQueue) self.retranslateUi(OcrQueue)
@ -127,7 +120,6 @@ class Ui_OcrQueue(object):
def retranslateUi(self, OcrQueue): def retranslateUi(self, OcrQueue):
OcrQueue.setWindowTitle(QCoreApplication.translate("OcrQueue", u"OcrQueue", None)) 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.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_addImageButton.setText(QCoreApplication.translate("OcrQueue", u"ocr.queue.addImageButton", None))
self.ocr_removeSelectedButton.setText(QCoreApplication.translate("OcrQueue", u"ocr.queue.removeSelected", None)) self.ocr_removeSelectedButton.setText(QCoreApplication.translate("OcrQueue", u"ocr.queue.removeSelected", None))

View File

@ -37,19 +37,112 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QGroupBox" name="groupBox_4"> <widget class="QWidget" name="horizontalWidget" native="true">
<property name="title"> <property name="sizePolicy">
<string>tesseractSelector.title</string> <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_5"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item> <item>
<widget class="FileSelector" name="tesseractFileSelector" native="true"/> <widget class="QGroupBox" name="groupBox_6">
<property name="title">
<string>knnModelSelector.title</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="FileSelector" name="knnModelSelector" native="true"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QStackedWidget" name="deviceDependenciesStackedWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="deviceV1">
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>tesseractSelector.title</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="FileSelector" name="tesseractFileSelector" native="true"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="deviceV2">
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="title">
<string>siftDatabaseSelector.title</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="FileSelector" name="siftDatabaseSelector" native="true"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QGroupBox" name="groupBox_2"> <widget class="QGroupBox" name="groupBox_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title"> <property name="title">
<string>ocr.title</string> <string>ocr.title</string>
</property> </property>

View File

@ -16,7 +16,7 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QImage, QKeySequence, QLinearGradient, QPainter, QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform) QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QGroupBox, QHBoxLayout, QPushButton, from PySide6.QtWidgets import (QApplication, QGroupBox, QHBoxLayout, QPushButton,
QSizePolicy, QVBoxLayout, QWidget) QSizePolicy, QStackedWidget, QVBoxLayout, QWidget)
from ui.implements.components import (DevicesComboBox, FileSelector, OcrQueue) from ui.implements.components import (DevicesComboBox, FileSelector, OcrQueue)
@ -50,7 +50,36 @@ class Ui_TabOcr(object):
self.verticalLayout_3.addWidget(self.groupBox) 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.groupBox_4.setObjectName(u"groupBox_4")
self.verticalLayout_5 = QVBoxLayout(self.groupBox_4) self.verticalLayout_5 = QVBoxLayout(self.groupBox_4)
self.verticalLayout_5.setObjectName(u"verticalLayout_5") self.verticalLayout_5.setObjectName(u"verticalLayout_5")
@ -60,10 +89,40 @@ class Ui_TabOcr(object):
self.verticalLayout_5.addWidget(self.tesseractFileSelector) 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 = QGroupBox(TabOcr)
self.groupBox_2.setObjectName(u"groupBox_2") 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 = QHBoxLayout(self.groupBox_2)
self.horizontalLayout.setObjectName(u"horizontalLayout") self.horizontalLayout.setObjectName(u"horizontalLayout")
self.ocrQueue = OcrQueue(self.groupBox_2) self.ocrQueue = OcrQueue(self.groupBox_2)
@ -77,13 +136,18 @@ class Ui_TabOcr(object):
self.retranslateUi(TabOcr) self.retranslateUi(TabOcr)
self.deviceDependenciesStackedWidget.setCurrentIndex(0)
QMetaObject.connectSlotsByName(TabOcr) QMetaObject.connectSlotsByName(TabOcr)
# setupUi # setupUi
def retranslateUi(self, TabOcr): def retranslateUi(self, TabOcr):
self.openWizardButton.setText(QCoreApplication.translate("TabOcr", u"openWizardButton", None)) self.openWizardButton.setText(QCoreApplication.translate("TabOcr", u"openWizardButton", None))
self.groupBox.setTitle(QCoreApplication.translate("TabOcr", u"deviceSelector.title", 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_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)) self.groupBox_2.setTitle(QCoreApplication.translate("TabOcr", u"ocr.title", None))
pass pass
# retranslateUi # retranslateUi

View File

@ -1,14 +1,17 @@
import cv2
import pytesseract import pytesseract
# from arcaea_offline_ocr_device_creation_wizard.implements.wizard import Wizard # from arcaea_offline_ocr_device_creation_wizard.implements.wizard import Wizard
from PySide6.QtCore import QModelIndex, Qt, Slot from arcaea_offline_ocr.device.v1.definition import DeviceV1
from PySide6.QtGui import QColor from arcaea_offline_ocr.device.v2.definition import DeviceV2
from PySide6.QtWidgets import QFileDialog, QHeaderView, QWidget 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.designer.tabs.tabOcr_ui import Ui_TabOcr
from ui.extends.components.ocrQueue import OcrQueueModel from ui.extends.components.ocrQueue import OcrQueueModel
from ui.extends.settings import Settings 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): class TabOcr(Ui_TabOcr, QWidget):
@ -17,10 +20,16 @@ class TabOcr(Ui_TabOcr, QWidget):
self.setupUi(self) self.setupUi(self)
self.openWizardButton.setEnabled(False) self.openWizardButton.setEnabled(False)
self.deviceComboBox.currentIndexChanged.connect(
self.changeDeviceDepStackedWidget
)
self.deviceFileSelector.filesSelected.connect(self.deviceFileSelected) self.deviceFileSelector.filesSelected.connect(self.deviceFileSelected)
self.knnModelSelector.filesSelected.connect(self.knnModelFileSelected)
self.tesseractFileSelector.filesSelected.connect( self.tesseractFileSelector.filesSelected.connect(
self.tesseractFileSelectorFilesSelected self.tesseractFileSelectorFilesSelected
) )
self.siftDatabaseSelector.filesSelected.connect(self.siftDatabaseFileSelected)
settings = Settings() settings = Settings()
self.deviceFileSelector.selectFile(settings.devicesJsonFile()) self.deviceFileSelector.selectFile(settings.devicesJsonFile())
@ -37,17 +46,32 @@ class TabOcr(Ui_TabOcr, QWidget):
# wizard.open() # wizard.open()
pass pass
def changeDeviceDepStackedWidget(self):
device = self.deviceComboBox.currentData()
if isinstance(device, (DeviceV1, DeviceV2)):
self.deviceDependenciesStackedWidget.setCurrentIndex(device.version - 1)
def deviceFileSelected(self): def deviceFileSelected(self):
selectedFiles = self.deviceFileSelector.selectedFiles() selectedFiles = self.deviceFileSelector.selectedFiles()
if selectedFiles: if selectedFiles:
file = selectedFiles[0] file = selectedFiles[0]
self.deviceComboBox.loadDevicesJson(file) self.deviceComboBox.loadDevicesJson(file)
def knnModelFileSelected(self):
selectedFiles = self.knnModelSelector.selectedFiles()
if selectedFiles:
self.knnModel = cv2.ml.KNearest.load(selectedFiles[0])
def tesseractFileSelectorFilesSelected(self): def tesseractFileSelectorFilesSelected(self):
selectedFiles = self.tesseractFileSelector.selectedFiles() selectedFiles = self.tesseractFileSelector.selectedFiles()
if selectedFiles: if selectedFiles:
pytesseract.pytesseract.tesseract_cmd = selectedFiles[0] pytesseract.pytesseract.tesseract_cmd = selectedFiles[0]
def siftDatabaseFileSelected(self):
selectedFiles = self.siftDatabaseSelector.selectedFiles()
if selectedFiles:
self.siftDatabase = SIFTDatabase(selectedFiles[0])
@Slot() @Slot()
def on_ocr_addImageButton_clicked(self): def on_ocr_addImageButton_clicked(self):
files, _filter = QFileDialog.getOpenFileNames( files, _filter = QFileDialog.getOpenFileNames(
@ -63,7 +87,10 @@ class TabOcr(Ui_TabOcr, QWidget):
index = self.ocrQueueModel.index(row, 0) index = self.ocrQueueModel.index(row, 0)
imagePath = index.data(OcrQueueModel.ImagePathRole) imagePath = index.data(OcrQueueModel.ImagePathRole)
runnable = TabDeviceV2OcrRunnable( 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(index, runnable, OcrQueueModel.OcrRunnableRole)
self.ocrQueueModel.setData( self.ocrQueueModel.setData(