#include "ltdoc2.h"
L_LTDOC2_API L_INT L_Doc2AddZoneRectExt(hDoc, nDocId, nPageIndex, nZoneIndex, prc)
Adds a rectangle to a user zone.
Handle to the OCR document obtained by calling the L_Doc2StartUp function.
Document ID created by calling L_Doc2CreateDocument.
Zero-based index of the page.
Zero-based index of the zone.
Pointer to a RECT structure to be added to specified zone. Because the OCR engine does not support overlapping user zones, the newly added rectangle prc must be disjointed from the other zones.
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
Before inserting a new rectangle, be sure to add the zone to the user zone list by calling the L_Doc2AddZone / L_Doc2AddZoneExt function.
L_Doc2AddZoneRectExt inserts 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 zones (can contain non-touching rectangles)
Required DLLs and Libraries
L_INT Doc2AddZoneRectExampleExt(L_HDOC2 hDoc, L_INT nDocId, 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_Doc2AddZoneExt(hDoc, nDocId, nPageIndex, 0, &ZoneData);
if (nRet != SUCCESS)
return nRet;
RECT rc;
rc.left = 70;
rc.top = 70;
rc.right = 130;
rc.bottom = 130;
nRet = L_Doc2AddZoneRectExt(hDoc, nDocId, 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_Doc2ExcludeZoneRectExt(hDoc, nDocId, 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;
}