code_app/modules/imgproc/HGOCRTesseract.hpp

64 lines
2.6 KiB
C++

#ifndef __HGOCRTESSERACT_HPP__
#define __HGOCRTESSERACT_HPP__
#include "HGOCRBase.hpp"
#include "../base/HGDef.h"
#include "../base/HGInc.h"
#include "../base/HGImage.h"
#include "../base/HGDll.h"
#include "../imgfmt/HGTiff.h"
#include "tesseract/capi.h"
#include <vector>
#include <string>
class HGOCRTesseract : public HGOCRBase
{
public:
HGOCRTesseract();
virtual ~HGOCRTesseract();
HGResult Init();
HGResult Deinit();
HGResult ImageOCR(HGImage image, class HGOCRRetImpl** ocrRet);
HGResult ImageOCRToFile(HGImage image, HGUInt outType, const HGChar* outFileName);
HGResult ImageTextDirectOCR(HGImage image, HGUInt* direct);
HGResult AddToImageList(HGImage image);
HGResult ClearImageList();
HGResult ImageListOCRToFile(HGUInt outType, const HGChar* outFileName, HGImageListOcrFunc func, HGPointer param);
private:
HGResult OCRToFile(const HGChar *inFileName, HGUInt outType, const HGChar* outFileName);
private:
TessBaseAPI* TessBaseAPICreate();
void TessBaseAPIDelete(TessBaseAPI* handle);
void TessBaseAPISetInputName(TessBaseAPI* handle, const char* name);
void TessBaseAPISetOutputName(TessBaseAPI* handle, const char* name);
char* TessBaseAPIGetUTF8Text(TessBaseAPI* handle);
int TessBaseAPIInit3(TessBaseAPI* handle, const char* datapath, const char* language);
BOOL TessBaseAPIProcessPages(TessBaseAPI* handle, const char* filename, const char* retry_config,
int timeout_millisec, TessResultRenderer* renderer);
void TessDeleteText(const char* text);
void TessBaseAPISetPageSegMode(TessBaseAPI* handle, TessPageSegMode mode);
BOOL TessBaseAPISetVariable(TessBaseAPI* handle, const char* name, const char* value);
TessPageIterator* TessBaseAPIAnalyseLayout(TessBaseAPI* handle);
void TessPageIteratorDelete(TessPageIterator* handle);
void TessPageIteratorOrientation(TessPageIterator* handle, TessOrientation* orientation, TessWritingDirection* writing_direction,
TessTextlineOrder* textline_order, float* deskew_angle);
void TessBaseAPISetImage(TessBaseAPI* handle, const unsigned char* imagedata, int width, int height,
int bytes_per_pixel, int bytes_per_line);
int TessBaseAPIRecognize(TessBaseAPI* handle, ETEXT_DESC* monitor);
const char* TessBaseAPIGetDatapath(TessBaseAPI* handle);
TessResultRenderer* TessPDFRendererCreate(const char* outputbase, const char* datadir, BOOL textonly);
void TessDeleteResultRenderer(TessResultRenderer* renderer);
TessResultRenderer* TessTextRendererCreate(const char* outputbase);
const char* TessResultRendererExtention(TessResultRenderer* renderer);
private:
HGDll m_dll;
TessBaseAPI* m_baseApi;
std::string m_tiffFileName;
HGTiffWriter m_tiffWriter;
};
#endif /* __HGOCRTESSERACT_HPP__ */