Add trace messages
This commit is contained in:
parent
3d50c17b81
commit
6c70b0f21a
@ -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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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");
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user