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"/>
  1. 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();
}