Nicomsoft OCR: Developer's Guide


Svr_Create


Syntax

C++:int Svr_Create(HCFG CfgObj, int Format, HSVR* SvrObj)
C#:int Svr_Create(int CfgObj, int Format, out int SvrObj)
Visual Basic:Function Svr_Create(ByVal CfgObj As Integer, ByVal Format As Integer, ByRef SvrObj As Integer) As Integer
Java:int Svr_Create(HCFG CfgObj, int Format, HSVR SvrObj)
Delphi:function Svr_Create(CfgObj:HCFG; Format:integer; out SvrObj:HSVR):integer


Description

Creates a new Saver object. The Saver object will be used to save OCR results to the specified format: TXT, PDF, RTF, etc.


Parameters

CfgObj [IN] – the Config object that will be used for getting the options.
Format [IN] – the format of the target file. See the SVR_FORMAT_XXXXX constants for possible values.
SvrObj [OUT] – the variable that will get the new Saver object.


Return value

Zero if success, otherwise an error code.


Remarks

For more details, see the OCR Objects section.


Example

The following code processes a single or multi-page image and saves the OCR results as a searchable PDF file. Note that you can also use the Ocr_ProcessPages function to process a multi-page image.

C++
int CfgObj, OcrObj, ImgObj, SvrObj, res, i, cnt;
Engine_InitializeAdvanced(&CfgObj, &OcrObj, &ImgObj); //initialize OCR engine, create objects and load configuration
res = Img_LoadFile(ImgObj, L"c:\\sample.tiff"); //load some image for OCR
if (res > ERROR_FIRST) {}; //insert error handler here
Svr_Create(CfgObj, SVR_FORMAT_PDF, &SvrObj); //create Saver object, output format is PDF
Svr_NewDocument(SvrObj); //start new document
cnt = Img_GetPageCount(ImgObj); //get number of pages in input image
for (i = 0; i < cnt; i++) //process all pages, one by one
{
  if (i > 0) //first page (i is 0) is already selected when image is loaded
    Img_SetPage(ImgObj, i); //select page
  res = Img_OCR(ImgObj, OCRSTEP_FIRST, OCRSTEP_LAST, OCRFLAG_NONE); //perform OCR for selected page
  if (res > ERROR_FIRST) {}; //insert error handler here
  res = Svr_AddPage(SvrObj, ImgObj, FMT_EXACTCOPY); //add OCRed image page to output document
  if (res > ERROR_FIRST) {}; //insert error handler here
}
Svr_SetDocumentInfo(SvrObj, INFO_PDF_TITLE, L"Sample Title"); //set some title
res = Svr_SaveToFile(SvrObj, L"c:\\out.pdf"); //save OCRed image to PDF file
if (res > ERROR_FIRST) {}; //insert error handler here
Engine_Uninitialize(); //release all created objects and uninitialize OCR engine


C#
//assume reference to NSOCR COM was added
using NSOCR_NameSpace; //Add NSOCR namespace from "NSOCR.cs" file
//...
int CfgObj, OcrObj, ImgObj, SvrObj, i, cnt, res;
NSOCRLib.NSOCRClass NsOCR = new NSOCRLib.NSOCRClass(); //create NSOCR COM object instance
NsOCR.Engine_InitializeAdvanced(out CfgObj, out OcrObj, out ImgObj); //initialize OCR engine, create objects and load configuration
res = NsOCR.Img_LoadFile(ImgObj, "c:\\sample.bmp"); //load some image for OCR
if (res > TNSOCR.ERROR_FIRST) {}; //insert error handler here

NsOCR.Svr_Create(CfgObj, TNSOCR.SVR_FORMAT_PDF, out SvrObj); //create Saver object, output format is PDF NsOCR.Svr_NewDocument(SvrObj); //start new document cnt = NsOCR.Img_GetPageCount(ImgObj); //get number of pages in input image for (i = 0; i < cnt; i++) //process all pages, one by one { if (i > 0) //first page (i is 0) is already selected when image is loaded NsOCR.Img_SetPage(ImgObj, i); //select page res = NsOCR.Img_OCR(ImgObj, TNSOCR.OCRSTEP_FIRST, TNSOCR.OCRSTEP_LAST, TNSOCR.OCRFLAG_NONE); //perform OCR for selected page if (res > TNSOCR.ERROR_FIRST) {}; //insert error handler here res = NsOCR.Svr_AddPage(SvrObj, ImgObj, TNSOCR.FMT_EXACTCOPY); //add OCRed image page to output document if (res > TNSOCR.ERROR_FIRST) {}; //insert error handler here } NsOCR.Svr_SetDocumentInfo(SvrObj, TNSOCR.INFO_PDF_TITLE, "Sample Title"); //set some title res = NsOCR.Svr_SaveToFile(SvrObj, "c:\\out.pdf"); //save OCRed image to PDF file if (res > TNSOCR.ERROR_FIRST) {}; //insert error handler here NsOCR.Engine_Uninitialize(); //release all created objects and uninitialize OCR engine


VB.NET
'assume reference to NSOCR COM was added
'assume "NSOCR.vb" file was added to project
Dim CfgObj, OcrObj, ImgObj, SvrObj, i, cnt, res As Integer
Dim NsOCR As New NSOCRLib.NSOCRClass 'create NSOCR COM object instance
NsOCR.Engine_InitializeAdvanced(CfgObj, OcrObj, ImgObj) 'initialize OCR engine, create objects and load configuration
res = NsOCR.Img_LoadFile(ImgObj, "c:\sample.bmp") 'load some image for OCR
If res > TNSOCR.ERROR_FIRST Then 'insert error handler here
End If
NsOCR.Svr_Create(CfgObj, TNSOCR.SVR_FORMAT_PDF, SvrObj) 'create Saver object, output format is PDF
NsOCR.Svr_NewDocument(SvrObj) 'start new document
cnt = NsOCR.Img_GetPageCount(ImgObj) 'get number of pages in input image
For i = 0 To cnt - 1 'process all pages, one by one
  If i > 0 Then 'first page (i is 0) is already selected when image is loaded
    NsOCR.Img_SetPage(ImgObj, i) 'select page
  End If
  res = NsOCR.Img_OCR(ImgObj, TNSOCR.OCRSTEP_FIRST, TNSOCR.OCRSTEP_LAST, TNSOCR.OCRFLAG_NONE) 'perform OCR for selected page
  If res > TNSOCR.ERROR_FIRST Then 'insert error handler here
  End If
  res = NsOCR.Svr_AddPage(SvrObj, ImgObj, TNSOCR.FMT_EXACTCOPY) 'add OCRed image page to output document
  If res > TNSOCR.ERROR_FIRST Then 'insert error handler here
  End If
Next i
NsOCR.Svr_SetDocumentInfo(SvrObj, TNSOCR.INFO_PDF_TITLE, "Sample Title") 'set some title
res = NsOCR.Svr_SaveToFile(SvrObj, "c:\out.pdf") 'save OCRed image to PDF file
If res > TNSOCR.ERROR_FIRST Then 'insert error handler here
End If
NsOCR.Engine_Uninitialize() 'release all created objects and uninitialize OCR engine


Java
//assume NSOCR package was included
//Java VM option "-Djava.library.path" must point to "Bin" folder (x86 platform) or to "Bin_64" folder (x64 platform)
//...
NSOCR.HCFG CfgObj = new NSOCR.HCFG();
NSOCR.HOCR OcrObj = new NSOCR.HOCR();
NSOCR.HIMG ImgObj = new NSOCR.HIMG();
NSOCR.HSVR SvrObj = new NSOCR.HSVR();
int res, i, cnt;
NSOCR.Engine.Engine_InitializeAdvanced(CfgObj, OcrObj, ImgObj); //initialize OCR engine, create objects and load configuration
res = NSOCR.Engine.Img_LoadFile(ImgObj, "c:\\sample.bmp"); //load some image for OCR
if (res > NSOCR.Error.ERROR_FIRST) {}; //insert error handler here
NSOCR.Engine.Svr_Create(CfgObj, NSOCR.Constant.SVR_FORMAT_PDF, SvrObj); //create Saver object, output format is PDF
NSOCR.Engine.Svr_NewDocument(SvrObj); //start new document
cnt = NSOCR.Engine.Img_GetPageCount(ImgObj); //get number of pages in input image
for (i = 0; i < cnt; i++) //process all pages, one by one
{
  if (i > 0) //first page (i is 0) is already selected when image is loaded
    NSOCR.Engine.Img_SetPage(ImgObj, i); //select page
  res = NSOCR.Engine.Img_OCR(ImgObj, NSOCR.Constant.OCRSTEP_FIRST, NSOCR.Constant.OCRSTEP_LAST, NSOCR.Constant.OCRFLAG_NONE); //perform OCR for selected page
  if (res > NSOCR.Error.ERROR_FIRST) {}; //insert error handler here
  res = NSOCR.Engine.Svr_AddPage(SvrObj, ImgObj, NSOCR.Constant.FMT_EXACTCOPY); //add OCRed image page to output document
  if (res > NSOCR.Error.ERROR_FIRST) {}; //insert error handler here
}
NSOCR.Engine.Svr_SetDocumentInfo(SvrObj, NSOCR.Constant.INFO_PDF_TITLE, "Sample Title"); //set some title
res = NSOCR.Engine.Svr_SaveToFile(SvrObj, "c:\\out.pdf"); //save OCRed image to PDF file
if (res > NSOCR.Error.ERROR_FIRST) {}; //insert error handler here
NSOCR.Engine.Engine_Uninitialize(); //release all created objects and uninitialize OCR engine