Choosing the appropriate OCR zone in C#
This example shows how to choose the appropriate OCR context. OCR context is easy to set and use, and it’s important in the OCR process. Often on your forms, you don’t want to recognize all the text in the document, but only small parts of it — whether it’s a column in a table, a name on a forum, or an additional notes area. You have to inform the OCR engine of the layout type of the data you want to process using OCR.
//We assume that GdPicture has been correctly installed and unlocked.//We assume a GdViewer object called GdViewer1 has been created and painted on the form.GdPictureImaging oGdPictureImaging = new GdPictureImaging();//Loading the image from a file.int imageId = oGdPictureImaging.CreateGdPictureImageFromFile("image.tif");//Checking if the image has been loaded correctly.if (oGdPictureImaging.GetStat() != GdPictureStatus.OK){ MessageBox.Show("The image can't be loaded. Error: " + oGdPictureImaging.GetStat().ToString(), "OCR Context Example", MessageBoxButtons.OK, MessageBoxIcon.Error);}else{ //Displaying the image in the GdViewer. GdViewer1.DisplayFromGdPictureImage(imageId); oGdPictureImaging.ReleaseGdPictureImage(imageId);}oGdPictureImaging.Dispose();
//On the Mouse UP event on the GdViewer, set the ROI based on the rectangle of selection of the GdViewer.//If a rectangle of selection is painted on the GdViewer, the area will be OCRed with a single line OCR context.public void OCR_ROI_MouseUP(System.Object eventSender, System.EventArgs eventArgs){ GdPictureOCR oGdPictureOCR = new GdPictureOCR(); //Initializing variables to hold the position of the rectangle of selection on the document. int leftArea = 0; int topArea = 0; int widthArea = 0; int heightArea = 0; //Checking if a rectangle of selection has been painted on the GdViewer. if (GdViewer1.IsRect()) { //Getting the location of the selection on the document. GdViewer1.GetRectCoordinatesOnDocument(ref leftArea, ref topArea, ref widthArea, ref heightArea); //Setting the ROI on the document. oGdPictureOCR.SetROI(leftArea, topArea, widthArea, heightArea); } else { oGdPictureOCR.ResetROI(); } //Processing the OCR: //Selecting the OCR context, here we will use it to recognize a single line on our form. oGdPictureOCR.Context = OCRContext.OCRContextSingleLine; //Setting up the required parameters for the OCR engine. oGdPictureOCR.ResourceFolder = "Redist\\OCR"; if ((oGdPictureOCR.AddLanguage(OCRLanguage.English) == GdPictureStatus.OK) && (oGdPictureOCR.SetImage(imageId) == GdPictureStatus.OK)) { //Running the OCR. string resID = oGdPictureOCR.RunOCR(); //Checking the status. if (oGdPictureOCR.GetStat() != GdPictureStatus.OK) { MessageBox.Show("The OCR has failed with the status: " + oGdPictureOCR.GetStat().ToString(), "OCR Context Example", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { //Checking the results. for (int i = 1; i <= oGdPictureOCR.GetCharacterCount(resID); i++) { oGdPictureImaging.DrawRectangle(imageId, oGdPictureOCR.GetCharacterLeft(resID, i) + leftArea, oGdPictureOCR.GetCharacterTop(resID, i) + topArea, oGdPictureOCR.GetCharacterRight(resID, i) - oGdPictureOCR.GetCharacterLeft(resID, i), oGdPictureOCR.GetCharacterBottom(resID, i) - oGdPictureOCR.GetCharacterTop(resID, i), 1, Color.Red, false);
} } } oGdPictureOCR.Dispose();}
This code sample is an example that illustrates how to use our SDK. Please adapt it to your specific use case.