Update to 3.4.0
This commit is contained in:
parent
da25a9bf3b
commit
db2e6995e8
1
.gitignore
vendored
1
.gitignore
vendored
@ -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
|
||||
|
@ -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")
|
@ -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 <QDesktopServices>
|
||||
#include <QFileInfo>
|
||||
#include <QMessageBox>
|
||||
+#include <QUrl>
|
||||
#include <QUuid>
|
||||
#include <QXmlStreamWriter>
|
||||
#include <quazipfile.h>
|
||||
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 <QFileInfo>
|
||||
#include <QMessageBox>
|
||||
#include <QTextStream>
|
||||
+#include <QUrl>
|
||||
|
||||
bool HOCRTextExporter::run(const HOCRDocument* hocrdocument, QString& filebasename) {
|
||||
QString suggestion = filebasename;
|
@ -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 <cstring>
|
||||
#define USE_STD_NAMESPACE
|
||||
#include <tesseract/baseapi.h>
|
||||
-#include <tesseract/strngs.h>
|
||||
+#if TESSERACT_MAJOR_VERSION < 5
|
||||
#include <tesseract/genericvector.h>
|
||||
+#endif
|
||||
#include <tesseract/ocrclass.h>
|
||||
#undef USE_STD_NAMESPACE
|
||||
#include <unistd.h>
|
||||
@@ -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<Glib::ustring> Recognizer::getAvailableLanguages() const {
|
||||
- tesseract::TessBaseAPI tess = initTesseract();
|
||||
+ auto tess = initTesseract();
|
||||
+#if TESSERACT_MAJOR_VERSION < 5
|
||||
GenericVector<STRING> availLanguages;
|
||||
- tess.GetAvailableLanguagesAsVector(&availLanguages);
|
||||
+#else
|
||||
+ std::vector<std::string> availLanguages;
|
||||
+#endif
|
||||
+ tess->GetAvailableLanguagesAsVector(&availLanguages);
|
||||
std::vector<Glib::ustring> 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<Glib::ustring> Recognizer::g
|
||||
return result;
|
||||
}
|
||||
|
||||
-tesseract::TessBaseAPI Recognizer::initTesseract(const char* language, bool* ok) const {
|
||||
+std::unique_ptr<tesseract::TessBaseAPI> 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<tesseract::TessBaseAPI> 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<SwitchSetting>("ocraddsourcefilename")->getValue();
|
||||
bool prependPage = pages.size() > 1 && ConfigSettings::get<SwitchSetting>("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<tesseract::PageSegMode>(m_currentPsmMode));
|
||||
+ tess->SetPageSegMode(static_cast<tesseract::PageSegMode>(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<Cairo::ImageSurface>& 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<void, Config::Lang> m_signal_languageChanged;
|
||||
|
||||
- tesseract::TessBaseAPI initTesseract(const char* language = nullptr, bool* ok = nullptr) const;
|
||||
+ std::unique_ptr<tesseract::TessBaseAPI> 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 <tesseract/baseapi.h>
|
||||
#include <tesseract/ocrclass.h>
|
||||
+#if TESSERACT_MAJOR_VERSION < 5
|
||||
#include <tesseract/strngs.h>
|
||||
#include <tesseract/genericvector.h>
|
||||
+#endif
|
||||
#undef USE_STD_NAMESPACE
|
||||
#include <QMouseEvent>
|
||||
#include <unistd.h>
|
||||
@@ -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<STRING> availLanguages;
|
||||
- tess.GetAvailableLanguagesAsVector(&availLanguages);
|
||||
+#else
|
||||
+ std::vector<std::string> 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<tesseract::TessBaseAPI> 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<tesseract::TessBaseAPI> 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<i
|
||||
bool prependFile = pages.size() > 1 && ConfigSettings::get<SwitchSetting>("ocraddsourcefilename")->getValue();
|
||||
bool prependPage = pages.size() > 1 && ConfigSettings::get<SwitchSetting>("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<tesseract::PageSegMode>(m_psmCheckGroup->checkedAction()->data().toInt()));
|
||||
+ tess->SetPageSegMode(static_cast<tesseract::PageSegMode>(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 QList<i
|
||||
readSessionData->prependFile = 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 QList<i
|
||||
|
||||
bool Recognizer::recognizeImage(const QImage& image, OutputDestination dest) {
|
||||
bool ok = false;
|
||||
- tesseract::TessBaseAPI tess = initTesseract(m_curLang.prefix.toLocal8Bit().constData(), &ok);
|
||||
+ auto tess = initTesseract(m_curLang.prefix.toLocal8Bit().constData(), &ok);
|
||||
if(!ok) {
|
||||
QMessageBox::critical(MAIN, _("Recognition errors occurred"), _("Failed to initialize tesseract"));
|
||||
return false;
|
||||
}
|
||||
- tess.SetImage(image.bits(), image.width(), image.height(), 4, image.bytesPerLine());
|
||||
+ tess->SetImage(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<tesseract::TessBaseAPI> initTesseract(const char* language = nullptr, bool* ok = nullptr) const;
|
||||
QList<int> selectPages(bool& autodetectLayout);
|
||||
void recognize(const QList<int>& pages, bool autodetectLayout = false);
|
||||
bool eventFilter(QObject* obj, QEvent* ev) override;
|
@ -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 <manisandro@gmail.com> - 3.4.0-1
|
||||
- Update to 3.4.0
|
||||
|
||||
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.1-13
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (gimagereader-3.3.1.tar.xz) = 2ae90efae95bad3d1d24c8111013c1a797026fc868169396fb7e07a0c7a3e7cdc457640f26fab7812100cc7d4122116437e11fe4b5c38f10b057042edfe275bd
|
||||
SHA512 (gimagereader-3.4.0.tar.xz) = c8ca944d0989731517451e97e1350381991a913b3364d0b5c488fc915dbcb0a5485561c66e35255822be725e02fceea9bcf182c925cac4dcc0765d69411488f1
|
||||
|
Loading…
Reference in New Issue
Block a user