ensured building on ubuntu 18.04

This commit is contained in:
leca 2024-12-01 18:53:16 +03:00
parent b59b42a40c
commit 88d849bee9
11 changed files with 194 additions and 252 deletions

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.10)
project(checks-parser VERSION 0.1 LANGUAGES CXX)
@ -71,7 +71,6 @@ else()
settings/settings.h settings/settings.cpp
settingsdialog.h settingsdialog.cpp settingsdialog.ui
adjustpicturedialog.h adjustpicturedialog.cpp adjustpicturedialog.ui
imageview/imageview.h imageview/imageview.cpp
image_redactor/imageredactor.h image_redactor/imageredactor.cpp
solvecaptchadialog.h solvecaptchadialog.cpp solvecaptchadialog.ui
exceptions/ofdrequestexception.h exceptions/ofdrequestexception.cpp
@ -119,3 +118,6 @@ target_link_libraries(checks-parser PRIVATE -lzbar)
target_link_libraries(checks-parser PRIVATE -ltesseract)
target_link_libraries(checks-parser PRIVATE -lcurl)
target_link_libraries(checks-parser PRIVATE ${OpenCV_LIBS} )
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8)
target_link_libraries(checks-parser PRIVATE -lstdc++fs)
endif()

View File

@ -46,6 +46,7 @@ make -j{nproc}
sudo make install
```
##### Debian
apt install -y qtbase5-dev openssl libmbedtls-dev tesseract-ocr tesseract-ocr-rus libopencv-dev libzbar-dev qttools5-dev nlohmann-json-dev libcurl4-openssl-dev libtesseract-dev
TODO
### Windows
Maybe

View File

@ -5,7 +5,7 @@
#include <opencv2/imgproc.hpp>
#include <string>
#include <opencv2/core/mat.hpp>
#include <QColorTransform>
//#include <QColorTransform>
#include <QFileDialog>
#include <QMessageBox>
#include <zbar.h>
@ -53,7 +53,6 @@ std::string AdjustPictureDialog::decode() {
zbar::ImageScanner scanner;
scanner.set_config(zbar::ZBAR_QRCODE, zbar::ZBAR_CFG_ENABLE, 1);
scanner.set_config(zbar::ZBAR_QRCODE, zbar::ZBAR_CFG_TEST_INVERTED, 1);
cv::Mat imGray;
cv::cvtColor(im, imGray, cv::COLOR_BGR2GRAY);

View File

@ -1,51 +0,0 @@
#include <QWheelEvent>
#include "imageview.h"
#include <iostream>
ImageView::ImageView(QWidget *parent) :
QLabel(parent) {
// std::cout << this->geometry().height() << " " << this->geometry().width() << std::endl;
}
// ImageView::ImageView(QWidget *parent, std::string path):
// QLabel(parent) {
// this->setPixmap(QPixmap(QString::fromStdString(path)));
// }
void ImageView::wheelEvent(QWheelEvent *event) {
QPointF shift = event->position();
QRegion r = QRegion();
// this->pixmap(Qt::ReturnByValueConstant::ReturnByValue).scroll(10, 10, this->rect(), &r);
this->scroll(shift.x(), shift.y(), this->rect());
// this->setPixmap(QPixmap());
// pm.scroll(shift.x(), shift.y(), this->rect());
// pm.scroll();
// this->setPixmap(pm);
//this->pixmap(Qt::ReturnByValueConstant::ReturnByValue).scroll(shift.x(), shift.y(), this->pixmap()->rect());
QPoint numDegrees = event->angleDelta() / 8;
std::cout << numDegrees.x() << std::endl;
event->accept();
}
void ImageView::setImage(std::string image){
//Commented is a way of scaling that is, as I understand, is lossless. If there'll be problems with current method's losses, I'll return to commented method
maxHeight = this->height();
maxWidth = this->width();
QPixmap pixmap = QPixmap(QString::fromStdString(image));
// double scaleFactor = pixmap.height() > pixmap.width()? static_cast<double>(maxHeight) / pixmap.height() : static_cast<double>(maxWidth) / pixmap.width();
pixmap = pixmap.scaled(maxWidth, maxHeight, Qt::AspectRatioMode::KeepAspectRatio);
this->setPixmap(pixmap);
// this->setGeometry(this->geometry().x(), this->geometry().y(), pixmap.width() * scaleFactor, pixmap.height() * scaleFactor);
// this->setScaledContents(true);
}

View File

@ -1,19 +0,0 @@
#ifndef IMAGEVIEW_H
#define IMAGEVIEW_H
#include <QLabel>
#include <QObject>
#include <QWidget>
class ImageView : public QLabel
{
Q_OBJECT
double maxHeight, maxWidth;
public:
ImageView(QWidget *parent=nullptr);
// ImageView(QWidget *parent=nullptr, std::string path="");
void wheelEvent(QWheelEvent*);
void setImage(std::string);
};
#endif // IMAGEVIEW_H

View File

@ -5,7 +5,13 @@
#include <QApplication>
#include <curl/curl.h>
#include <iostream>
#include <filesystem>
#if __GNUC__ < 8
# include <experimental/filesystem>
using namespace std::experimental::filesystem;
#else
# include <filesystem>
using std::filesystem;
#endif
#include <fstream>
#include <QTranslator>
@ -25,7 +31,7 @@ int main(int argc, char *argv[]) {
curl_global_init(CURL_GLOBAL_ALL);
std::string program_data_path = get_path_relative_to_home(".local/share/checks_parser");
std::filesystem::create_directories(program_data_path);
create_directories(program_data_path);
std::string settings_file_path =
get_path_relative_to_home(".local/share/checks_parser/settings.json");

View File

@ -3,7 +3,11 @@
#include <string>
#include <vector>
#include <filesystem>
#if __GNUC__ < 8
# include <experimental/filesystem>
#else
# include <filesystem>
#endif
#include <iostream>
#include <string>
#include <vector>

View File

@ -3,18 +3,25 @@
#include "../net/net.h"
#include "../settings/settings.h"
#include "../utils/utils.h"
#include <filesystem>
#include <iostream>
#if __GNUC__ < 8
# include <experimental/filesystem>
using namespace std::experimental;
#else
# include <filesystem>
using std::filesystem;
#endif
Parser::Parser() {}
std::vector<std::string> Parser::search_modules() {
Settings s(get_path_relative_to_home(".local/share/checks_parser/settings.json"));
std::string path = get_path_relative_to_home(s.get_setting("stores_modules_dir"));//std::string(std::getenv("HOME")) + "/" + STORES_MODULES_DIR;
std::filesystem::directory_entry modules_dir(path);
filesystem::directory_entry modules_dir(path);
if (!modules_dir.exists()) {
std::filesystem::create_directories(path);
if (!exists(modules_dir)) {
filesystem::create_directories(path);
std::cout << "No modules directory found. Created one at " << path
<< std::endl;
std::cout << "Please, download modules to that directory from my git."
@ -23,7 +30,7 @@ std::vector<std::string> Parser::search_modules() {
std::vector<std::string> modules_files;
for (auto file : std::filesystem::directory_iterator(path)) {
for (auto file : filesystem::directory_iterator(path)) {
modules_files.push_back(file.path());
}
@ -67,12 +74,12 @@ std::vector<std::string> Parser::check_updates() {
std::vector<std::string> to_download;
std::vector<std::string> stored_modules;
std::filesystem::directory_entry modules_dir(path);
if (!modules_dir.exists()) {
std::filesystem::create_directories(path);
filesystem::directory_entry modules_dir(path);
if (!exists(modules_dir)) {
filesystem::create_directories(path);
}
for (const auto& file : std::filesystem::directory_iterator(path)) {
if (!file.is_regular_file()) continue;
for (const auto& file : filesystem::directory_iterator(path)) {
if (!is_regular_file(file)) continue;
stored_modules.push_back(file.path().filename());
std::cout << file.path().filename() << " detected store module" << std::endl;
}

View File

@ -1,14 +1,21 @@
#include "settings.h"
#include <filesystem>
#include <fstream>
#include <nlohmann/json.hpp>
#include <string>
#include "../utils/utils.h"
#if __GNUC__ < 8
# include <experimental/filesystem>
using namespace std::experimental;
#else
# include <filesystem>
using std::filesystem;
#endif
Settings::Settings(std::string path) {
this->settings_file_path = path;
if (!std::filesystem::exists(path)) {
if (!filesystem::exists(path)) {
std::ofstream output(path);
nlohmann::json settings = R"({
@ -53,8 +60,8 @@ Settings::Settings(std::string path) {
this->settings = settings;
}
std::filesystem::create_directories(get_path_relative_to_home(this->settings["ofds_modules_dir"]));
std::filesystem::create_directories(get_path_relative_to_home(this->settings["stores_modules_dir"]));
filesystem::create_directories(get_path_relative_to_home(this->settings["ofds_modules_dir"]));
filesystem::create_directories(get_path_relative_to_home(this->settings["stores_modules_dir"]));
}
void Settings::write_setting(std::string setting, std::string value) {

View File

@ -1,27 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<TS version="2.1">
<context>
<name>AdjustPictureDialog</name>
<message>
<location filename="../adjustpicturedialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialog</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../adjustpicturedialog.ui" line="58"/>
<source>Please, zoom to qr code and adjust contrast so that qr code looks sharp</source>
<translation>Please, zoom to qr code and adjust contrast so that qr code looks sharp</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../adjustpicturedialog.cpp" line="40"/>
<source>QR code was not detected on that image. Please edit it again or enter data manually</source>
<translation>QR code was not detected on that image. Please edit it again or enter data manually</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../adjustpicturedialog.cpp" line="42"/>
<source>No QR code</source>
<translation>No QR code</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -29,144 +29,135 @@
<message>
<location filename="../mainwindow.ui" line="14"/>
<source>MainWindow</source>
<translation>Главное окно</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="37"/>
<source>Store type</source>
<translation>Store type</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="50"/>
<source>Parse</source>
<translation>Parse</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="63"/>
<source>Preferences</source>
<translation>Preferences</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="80"/>
<source>Text</source>
<translation>Text</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="92"/>
<source>Check content</source>
<translation>Check content</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="108"/>
<source>OCR</source>
<translatorcomment>OCR = Optical Character Recognition</translatorcomment>
<translation>OCR</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="120"/>
<location filename="../mainwindow.ui" line="213"/>
<source>Choose</source>
<translation>Choose</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="143"/>
<location filename="../mainwindow.ui" line="200"/>
<source>Path to image: </source>
<translation>Path to image: </translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="156"/>
<source>Here is recognised check text. Please, edit it if something&apos;s wrong:</source>
<translation>Here is recognised check text. Please, edit it if something&apos;s wrong:</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="175"/>
<source>OFD</source>
<translatorcomment>OFD = Оператор Фискальных Данных</translatorcomment>
<translation>OFD</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="226"/>
<source>0000000000000000</source>
<translation>0000000000000000</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="245"/>
<source>FN (Fiscal Number)</source>
<translatorcomment>FN = Фискальный Номер</translatorcomment>
<translation>FN (Fiscal Number)</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="264"/>
<source>FD (Fiscal Document)</source>
<translatorcomment>FD = Фискальный Документ</translatorcomment>
<translation>FD (Fiscal Document)</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="277"/>
<location filename="../mainwindow.ui" line="309"/>
<source>0000000000</source>
<translation>000000000</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="296"/>
<source>FI (Fiscal Identifier)</source>
<translatorcomment>FI = Фискальный Признак</translatorcomment>
<translation>FI (Fiscal Identifier)</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="333"/>
<source>Funds income</source>
<translatorcomment>Приход средств</translatorcomment>
<translation>Funds incode</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="338"/>
<source>Funds return</source>
<translatorcomment>Возврат средств</translatorcomment>
<translation>Funds return</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="343"/>
<source>Funds spend</source>
<translatorcomment>Расход средств</translatorcomment>
<translation>Funds spend</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="348"/>
<source>Spends return</source>
<translatorcomment>Возврат расхода</translatorcomment>
<translation>Spends return</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="375"/>
<source>Total</source>
<translation>Total</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="392"/>
<source>checks parser</source>
<translation>checks parser</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="94"/>
<source>Captcha was not solved correctly!</source>
<translation>Captcha was not solved correctly!</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="96"/>
<source>Captcha is incorrect</source>
<translation>Captcha is incorrect</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="101"/>
<source>Check not found. Please, ensure correctness of entered data.</source>
<translation>Check not found. Please, ensure correctness of entered data.</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="103"/>
<source>Check was not found</source>
<translation></translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -174,112 +165,112 @@
<message>
<location filename="../outputdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialog</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="42"/>
<source>Path to export: </source>
<translation>Path to export: </translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="55"/>
<source>Choose</source>
<translation>Choose</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="68"/>
<source>Print header</source>
<translation>Print header</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="82"/>
<source>Goods name</source>
<translation>Goods name</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="87"/>
<source>Goods price</source>
<translation>Goods price</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="92"/>
<source>Goods quantity</source>
<translation>Goods quality</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="97"/>
<source>Goods net weight</source>
<translation>Goods net weight</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="102"/>
<source>Goods total</source>
<translation>Goods total</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="107"/>
<source>position</source>
<translation>position</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="112"/>
<source>name</source>
<translation>name</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="117"/>
<source>1</source>
<translation>1</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="122"/>
<source>Name</source>
<translation>Name</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="127"/>
<source>2</source>
<translation>2</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="132"/>
<source>Price</source>
<translation>Price</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="137"/>
<source>3</source>
<translation>3</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="142"/>
<source>Quantity</source>
<translation>Quantity</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="147"/>
<source>4</source>
<translation>4</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="152"/>
<source>Net weight</source>
<translation>Net Weight</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="157"/>
<source>5</source>
<translation>5</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="162"/>
<source>Total price</source>
<translation>Total price</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="176"/>
<source>Print total</source>
<translation>Print total</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -287,17 +278,17 @@
<message>
<location filename="../solvecaptchadialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialog</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../solvecaptchadialog.cpp" line="22"/>
<source>Please, enter a valid captcha</source>
<translation>Please, enter a valid captcha</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../solvecaptchadialog.cpp" line="24"/>
<source>No captcha</source>
<translation>No captcha</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -305,93 +296,93 @@
<message>
<location filename="../settingsdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialog</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="72"/>
<source>Goods name position</source>
<translation>Goods name position</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="79"/>
<source>Goods price per unit alias</source>
<translation>Goods price per unit alias</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="86"/>
<location filename="../settingsdialog.ui" line="217"/>
<source>Choose</source>
<translation>Choose</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="96"/>
<source>Print header</source>
<translation>Print header</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="103"/>
<source>Goods net weight alias</source>
<translation>Goods net weight alias</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="110"/>
<source>Stores modules url</source>
<translation>Stores modules url</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="120"/>
<source>Goods total alias</source>
<translation>Goods total alias</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="127"/>
<source>Goods name alias</source>
<translation>Goods name alias</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="137"/>
<source>Goods quantity alias</source>
<translation>Goods quantity alias</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="144"/>
<source>Stores modules directory</source>
<translation>Stores modules directory</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="157"/>
<source>OFD modules directory</source>
<translation>OFD modules directory</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="173"/>
<source>Goods price per unit position</source>
<translation>Goods price per unit position</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="180"/>
<source>Goods net weight position</source>
<translation>Goods net weight position</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="187"/>
<source>OFD modules url</source>
<translation>OFD modules url</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="197"/>
<source>Goods total position</source>
<translation>Goods total position</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="204"/>
<source>Goods quantity position</source>
<translation>Goods quantity position</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="227"/>
<source>Print total</source>
<translation>Print total</translation>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -6,22 +6,22 @@
<message>
<location filename="../adjustpicturedialog.ui" line="14"/>
<source>Dialog</source>
<translation>Диалог</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../adjustpicturedialog.ui" line="58"/>
<source>Please, zoom to qr code and adjust contrast so that qr code looks sharp</source>
<translation>Пожалуйста, приблизьте QR код и настройте контраст, чтобы он читался</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../adjustpicturedialog.cpp" line="40"/>
<source>QR code was not detected on that image. Please edit it again or enter data manually</source>
<translation>QR код не найден на этом изображении. Пожалуйста, попытайтесь снова или введите данные вручную</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../adjustpicturedialog.cpp" line="42"/>
<source>No QR code</source>
<translation>QR код не найден</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -29,140 +29,135 @@
<message>
<location filename="../mainwindow.ui" line="14"/>
<source>MainWindow</source>
<translation>ГлавноеОкно</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="37"/>
<source>Store type</source>
<translation>Магазин</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="50"/>
<source>Parse</source>
<translation>Парсить</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="63"/>
<source>Preferences</source>
<translation>Настройки</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="80"/>
<source>Text</source>
<translation>Текст</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="92"/>
<source>Check content</source>
<translation>Контент чека</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="108"/>
<source>OCR</source>
<translatorcomment>Оптическое Распознавание Символов</translatorcomment>
<translation>ОСР</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="120"/>
<location filename="../mainwindow.ui" line="213"/>
<source>Choose</source>
<translation>Выбрать</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="143"/>
<location filename="../mainwindow.ui" line="200"/>
<source>Path to image: </source>
<translation>Путь к изображению: </translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="156"/>
<source>Here is recognised check text. Please, edit it if something&apos;s wrong:</source>
<translation>Ниже приведён распознанный текст. Пожалуйста, отредактируйте его:</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="175"/>
<source>OFD</source>
<translatorcomment>Оператор Фискальных Данных</translatorcomment>
<translation>ОФД</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="226"/>
<source>0000000000000000</source>
<translation>0000000000000000</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="245"/>
<source>FN (Fiscal Number)</source>
<translatorcomment>Фискальный Норма</translatorcomment>
<translation>ФН</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="264"/>
<source>FD (Fiscal Document)</source>
<translatorcomment>Фискальный Документ</translatorcomment>
<translation>ФД</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="277"/>
<location filename="../mainwindow.ui" line="309"/>
<source>0000000000</source>
<translation>000000000</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="296"/>
<source>FI (Fiscal Identifier)</source>
<translatorcomment>Фискальный Признак</translatorcomment>
<translation>ФП</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="333"/>
<source>Funds income</source>
<translation>Приход средств</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="338"/>
<source>Funds return</source>
<translation>Возврат средств</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="343"/>
<source>Funds spend</source>
<translation>Расход средств</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="348"/>
<source>Spends return</source>
<translation>Возврат расхода</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="375"/>
<source>Total</source>
<translation>Итого</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.ui" line="392"/>
<source>checks parser</source>
<translation>Парсер чеков</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="94"/>
<source>Captcha was not solved correctly!</source>
<translation>Капча была решена неверно!</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="96"/>
<source>Captcha is incorrect</source>
<translation>Капча введена неверно</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="101"/>
<source>Check not found. Please, ensure correctness of entered data.</source>
<translation>Чек не найден. Пожалуйста, убедитесь в правильности введённых данных.</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="103"/>
<source>Check was not found</source>
<translation>Чек не найден</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -170,112 +165,112 @@
<message>
<location filename="../outputdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Диалог</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="42"/>
<source>Path to export: </source>
<translation>Путь для экспорта: </translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="55"/>
<source>Choose</source>
<translation>Выбрать</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="68"/>
<source>Print header</source>
<translation>Печатать заголовок</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="82"/>
<source>Goods name</source>
<translation>Имя товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="87"/>
<source>Goods price</source>
<translation>Цена товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="92"/>
<source>Goods quantity</source>
<translation>Количество товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="97"/>
<source>Goods net weight</source>
<translation>Масса нетто товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="102"/>
<source>Goods total</source>
<translation>Всего за товар</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="107"/>
<source>position</source>
<translation>позиция</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="112"/>
<source>name</source>
<translation>алиас</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="117"/>
<source>1</source>
<translation>1</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="122"/>
<source>Name</source>
<translation>Имя</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="127"/>
<source>2</source>
<translation>2</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="132"/>
<source>Price</source>
<translation>Цена</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="137"/>
<source>3</source>
<translation>3</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="142"/>
<source>Quantity</source>
<translation>Количество</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="147"/>
<source>4</source>
<translation>4</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="152"/>
<source>Net weight</source>
<translation>Масса нетто</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="157"/>
<source>5</source>
<translation>5</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="162"/>
<source>Total price</source>
<translation>Всего</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../outputdialog.ui" line="176"/>
<source>Print total</source>
<translation>Печатать Итого</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -283,17 +278,17 @@
<message>
<location filename="../solvecaptchadialog.ui" line="14"/>
<source>Dialog</source>
<translation>Диалог</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../solvecaptchadialog.cpp" line="22"/>
<source>Please, enter a valid captcha</source>
<translation>Пожалуйста, введите верную капчу</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../solvecaptchadialog.cpp" line="24"/>
<source>No captcha</source>
<translation>Нет капчи</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -301,93 +296,93 @@
<message>
<location filename="../settingsdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Диалог</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="72"/>
<source>Goods name position</source>
<translation>Позиция имени товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="79"/>
<source>Goods price per unit alias</source>
<translation>Алиас цены товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="86"/>
<location filename="../settingsdialog.ui" line="217"/>
<source>Choose</source>
<translation>Выбрать</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="96"/>
<source>Print header</source>
<translation>Печатать заголовок</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="103"/>
<source>Goods net weight alias</source>
<translation>Алиас массы нетто товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="110"/>
<source>Stores modules url</source>
<translation>URL модулей магазина</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="120"/>
<source>Goods total alias</source>
<translation>Алиас всего за продукт</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="127"/>
<source>Goods name alias</source>
<translation>Алиас имени товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="137"/>
<source>Goods quantity alias</source>
<translation>Алиас количества товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="144"/>
<source>Stores modules directory</source>
<translation>Директория модулей магазина</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="157"/>
<source>OFD modules directory</source>
<translation>Директория модулей ОФД</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="173"/>
<source>Goods price per unit position</source>
<translation>Позиция центы товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="180"/>
<source>Goods net weight position</source>
<translation>Позиция массы нетто товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="187"/>
<source>OFD modules url</source>
<translation>URL модулей ОФД</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="197"/>
<source>Goods total position</source>
<translation>Позиция всего за товар</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="204"/>
<source>Goods quantity position</source>
<translation>Позиция количества товара</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="227"/>
<source>Print total</source>
<translation>Печатать Итого</translation>
<translation type="unfinished"></translation>
</message>
</context>
</TS>