twain2/pub/hwocr/include/hwadv.h

110 lines
2.4 KiB
C
Raw Normal View History

// 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><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