调用汉王OCR时,增加日志,以及在临时目录中创建子目录
This commit is contained in:
parent
21b68c36b4
commit
4fae146a4d
|
@ -1,13 +1,11 @@
|
|||
#include "HGOCRHanvon.hpp"
|
||||
#include "HGOCR.h"
|
||||
#include "HGOCRRetImpl.hpp"
|
||||
#include "HGOCRRetImpl.hpp"
|
||||
#include "../base/HGUtility.h"
|
||||
#include "../base/HGInfo.h"
|
||||
#include "../imgfmt/HGBmp.h"
|
||||
#include "../imgfmt/HGJpeg.h"
|
||||
|
||||
HGUInt HGOCRHanvon::m_refCount = 0;
|
||||
//HGUInt HGOCRHanvon::m_refCount = 0;
|
||||
//HGOCRHanvon* HGOCRHanvon::m_OCR = NULL;
|
||||
|
||||
HGOCRHanvon::HGOCRHanvon()
|
||||
|
@ -59,11 +57,11 @@ HGResult HGOCRHanvon::Init()
|
|||
return HGIMGPROC_ERR_FAIL;
|
||||
}
|
||||
|
||||
if (0 == m_refCount)
|
||||
{
|
||||
//if (0 == m_refCount)
|
||||
//{
|
||||
//HWOCR_InitPdf();
|
||||
}
|
||||
++m_refCount;
|
||||
//}
|
||||
//++m_refCount;
|
||||
|
||||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
@ -77,12 +75,12 @@ HGResult HGOCRHanvon::Deinit()
|
|||
|
||||
ClearImageList();
|
||||
|
||||
assert(0 != m_refCount);
|
||||
--m_refCount;
|
||||
if (0 == m_refCount)
|
||||
{
|
||||
//assert(0 != m_refCount);
|
||||
//--m_refCount;
|
||||
//if (0 == m_refCount)
|
||||
//{
|
||||
//HWOCR_ExitPdf();
|
||||
}
|
||||
//}
|
||||
|
||||
HWOCR_SDKExit(m_ocrHandle);
|
||||
m_ocrHandle = NULL;
|
||||
|
@ -101,19 +99,23 @@ HGResult HGOCRHanvon::ImageOCR(HGImage image, class HGOCRRetImpl **ocrRet)
|
|||
|
||||
HGChar tmpFileName[256];
|
||||
HGBase_GetTmpFileName("bmp", tmpFileName, 256);
|
||||
HGImgFmt_SaveBmpImage(image, NULL, tmpFileName);
|
||||
HGResult ret = HGImgFmt_SaveBmpImage(image, NULL, tmpFileName);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
{
|
||||
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "HGOCRHanvon::ImageOCR: Save Temp File Failed");
|
||||
return ret;
|
||||
}
|
||||
|
||||
char* rst = NULL;
|
||||
int len = 0;
|
||||
int ret = HWOCR_RecognizeFile2Str((unsigned char*)tmpFileName, m_ocrHandle, &rst, &len);
|
||||
if (0 != ret)
|
||||
int rc = HWOCR_RecognizeFile2Str((unsigned char*)tmpFileName, m_ocrHandle, &rst, &len);
|
||||
HGBase_DeleteFile(tmpFileName);
|
||||
if (0 != rc)
|
||||
{
|
||||
HGBase_DeleteFile(tmpFileName);
|
||||
return HGIMGPROC_ERR_FAIL;
|
||||
}
|
||||
|
||||
assert(NULL != rst && len > 0);
|
||||
HGBase_DeleteFile(tmpFileName);
|
||||
|
||||
std::vector<std::string> blockInfo;
|
||||
blockInfo.push_back(rst);
|
||||
|
@ -151,19 +153,27 @@ HGResult HGOCRHanvon::ImageOCRToFile(HGImage image, HGUInt outType, const HGChar
|
|||
|
||||
HGChar tmpFileName[256];
|
||||
HGBase_GetTmpFileName("bmp", tmpFileName, 256);
|
||||
HGImgFmt_SaveBmpImage(image, NULL, tmpFileName);
|
||||
|
||||
HGChar tmpDir[256];
|
||||
HGBase_GetTmpPath(tmpDir, 256);
|
||||
int ret = HWOCR_RecognizeFile((unsigned char*)tmpFileName, (unsigned char*)outFileName, fileType, m_ocrHandle, NULL, tmpDir);
|
||||
if (0 != ret)
|
||||
HGResult ret = HGImgFmt_SaveBmpImage(image, NULL, tmpFileName);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
{
|
||||
HGBase_DeleteFile(tmpFileName);
|
||||
return HGIMGPROC_ERR_FAIL;
|
||||
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "HGOCRHanvon::ImageOCRToFile: Save Temp File Failed");
|
||||
return ret;
|
||||
}
|
||||
|
||||
HGChar tmpDir[256];
|
||||
HGBase_GetTmpFileName(NULL, tmpDir, 256);
|
||||
ret = HGBase_CreateDir(tmpDir);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
{
|
||||
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "HGOCRHanvon::ImageOCRToFile: Create Temp Dir Failed");
|
||||
HGBase_DeleteFile(tmpFileName);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int rc = HWOCR_RecognizeFile((unsigned char*)tmpFileName, (unsigned char*)outFileName, fileType, m_ocrHandle, NULL, tmpDir);
|
||||
HGBase_DeleteDir(tmpDir);
|
||||
HGBase_DeleteFile(tmpFileName);
|
||||
return HGBASE_ERR_OK;
|
||||
return (0 == rc) ? HGBASE_ERR_OK : HGIMGPROC_ERR_FAIL;
|
||||
}
|
||||
|
||||
HGResult HGOCRHanvon::ImageTextDirectOCR(HGImage image, HGUInt* direct)
|
||||
|
@ -175,13 +185,18 @@ HGResult HGOCRHanvon::ImageTextDirectOCR(HGImage image, HGUInt* direct)
|
|||
|
||||
HGChar tmpFileName[256];
|
||||
HGBase_GetTmpFileName("bmp", tmpFileName, 256);
|
||||
HGImgFmt_SaveBmpImage(image, NULL, tmpFileName);
|
||||
HGResult ret = HGImgFmt_SaveBmpImage(image, NULL, tmpFileName);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
{
|
||||
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "HGOCRHanvon::ImageTextDirectOCR: Save Temp File Failed");
|
||||
return ret;
|
||||
}
|
||||
|
||||
int dire = -1;
|
||||
int ret = HWOCR_GetFileDirect((unsigned char*)tmpFileName, m_ocrHandle, &dire);
|
||||
if (0 != ret)
|
||||
int rc = HWOCR_GetFileDirect((unsigned char*)tmpFileName, m_ocrHandle, &dire);
|
||||
HGBase_DeleteFile(tmpFileName);
|
||||
if (0 != rc)
|
||||
{
|
||||
HGBase_DeleteFile(tmpFileName);
|
||||
return HGIMGPROC_ERR_FAIL;
|
||||
}
|
||||
|
||||
|
@ -194,7 +209,6 @@ HGResult HGOCRHanvon::ImageTextDirectOCR(HGImage image, HGUInt* direct)
|
|||
else if (ROT270 == dire)
|
||||
*direct = HGIMGPROC_OCRTEXTDIRECT_LEFT;
|
||||
|
||||
HGBase_DeleteFile(tmpFileName);
|
||||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
|
@ -210,6 +224,7 @@ HGResult HGOCRHanvon::AddToImageList(HGImage image)
|
|||
HGResult ret = HGImgFmt_SaveJpegImage(image, NULL, tmpFileName);
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
{
|
||||
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "HGOCRHanvon::AddToImageList: Save Temp File Failed");
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -269,12 +284,26 @@ HGResult HGOCRHanvon::ImageListOCRToFile(HGUInt outType, const HGChar* outFileNa
|
|||
ppImageFiles[m_imageList.size()] = NULL;
|
||||
|
||||
HGChar tmpDir[256];
|
||||
HGBase_GetTmpPath(tmpDir, 256);
|
||||
HGBase_GetTmpFileName(NULL, tmpDir, 256);
|
||||
HGResult ret = HGBase_CreateDir(tmpDir);
|
||||
if (HGBASE_ERR_OK == ret)
|
||||
{
|
||||
#if defined(HG_CMP_MSC)
|
||||
int ret = HWOCR_RecognizeFileBatch(ppImageFiles, (unsigned char*)outFileName, fileType, m_ocrHandle, NULL, tmpDir, RecogProgress, IsCanceled);
|
||||
int rc = HWOCR_RecognizeFileBatch(ppImageFiles, (unsigned char*)outFileName, fileType, m_ocrHandle, NULL, tmpDir, RecogProgress, IsCanceled);
|
||||
#else
|
||||
int ret = HWOCR_RecognizeFileBatch(ppImageFiles, (unsigned char*)outFileName, fileType, m_ocrHandle, NULL, tmpDir);
|
||||
int rc = HWOCR_RecognizeFileBatch(ppImageFiles, (unsigned char*)outFileName, fileType, m_ocrHandle, NULL, tmpDir);
|
||||
#endif
|
||||
if (0 != rc)
|
||||
{
|
||||
ret = HGIMGPROC_ERR_FAIL;
|
||||
}
|
||||
|
||||
HGBase_DeleteDir(tmpDir);
|
||||
}
|
||||
else
|
||||
{
|
||||
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "HGOCRHanvon::ImageListOCRToFile: Create Temp Dir Failed");
|
||||
}
|
||||
|
||||
delete[] ppImageFiles;
|
||||
m_param = NULL;
|
||||
|
@ -288,7 +317,7 @@ HGResult HGOCRHanvon::ImageListOCRToFile(HGUInt outType, const HGChar* outFileNa
|
|||
}
|
||||
m_imageList.clear();
|
||||
|
||||
return (0 != ret) ? HGIMGPROC_ERR_FAIL : HGBASE_ERR_OK;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int HGOCRHanvon::HWOCR_SDKInitialize(void** ppstOcrHandle)
|
||||
|
|
|
@ -47,7 +47,7 @@ private:
|
|||
#endif
|
||||
|
||||
private:
|
||||
static HGUInt m_refCount;
|
||||
//static HGUInt m_refCount;
|
||||
//static HGOCRHanvon* m_OCR;
|
||||
HGDll m_dll;
|
||||
void* m_ocrHandle;
|
||||
|
|
|
@ -247,6 +247,11 @@ HGResult HGOCRTesseract::ImageListOCRToFile(HGUInt outType, const HGChar* outFil
|
|||
if (0 == outType)
|
||||
outType = GetOutTypeByFileName(outFileName);
|
||||
|
||||
if (HGIMGPROC_OCROUTTYPE_PDF != outType && HGIMGPROC_OCROUTTYPE_TXT != outType)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
}
|
||||
|
||||
HGImgFmt_CloseTiffWriter(m_tiffWriter);
|
||||
m_tiffWriter = NULL;
|
||||
assert(!m_tiffFileName.empty());
|
||||
|
|
Loading…
Reference in New Issue