Converts the cumulated recognition result stored in the pages of this OCR document to XML data and stores it in a disk file with XML options.
#include "ltocr.h"
L_LTOCR_API L_INT EXT_FUNCTION L_OcrDocument_SaveXml(document, fileName, xmlOptions, outputOptions)
Handle to the OCR document.
The output file name to save the XML data to.
Options to use when creating the XML data.
A combination of one or more OcrXmlOutputOptions enumeration members that specify the XML generation options.
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
Converts the cumulated recognition result stored in the pages of this OCR document to XML data and stores it in a disk file with XML options.
L_INT L_OcrDocument_SaveXmlExample()
{
BITMAPHANDLE bitmap = { 0 };
L_OcrEngine ocrEngine = NULL;
L_OcrPage ocrPage = NULL;
L_OcrDocumentManager ocrDocumentManager = NULL;
L_OcrDocument ocrDocument = NULL;
// Create an instance of the engine
L_INT retCode = L_OcrEngineManager_CreateEngine(L_OcrEngineType_LEAD, &ocrEngine);
if(retCode != SUCCESS)
return retCode;
// Start the engine using default parameters
L_OcrEngine_Startup(ocrEngine, NULL, OCR_LEAD_RUNTIME_DIR);
// Load an image to process
L_LoadBitmap(MAKE_IMAGE_PATH(L_TEXT("Ocr1.tif")), &bitmap, sizeof(BITMAPHANDLE), 0, ORDER_RGB, NULL, NULL);
// Add the image to an OCR page
L_OcrPage_FromBitmap(ocrEngine, &ocrPage, &bitmap, L_OcrBitmapSharingMode_AutoFree, NULL, NULL);
// Transfer ownership to the OCR page
bitmap.Flags.Allocated = 0;
// Recognize it
L_OcrPage_Recognize(ocrPage, NULL, NULL);
// Create an OCR document
L_OcrEngine_GetDocumentManager(ocrEngine, &ocrDocumentManager);
//L_OcrDocumentManager_CreateDocument(ocrDocumentManager, &ocrDocument, L_OcrCreateDocumentOptions_AutoDeleteFile, NULL);
L_OcrDocumentManager_CreateDocument(ocrDocumentManager, &ocrDocument, L_OcrCreateDocumentOptions_InMemory, NULL);
// In Document File Mode, add OcrPage to OcrDocument after recognition
L_OcrDocument_AddPage(ocrDocument, ocrPage);
// Done with this, so we can dispose of it.
L_OcrPage_Destroy(ocrPage);
ocrPage = NULL;
// Save the result XML to a disk file
// Only save the words not characters, if we want the characters
// we need to change the options to OcrXmlOutputOptions.Characters
L_OcrWriteXmlOptions ocrWriteXmlOptions;
ocrWriteXmlOptions.StructSize = sizeof(L_OcrWriteXmlOptions);
ocrWriteXmlOptions.Encoding = L_OcrXmlEncoding_UTF8;
ocrWriteXmlOptions.Formatted = true;
wsprintf(ocrWriteXmlOptions.Indent, TEXT(" "));
retCode = L_OcrDocument_SaveXml(ocrDocument, MAKE_IMAGE_PATH(L_TEXT("Ocr1.xml")), &ocrWriteXmlOptions, L_OcrXmlOutputOptions_None);
//CLEANUP
if(bitmap.Flags.Allocated)
L_FreeBitmap(&bitmap);
if(ocrPage != NULL)
L_OcrPage_Destroy(ocrPage);
if(ocrDocument != NULL)
L_OcrDocument_Destroy(ocrDocument);
if(ocrEngine != NULL)
L_OcrEngine_Destroy(ocrEngine);
return SUCCESS;
}