Cppcheck - HTML report - digiKam-nl-search-more-criteria-rev-e2466e0973

# Cppcheck report - digiKam-nl-search-more-criteria-rev-e2466e0973: ../../core/dplugins/generic/tools/ocrtextconverter/ocroptions.cpp

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    /* ============================================================
     *
     * This file is a part of digiKam project
     * https://www.digikam.org
     *
     * Date        : 2022-08-26
     * Description : OCR Tesseract options
     *
     * SPDX-FileCopyrightText: 2008-2026 by Gilles Caulier <caulier dot gilles at gmail dot com>
     * SPDX-FileCopyrightText: 2022      by Quoc Hung Tran <quochungtran1999 at gmail dot com>
     *
     * SPDX-License-Identifier: GPL-2.0-or-later
     *
     * ============================================================ */

    #include "ocroptions.h"

    // KDE includes

    #include <klocalizedstring.h>

    // Local includes

    #include "digikam_debug.h"

    namespace DigikamGenericTextConverterPlugin
    {

    QMap<OcrOptions::PageSegmentationModes, QPair<QString, QString> > OcrOptions::psmNames()
    {
        QMap<PageSegmentationModes,  QPair<QString, QString> > psm;

        psm[PageSegmentationModes::OSD_ONLY]                                = qMakePair(QLatin1String("OSD only"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Orientation and script detection (OSD) only."));
        psm[PageSegmentationModes::AUTO_WITH_OSD]                           = qMakePair(QLatin1String("With OSD"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Automatic page segmentation with OSD."));
        psm[PageSegmentationModes::AUTO_WITH_NO_OSD]                        = qMakePair(QLatin1String("No OSD"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Automatic page segmentation, but no OSD, or OCR. "
                                                                                              "(not implemented)"));
        psm[PageSegmentationModes::DEFAULT]                                 = qMakePair(QLatin1String("Default"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Fully automatic page segmentation, but no OSD. "
                                                                                              "(Default)."));
        psm[PageSegmentationModes::SINGLE_COL_TEXT_OF_VAR_SIZE]             = qMakePair(QLatin1String("Col of text"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Assume a single column of text of variable sizes."));
        psm[PageSegmentationModes::SINGLE_UNIFORM_BLOCK_OF_VERTICALLY_TEXT] = qMakePair(QLatin1String("Vertically aligned"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Assume a single uniform block of vertically "
                                                                                              "aligned text."));
        psm[PageSegmentationModes::SINGLE_UNIFORM_BLOCK_TEXT]               = qMakePair(QLatin1String("Block"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Assume a single uniform block of text."));
        psm[PageSegmentationModes::SINGLE_TEXT_LINE]                        = qMakePair(QLatin1String("Line"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Treat the image as a single text line."));
        psm[PageSegmentationModes::SINGLE_WORD]                             = qMakePair(QLatin1String("Word"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Treat the image as a single word."));
        psm[PageSegmentationModes::SINGLE_WORD_IN_CIRCLE]                   = qMakePair(QLatin1String("Word in circle"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Treat the image as a single word in a circle."));
        psm[PageSegmentationModes::SINGLE_CHARACTER]                        = qMakePair(QLatin1String("Character"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Treat the image as a single character."));
        psm[PageSegmentationModes::SPARSE_TEXT]                             = qMakePair(QLatin1String("Sparse text"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Sparse text. Find as much text as possible in no "
                                                                                              "particular order."));
        psm[PageSegmentationModes::SPARSE_WITH_OSD]                         = qMakePair(QLatin1String("Sparse text + OSD"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Sparse text with OSD."));
        psm[PageSegmentationModes::RAW_LINE]                                = qMakePair(QLatin1String("Raw line"),
                                                                                        i18nc("@info:tooltip",
                                                                                              "Raw line. Treat the image as a single text line, "
                                                                                              "bypassing hacks that are Tesseract-specific."));

        return psm;
    }

    QMap<OcrOptions::EngineModes, QPair<QString, QString> > OcrOptions::oemNames()
    {
        QMap<EngineModes, QPair<QString, QString> > oem;

        oem[EngineModes::LEGACY_ENGINE_ONLY]    = qMakePair(QLatin1String("Legacy"),
                                                            i18nc("@info:tooltip",
                                                                  "Legacy engine only."));
        oem[EngineModes::NEURAL_NETS_LSTM_ONLY] = qMakePair(QLatin1String("LSTM"),
                                                            i18nc("@info:tooltip",
                                                                  "Neural nets LSTM engine only."));
        oem[EngineModes::LEGACY_LSTM_ENGINES]   = qMakePair(QLatin1String("Legacy + LSTM"),
                                                            i18nc("@info:tooltip",
                                                                  "Legacy + LSTM engines."));
        oem[EngineModes::DEFAULT]               = qMakePair(QLatin1String("Default"),
                                                            i18nc("@info:tooltip",
                                                                  "Default, based on what is available."));

        return oem;
    }

    QString OcrOptions::PsmCodeToValue(OcrOptions::PageSegmentationModes psm) const<--- Shadow argument
    {
       return QString::fromLatin1("%1").arg((int)psm);  // psm tesseract cli values if range from 0 to 13
    }

    QString OcrOptions::OemCodeToValue(OcrOptions::EngineModes oem) const<--- Shadow argument
    {
       return QString::fromLatin1("%1").arg((int)oem);  // oem tesseract cli values if range from 0 to 3
    }

    } // namespace DigikamGenericTextConverterPlugin