ScreenTranslator/Recognizer.cpp

102 lines
2.5 KiB
C++
Raw Normal View History

#include "Recognizer.h"
2013-11-26 13:44:00 +07:00
//#include <tesseract/baseapi.h>
2013-11-24 19:43:37 +07:00
#include <QDebug>
#include <QSettings>
#include "Settings.h"
Recognizer::Recognizer(QObject *parent) :
2013-11-24 19:43:37 +07:00
QObject(parent),
engine_ (NULL), imageScale_ (0)
{
2013-11-24 19:43:37 +07:00
applySettings ();
}
void Recognizer::applySettings()
{
QSettings settings;
settings.beginGroup (settings_names::recogntionGroup);
tessDataDir_ = settings.value (settings_names::tessDataPlace,
settings_values::tessDataPlace).toString ();
2013-11-24 20:06:19 +07:00
if (tessDataDir_.right (1) != "/")
{
tessDataDir_ += "/";
}
2013-11-24 19:43:37 +07:00
ocrLanguage_ = settings.value (settings_names::ocrLanguage,
settings_values::ocrLanguage).toString ();
imageScale_ = settings.value (settings_names::imageScale,
settings_values::imageScale).toInt ();
initEngine ();
}
bool Recognizer::initEngine()
{
2013-11-26 13:44:00 +07:00
// if (tessDataDir_.isEmpty () || ocrLanguage_.isEmpty ())
// {
// emit error (tr ("Неверные параметры для OCR"));
// return false;
// }
// if (engine_ != NULL)
// {
// delete engine_;
// }
// engine_ = new tesseract::TessBaseAPI();
// int result = engine_->Init(qPrintable (tessDataDir_), qPrintable (ocrLanguage_),
// tesseract::OEM_DEFAULT);
// if (result != 0)
// {
// emit error (tr ("Ошибка инициализации OCR: %1").arg (result));
// delete engine_;
// engine_ = NULL;
// return false;
// }
// return true;
}
2013-11-26 13:44:00 +07:00
void Recognizer::recognize(ProcessingItem item)
{
2013-11-26 13:44:00 +07:00
Q_ASSERT (!item.source.isNull ());
item.recognized = "test rec";
emit recognized (item);
return;
// if (engine_ == NULL)
// {
// if (!initEngine ())
// {
// return;
// }
// }
2013-11-24 19:43:37 +07:00
2013-11-26 13:44:00 +07:00
// QPixmap scaled = pixmap;
// if (imageScale_ > 0)
// {
// scaled = pixmap.scaledToHeight (pixmap.height () * imageScale_,
// Qt::SmoothTransformation);
// }
// QImage image = scaled.toImage ();
// const int bytesPerPixel = image.depth () / 8;
// engine_->SetImage (image.bits (), image.width (), image.height (),
// bytesPerPixel, image.bytesPerLine ());
2013-11-24 19:43:37 +07:00
2013-11-26 13:44:00 +07:00
// char* outText = engine_->GetUTF8Text();
// engine_->Clear();
2013-11-26 13:44:00 +07:00
// QString result (outText);
// result = result.trimmed();
// if (!result.isEmpty ())
// {
// item.recognized = result;
// emit recognized (result);
// emit recognized (pixmap, result);
// }
// else
// {
// emit error (tr ("Текст не распознан."));
// }
// delete [] outText;
}