From db2e6995e8253bae183b2bbdf0c4c5a060fa0b58 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Sat, 29 Jan 2022 00:17:51 +0100 Subject: [PATCH] Update to 3.4.0 --- .gitignore | 1 + gimagereader-automoc.patch | 12 -- gimagereader-include_qurl.patch | 22 --- gimagereader-tesseract5.patch | 320 -------------------------------- gimagereader.spec | 14 +- sources | 2 +- 6 files changed, 7 insertions(+), 364 deletions(-) delete mode 100644 gimagereader-automoc.patch delete mode 100644 gimagereader-include_qurl.patch delete mode 100644 gimagereader-tesseract5.patch diff --git a/.gitignore b/.gitignore index 3794556..40f465f 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /gimagereader-3.2.99.tar.xz /gimagereader-3.3.0.tar.xz /gimagereader-3.3.1.tar.xz +/gimagereader-3.4.0.tar.xz diff --git a/gimagereader-automoc.patch b/gimagereader-automoc.patch deleted file mode 100644 index 3600ad1..0000000 --- a/gimagereader-automoc.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rupN --no-dereference gimagereader-3.3.1/CMakeLists.txt gimagereader-3.3.1-new/CMakeLists.txt ---- gimagereader-3.3.1/CMakeLists.txt 2019-07-28 22:59:40.000000000 +0200 -+++ gimagereader-3.3.1-new/CMakeLists.txt 2021-12-14 11:53:05.241774125 +0100 -@@ -1,4 +1,8 @@ - CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11) -+IF(${CMAKE_VERSION} VERSION_GREATER "3.17.0") -+CMAKE_POLICY(SET CMP0100 NEW) -+ENDIF() -+ - LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) - INCLUDE(GSettings) - SET(ENV{LC_ALL} "C") diff --git a/gimagereader-include_qurl.patch b/gimagereader-include_qurl.patch deleted file mode 100644 index 504ed60..0000000 --- a/gimagereader-include_qurl.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -rupN --no-dereference gimagereader-3.3.1/qt/src/hocr/HOCROdtExporter.cc gimagereader-3.3.1-new/qt/src/hocr/HOCROdtExporter.cc ---- gimagereader-3.3.1/qt/src/hocr/HOCROdtExporter.cc 2019-07-28 22:59:40.000000000 +0200 -+++ gimagereader-3.3.1-new/qt/src/hocr/HOCROdtExporter.cc 2021-12-14 11:53:05.213774038 +0100 -@@ -29,6 +29,7 @@ - #include - #include - #include -+#include - #include - #include - #include -diff -rupN --no-dereference gimagereader-3.3.1/qt/src/hocr/HOCRTextExporter.cc gimagereader-3.3.1-new/qt/src/hocr/HOCRTextExporter.cc ---- gimagereader-3.3.1/qt/src/hocr/HOCRTextExporter.cc 2019-07-28 22:59:40.000000000 +0200 -+++ gimagereader-3.3.1-new/qt/src/hocr/HOCRTextExporter.cc 2021-12-14 11:53:05.213774038 +0100 -@@ -28,6 +28,7 @@ - #include - #include - #include -+#include - - bool HOCRTextExporter::run(const HOCRDocument* hocrdocument, QString& filebasename) { - QString suggestion = filebasename; diff --git a/gimagereader-tesseract5.patch b/gimagereader-tesseract5.patch deleted file mode 100644 index 6bc16c7..0000000 --- a/gimagereader-tesseract5.patch +++ /dev/null @@ -1,320 +0,0 @@ -diff -rupN gimagereader-3.3.1/gtk/src/Recognizer.cc gimagereader-3.3.1-new/gtk/src/Recognizer.cc ---- gimagereader-3.3.1/gtk/src/Recognizer.cc 2019-07-28 22:59:40.000000000 +0200 -+++ gimagereader-3.3.1-new/gtk/src/Recognizer.cc 2021-12-14 12:07:11.113449181 +0100 -@@ -29,8 +29,9 @@ - #include - #define USE_STD_NAMESPACE - #include --#include -+#if TESSERACT_MAJOR_VERSION < 5 - #include -+#endif - #include - #undef USE_STD_NAMESPACE - #include -@@ -44,7 +45,11 @@ - - class Recognizer::ProgressMonitor : public MainWindow::ProgressMonitor { - public: -+#if TESSERACT_MAJOR_VERSION < 5 - ETEXT_DESC desc; -+#else -+ tesseract::ETEXT_DESC desc; -+#endif - - ProgressMonitor(int nPages) : MainWindow::ProgressMonitor(nPages) { - desc.progress = 0; -@@ -121,12 +126,20 @@ Recognizer::Recognizer(const Ui::MainWin - } - - std::vector Recognizer::getAvailableLanguages() const { -- tesseract::TessBaseAPI tess = initTesseract(); -+ auto tess = initTesseract(); -+#if TESSERACT_MAJOR_VERSION < 5 - GenericVector availLanguages; -- tess.GetAvailableLanguagesAsVector(&availLanguages); -+#else -+ std::vector availLanguages; -+#endif -+ tess->GetAvailableLanguagesAsVector(&availLanguages); - std::vector result; - for(int i = 0; i < availLanguages.size(); ++i) { -- result.push_back(availLanguages[i].string()); -+#if TESSERACT_MAJOR_VERSION < 5 -+ result.push_back(availLanguages[i].string()); -+#else -+ result.push_back(availLanguages[i]); -+#endif - } - std::sort(result.begin(), result.end(), [](const Glib::ustring & s1, const Glib::ustring & s2) { - bool s1Script = s1.substr(0, 6) == "script" || s1.substr(0, 1) == s1.substr(0, 1).uppercase(); -@@ -140,13 +153,13 @@ std::vector Recognizer::g - return result; - } - --tesseract::TessBaseAPI Recognizer::initTesseract(const char* language, bool* ok) const { -+std::unique_ptr Recognizer::initTesseract(const char* language, bool* ok) const { - // unfortunately tesseract creates deliberate segfaults when an error occurs - std::signal(SIGABRT, MainWindow::tesseractCrash); - std::string current = setlocale(LC_ALL, NULL); - setlocale(LC_ALL, "C"); -- tesseract::TessBaseAPI tess; -- int ret = tess.Init(nullptr, language); -+ std::unique_ptr tess(new tesseract::TessBaseAPI()); -+ int ret = tess->Init(nullptr, language); - std::signal(SIGSEGV, MainWindow::signalHandler); - setlocale(LC_ALL, current.c_str()); - -@@ -442,17 +455,17 @@ void Recognizer::recognize(const std::ve - bool prependFile = pages.size() > 1 && ConfigSettings::get("ocraddsourcefilename")->getValue(); - bool prependPage = pages.size() > 1 && ConfigSettings::get("ocraddsourcepage")->getValue(); - bool ok = false; -- tesseract::TessBaseAPI tess = initTesseract(m_curLang.prefix.c_str(), &ok); -+ auto tess = initTesseract(m_curLang.prefix.c_str(), &ok); - if(ok) { - Glib::ustring failed; -- tess.SetPageSegMode(static_cast(m_currentPsmMode)); -+ tess->SetPageSegMode(static_cast(m_currentPsmMode)); - if(ui.radioButtonWhitelist->get_active()) { -- tess.SetVariable("tessedit_char_whitelist", ui.entryWhitelist->get_text().c_str()); -+ tess->SetVariable("tessedit_char_whitelist", ui.entryWhitelist->get_text().c_str()); - } - if(ui.radioButtonBlacklist->get_active()) { -- tess.SetVariable("tessedit_char_blacklist", ui.entryBlacklist->get_text().c_str()); -+ tess->SetVariable("tessedit_char_blacklist", ui.entryBlacklist->get_text().c_str()); - } -- OutputEditor::ReadSessionData* readSessionData = MAIN->getOutputEditor()->initRead(tess); -+ OutputEditor::ReadSessionData* readSessionData = MAIN->getOutputEditor()->initRead(*tess); - ProgressMonitor monitor(pages.size()); - MAIN->showProgress(&monitor); - Utils::busyTask([&] { -@@ -483,11 +496,11 @@ void Recognizer::recognize(const std::ve - readSessionData->prependFile = prependFile && (readSessionData->prependPage || newFile); - firstChunk = false; - newFile = false; -- tess.SetImage(image->get_data(), image->get_width(), image->get_height(), 4, image->get_stride()); -- tess.SetSourceResolution(MAIN->getDisplayer()->getCurrentResolution()); -- tess.Recognize(&monitor.desc); -+ tess->SetImage(image->get_data(), image->get_width(), image->get_height(), 4, image->get_stride()); -+ tess->SetSourceResolution(MAIN->getDisplayer()->getCurrentResolution()); -+ tess->Recognize(&monitor.desc); - if(!monitor.cancelled()) { -- MAIN->getOutputEditor()->read(tess, readSessionData); -+ MAIN->getOutputEditor()->read(*tess, readSessionData); - } - } - -@@ -509,23 +522,23 @@ void Recognizer::recognize(const std::ve - - bool Recognizer::recognizeImage(const Cairo::RefPtr& img, OutputDestination dest) { - bool ok = false; -- tesseract::TessBaseAPI tess = initTesseract(m_curLang.prefix.c_str(), &ok); -+ auto tess = initTesseract(m_curLang.prefix.c_str(), &ok); - if(!ok) { - Utils::message_dialog(Gtk::MESSAGE_ERROR, _("Recognition errors occurred"), _("Failed to initialize tesseract")); - return false; - } -- tess.SetImage(img->get_data(), img->get_width(), img->get_height(), 4, 4 * img->get_width()); -+ tess->SetImage(img->get_data(), img->get_width(), img->get_height(), 4, 4 * img->get_width()); - ProgressMonitor monitor(1); - MAIN->showProgress(&monitor); - if(dest == OutputDestination::Buffer) { -- OutputEditor::ReadSessionData* readSessionData = MAIN->getOutputEditor()->initRead(tess); -+ OutputEditor::ReadSessionData* readSessionData = MAIN->getOutputEditor()->initRead(*tess); - readSessionData->file = MAIN->getDisplayer()->getCurrentImage(readSessionData->page); - readSessionData->angle = MAIN->getDisplayer()->getCurrentAngle(); - readSessionData->resolution = MAIN->getDisplayer()->getCurrentResolution(); - Utils::busyTask([&] { -- tess.Recognize(&monitor.desc); -+ tess->Recognize(&monitor.desc); - if(!monitor.cancelled()) { -- MAIN->getOutputEditor()->read(tess, readSessionData); -+ MAIN->getOutputEditor()->read(*tess, readSessionData); - } - return true; - }, _("Recognizing...")); -@@ -533,9 +546,9 @@ bool Recognizer::recognizeImage(const Ca - } else if(dest == OutputDestination::Clipboard) { - Glib::ustring output; - if(Utils::busyTask([&] { -- tess.Recognize(&monitor.desc); -+ tess->Recognize(&monitor.desc); - if(!monitor.cancelled()) { -- char* text = tess.GetUTF8Text(); -+ char* text = tess->GetUTF8Text(); - output = text; - delete[] text; - return true; -diff -rupN gimagereader-3.3.1/gtk/src/Recognizer.hh gimagereader-3.3.1-new/gtk/src/Recognizer.hh ---- gimagereader-3.3.1/gtk/src/Recognizer.hh 2019-07-28 22:59:40.000000000 +0200 -+++ gimagereader-3.3.1-new/gtk/src/Recognizer.hh 2021-12-14 12:01:32.366977606 +0100 -@@ -74,7 +74,7 @@ private: - - sigc::signal m_signal_languageChanged; - -- tesseract::TessBaseAPI initTesseract(const char* language = nullptr, bool* ok = nullptr) const; -+ std::unique_ptr initTesseract(const char* language = nullptr, bool* ok = nullptr) const; - void manageCharaterLists(); - void recognizeButtonClicked(); - void recognizeCurrentPage(); -diff -rupN gimagereader-3.3.1/qt/src/Recognizer.cc gimagereader-3.3.1-new/qt/src/Recognizer.cc ---- gimagereader-3.3.1/qt/src/Recognizer.cc 2019-07-28 22:59:40.000000000 +0200 -+++ gimagereader-3.3.1-new/qt/src/Recognizer.cc 2021-12-14 12:12:16.224217558 +0100 -@@ -31,8 +31,10 @@ - #define USE_STD_NAMESPACE - #include - #include -+#if TESSERACT_MAJOR_VERSION < 5 - #include - #include -+#endif - #undef USE_STD_NAMESPACE - #include - #include -@@ -52,7 +54,11 @@ - - class Recognizer::ProgressMonitor : public MainWindow::ProgressMonitor { - public: -+#if TESSERACT_MAJOR_VERSION < 5 - ETEXT_DESC desc; -+#else -+ tesseract::ETEXT_DESC desc; -+#endif - - ProgressMonitor(int nPages) : MainWindow::ProgressMonitor(nPages) { - desc.progress = 0; -@@ -111,13 +117,21 @@ Recognizer::Recognizer(const UI_MainWind - } - - QStringList Recognizer::getAvailableLanguages() const { -- tesseract::TessBaseAPI tess = initTesseract(); -+ auto tess = initTesseract(); -+#if TESSERACT_MAJOR_VERSION < 5 - GenericVector availLanguages; -- tess.GetAvailableLanguagesAsVector(&availLanguages); -+#else -+ std::vector availLanguages; -+#endif -+ tess->GetAvailableLanguagesAsVector(&availLanguages); - QStringList result; - for(int i = 0; i < availLanguages.size(); ++i) { -- result.append(availLanguages[i].string()); -- } -+#if TESSERACT_MAJOR_VERSION < 5 -+ result.push_back(availLanguages[i].string()); -+#else -+ result.push_back(QString::fromStdString(availLanguages[i])); -+#endif -+ } - qSort(result.begin(), result.end(), [](const QString & s1, const QString & s2) { - bool s1Script = s1.startsWith("script") || s1.left(1) == s1.left(1).toUpper(); - bool s2Script = s2.startsWith("script") || s2.left(1) == s2.left(1).toUpper(); -@@ -130,13 +144,13 @@ QStringList Recognizer::getAvailableLang - return result; - } - --tesseract::TessBaseAPI Recognizer::initTesseract(const char* language, bool* ok) const { -+std::unique_ptr Recognizer::initTesseract(const char* language, bool* ok) const { - // unfortunately tesseract creates deliberate aborts when an error occurs - std::signal(SIGABRT, MainWindow::tesseractCrash); - QByteArray current = setlocale(LC_ALL, NULL); - setlocale(LC_ALL, "C"); -- tesseract::TessBaseAPI tess; -- int ret = tess.Init(nullptr, language); -+ std::unique_ptr tess(new tesseract::TessBaseAPI()); -+ int ret = tess->Init(nullptr, language); - setlocale(LC_NUMERIC, current.constData()); - - if(ok) { -@@ -432,17 +446,17 @@ void Recognizer::recognize(const QList 1 && ConfigSettings::get("ocraddsourcefilename")->getValue(); - bool prependPage = pages.size() > 1 && ConfigSettings::get("ocraddsourcepage")->getValue(); - bool ok = false; -- tesseract::TessBaseAPI tess = initTesseract(m_curLang.prefix.toLocal8Bit().constData(), &ok); -+ auto tess = initTesseract(m_curLang.prefix.toLocal8Bit().constData(), &ok); - if(ok) { - QString failed; -- tess.SetPageSegMode(static_cast(m_psmCheckGroup->checkedAction()->data().toInt())); -+ tess->SetPageSegMode(static_cast(m_psmCheckGroup->checkedAction()->data().toInt())); - if(m_charListDialogUi.radioButtonWhitelist->isChecked()) { -- tess.SetVariable("tessedit_char_whitelist", m_charListDialogUi.lineEditWhitelist->text().toLocal8Bit()); -+ tess->SetVariable("tessedit_char_whitelist", m_charListDialogUi.lineEditWhitelist->text().toLocal8Bit()); - } - if(m_charListDialogUi.radioButtonBlacklist->isChecked()) { -- tess.SetVariable("tessedit_char_blacklist", m_charListDialogUi.lineEditBlacklist->text().toLocal8Bit()); -+ tess->SetVariable("tessedit_char_blacklist", m_charListDialogUi.lineEditBlacklist->text().toLocal8Bit()); - } -- OutputEditor::ReadSessionData* readSessionData = MAIN->getOutputEditor()->initRead(tess); -+ OutputEditor::ReadSessionData* readSessionData = MAIN->getOutputEditor()->initRead(*tess); - ProgressMonitor monitor(pages.size()); - MAIN->showProgress(&monitor); - Utils::busyTask([&] { -@@ -474,11 +488,11 @@ void Recognizer::recognize(const QListprependFile = prependFile && (readSessionData->prependPage || newFile); - firstChunk = false; - newFile = false; -- tess.SetImage(image.bits(), image.width(), image.height(), 4, image.bytesPerLine()); -- tess.SetSourceResolution(MAIN->getDisplayer()->getCurrentResolution()); -- tess.Recognize(&monitor.desc); -+ tess->SetImage(image.bits(), image.width(), image.height(), 4, image.bytesPerLine()); -+ tess->SetSourceResolution(MAIN->getDisplayer()->getCurrentResolution()); -+ tess->Recognize(&monitor.desc); - if(!monitor.cancelled()) { -- MAIN->getOutputEditor()->read(tess, readSessionData); -+ MAIN->getOutputEditor()->read(*tess, readSessionData); - } - } - QMetaObject::invokeMethod(MAIN, "popState", Qt::QueuedConnection); -@@ -499,23 +513,23 @@ void Recognizer::recognize(const QListSetImage(image.bits(), image.width(), image.height(), 4, image.bytesPerLine()); - ProgressMonitor monitor(1); - MAIN->showProgress(&monitor); - if(dest == OutputDestination::Buffer) { -- OutputEditor::ReadSessionData* readSessionData = MAIN->getOutputEditor()->initRead(tess); -+ OutputEditor::ReadSessionData* readSessionData = MAIN->getOutputEditor()->initRead(*tess); - readSessionData->file = MAIN->getDisplayer()->getCurrentImage(readSessionData->page); - readSessionData->angle = MAIN->getDisplayer()->getCurrentAngle(); - readSessionData->resolution = MAIN->getDisplayer()->getCurrentResolution(); - Utils::busyTask([&] { -- tess.Recognize(&monitor.desc); -+ tess->Recognize(&monitor.desc); - if(!monitor.cancelled()) { -- MAIN->getOutputEditor()->read(tess, readSessionData); -+ MAIN->getOutputEditor()->read(*tess, readSessionData); - } - return true; - }, _("Recognizing...")); -@@ -523,9 +537,9 @@ bool Recognizer::recognizeImage(const QI - } else if(dest == OutputDestination::Clipboard) { - QString output; - if(Utils::busyTask([&] { -- tess.Recognize(&monitor.desc); -+ tess->Recognize(&monitor.desc); - if(!monitor.cancelled()) { -- char* text = tess.GetUTF8Text(); -+ char* text = tess->GetUTF8Text(); - output = QString::fromUtf8(text); - delete[] text; - return true; -diff -rupN gimagereader-3.3.1/qt/src/Recognizer.hh gimagereader-3.3.1-new/qt/src/Recognizer.hh ---- gimagereader-3.3.1/qt/src/Recognizer.hh 2019-07-28 22:59:40.000000000 +0200 -+++ gimagereader-3.3.1-new/qt/src/Recognizer.hh 2021-12-14 12:05:50.527922131 +0100 -@@ -79,7 +79,7 @@ private: - QString m_langLabel; - Config::Lang m_curLang; - -- tesseract::TessBaseAPI initTesseract(const char* language = nullptr, bool* ok = nullptr) const; -+ std::unique_ptr initTesseract(const char* language = nullptr, bool* ok = nullptr) const; - QList selectPages(bool& autodetectLayout); - void recognize(const QList& pages, bool autodetectLayout = false); - bool eventFilter(QObject* obj, QEvent* ev) override; diff --git a/gimagereader.spec b/gimagereader.spec index e33cb5f..dd73bb1 100644 --- a/gimagereader.spec +++ b/gimagereader.spec @@ -1,19 +1,12 @@ Name: gimagereader -Version: 3.3.1 -Release: 13%{?dist} +Version: 3.4.0 +Release: 1%{?dist} Summary: A front-end to tesseract-ocr License: GPLv3+ URL: https://github.com/manisandro/gimagereader Source0: https://github.com/manisandro/gimagereader/releases/download/v%{version}/%{name}-%{version}.tar.xz -# Backport 6209e25dab20b233e399ff36fabe4252db0f9e44 -Patch0: gimagereader-include_qurl.patch -# Set CMP0100 (AUTOMOC should process hh files) -Patch1: gimagereader-automoc.patch -# Backport 399f5503f88af423ada70cc903a19bdee5e096e8 -Patch2: gimagereader-tesseract5.patch - BuildRequires: desktop-file-utils BuildRequires: djvulibre-devel BuildRequires: cmake @@ -152,6 +145,9 @@ cd build_qt %{_datadir}/applications/%{name}-qt5.desktop %changelog +* Fri Jan 28 2022 Sandro Mani - 3.4.0-1 +- Update to 3.4.0 + * Thu Jan 20 2022 Fedora Release Engineering - 3.3.1-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/sources b/sources index 82c0ab9..90e982f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gimagereader-3.3.1.tar.xz) = 2ae90efae95bad3d1d24c8111013c1a797026fc868169396fb7e07a0c7a3e7cdc457640f26fab7812100cc7d4122116437e11fe4b5c38f10b057042edfe275bd +SHA512 (gimagereader-3.4.0.tar.xz) = c8ca944d0989731517451e97e1350381991a913b3364d0b5c488fc915dbcb0a5485561c66e35255822be725e02fceea9bcf182c925cac4dcc0765d69411488f1