From 6c70b0f21a1321678759fe9ba6753e032c22c41f Mon Sep 17 00:00:00 2001 From: Gres Date: Thu, 23 Apr 2020 22:06:08 +0300 Subject: [PATCH] Add trace messages --- src/correct/corrector.cpp | 4 +++- src/correct/correctorworker.cpp | 6 ++++++ src/correct/hunspellcorrector.cpp | 2 ++ src/ocr/recognizerworker.cpp | 6 ++++++ src/ocr/tesseract.cpp | 10 +++++++++- src/translate/translator.cpp | 3 +++ 6 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/correct/corrector.cpp b/src/correct/corrector.cpp index 3623331..d6cefc6 100644 --- a/src/correct/corrector.cpp +++ b/src/correct/corrector.cpp @@ -47,8 +47,10 @@ void Corrector::correct(const TaskPtr &task) task->corrected = task->recognized; - if (!settings_.userSubstitutions.empty()) + if (!settings_.userSubstitutions.empty()) { task->corrected = substituteUser(task->recognized, task->sourceLanguage); + LTRACE() << "Corrected with user data"; + } if (task->useHunspell) { emit correctAuto(task); diff --git a/src/correct/correctorworker.cpp b/src/correct/correctorworker.cpp index c76d74b..b79b1be 100644 --- a/src/correct/correctorworker.cpp +++ b/src/correct/correctorworker.cpp @@ -13,9 +13,11 @@ void CorrectorWorker::handle(const TaskPtr &task) SOFT_ASSERT(task->isValid(), return ); SOFT_ASSERT(!hunspellDir_.isEmpty(), return ); + LTRACE() << "Start hunspell correction" << task->sourceLanguage; auto result = task; if (!bundles_.count(task->sourceLanguage)) { + LTRACE() << "Create hunspell engine" << task->sourceLanguage; auto engine = std::make_unique(task->sourceLanguage, hunspellDir_); @@ -27,6 +29,7 @@ void CorrectorWorker::handle(const TaskPtr &task) } bundles_.emplace(task->sourceLanguage, Bundle{std::move(engine), 0}); + LTRACE() << "Added hunspell engine" << task->sourceLanguage; } auto &bundle = bundles_[task->sourceLanguage]; @@ -49,6 +52,7 @@ void CorrectorWorker::reset(const QString &hunspellDir) hunspellDir_ = hunspellDir; bundles_.clear(); + LTRACE() << "Cleared hunspell engines"; } void CorrectorWorker::removeUnused(Generation current) @@ -60,7 +64,9 @@ void CorrectorWorker::removeUnused(Generation current) if (it->second.usesLeft >= 0) { ++it; } else { + const auto name = it->first; it = bundles_.erase(it); + LTRACE() << "Removed unused hunspell engine" << name; } } } diff --git a/src/correct/hunspellcorrector.cpp b/src/correct/hunspellcorrector.cpp index 9626b5a..5509228 100644 --- a/src/correct/hunspellcorrector.cpp +++ b/src/correct/hunspellcorrector.cpp @@ -93,10 +93,12 @@ void HunspellCorrector::init(const QString &path) engine_ = std::make_unique(qPrintable(aff), qPrintable(dics.first())); + LTRACE() << "Created hunspell instance"; dics.pop_front(); if (!dics.isEmpty()) { for (const auto &dic : dics) engine_->add_dic(qPrintable(dic)); + LTRACE() << "Loaded hunspell dicts" << dics; } } diff --git a/src/ocr/recognizerworker.cpp b/src/ocr/recognizerworker.cpp index 5366655..40d354f 100644 --- a/src/ocr/recognizerworker.cpp +++ b/src/ocr/recognizerworker.cpp @@ -11,9 +11,12 @@ void RecognizeWorker::handle(const TaskPtr &task) SOFT_ASSERT(task->isValid(), return ); SOFT_ASSERT(!tessdataPath_.isEmpty(), return ); + LTRACE() << "Start recognize" << task->captured; auto result = task; if (!engines_.count(task->sourceLanguage)) { + LTRACE() << "Create OCR engine" << task->sourceLanguage; + auto engine = std::make_unique(task->sourceLanguage, tessdataPath_); @@ -24,6 +27,7 @@ void RecognizeWorker::handle(const TaskPtr &task) } engines_.emplace(task->sourceLanguage, std::move(engine)); + LTRACE() << "Added OCR engine" << task->sourceLanguage; } auto &engine = engines_[task->sourceLanguage]; @@ -46,6 +50,7 @@ void RecognizeWorker::reset(const QString &tessdataPath) tessdataPath_ = tessdataPath; engines_.clear(); + LTRACE() << "Cleared OCR engines"; } void RecognizeWorker::removeUnused(Generation current) @@ -58,6 +63,7 @@ void RecognizeWorker::removeUnused(Generation current) continue; } engines_.erase(it->first); + LTRACE() << "Removed unused OCR engine" << it->first; it = lastGenerations_.erase(it); } } diff --git a/src/ocr/tesseract.cpp b/src/ocr/tesseract.cpp index 797b9f5..1181fc1 100644 --- a/src/ocr/tesseract.cpp +++ b/src/ocr/tesseract.cpp @@ -98,18 +98,22 @@ static Pix *prepareImage(const QImage &image) auto gray = pixConvertRGBToGray(pix, 0.0, 0.0, 0.0); SOFT_ASSERT(gray, return nullptr); pixDestroy(&pix); + LTRACE() << "Removed original Pix"; auto scaleSource = gray; auto scaled = scaleSource; if (const auto scale = getScale(scaleSource); scale > 1.0) { scaled = pixScale(scaleSource, scale, scale); + LTRACE() << "Scaled Pix for OCR" << LARG(scale) << LARG(scaled); if (!scaled) scaled = scaleSource; } - if (scaled != scaleSource) + if (scaled != scaleSource) { pixDestroy(&scaleSource); + LTRACE() << "Removed unscaled Pix"; + } return scaled; } @@ -184,13 +188,17 @@ QString Tesseract::recognize(const QPixmap &source) Pix *image = prepareImage(source.toImage()); SOFT_ASSERT(image != NULL, return {}); + LTRACE() << "Preprocessed Pix for OCR"; engine_->SetImage(image); char *outText = engine_->GetUTF8Text(); + LTRACE() << "Received recognized text"; engine_->Clear(); cleanupImage(&image); + LTRACE() << "Cleared preprocessed Pix"; QString result = QString(outText).trimmed(); delete[] outText; + LTRACE() << "Cleared recognized text buffer"; if (result.isEmpty()) error_ = QObject::tr("Failed to recognize text or no text selected"); diff --git a/src/translate/translator.cpp b/src/translate/translator.cpp index 96f23db..3b007cd 100644 --- a/src/translate/translator.cpp +++ b/src/translate/translator.cpp @@ -103,6 +103,7 @@ void Translator::translate(const TaskPtr &task) SOFT_ASSERT(task, return ); if (task->corrected.isEmpty()) { + LTRACE() << "Corrected text is empty. Skipping translation"; manager_.translated(task); return; } @@ -177,6 +178,7 @@ void Translator::createPage(const QString &scriptName, SOFT_ASSERT(log->document(), return ) log->document()->setMaximumBlockCount(1000); + LTRACE() << "Created page" << LARG(scriptName); } void Translator::showDebugView() @@ -279,6 +281,7 @@ void Translator::processQueue() pages_[translator]->start(task); task->translators.removeOne(translator); idlePages.erase(translator); + LTRACE() << "Started translation at" << translator << task; break; } }