How to set GdPicture OCR as the default OCR engine?

There are two methods to configure GdPicture OCR as the default OCR engine:

  1. Modify the Web Service configuration:

    <!-- The default OCR engine to use. For a list of available OCR engines, see
    the <ocrProcessors> section below. This may require third-party software. -->
    <add key="OCR.Default" value="GdPictureOCR"/>
  2. 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();
    }