Nicomsoft OCR: Developer's Guide |
C++: | int Blk_GetCharCnt(HBLK BlkObj, int LineIndex, int WordIndex) |
C#: | int Blk_GetCharCnt(int BlkObj, int LineIndex, int WordIndex) |
Visual Basic: | Function Blk_GetCharCnt(ByVal BlkObj As Integer, ByVal LineIndex As Integer, ByVal WordIndex As Integer) As Integer |
Java: | int Blk_GetCharCnt(HBLK BlkObj, int LineIndex, int WordIndex) |
Delphi: | function Blk_GetCharCnt(BlkObj:HBLK; LineIndex:integer; WordIndex:integer):integer |
BlkObj [IN] – the Block object. You can also specify the Image object if you want to work with the global list of text lines for the entire image. | |
LineIndex [IN] – the index of the text line; 0 – the first line. | |
WordIndex [IN] – the index of the word in the specified text line; 0 - the first word. |
int CfgObj, OcrObj, ImgObj, res, lcnt, wcnt, ccnt, i, j, k, n, Xpos, Ypos, Width, Height; wchar_t* txt; Engine_InitializeAdvanced(&CfgObj, &OcrObj, &ImgObj); //initialize OCR engine, create objects and load configuration res = Img_LoadFile(ImgObj, L"c:\\sample.bmp"); //load some image for OCR if (res > ERROR_FIRST) {}; //insert error handler here res = Img_OCR(ImgObj, OCRSTEP_FIRST, OCRSTEP_LAST, OCRFLAG_NONE); //perform OCR if (res > ERROR_FIRST) {}; //insert error handler here lcnt = Blk_GetLineCnt(ImgObj); //get number of text lines for entire image for (i = 0; i < lcnt; i++) { wcnt = Blk_GetWordCnt(ImgObj, i); //get number of words of "i"-th text line for (j = 0; j < wcnt; j++) { ccnt = Blk_GetCharCnt(ImgObj, i, j); //get number of characters of "j"-th word of "i"-th text line for (k = 0; k < ccnt; k++) { Blk_GetCharRect(ImgObj, i, j, k, &Xpos, &Ypos, &Width, &Height); //get character position and size res = Blk_GetCharQual(ImgObj, i, j, k, 0); //get character quality n = Blk_GetCharText(ImgObj, i, j, k, 0, NULL, 0) + 1; //get buffer size plus terminating NULL character txt = (wchar_t*) malloc(sizeof(wchar_t) * n); //allocate memory for text Blk_GetCharText(ImgObj, i, j, k, 0, txt, n); //get character text //...use "txt" value now free(txt); //free memory } } } Engine_Uninitialize(); //release all created objects and uninitialize OCR engine
//assume reference to NSOCR COM was added using NSOCR_NameSpace; //Add NSOCR namespace from "NSOCR.cs" file //... int CfgObj, OcrObj, ImgObj, res, lcnt, wcnt, ccnt, i, j, k, Xpos, Ypos, Width, Height; string txt; 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 res = NsOCR.Img_OCR(ImgObj, TNSOCR.OCRSTEP_FIRST, TNSOCR.OCRSTEP_LAST, TNSOCR.OCRFLAG_NONE); //perform OCR if (res > TNSOCR.ERROR_FIRST) {}; //insert error handler here lcnt = NsOCR.Blk_GetLineCnt(ImgObj); //get number of text lines for entire image for (i = 0; i < lcnt; i++) { wcnt = NsOCR.Blk_GetWordCnt(ImgObj, i); //get number of words of "i"-th text line for (j = 0; j < wcnt; j++) { ccnt = NsOCR.Blk_GetCharCnt(ImgObj, i, j); //get number of characters of "j"-th word of "i"-th text line for (k = 0; k < ccnt; k++) { NsOCR.Blk_GetCharRect(ImgObj, i, j, k, out Xpos, out Ypos, out Width, out Height); //get character position and size res = NsOCR.Blk_GetCharQual(ImgObj, i, j, k, 0); //get character quality NsOCR.Blk_GetCharText(ImgObj, i, j, k, 0, out txt); //get character text } } } NsOCR.Engine_Uninitialize(); //release all created objects and uninitialize OCR engine
'assume reference to NSOCR COM was added 'assume "NSOCR.vb" file was added to project Dim CfgObj, OcrObj, ImgObj, res, lcnt, wcnt, ccnt, i, j, k, Xpos, Ypos, Width, Height As Integer Dim txt As String = "" 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 res = NsOCR.Img_OCR(ImgObj, TNSOCR.OCRSTEP_FIRST, TNSOCR.OCRSTEP_LAST, TNSOCR.OCRFLAG_NONE) 'perform OCR If res > TNSOCR.ERROR_FIRST Then 'insert error handler here End If lcnt = NsOCR.Blk_GetLineCnt(ImgObj) 'get number of text lines for entire image For i = 0 To lcnt - 1 wcnt = NsOCR.Blk_GetWordCnt(ImgObj, i) 'get number of words of "i"-th text line For j = 0 To wcnt - 1 ccnt = NsOCR.Blk_GetCharCnt(ImgObj, i, j) 'get number of characters of "j"-th word of "i"-th text line For k = 0 To ccnt - 1 NsOCR.Blk_GetCharRect(ImgObj, i, j, k, Xpos, Ypos, Width, Height) 'get character position and size res = NsOCR.Blk_GetCharQual(ImgObj, i, j, k, 0) 'get character quality NsOCR.Blk_GetCharText(ImgObj, i, j, k, 0, txt) 'get character text Next k Next j Next i NsOCR.Engine_Uninitialize() 'release all created objects and uninitialize OCR engine
//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(); int res, cnt, i, j, k, lcnt, wcnt, ccnt; NSOCR.NSInt Xpos, Ypos, Width, Height; Xpos = new NSOCR.NSInt(0); Ypos = new NSOCR.NSInt(0); Width = new NSOCR.NSInt(0); Height = new NSOCR.NSInt(0); StringBuffer txt = new StringBuffer(); 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 res = NSOCR.Engine.Img_OCR(ImgObj, NSOCR.Constant.OCRSTEP_FIRST, NSOCR.Constant.OCRSTEP_LAST, NSOCR.Constant.OCRFLAG_NONE); //perform OCR if (res > NSOCR.Error.ERROR_FIRST) {}; //insert error handler here NSOCR.HBLK BlkObj = new NSOCR.HBLK(); //create temporary BLK object because we cannot pass ImgObj to Blk_GetBarcodeCnt directly BlkObj.SetValue(ImgObj.GetValue()); //it is just a copy of ImgObj lcnt = NSOCR.Engine.Blk_GetLineCnt(BlkObj); //get number of text lines for entire image for (i = 0; i < lcnt; i++) { wcnt = NSOCR.Engine.Blk_GetWordCnt(BlkObj, i); //get number of words of "i"-th text line for (j = 0; j < wcnt; j++) { ccnt = NSOCR.Engine.Blk_GetCharCnt(BlkObj, i, j); //get number of characters of "j"-th word of "i"-th text line for (k = 0; k < ccnt; k++) { NSOCR.Engine.Blk_GetCharRect(BlkObj, i, j, k, Xpos, Ypos, Width, Height); //get character position and size res = NSOCR.Engine.Blk_GetCharQual(BlkObj, i, j, k, 0); //get character quality NSOCR.Engine.Blk_GetCharText(BlkObj, i, j, k, 0, txt); //get character text System.out.println(txt.toString()); } } } NSOCR.Engine.Engine_Uninitialize(); //release all created objects and uninitialize OCR engine