#include "HGOCR.h" #include "HGOCRBase.hpp" #include "HGOCRHanvon.hpp" #include "HGOCRTesseract.hpp" #include "HGOCRRetImpl.hpp" HGResult HGAPI HGImgProc_CreateOCRMgr(HGUInt algo, HGOCRMgr* ocrMgr) { if (NULL == ocrMgr) { return HGBASE_ERR_INVALIDARG; } if (HGIMGPROC_OCRALGO_DEFAULT == algo) { HGOCRBase* ocrMgrImpl = new HGOCRHanvon; HGResult ret = ocrMgrImpl->Init(); if (HGBASE_ERR_OK != ret) { delete ocrMgrImpl; ocrMgrImpl = new HGOCRTesseract; ret = ocrMgrImpl->Init(); if (HGBASE_ERR_OK != ret) { delete ocrMgrImpl; return ret; } } *ocrMgr = (HGOCRMgr)ocrMgrImpl; return HGBASE_ERR_OK; } else if (HGIMGPROC_OCRALGO_HANVON == algo) { HGOCRBase* ocrMgrImpl = new HGOCRHanvon; HGResult ret = ocrMgrImpl->Init(); if (HGBASE_ERR_OK != ret) { delete ocrMgrImpl; return ret; } *ocrMgr = (HGOCRMgr)ocrMgrImpl; return HGBASE_ERR_OK; } else if (HGIMGPROC_OCRALGO_TESSERACT == algo) { HGOCRBase* ocrMgrImpl = new HGOCRTesseract; HGResult ret = ocrMgrImpl->Init(); if (HGBASE_ERR_OK != ret) { delete ocrMgrImpl; return ret; } *ocrMgr = (HGOCRMgr)ocrMgrImpl; return HGBASE_ERR_OK; } return HGBASE_ERR_INVALIDARG; } HGResult HGAPI HGImgProc_DestroyOCRMgr(HGOCRMgr ocrMgr) { if (NULL == ocrMgr) { return HGBASE_ERR_INVALIDARG; } HGOCRBase* ocrMgrImpl = (HGOCRBase*)ocrMgr; HGResult ret = ocrMgrImpl->Deinit(); if (HGBASE_ERR_OK != ret) { return ret; } delete ocrMgrImpl; return HGBASE_ERR_OK; } HGResult HGAPI HGImgProc_ImageOCR(HGOCRMgr ocrMgr, HGImage image, HGOCRRet* ocrRet) { if (NULL == ocrMgr) { return HGBASE_ERR_INVALIDARG; } HGOCRBase* ocrMgrImpl = (HGOCRBase*)ocrMgr; HGOCRRetImpl* ocrRetImpl = NULL; HGResult ret = ocrMgrImpl->ImageOCR(image, &ocrRetImpl); if (HGBASE_ERR_OK != ret) { assert(NULL == ocrRetImpl); return ret; } *ocrRet = (HGOCRRet)ocrRetImpl; return HGBASE_ERR_OK; } HGResult HGAPI HGImgProc_DestroyOCRRet(HGOCRRet ocrRet) { if (NULL == ocrRet) { return HGBASE_ERR_INVALIDARG; } HGOCRRetImpl* ocrRetImpl = (HGOCRRetImpl*)ocrRet; delete ocrRetImpl; return HGBASE_ERR_OK; } HGResult HGAPI HGImgProc_GetOCRRetBlockCount(HGOCRRet ocrRet, HGUInt* count) { if (NULL == ocrRet) { return HGBASE_ERR_INVALIDARG; } HGOCRRetImpl* ocrRetImpl = (HGOCRRetImpl*)ocrRet; return ocrRetImpl->GetBlockCount(count); } HGResult HGAPI HGImgProc_GetOCRRetBlockText(HGOCRRet ocrRet, HGUInt index, const HGChar** text) { if (NULL == ocrRet) { return HGBASE_ERR_INVALIDARG; } HGOCRRetImpl* ocrRetImpl = (HGOCRRetImpl*)ocrRet; return ocrRetImpl->GetBlockText(index, text); } HGResult HGAPI HGImgProc_ImageOCRToFile(HGOCRMgr ocrMgr, HGImage image, HGUInt outType, const HGChar* outFileName) { if (NULL == ocrMgr) { return HGBASE_ERR_INVALIDARG; } HGOCRBase* ocrMgrImpl = (HGOCRBase*)ocrMgr; return ocrMgrImpl->ImageOCRToFile(image, outType, outFileName); } HGResult HGAPI HGImgProc_ImageTextDirectOCR(HGOCRMgr ocrMgr, HGImage image, HGUInt* direct) { if (NULL == ocrMgr) { return HGBASE_ERR_INVALIDARG; } HGOCRBase* ocrMgrImpl = (HGOCRBase*)ocrMgr; return ocrMgrImpl->ImageTextDirectOCR(image, direct); } HGResult HGAPI HGImgProc_AddToImageOCRList(HGOCRMgr ocrMgr, HGImage image) { if (NULL == ocrMgr) { return HGBASE_ERR_INVALIDARG; } HGOCRBase* ocrMgrImpl = (HGOCRBase*)ocrMgr; return ocrMgrImpl->AddToImageList(image); } HGResult HGAPI HGImgProc_ClearImageOCRList(HGOCRMgr ocrMgr) { if (NULL == ocrMgr) { return HGBASE_ERR_INVALIDARG; } HGOCRBase* ocrMgrImpl = (HGOCRBase*)ocrMgr; return ocrMgrImpl->ClearImageList(); } HGResult HGAPI HGImgProc_ImageListOCRToFile(HGOCRMgr ocrMgr, HGUInt outType, const HGChar* outFileName, HGImageListOcrFunc func, HGPointer param) { if (NULL == ocrMgr) { return HGBASE_ERR_INVALIDARG; } HGOCRBase* ocrMgrImpl = (HGOCRBase*)ocrMgr; return ocrMgrImpl->ImageListOCRToFile(outType, outFileName, func, param); }