How to set GdPicture OCR as the default OCR engine?
There are two methods to configure GdPicture OCR as the default OCR engine:
Modify the Web Service configuration:
<!-- The default OCR engine to use. For a list of available OCR engines, seethe <ocrProcessors> section below. This may require third-party software. --><add key="OCR.Default" value="GdPictureOCR"/>Specify the desired OCR engine directly in the code:
static void Main(string[] args){DocumentConverterServiceClient client = null;try{// ** Delete any processed files from a previous run.foreach (FileInfo f in new DirectoryInfo(".").GetFiles("*_ocr.pdf"))f.Delete();// ** Determine the source file and read it into a byte array.string sourceFileName = null;if (args.Length == 0){// ** If nothing is specified, then read the first PDF file from the current folder.string[] sourceFiles = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.pdf");if (sourceFiles.Length > 0)sourceFileName = sourceFiles[0];else{Console.WriteLine("Please specify a document to OCR.");Console.ReadKey();return;}}elsesourceFileName = args[0];byte[] sourceFile = File.ReadAllBytes(sourceFileName);// ** Open the service and configure the bindings.client = OpenService(SERVICE_URL);//** Set the absolute minimum open options.OpenOptions openOptions = new OpenOptions();openOptions.OriginalFileName = Path.GetFileName(sourceFileName);openOptions.FileExtension = Path.GetExtension(sourceFileName);// ** Set the absolute minimum conversion settings.ConversionSettings conversionSettings = new ConversionSettings();// ** OCR OCR OCR OCR OCR OCR OCR OCR OCR OCR OCR OCR OCR OCR OCROCRSettings ocr = new OCRSettings();ocr.Language = OCRLanguage.English.ToString();ocr.OCREngine = "GdPictureOCR";conversionSettings.OCRSettings = ocr;// ** OCR OCR OCR OCR OCR OCR OCR OCR OCR OCR OCR OCR OCR OCR OCR// ** Carry out the conversion.Console.WriteLine("Processing file " + sourceFileName + ".");byte[] convFile = client.ProcessChanges(sourceFile, openOptions, conversionSettings);// ** Write the processed file back to the file system with a PDF extension.string destinationFileName = Path.GetFileNameWithoutExtension(sourceFileName) + "_ocr.pdf";using (FileStream fs = File.Create(destinationFileName)){fs.Write(convFile, 0, convFile.Length);fs.Close();}Console.WriteLine("File written to " + destinationFileName);// ** Open the generated PDF file in a PDF reader.Console.WriteLine("Launching file in PDF Reader");Process.Start(destinationFileName);}catch (FaultException<WebServiceFaultException> ex){Console.WriteLine("FaultException occurred: ExceptionType: " +ex.Detail.ExceptionType.ToString());}catch (Exception ex){Console.WriteLine(ex.ToString());}finally{CloseService(client);}Console.ReadKey();}/// <summary>/// Configure the bindings and endpoints and open the service using the specified address./// </summary>/// <returns>An instance of the Web Service.</returns>public static DocumentConverterServiceClient OpenService(string address){DocumentConverterServiceClient client = null;try{BasicHttpBinding binding = new BasicHttpBinding();// ** Use standard Windows Security.binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;binding.Security.Transport.ClientCredentialType =HttpClientCredentialType.Windows;// ** Increase the client timeout to deal with (very) long running requests.binding.SendTimeout = TimeSpan.FromMinutes(120);binding.ReceiveTimeout = TimeSpan.FromMinutes(120);// ** Set the maximum document size to 50MBbinding.MaxReceivedMessageSize = 50 * 1024 * 1024;binding.ReaderQuotas.MaxArrayLength = 50 * 1024 * 1024;binding.ReaderQuotas.MaxStringContentLength = 50 * 1024 * 1024;// ** Specify an identity (or any identity) to get past .net3.5 sp1.EndpointIdentity epi = EndpointIdentity.CreateUpnIdentity("unknown");EndpointAddress epa = new EndpointAddress(new Uri(address), epi);client = new DocumentConverterServiceClient(binding, epa);client.Open();return client;}catch (Exception){CloseService(client);throw;}}/// <summary>/// Check if the client is open and then close it./// </summary>/// <param name="client">The client to close</param>public static void CloseService(DocumentConverterServiceClient client){if (client != null && client.State == CommunicationState.Opened)client.Close();}