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; } } else sourceFileName = 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 OCR OCRSettings 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 50MB binding.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();}