Add trace messages

This commit is contained in:
Gres 2020-04-23 22:06:08 +03:00
parent 3d50c17b81
commit 6c70b0f21a
6 changed files with 29 additions and 2 deletions

View File

@ -47,8 +47,10 @@ void Corrector::correct(const TaskPtr &task)
task->corrected = task->recognized; task->corrected = task->recognized;
if (!settings_.userSubstitutions.empty()) if (!settings_.userSubstitutions.empty()) {
task->corrected = substituteUser(task->recognized, task->sourceLanguage); task->corrected = substituteUser(task->recognized, task->sourceLanguage);
LTRACE() << "Corrected with user data";
}
if (task->useHunspell) { if (task->useHunspell) {
emit correctAuto(task); emit correctAuto(task);

View File

@ -13,9 +13,11 @@ void CorrectorWorker::handle(const TaskPtr &task)
SOFT_ASSERT(task->isValid(), return ); SOFT_ASSERT(task->isValid(), return );
SOFT_ASSERT(!hunspellDir_.isEmpty(), return ); SOFT_ASSERT(!hunspellDir_.isEmpty(), return );
LTRACE() << "Start hunspell correction" << task->sourceLanguage;
auto result = task; auto result = task;
if (!bundles_.count(task->sourceLanguage)) { if (!bundles_.count(task->sourceLanguage)) {
LTRACE() << "Create hunspell engine" << task->sourceLanguage;
auto engine = auto engine =
std::make_unique<HunspellCorrector>(task->sourceLanguage, hunspellDir_); std::make_unique<HunspellCorrector>(task->sourceLanguage, hunspellDir_);
@ -27,6 +29,7 @@ void CorrectorWorker::handle(const TaskPtr &task)
} }
bundles_.emplace(task->sourceLanguage, Bundle{std::move(engine), 0}); bundles_.emplace(task->sourceLanguage, Bundle{std::move(engine), 0});
LTRACE() << "Added hunspell engine" << task->sourceLanguage;
} }
auto &bundle = bundles_[task->sourceLanguage]; auto &bundle = bundles_[task->sourceLanguage];
@ -49,6 +52,7 @@ void CorrectorWorker::reset(const QString &hunspellDir)
hunspellDir_ = hunspellDir; hunspellDir_ = hunspellDir;
bundles_.clear(); bundles_.clear();
LTRACE() << "Cleared hunspell engines";
} }
void CorrectorWorker::removeUnused(Generation current) void CorrectorWorker::removeUnused(Generation current)
@ -60,7 +64,9 @@ void CorrectorWorker::removeUnused(Generation current)
if (it->second.usesLeft >= 0) { if (it->second.usesLeft >= 0) {
++it; ++it;
} else { } else {
const auto name = it->first;
it = bundles_.erase(it); it = bundles_.erase(it);
LTRACE() << "Removed unused hunspell engine" << name;
} }
} }
} }

View File

@ -93,10 +93,12 @@ void HunspellCorrector::init(const QString &path)
engine_ = engine_ =
std::make_unique<Hunspell>(qPrintable(aff), qPrintable(dics.first())); std::make_unique<Hunspell>(qPrintable(aff), qPrintable(dics.first()));
LTRACE() << "Created hunspell instance";
dics.pop_front(); dics.pop_front();
if (!dics.isEmpty()) { if (!dics.isEmpty()) {
for (const auto &dic : dics) engine_->add_dic(qPrintable(dic)); for (const auto &dic : dics) engine_->add_dic(qPrintable(dic));
LTRACE() << "Loaded hunspell dicts" << dics;
} }
} }

View File

@ -11,9 +11,12 @@ void RecognizeWorker::handle(const TaskPtr &task)
SOFT_ASSERT(task->isValid(), return ); SOFT_ASSERT(task->isValid(), return );
SOFT_ASSERT(!tessdataPath_.isEmpty(), return ); SOFT_ASSERT(!tessdataPath_.isEmpty(), return );
LTRACE() << "Start recognize" << task->captured;
auto result = task; auto result = task;
if (!engines_.count(task->sourceLanguage)) { if (!engines_.count(task->sourceLanguage)) {
LTRACE() << "Create OCR engine" << task->sourceLanguage;
auto engine = auto engine =
std::make_unique<Tesseract>(task->sourceLanguage, tessdataPath_); std::make_unique<Tesseract>(task->sourceLanguage, tessdataPath_);
@ -24,6 +27,7 @@ void RecognizeWorker::handle(const TaskPtr &task)
} }
engines_.emplace(task->sourceLanguage, std::move(engine)); engines_.emplace(task->sourceLanguage, std::move(engine));
LTRACE() << "Added OCR engine" << task->sourceLanguage;
} }
auto &engine = engines_[task->sourceLanguage]; auto &engine = engines_[task->sourceLanguage];
@ -46,6 +50,7 @@ void RecognizeWorker::reset(const QString &tessdataPath)
tessdataPath_ = tessdataPath; tessdataPath_ = tessdataPath;
engines_.clear(); engines_.clear();
LTRACE() << "Cleared OCR engines";
} }
void RecognizeWorker::removeUnused(Generation current) void RecognizeWorker::removeUnused(Generation current)
@ -58,6 +63,7 @@ void RecognizeWorker::removeUnused(Generation current)
continue; continue;
} }
engines_.erase(it->first); engines_.erase(it->first);
LTRACE() << "Removed unused OCR engine" << it->first;
it = lastGenerations_.erase(it); it = lastGenerations_.erase(it);
} }
} }

View File

@ -98,18 +98,22 @@ static Pix *prepareImage(const QImage &image)
auto gray = pixConvertRGBToGray(pix, 0.0, 0.0, 0.0); auto gray = pixConvertRGBToGray(pix, 0.0, 0.0, 0.0);
SOFT_ASSERT(gray, return nullptr); SOFT_ASSERT(gray, return nullptr);
pixDestroy(&pix); pixDestroy(&pix);
LTRACE() << "Removed original Pix";
auto scaleSource = gray; auto scaleSource = gray;
auto scaled = scaleSource; auto scaled = scaleSource;
if (const auto scale = getScale(scaleSource); scale > 1.0) { if (const auto scale = getScale(scaleSource); scale > 1.0) {
scaled = pixScale(scaleSource, scale, scale); scaled = pixScale(scaleSource, scale, scale);
LTRACE() << "Scaled Pix for OCR" << LARG(scale) << LARG(scaled);
if (!scaled) if (!scaled)
scaled = scaleSource; scaled = scaleSource;
} }
if (scaled != scaleSource) if (scaled != scaleSource) {
pixDestroy(&scaleSource); pixDestroy(&scaleSource);
LTRACE() << "Removed unscaled Pix";
}
return scaled; return scaled;
} }
@ -184,13 +188,17 @@ QString Tesseract::recognize(const QPixmap &source)
Pix *image = prepareImage(source.toImage()); Pix *image = prepareImage(source.toImage());
SOFT_ASSERT(image != NULL, return {}); SOFT_ASSERT(image != NULL, return {});
LTRACE() << "Preprocessed Pix for OCR";
engine_->SetImage(image); engine_->SetImage(image);
char *outText = engine_->GetUTF8Text(); char *outText = engine_->GetUTF8Text();
LTRACE() << "Received recognized text";
engine_->Clear(); engine_->Clear();
cleanupImage(&image); cleanupImage(&image);
LTRACE() << "Cleared preprocessed Pix";
QString result = QString(outText).trimmed(); QString result = QString(outText).trimmed();
delete[] outText; delete[] outText;
LTRACE() << "Cleared recognized text buffer";
if (result.isEmpty()) if (result.isEmpty())
error_ = QObject::tr("Failed to recognize text or no text selected"); error_ = QObject::tr("Failed to recognize text or no text selected");

View File

@ -103,6 +103,7 @@ void Translator::translate(const TaskPtr &task)
SOFT_ASSERT(task, return ); SOFT_ASSERT(task, return );
if (task->corrected.isEmpty()) { if (task->corrected.isEmpty()) {
LTRACE() << "Corrected text is empty. Skipping translation";
manager_.translated(task); manager_.translated(task);
return; return;
} }
@ -177,6 +178,7 @@ void Translator::createPage(const QString &scriptName,
SOFT_ASSERT(log->document(), return ) SOFT_ASSERT(log->document(), return )
log->document()->setMaximumBlockCount(1000); log->document()->setMaximumBlockCount(1000);
LTRACE() << "Created page" << LARG(scriptName);
} }
void Translator::showDebugView() void Translator::showDebugView()
@ -279,6 +281,7 @@ void Translator::processQueue()
pages_[translator]->start(task); pages_[translator]->start(task);
task->translators.removeOne(translator); task->translators.removeOne(translator);
idlePages.erase(translator); idlePages.erase(translator);
LTRACE() << "Started translation at" << translator << task;
break; break;
} }
} }