#include "ltdoc2.h"
L_LTDOC2_API L_INT L_Doc2GetRecognizedCharactersExt(hDoc, nDocId, nPageIndex, ppRecogChars, plCharsCount, uStructSize)
Gets all recognized characters for the specified recognized page.
Handle to the OCR document.
Document ID created by calling L_Doc2CreateDocument.
Zero-based index of the recognized page for which to get the recognized characters.
Address of a pointer to a RECOGCHARS2 structure into which an array of RECOGCHARS2 structures will be allocated and updated.
Pointer to a variable to be updated with the number of elements in the ppRecogChars array.
Size in bytes, of the structure pointed to by ppRecogChars Use sizeof(RECOGCHARS2) to calculate this value.
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
Be sure to call L_Doc2Recognize / L_Doc2RecognizeExt successfully before calling L_Doc2GetRecognizedCharactersExt.
L_Doc2GetRecognizedCharactersExt allocates and returns an array containing all recognized characters for the specified recognized page in _ppRecogChars_, and the number of recognized characters in plCharsCount.
To update the recognized characters, call the L_Doc2SetRecognizedCharacters / L_Doc2SetRecognizedCharactersExt function. To save the updated recognized characters to a file, call the L_Doc2SaveResultsToFile / L_Doc2SaveResultsToFileExt function.
Be sure to free the memory associated with the ppRecogChars parameter when it is no longer needed by calling the L_Doc2FreeRecognizedCharacters / L_Doc2FreeRecognizedCharacters function.
Required DLLs and Libraries
L_INT Doc2GetRecognizedCharactersExampleExt(L_HDOC2 hDoc, L_INT nDocId)
{
L_INT nRet;
RECOGNIZEOPTS2 RecogOpts;
RecogOpts.uStructSize = sizeof(RECOGNIZEOPTS2);
RecogOpts.nPageIndexStart = 0;
RecogOpts.nPagesCount = 1;
RecogOpts.SpellLangId = DOC2_LANG_ID_ENGLISH;
nRet = L_Doc2RecognizeExt (hDoc, nDocId, &RecogOpts, NULL, NULL);
if (nRet == SUCCESS)
{
pRECOGCHARS2 pRecogChars = NULL;
L_INT32 lCharsCount = 0;
nRet = L_Doc2GetRecognizedCharactersExt(hDoc, nDocId, 0, &pRecogChars, &lCharsCount, sizeof(RECOGCHARS2));
if (nRet == SUCCESS)
{
L_TCHAR szBuffer[1024];
RESULTOPTIONS2 ResOpts;
ZeroMemory(&ResOpts, sizeof(RESULTOPTIONS2));
ZeroMemory(szBuffer, sizeof(szBuffer));
wsprintf(szBuffer, TEXT("Number of recognized characters in the specified page = %d\n"), lCharsCount);
MessageBox(NULL, szBuffer, TEXT("Recognized Characters Count"), MB_OK);
for (L_INT32 i=0; i<lCharsCount; i++)
{
if (pRecogChars[i].nConfidence > 900)
{
pRecogChars[i].uFont |= DOC2_FONT_BOLD | DOC2_FONT_UNDERLINE;
pRecogChars[i].nFontSize = 20;
}
}
L_INT nClrsCount=0;
nRet = L_Doc2GetRecognizedCharactersColorsExt(hDoc, nDocId, 0, NULL, &nClrsCount);
if (nRet == SUCCESS)
{
wsprintf(szBuffer, TEXT("Number of recognized characters colors in the specified page = %d\n"), nClrsCount);
MessageBox(NULL, szBuffer, TEXT("Recognized Characters Colors Count"), MB_OK);
if (nClrsCount > 0)
{
COLORREF * pClrChars = (COLORREF *)GlobalAllocPtr(GHND, sizeof(COLORREF) * nClrsCount);
nRet = L_Doc2GetRecognizedCharactersColorsExt(hDoc, nDocId, 0, pClrChars, &nClrsCount);
if (nRet == SUCCESS)
{
wsprintf(szBuffer, TEXT("Colors for 1st recognized character\nThe foreground color = %d\nThe background color = %d\n"), pClrChars[pRecogChars[0].nFGColorIndex], pClrChars[pRecogChars[0].nBGColorIndex]);
MessageBox(NULL, szBuffer, TEXT("Recognized Character Colors"), MB_OK);
}
GlobalFreePtr(pClrChars);
}
}
nRet = L_Doc2SetRecognizedCharactersExt(hDoc, nDocId, 0, pRecogChars, lCharsCount);
if(nRet != SUCCESS)
return nRet;
nRet = L_Doc2FreeRecognizedCharacters(hDoc, &pRecogChars);
if(nRet != SUCCESS)
return nRet;
nRet = L_Doc2GetRecognitionResultOptionsExt(hDoc, nDocId, &ResOpts, sizeof(RESULTOPTIONS2));
if(nRet != SUCCESS)
return nRet;
ResOpts.Format = DOC2_RTF_WORD_2000;
ResOpts.FormatLevel = DOC2_FORMAT_LEVEL_AUTO;
ResOpts.DocFormat = DOCUMENTFORMAT_USER;
nRet = L_Doc2SetRecognitionResultOptionsExt(hDoc, nDocId, &ResOpts);
if(nRet != SUCCESS)
return nRet;
nRet = L_Doc2SaveResultsToFileExt(hDoc, nDocId, MAKE_IMAGE_PATH(TEXT("test.doc")), DOC2_SAVE_PAGE_RESULTS);
if(nRet != SUCCESS)
return nRet;
}
}
return SUCCESS;
}