7#include "image2text_export.h"
8#include <QQmlParserStatus>
22class OCRLanguageModel;
29 Q_PROPERTY(QString filePath READ filePath WRITE setFilePath NOTIFY filePathChanged)
30 Q_PROPERTY(QRect area READ area WRITE setArea NOTIFY areaChanged)
34 Q_PROPERTY(
bool autoRead READ autoRead WRITE setAutoRead NOTIFY autoReadChanged)
36 Q_PROPERTY(TextBoxes wordBoxes READ wordBoxes NOTIFY wordBoxesChanged)
37 Q_PROPERTY(TextBoxes paragraphBoxes READ paragraphBoxes NOTIFY paragraphBoxesChanged)
38 Q_PROPERTY(TextBoxes lineBoxes READ lineBoxes NOTIFY lineBoxesChanged)
40 Q_PROPERTY(BoxesType boxesType READ boxesType WRITE setBoxesType NOTIFY boxesTypeChanged)
45 Q_PROPERTY(
float confidenceThreshold READ confidenceThreshold WRITE setConfidenceThreshold NOTIFY confidenceThresholdChanged)
46 Q_PROPERTY(QString whiteList READ whiteList WRITE setWhiteList NOTIFY whiteListChanged)
47 Q_PROPERTY(QString blackList READ blackList WRITE setBlackList NOTIFY blackListChanged FINAL)
49 Q_PROPERTY(
bool preprocessImage READ preprocessImage WRITE setPreprocessImage NOTIFY preprocessImageChanged FINAL)
50 Q_PROPERTY(PageSegMode pageSegMode READ pageSegMode WRITE setPageSegMode NOTIFY pageSegModeChanged)
52 Q_PROPERTY(
bool ready READ ready NOTIFY readyChanged)
63 Q_DECLARE_FLAGS(BoxesType, BoxType)
77 explicit OCS(QObject *parent =
nullptr);
80 QString filePath()
const;
82 bool autoRead()
const;
83 TextBoxes wordBoxes()
const;
84 TextBoxes paragraphBoxes()
const;
85 TextBoxes lineBoxes()
const;
86 OCS::BoxesType boxesType();
87 float confidenceThreshold();
89 QString whiteList()
const;
90 QString blackList()
const;
92 PageSegMode pageSegMode()
const;
94 bool preprocessImage()
const;
112 void setFilePath(QString filePath);
113 void setArea(QRect area);
114 void setAutoRead(
bool value);
115 void setBoxesType(OCS::BoxesType types);
116 void setConfidenceThreshold(
float value);
118 int wordBoxAt(
const QPoint point);
119 QVector<int> wordBoxesAt(
const QRect &rect);
121 void setWhiteList(
const QString &value);
122 void setBlackList(
const QString &value);
124 void setPreprocessImage(
bool value);
125 void setPageSegMode(OCS::PageSegMode value);
130 tesseract::TessBaseAPI *m_tesseract;
131 OCRLanguageModel *m_languages;
135 bool m_autoRead =
false;
136 bool m_ready =
false;
138 TextBoxes m_wordBoxes;
139 TextBoxes m_paragraphBoxes;
140 TextBoxes m_lineBoxes;
142 BoxesType m_boxesTypes;
143 float m_confidenceThreshold;
148 bool m_preprocessImage =
true;
150 QMap<QString, PageSegMode> m_segModesModel;
151 PageSegMode m_segMode = PageSegMode::Auto_OSD;
153 void do_preprocessImage(
const QImage &image);
155 cv::Mat *m_imgMat =
nullptr;
156 QImage *m_ocrImg =
nullptr;
159 void filePathChanged(QString filePath);
160 void areaChanged(QRect area);
161 void autoReadChanged();
162 void textReady(QString text);
163 void wordBoxesChanged();
164 void lineBoxesChanged();
165 void paragraphBoxesChanged();
166 void boxesTypeChanged();
167 void confidenceThresholdChanged();
168 void whiteListChanged();
169 void blackListChanged();
170 void preprocessImageChanged();
171 void pageSegModeChanged();
174Q_DECLARE_OPERATORS_FOR_FLAGS(OCS::BoxesType)
const char * versionString()
virtual void classBegin()=0
virtual void componentComplete()=0