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