7#include "image2text_export.h"
8#include <QQmlParserStatus>
20class OCRLanguageModel;
28 Q_PROPERTY(QString filePath READ filePath WRITE setFilePath NOTIFY filePathChanged)
29 Q_PROPERTY(QRect area READ area WRITE setArea NOTIFY areaChanged)
33 Q_PROPERTY(
bool autoRead READ autoRead WRITE setAutoRead NOTIFY autoReadChanged)
35 Q_PROPERTY(TextBoxes wordBoxes READ wordBoxes NOTIFY wordBoxesChanged)
36 Q_PROPERTY(TextBoxes paragraphBoxes READ paragraphBoxes NOTIFY paragraphBoxesChanged)
37 Q_PROPERTY(TextBoxes lineBoxes READ lineBoxes NOTIFY lineBoxesChanged)
39 Q_PROPERTY(BoxesType boxesType READ boxesType WRITE setBoxesType NOTIFY boxesTypeChanged)
44 Q_PROPERTY(
float confidenceThreshold READ confidenceThreshold WRITE setConfidenceThreshold NOTIFY confidenceThresholdChanged)
45 Q_PROPERTY(QString whiteList READ whiteList WRITE setWhiteList NOTIFY whiteListChanged)
46 Q_PROPERTY(QString blackList READ blackList WRITE setBlackList NOTIFY blackListChanged FINAL)
48 Q_PROPERTY(
bool preprocessImage READ preprocessImage WRITE setPreprocessImage NOTIFY preprocessImageChanged FINAL)
49 Q_PROPERTY(PageSegMode pageSegMode READ pageSegMode WRITE setPageSegMode NOTIFY pageSegModeChanged)
60 Q_DECLARE_FLAGS(BoxesType, BoxType)
74 explicit OCS(QObject *parent =
nullptr);
77 QString filePath()
const;
79 bool autoRead()
const;
80 TextBoxes wordBoxes()
const;
81 TextBoxes paragraphBoxes()
const;
82 TextBoxes lineBoxes()
const;
83 OCS::BoxesType boxesType();
84 float confidenceThreshold();
86 QString whiteList()
const;
87 QString blackList()
const;
89 PageSegMode pageSegMode()
const;
91 bool preprocessImage()
const;
107 void setFilePath(QString filePath);
108 void setArea(QRect area);
109 void setAutoRead(
bool value);
110 void setBoxesType(OCS::BoxesType types);
111 void setConfidenceThreshold(
float value);
113 int wordBoxAt(
const QPoint point);
114 QVector<int> wordBoxesAt(
const QRect &rect);
116 void setWhiteList(
const QString &value);
117 void setBlackList(
const QString &value);
119 void setPreprocessImage(
bool value);
120 void setPageSegMode(OCS::PageSegMode value);
125 tesseract::TessBaseAPI *m_tesseract;
126 OCRLanguageModel *m_languages;
130 bool m_autoRead =
false;
132 TextBoxes m_wordBoxes;
133 TextBoxes m_paragraphBoxes;
134 TextBoxes m_lineBoxes;
136 BoxesType m_boxesTypes;
137 float m_confidenceThreshold;
142 bool m_preprocessImage =
true;
144 QMap<QString, PageSegMode> m_segModesModel;
145 PageSegMode m_segMode = PageSegMode::Auto_OSD;
147 void do_preprocessImage(
const QImage &image);
149 cv::Mat *m_imgMat =
nullptr;
150 QImage *m_ocrImg =
nullptr;
153 void filePathChanged(QString filePath);
154 void areaChanged(QRect area);
155 void autoReadChanged();
156 void textReady(QString text);
157 void wordBoxesChanged();
158 void lineBoxesChanged();
159 void paragraphBoxesChanged();
160 void boxesTypeChanged();
161 void confidenceThresholdChanged();
162 void whiteListChanged();
163 void blackListChanged();
164 void preprocessImageChanged();
165 void pageSegModeChanged();
167Q_DECLARE_OPERATORS_FOR_FLAGS(OCS::BoxesType)
const char * versionString()
virtual void classBegin()=0
virtual void componentComplete()=0