diff --git a/Recognizer.cpp b/Recognizer.cpp index 910a978..c4a1965 100644 --- a/Recognizer.cpp +++ b/Recognizer.cpp @@ -31,12 +31,12 @@ void Recognizer::applySettings() imageScale_ = settings.value (settings_names::imageScale, settings_values::imageScale).toInt (); - initEngine (engine_); + initEngine (engine_, ocrLanguage_); } -bool Recognizer::initEngine(tesseract::TessBaseAPI *&engine) +bool Recognizer::initEngine(tesseract::TessBaseAPI *&engine, const QString& language) { - if (tessDataDir_.isEmpty () || ocrLanguage_.isEmpty ()) + if (tessDataDir_.isEmpty () || language.isEmpty ()) { emit error (tr ("Неверные параметры для OCR")); return false; @@ -46,7 +46,7 @@ bool Recognizer::initEngine(tesseract::TessBaseAPI *&engine) delete engine; } engine = new tesseract::TessBaseAPI(); - int result = engine->Init(qPrintable (tessDataDir_), qPrintable (ocrLanguage_), + int result = engine->Init(qPrintable (tessDataDir_), qPrintable (language), tesseract::OEM_DEFAULT); if (result != 0) { @@ -66,7 +66,8 @@ void Recognizer::recognize(ProcessingItem item) tesseract::TessBaseAPI* engine = (isCustomLanguage) ? NULL : engine_; if (engine == NULL) { - if (!initEngine (engine)) + QString language = (isCustomLanguage) ? item.ocrLanguage : ocrLanguage_; + if (!initEngine (engine, language)) { return; } diff --git a/Recognizer.h b/Recognizer.h index f78ee13..e2c9eb5 100644 --- a/Recognizer.h +++ b/Recognizer.h @@ -26,7 +26,7 @@ class Recognizer : public QObject void applySettings (); private: - bool initEngine (tesseract::TessBaseAPI*&engine); + bool initEngine (tesseract::TessBaseAPI*&engine, const QString &language); private: tesseract::TessBaseAPI* engine_;