starting work on image module
This commit is contained in:
parent
2a726a96b7
commit
f9b0b75062
|
@ -19,6 +19,7 @@ set(PROJECT_SOURCES
|
|||
mainwindow.ui
|
||||
)
|
||||
|
||||
|
||||
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
||||
qt_add_executable(checks-parser
|
||||
MANUAL_FINALIZATION
|
||||
|
@ -48,14 +49,12 @@ else()
|
|||
ofd/ofd.h ofd/ofd.cpp
|
||||
ofd/module.h ofd/module.cpp
|
||||
utils/utils.h utils/utils.cpp
|
||||
image/checkimage.h image/checkimage.cpp
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_link_libraries(checks-parser PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
|
||||
|
||||
|
||||
|
||||
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
|
||||
# If you are developing for iOS or macOS you should consider setting an
|
||||
# explicit, fixed bundle identifier manually though.
|
||||
|
@ -86,3 +85,12 @@ FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/libcpr/cpr.git
|
|||
GIT_TAG 3b15fa82ea74739b574d705fea44959b58142eb8)
|
||||
FetchContent_MakeAvailable(cpr)
|
||||
target_link_libraries(checks-parser PRIVATE cpr::cpr)
|
||||
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
pkg_search_module(opencv REQUIRED IMPORTED_TARGET opencv)
|
||||
target_link_libraries(checks-parser PRIVATE PkgConfig::opencv)
|
||||
target_link_libraries(checks-parser PRIVATE -ltesseract)
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
#include <string>
|
||||
#include <tesseract/baseapi.h>
|
||||
#include <leptonica/allheaders.h>
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include "checkimage.h"
|
||||
|
||||
CheckImage::CheckImage(std::string path) {
|
||||
this->path = path;
|
||||
}
|
||||
|
||||
std::string CheckImage::parse_text() {
|
||||
std::string result;
|
||||
|
||||
tesseract::TessBaseAPI *ocr = new tesseract::TessBaseAPI();
|
||||
ocr->Init(NULL, "rus", tesseract::OEM_LSTM_ONLY);
|
||||
ocr->SetPageSegMode(tesseract::PSM_AUTO);
|
||||
|
||||
cv::Mat im = cv::imread(this->path, cv::IMREAD_COLOR);
|
||||
ocr->SetImage(im.data, im.cols, im.rows, 3, im.step);
|
||||
result = std::string(ocr->GetUTF8Text());
|
||||
|
||||
return result;
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
#ifndef CHECKIMAGE_H
|
||||
#define CHECKIMAGE_H
|
||||
|
||||
#include <string>
|
||||
|
||||
class CheckImage {
|
||||
std::string path;
|
||||
public:
|
||||
CheckImage(std::string path);
|
||||
|
||||
std::string parse_text();
|
||||
|
||||
};
|
||||
|
||||
#endif // CHECKIMAGE_H
|
5
main.cpp
5
main.cpp
|
@ -1,14 +1,11 @@
|
|||
#include "mainwindow.h"
|
||||
#include "ofd/ofd.h"
|
||||
#include "utils/utils.h"
|
||||
#include <iostream>
|
||||
#include <QApplication>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
QApplication a(argc, argv);
|
||||
MainWindow w;
|
||||
w.show();
|
||||
|
||||
|
||||
return a.exec();
|
||||
}
|
||||
|
|
|
@ -37,10 +37,10 @@ void MainWindow::setupStoresList() {
|
|||
void MainWindow::on_checkType_currentIndexChanged(int index) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
ui->checkInfo->setVisible(true);
|
||||
ui->checkInfoText->setVisible(true);
|
||||
break;
|
||||
case 1:
|
||||
ui->checkInfo->setVisible(false);
|
||||
ui->checkInfoText->setVisible(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
110
mainwindow.ui
110
mainwindow.ui
|
@ -37,12 +37,48 @@
|
|||
<string>Store</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QWidget" name="checkInfo" native="true">
|
||||
<widget class="QLabel" name="checkTypeLabel">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>50</y>
|
||||
<width>81</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Check type</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QComboBox" name="checkType">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>90</x>
|
||||
<y>50</y>
|
||||
<width>211</width>
|
||||
<height>26</height>
|
||||
</rect>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Text</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Image (not yet implemented)</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
<widget class="QWidget" name="checkInfoText" native="true">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>90</y>
|
||||
<width>801</width>
|
||||
<y>70</y>
|
||||
<width>421</width>
|
||||
<height>511</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -86,38 +122,58 @@
|
|||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QLabel" name="storeTypeLabel_2">
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>50</y>
|
||||
<width>81</width>
|
||||
<height>20</height>
|
||||
<x>460</x>
|
||||
<y>270</y>
|
||||
<width>301</width>
|
||||
<height>221</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Check type</string>
|
||||
<property name="tabPosition">
|
||||
<enum>QTabWidget::TabPosition::North</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QComboBox" name="checkType">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>90</x>
|
||||
<y>50</y>
|
||||
<width>211</width>
|
||||
<height>26</height>
|
||||
</rect>
|
||||
<property name="tabShape">
|
||||
<enum>QTabWidget::TabShape::Rounded</enum>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="elideMode">
|
||||
<enum>Qt::TextElideMode::ElideNone</enum>
|
||||
</property>
|
||||
<property name="documentMode">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="tabsClosable">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="tabBarAutoHide">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
<string>Text</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_2">
|
||||
<attribute name="title">
|
||||
<string>Image</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QStackedWidget" name="stackedWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>460</x>
|
||||
<y>60</y>
|
||||
<width>241</width>
|
||||
<height>151</height>
|
||||
</rect>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Image (not yet implemented)</string>
|
||||
</property>
|
||||
</item>
|
||||
<widget class="QWidget" name="page_5"/>
|
||||
<widget class="QWidget" name="page_6"/>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
|
|
Loading…
Reference in New Issue