public static async Task <List <IGenericOcrRunner> > GetStandardOcrs(IOcrCache ocrCache,
                                                                             StandardOcrSettings standardOcrSettings, IImageCompressor imageCompressor)
        {
            List <IGenericOcrRunner> genericOcrRunners = new List <IGenericOcrRunner>();
            var ocrParams = new HighLevelOcrServiceParams {
                OcrCache = ocrCache, ImageCompressor = imageCompressor
            };

            if (standardOcrSettings.AwsOcrSettings != null)
            {
                var awsSettings = standardOcrSettings.AwsOcrSettings;
                genericOcrRunners.Add(new AwsOcrService(awsSettings.AccessKey, awsSettings.SecretKey, awsSettings.Region, ocrParams));
            }

            if (standardOcrSettings.AzureOcrSettings != null)
            {
                var azureSettings = standardOcrSettings.AzureOcrSettings;
                genericOcrRunners.Add(new AzureOcrService(azureSettings.SubscriptionKey, azureSettings.Endpoint, ocrParams));
            }

            if (standardOcrSettings.GoogleOcrSettings != null)
            {
                var googleSettings = standardOcrSettings.GoogleOcrSettings;
                genericOcrRunners.Add(new GoogleOcrService(googleSettings.ApiToken, ocrParams));
            }

            if (standardOcrSettings.TesseractOcrSettings != null)
            {
                var tesseractSettings = standardOcrSettings.TesseractOcrSettings;

                if (tesseractSettings.ShouldTryToAutomaticallInstall && RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
                {
                    var tesseractInstaller = new WindowsTesseractInstaller(tesseractSettings.TesseractExecutable);
                    await tesseractInstaller.Install();

                    tesseractSettings.Installer           = tesseractInstaller;
                    tesseractSettings.TesseractExecutable = tesseractInstaller.TesseractExePath;
                }
                if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
                {
                    tesseractSettings.TesseractExecutable = "tesseract";
                }

                genericOcrRunners.Add(new TesseractOcrService(tesseractSettings.TesseractExecutable, tesseractSettings.DataDir, ocrParams));
            }

            if (standardOcrSettings.WindowsOcrSettings != null && RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                genericOcrRunners.Add(new WindowsOcrService(ocrParams));
            }
            return(genericOcrRunners);
        }
 public StandardMultiOcrRunnerFactory(StandardOcrSettings settings, string cacheRootDirectory) :
     this(settings, new FileStorageOcrCache(cacheRootDirectory))
 {
 }
 public StandardMultiOcrRunnerFactory(StandardOcrSettings settings, IOcrCache ocrCache)
 {
     this.Settings        = settings;
     this.ocrCache        = ocrCache;
     this.imageCompressor = settings.ImageCompressor;
 }
 public StandardMultiOcrRunnerFactory(StandardOcrSettings settings) :
     this(settings, new NoOpOcrCache())
 {
 }