| LEADTOOLS OCR C DLL Help > Function References > OCR Professional > L_Doc2AddZoneRect |
#include "ltdoc2.h"
L_LTDOC2_API L_INT EXT_FUNCTION L_Doc2AddZoneRect(hDoc, nPageIndex, nZoneIndex, prc)
|
L_HDOC2 hDoc; |
/* handle to the OCR document */ |
|
L_INT nPageIndex; |
/* page index */ |
|
L_INT nZoneIndex; |
/* zone index */ |
|
RECT * prc; |
/* pointer to RECT structure */ |
Adding a rectangle to a user zone.
|
Parameter |
Description |
|
hDoc |
Handle to the OCR document. This handle is obtained by calling the L_Doc2StartUp function. |
|
nPageIndex |
Specifies the index of the page. This is a zero-based index. |
|
nZoneIndex |
Specifies the index of the zone. This is a zero-based index. |
|
prc |
Pointer to RECT structure to be added to specified zone. |
Returns
|
SUCCESS |
The function was successful. |
|
< 1 |
An error occurred. Refer to Return Codes. |
Comments
This function will insert a new rectangle into the specified zone. The zone will be irregular and formed from a union of rectangles. This is called a pizzabox shape.
A pizzabox shape is a union of rectangles, where the top of each rectangle in the union must touch the bottom of the rectangle above it. A rectangle can touch at most one rectangle above and one below. The following zones cannot have a pizzabox shape:
Table zones (must be rectangular)
OMR zone (can contain non-touching rectangles)
Before inserting a new rectangle, you must add the zone to the user zone list by calling the L_Doc2AddZone function.
Because the OCR engine does not support overlapping user zones, the newly added rectangle must be disjointed from the other zones.
Required DLLs and Libraries
|
LTDOC2 For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
See Also
Example
L_LTDOC2TEX_API L_INT Doc2AddZoneRectExample(L_HDOC2 hDoc, L_INT nPageIndex)
{
L_INT nRet;
ZONEDATA2 ZoneData;
memset(&ZoneData, 0, sizeof(ZONEDATA2));
ZoneData.uStructSize = sizeof(ZONEDATA2);
ZoneData.rcArea.left = 100;
ZoneData.rcArea.top = 100;
ZoneData.rcArea.right = 200;
ZoneData.rcArea.bottom = 200;
ZoneData.FillMethod = DOC2_FILL_DEFAULT;
ZoneData.RecogModule = DOC2_RECOGMODULE_AUTO;
ZoneData.CharFilter = DOC2_ZONE_CHAR_FILTER_DEFAULT;
ZoneData.Type = DOC2_ZONE_FLOWTEXT;
nRet = L_Doc2AddZone(hDoc, nPageIndex, 0, &ZoneData);
if (nRet != SUCCESS)
return nRet;
RECT rc;
rc.left = 70;
rc.top = 70;
rc.right = 130;
rc.bottom = 130;
nRet = L_Doc2AddZoneRect(hDoc, nPageIndex, 0, &rc);
if (nRet == SUCCESS)
MessageBox(NULL, TEXT("The rectangle is added to specific zone."), TEXT("Notice!"), MB_OK);
// recongize the page...
// save the recognition results...
nRet = L_Doc2ExcludeZoneRect(hDoc, nPageIndex, 0, &rc);
if (nRet == SUCCESS)
MessageBox(NULL, TEXT("The rectangle is subtracted from specific zone."), TEXT("Notice!"), MB_OK);
// recongize the page...
// save the recognition results...
// ...
return SUCCESS;
}