From 1bdde6b56b3d7812f6a8ed6dd26494a467f09f48 Mon Sep 17 00:00:00 2001 From: peijiankang Date: Thu, 15 Jun 2023 18:27:12 +0800 Subject: [PATCH] fix coredump of ukui-search --- libsearch/index/ocrobject.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libsearch/index/ocrobject.cpp b/libsearch/index/ocrobject.cpp index 6d3d717..f9f9a6d 100644 --- a/libsearch/index/ocrobject.cpp +++ b/libsearch/index/ocrobject.cpp @@ -43,6 +43,9 @@ void OcrObject::getTxtContent(QString &path, QString &textcontent) // } //多进程版本 + // set locale to "C" for tesseract + char *old_ctype = strdup(setlocale(LC_ALL, NULL)); + setlocale(LC_ALL, "C"); //qDebug() << "path:" << path; tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI(); if (api->Init(NULL, "chi_sim")) { @@ -72,6 +75,9 @@ void OcrObject::getTxtContent(QString &path, QString &textcontent) delete api; api = nullptr; } + // restore your previous locale + setlocale(LC_ALL, old_ctype); + free(old_ctype); } OcrObject::OcrObject(QObject *parent) : QObject(parent) @@ -90,10 +96,18 @@ OcrObject::~OcrObject() void OcrObject::init() { + // set locale to "C" for tesseract + char *old_ctype = strdup(setlocale(LC_ALL, NULL)); + setlocale(LC_ALL, "C"); + m_api = new tesseract::TessBaseAPI(); if (m_api->Init(NULL, "chi_sim")) { qDebug() << "Could not initialize tesseract.\n"; return; } m_api->SetVariable("user_defined_dpi", "1080");//图片中未标明分辨率的默认设置为1080 + + // restore your previous locale + setlocale(LC_ALL, old_ctype); + free(old_ctype); } -- 2.33.0