scannerlib增加获取ocr字符串功能
This commit is contained in:
parent
2f87ca5106
commit
74a9aefc42
|
@ -9,6 +9,8 @@ HGLib_GetImageInfo
|
|||
HGLib_GetImageDpi
|
||||
HGLib_SaveImage
|
||||
HGLib_ReleaseImage
|
||||
HGLib_GetOcrText
|
||||
HGLib_ReleaseOcrText
|
||||
HGLib_InitDevice
|
||||
HGLib_DeinitDevice
|
||||
HGLib_GetDeviceNameList
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -151,6 +151,66 @@ HGBool HGAPI HGLib_ReleaseImage(HGLibImage image)
|
|||
return HGTRUE;
|
||||
}
|
||||
|
||||
HGChar* HGAPI HGLib_GetOcrText(HGLibImage image)
|
||||
{
|
||||
if (NULL == image)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
std::string strText;
|
||||
|
||||
HGOCRMgr ocrMgr = NULL;
|
||||
HGImgProc_CreateOCRMgr(HGIMGPROC_OCRALGO_HANVON, &ocrMgr);
|
||||
if (NULL != ocrMgr)
|
||||
{
|
||||
HGOCRRet ocrRet = NULL;
|
||||
HGImgProc_ImageOCR(ocrMgr, (HGImage)image, &ocrRet);
|
||||
if (NULL != ocrRet)
|
||||
{
|
||||
HGUInt blockCount = 0;
|
||||
HGImgProc_GetOCRRetBlockCount(ocrRet, &blockCount);
|
||||
for (HGUInt i = 0; i < blockCount; ++i)
|
||||
{
|
||||
const HGChar* text = NULL;
|
||||
HGImgProc_GetOCRRetBlockText(ocrRet, i, &text);
|
||||
strText += StdStringToUtf8(text);
|
||||
if (i != blockCount - 1)
|
||||
strText += "\n";
|
||||
}
|
||||
|
||||
HGImgProc_DestroyOCRRet(ocrRet);
|
||||
}
|
||||
|
||||
HGImgProc_DestroyOCRMgr(ocrMgr);
|
||||
}
|
||||
|
||||
if (strText.empty())
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
HGChar* ocrText = (HGChar*)malloc(strText.size() + 1);
|
||||
if (NULL == ocrText)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
strcpy(ocrText, strText.c_str());
|
||||
return ocrText;
|
||||
}
|
||||
|
||||
HGBool HGAPI HGLib_ReleaseOcrText(HGChar* ocrText)
|
||||
{
|
||||
if (NULL == ocrText)
|
||||
{
|
||||
return HGFALSE;
|
||||
}
|
||||
|
||||
free(ocrText);
|
||||
return HGTRUE;
|
||||
}
|
||||
|
||||
HGBool HGAPI HGLib_InitDevice(HGLibDeviceHotPlugEventFunc func, HGPointer param)
|
||||
{
|
||||
return HGLibDeviceImpl::Init(func, param);
|
||||
|
|
|
@ -542,6 +542,12 @@ HGEXPORT HGBool HGAPI HGLib_SaveImage(HGLibImage image, const HGChar* savePath,
|
|||
/* 释放图像 */
|
||||
HGEXPORT HGBool HGAPI HGLib_ReleaseImage(HGLibImage image);
|
||||
|
||||
/* 获取OCR文本 */
|
||||
HGEXPORT HGChar* HGAPI HGLib_GetOcrText(HGLibImage image);
|
||||
|
||||
/* 销毁OCR文本 */
|
||||
HGEXPORT HGBool HGAPI HGLib_ReleaseOcrText(HGChar* ocrText);
|
||||
|
||||
/* 初始化扫描仪 */
|
||||
HGEXPORT HGBool HGAPI HGLib_InitDevice(HGLibDeviceHotPlugEventFunc func, HGPointer param);
|
||||
|
||||
|
|
|
@ -94,6 +94,19 @@ ImageParam.tiffJpegQuality = 80
|
|||
ImageParam.ocr = 0
|
||||
Ret = HGLib_SaveImage(Image, c_char_p(b"2.jpg"), pointer(ImageParam))
|
||||
|
||||
#OCR
|
||||
HGLib_GetOcrText = Objdll.HGLib_GetOcrText
|
||||
HGLib_GetOcrText.argtypes = [ctypes.c_void_p]
|
||||
HGLib_GetOcrText.restype = ctypes.c_void_p
|
||||
OcrText = HGLib_GetOcrText(Image)
|
||||
if OcrText:
|
||||
print(ctypes.string_at(OcrText).decode('utf-8'));
|
||||
|
||||
HGLib_ReleaseOcrText = Objdll.HGLib_ReleaseOcrText
|
||||
HGLib_ReleaseOcrText.argtypes = [ctypes.c_void_p]
|
||||
HGLib_ReleaseOcrText.restype = ctypes.c_int
|
||||
Ret = HGLib_ReleaseOcrText(OcrText)
|
||||
|
||||
#释放图像资源
|
||||
HGLib_ReleaseImage = Objdll.HGLib_ReleaseImage
|
||||
HGLib_ReleaseImage.argtypes = [ctypes.c_void_p]
|
||||
|
@ -102,7 +115,7 @@ Ret = HGLib_ReleaseImage(Image)
|
|||
|
||||
#设备热拔插回调事件
|
||||
def HGLibDeviceHotPlugEventFunc(event: c_uint, deviceName: c_char_p, param: c_void_p):
|
||||
print(deviceName)
|
||||
print(deviceName.decode('utf-8'))
|
||||
return
|
||||
|
||||
#初始化操作
|
||||
|
@ -196,12 +209,14 @@ Ret = HGLib_SetDeviceParam(Device, 51, byref(DevParam))
|
|||
DevParam = ctypes.c_double(0.1)
|
||||
Ret = HGLib_SetDeviceParam(Device, 52, byref(DevParam))
|
||||
|
||||
bStop = False
|
||||
|
||||
#扫描事件回调
|
||||
def HGLibDeviceScanEventFunc(device: c_void_p, event: c_uint, err: c_int, info: c_char_p, param: c_void_p):
|
||||
s_info=info
|
||||
def HGLibDeviceScanEventFunc(device: c_void_p, event: c_uint, err: c_int, info: ctypes.c_char_p, param: c_void_p):
|
||||
global bStop
|
||||
print("event code",event," event info:",s_info)
|
||||
print("event code:", event)
|
||||
if info:
|
||||
print("event info:", info.decode('utf-8'))
|
||||
if event == 2:#HGLIB_DEVSCAN_EVENT_END 扫描停止
|
||||
bStop=True
|
||||
print("bStop true")
|
||||
|
|
Loading…
Reference in New Issue