110 lines
2.4 KiB
C
110 lines
2.4 KiB
C
|
// HWOCR<43><52>ͷ<EFBFBD>ļ<EFBFBD>
|
|||
|
// hhoking 2017
|
|||
|
//
|
|||
|
#pragma once
|
|||
|
#include "hwocr.h"
|
|||
|
|
|||
|
#if SDK_TABLE
|
|||
|
|
|||
|
typedef struct tagHWCell
|
|||
|
{
|
|||
|
int rowStart; // <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><DFBC><EFBFBD>(0<><30>ʼ)
|
|||
|
int rowEnd; // <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><DFBC><EFBFBD>
|
|||
|
int colStart; // <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><DFBC><EFBFBD>(0<><30>ʼ)
|
|||
|
int colEnd; // <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><DFBC><EFBFBD>
|
|||
|
RECT rect; // <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
HWBlock* block; // ʶ<><CAB6><EFBFBD><EFBFBD>Ϣ
|
|||
|
#ifdef HWOCR_LIBSRC
|
|||
|
tagHWCell() { memset(this, 0, sizeof(tagHWCell)); }
|
|||
|
~tagHWCell()
|
|||
|
{
|
|||
|
if (block)
|
|||
|
delete block;
|
|||
|
}
|
|||
|
#endif
|
|||
|
}
|
|||
|
HWCell;
|
|||
|
|
|||
|
typedef struct tagHWTable
|
|||
|
{
|
|||
|
int rowCount; // <20><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int colCount; // <20><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int cellCount; // <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
|||
|
HWCell* cells; // <20><>Ԫ<EFBFBD><D4AA>
|
|||
|
#ifdef HWOCR_LIBSRC
|
|||
|
tagHWTable() { memset(this, 0, sizeof(tagHWTable)); }
|
|||
|
~tagHWTable()
|
|||
|
{
|
|||
|
if (cells)
|
|||
|
delete [] cells;
|
|||
|
}
|
|||
|
#endif
|
|||
|
}
|
|||
|
HWTable;
|
|||
|
|
|||
|
typedef struct tagHWRegion
|
|||
|
{
|
|||
|
RECT rect; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
BLKTYPE type; // <20><><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>BT_TEXT<58><54>BT_IMAGE<47><45>BT_TABLE<4C><45>
|
|||
|
void* block; // <20><>ָ<EFBFBD><D6B8>
|
|||
|
#ifdef HWOCR_LIBSRC
|
|||
|
tagHWRegion() { memset(this, 0, sizeof(tagHWRegion)); }
|
|||
|
~tagHWRegion()
|
|||
|
{
|
|||
|
if (block)
|
|||
|
{
|
|||
|
if (type == BT_TABLE)
|
|||
|
delete (HWTable *)block;
|
|||
|
else
|
|||
|
delete (HWBlock *)block;
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|
|||
|
}
|
|||
|
HWRegion;
|
|||
|
|
|||
|
typedef struct tagHWResult2
|
|||
|
{
|
|||
|
HWRegion* blocks; // <20><><EFBFBD><EFBFBD>Ϣ<EFBFBD>ṹָ<E1B9B9><D6B8>
|
|||
|
int blockCount; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#ifdef HWOCR_LIBSRC
|
|||
|
tagHWResult2() { memset(this, 0, sizeof(tagHWResult2)); }
|
|||
|
~tagHWResult2()
|
|||
|
{
|
|||
|
if (blocks)
|
|||
|
delete [] blocks;
|
|||
|
}
|
|||
|
#endif
|
|||
|
}
|
|||
|
HWResult2;
|
|||
|
|
|||
|
HWOCR_ADV_API HWResult2* socrTabRecognize(szpath filename, szpath dbpath = NULL);
|
|||
|
|
|||
|
HWOCR_ADV_API HWResult2* socrTabRecognize2(HWIMAGE img, szpath dbpath = NULL);
|
|||
|
|
|||
|
HWOCR_ADV_API void socrTabFreeResult(HWResult2* ptr);
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
#if SDK_DIRECTION
|
|||
|
|
|||
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
// thres - <20><>ֵ[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ͼ<EFBFBD><CDBC>30 - 50<35><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ͼ<EFBFBD><CDBC>]
|
|||
|
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>90 - <20><><EFBFBD><EFBFBD>90<39><30>180 - <20><>ת180<38><30>270 - <20><><EFBFBD><EFBFBD>90
|
|||
|
HWOCR_ADV_API int socrGetDirection(szpath filename, int thres = 40);
|
|||
|
|
|||
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>
|
|||
|
HWOCR_ADV_API int socrGetDirectionEx(szpath filename);
|
|||
|
// scan0 - ͼ<><CDBC><EFBFBD><EFBFBD>դ<EFBFBD><D5A4><EFBFBD>ݣ<EFBFBD>Ҫ<EFBFBD><D2AA>8λ<38>Ҷȣ<D2B6><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>ֽڶ<D6BD><DAB6><EFBFBD>
|
|||
|
HWOCR_ADV_API int socrGetDirectionEx2(puchar scan0, int w, int h);
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
#if SDK_STAMP
|
|||
|
|
|||
|
HWOCR_ADV_API bool socrRemoveSeal(HWIMAGE img);
|
|||
|
|
|||
|
// ʶ<><CAB6><EFBFBD><EFBFBD>ӡ<EFBFBD>µ<EFBFBD><C2B5>ı<EFBFBD>
|
|||
|
HWOCR_API pwchar socrRecognizeWithSeal(szpath filename, szpath dbpath = NULL);
|
|||
|
|
|||
|
#endif
|