code_app/modules/imgproc/HGOCR.cpp

188 lines
3.9 KiB
C++
Raw Normal View History

2022-05-16 09:00:08 +00:00
#include "HGOCR.h"
2022-05-11 09:19:50 +00:00
#include "HGOCRBase.hpp"
#include "HGOCRHanvon.hpp"
2022-10-22 00:53:11 +00:00
#include "HGOCRTesseract.hpp"
2022-05-11 09:19:50 +00:00
#include "HGOCRRetImpl.hpp"
2022-10-22 05:20:20 +00:00
HGResult HGAPI HGImgProc_CreateOCRMgr(HGUInt algo, HGOCRMgr* ocrMgr)
2022-05-11 09:19:50 +00:00
{
if (NULL == ocrMgr)
{
return HGBASE_ERR_INVALIDARG;
}
2022-10-22 05:20:20 +00:00
if (HGIMGPROC_OCRALGO_DEFAULT == algo)
2022-05-11 09:19:50 +00:00
{
2022-10-22 05:20:20 +00:00
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;
2022-05-11 09:19:50 +00:00
}
2022-10-22 05:20:20 +00:00
else if (HGIMGPROC_OCRALGO_HANVON == algo)
{
HGOCRBase* ocrMgrImpl = new HGOCRHanvon;
HGResult ret = ocrMgrImpl->Init();
if (HGBASE_ERR_OK != ret)
{
delete ocrMgrImpl;
return ret;
}
2022-05-11 09:19:50 +00:00
2022-10-22 05:20:20 +00:00
*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;
2022-05-11 09:19:50 +00:00
}
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)
2022-05-11 09:19:50 +00:00
{
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)
2022-05-11 09:19:50 +00:00
{
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)
2022-05-11 09:19:50 +00:00
{
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);
2022-08-23 03:06:18 +00:00
}
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);
2022-05-11 09:19:50 +00:00
}