TesseractOcrSettings ISettingsRecognition.Settings()
        {
            OcrLanguage          language = OcrLanguage.Russian;
            TesseractOcrSettings setting  = new TesseractOcrSettings(language);

            return(setting);
        }
Пример #2
0
        private void ReadCroppedImage(int x, int y, int width, int height, OcrLanguage language, TextBox textBox)
        {
            var CropArea = new Rectangle(x, y, width, height);

            var advancedOcr = new AdvancedOcr()
            {
                CleanBackgroundNoise             = true,
                EnhanceContrast                  = true,
                EnhanceResolution                = true,
                Strategy                         = AdvancedOcr.OcrStrategy.Advanced,
                ColorSpace                       = AdvancedOcr.OcrColorSpace.Color,
                DetectWhiteTextOnDarkBackgrounds = true,
                InputImageType                   = AdvancedOcr.InputTypes.AutoDetect,
                RotateAndStraighten              = true,
                ReadBarCodes                     = false,
                ColorDepth                       = 4
            };

            if (language == OcrLanguage.English)
            {
                advancedOcr.Language = IronOcr.Languages.English.OcrLanguagePack;
            }

            if (language == OcrLanguage.Japanese)
            {
                advancedOcr.Language = IronOcr.Languages.Japanese.OcrLanguagePack;
            }

            var results = advancedOcr.Read(FilePath, CropArea);

            textBox.Text = results.Text;
        }
        private async void DownloadableLanguage_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            OcrLanguage ocrLanguage = sender as OcrLanguage;

            if (e.PropertyName.Equals(nameof(ocrLanguage.IsDownloading)))
            {
                await Device.InvokeOnMainThreadAsync(() => PopulateDownloadableLanguages());
            }
        }
Пример #4
0
        public ImageRecognizeViewModel()
        {
            OcrLanguage language = (OcrLanguage)Enum.Parse(
                typeof(OcrLanguage),
                (LocalSettingHelper.GetLocalSettingValue(LocalSettingHelper.RecogLanguageKey)).ToString());

            _ocrEngine  = new OcrEngine(language);
            _imageModel = new ImageModel();
        }
Пример #5
0
 private static async Task<OcrResult> Recognize(string fileName, OcrLanguage language)
 {
     var ocrEngine = new OcrEngine(language);
     using (var stream = File.OpenRead(fileName))
     {
         var winRtStream = stream.AsRandomAccessStream();
         var decoder = await BitmapDecoder.CreateAsync(winRtStream);
         var bitmap = await decoder.GetPixelDataAsync();
         return await ocrEngine.RecognizeAsync(decoder.PixelHeight, decoder.PixelWidth, bitmap.DetachPixelData());
     }
 }
        private void CancelLanguageDownloadButton_Tapped(object sender, EventArgs e)
        {
            OcrLanguage ocrLanguage = (sender as Label).BindingContext as OcrLanguage;

            if (ocrLanguage == null)
            {
                return;
            }

            OcrLanguageManager.CancelDownloadForLanguage(ocrLanguage.Language);
        }
Пример #7
0
        public void CreateTesseractEngine()
        {
            string tesseractOcrDllPath = @"G:\Programm\vintasoft\Bin\TesseractOCR";

            using (TesseractOcr tesseractOcr = new TesseractOcr(tesseractOcrDllPath))
            {
                OcrLanguage          language = OcrLanguage.Russian;
                TesseractOcrSettings settings = new TesseractOcrSettings(language);
                tesseractOcr.Init(settings);

                tesseractOcr.Shutdown();
            }
        }
Пример #8
0
        private async void SpeakButton_Tapped(object sender, EventArgs e)
        {
            if (_isSpeaking)
            {
                CancelSpeech();
                _cts = new CancellationTokenSource();
                return;
            }

            _isSpeaking = !_isSpeaking;

            Label speakButton = sender as Label;

            if (speakButton != null)
            {
                speakButton.Text = _isSpeaking ? "STOP" : "SPEAK";
            }

            Locale currentLocale = await GetTextToSpeechLocale(_pageLanguage);

            if (currentLocale == null)
            {
                speakButton.Text = "SPEAK";
                _isSpeaking      = false;
                OcrLanguage ocrLanguage = new OcrLanguage(_pageLanguage);
                await DisplayAlert("Error", $"Speech is not supported for the {ocrLanguage.LocalizedName} Language", "Ok");

                return;
            }

            string documentText = GetDocumetText();

            if (string.IsNullOrWhiteSpace(documentText))
            {
                await DisplayAlert("Error", $"Document does not contains text", "Ok");

                return;
            }

            _ = TextToSpeech.SpeakAsync(documentText, new SpeechOptions()
            {
                Locale = currentLocale, Pitch = 1.0f, Volume = 1.0f
            }, _cts.Token).ContinueWith((t) =>
            {
                // Logic that will run after utterance finishes.
                _isSpeaking      = false;
                speakButton.Text = "SPEAK";
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }
        private void DownloadLanguageButton_Tapped(object sender, EventArgs e)
        {
            Label downloadButton = sender as Label;

            downloadButton.IsEnabled = false;
            OcrLanguage ocrLanguage = (sender as Label).BindingContext as OcrLanguage;

            if (ocrLanguage == null)
            {
                return;
            }

            ocrLanguage.Tag = sender;
            OcrLanguageManager.DownloadLanguage(ocrLanguage.Language, null, new OcrLanguageManager.CompletionDelegate(DownloadLanguageCompleted));
        }
Пример #10
0
        public static string[] GetDirectory(OcrLanguage language)
        {
            switch (language)
            {
            case OcrLanguage.English:
                return(new [] { @"tessdata\enUS", @"get/tessdata/en-US" });

            case OcrLanguage.SimplifiedChinese:
                return(new [] { @"tessdata\zhCN", @"get/tessdata/zh-CN" });

            case OcrLanguage.TraditionalChinese:
                return(new [] { @"tessdata\zhTW", @"get/tessdata/zh-TW" });

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #11
0
        public static bool IsTessDataAvailable(OcrLanguage language)
        {
            switch (language)
            {
            case OcrLanguage.English:
                return(DataFileAvailable(OcrEngineEnglish.TessdataFilePaths));

            case OcrLanguage.SimplifiedChinese:
                return(DataFileAvailable(OcrEngineSimplifiedChinese.TessdataFilePaths));

            case OcrLanguage.TraditionalChinese:
                return(DataFileAvailable(OcrEngineTraditionalChinese.TessdataFilePaths));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #12
0
        public static OcrEngine CreateEngine(OcrLanguage language)
        {
            switch (language)
            {
            case OcrLanguage.English:
                return(new OcrEngineEnglish());

            case OcrLanguage.SimplifiedChinese:
                return(new OcrEngineSimplifiedChinese());

            case OcrLanguage.TraditionalChinese:
                return(new OcrEngineTraditionalChinese());

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #13
0
        private void ListPickerFlyOut1Picker(ListPickerFlyout sender, ItemsPickedEventArgs args)
        {
            var items = args.AddedItems;

            if (items.Any() == false)
            {
                return;
            }
            OcrLanguage language = (OcrLanguage)Enum.Parse(
                typeof(OcrLanguage),
                items.First().ToString());

            LocalSettingHelper.SetLocalSettingKeyValue(LocalSettingHelper.RecogLanguageKey, (int)language);

            string key = Util.AvailableCountries.Where(country => country.Value == language).First().Key;

            langRecog.Content = key;
        }
Пример #14
0
        public Recognizer(OcrLanguage language, string sourceDirectory = null)
        {
            _engine = OcrEngine.CreateEngine(language);

            TempDirectoryPath = sourceDirectory + @"\Test\";
            if (!Directory.Exists(TempDirectoryPath))
            {
                Directory.CreateDirectory(TempDirectoryPath);
            }
            var direLeft = TempDirectoryPath + @"left\";

            if (!Directory.Exists(direLeft))
            {
                Directory.CreateDirectory(direLeft);
            }
            var direRight = TempDirectoryPath + @"right\";

            if (!Directory.Exists(direRight))
            {
                Directory.CreateDirectory(direRight);
            }
        }
        private async void DownloadLanguageCompleted(OcrLanguage language, Exception error)
        {
            if (language != null && language.Tag != null)
            {
                await Device.InvokeOnMainThreadAsync(() => (language.Tag as Label).IsEnabled = true);
            }

            if (error == null)
            {
                // Download completed successfully, then remove the downloaded language from the downloadable languages list and add it to the inactive languages list.
                await Device.InvokeOnMainThreadAsync(async() =>
                {
                    if (language != null && !language.CancellationTokenSource.IsCancellationRequested)
                    {
                        DownloadableLanguages = OcrLanguageManager.DownloadableLanguages;

                        var langs = InactiveLanguages.Where(l => l.Language.Equals(language.Language));
                        if (langs == null || langs.Count() == 0)
                        {
                            InactiveLanguages.Add(language);
                        }

                        language.IsDownloadable = false;

                        await Device.InvokeOnMainThreadAsync(() => ReloadCachedLanguagesInfo());
                    }
                });
            }
            else
            {
                // Error occurred while downloading this language
                await Device.InvokeOnMainThreadAsync(async() =>
                {
                    ReloadCachedLanguagesInfo();
                    await DisplayAlert("Error Downloading File", $"Encountered an error while trying to download the {language.LocalizedName} language: {error.Message}", "OK");
                });
            }
        }
        private void DeleteLanguageButton_Tapped(object sender, EventArgs e)
        {
            OcrLanguage ocrLanguage = (sender as SvgImage).BindingContext as OcrLanguage;

            if (ocrLanguage == null)
            {
                return;
            }

            OcrLanguageManager.DeleteLanguage(ocrLanguage.Language);

            ocrLanguage.IsDownloadable = true;

            // Manually remove from active/inactive languages, then manually add to downloadable languages
            if (ActiveLanguages.Contains(ocrLanguage))
            {
                ActiveLanguages.Remove(ocrLanguage);
            }
            else if (InactiveLanguages.Contains(ocrLanguage))
            {
                InactiveLanguages.Remove(ocrLanguage);
            }

            if (!DownloadableLanguages.Contains(ocrLanguage))
            {
                // Take the language from OcrLanguageManager.DownloadableLanguages instead of the local downloadable languages list since that one
                // has the updated class members like file size and what not.
                var langs = OcrLanguageManager.DownloadableLanguages.Where(l => l.Language.Equals(ocrLanguage.Language));
                if (langs != null && langs.Count() > 0)
                {
                    ocrLanguage = langs.ElementAt(0);
                }

                DownloadableLanguages.Add(ocrLanguage);
            }

            ReloadCachedLanguagesInfo();
        }
Пример #17
0
        /// <summary>
        /// Invoked when this page is about to be displayed in a Frame.
        /// </summary>
        /// <param name="e">Event data that describes how this page was reached.
        /// This parameter is typically used to configure the page.</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            listpickerflyout1.ItemsSource = Util.AvailableCountries.Values;
            OcrLanguage language = (OcrLanguage)Enum.Parse(
                typeof(OcrLanguage),
                LocalSettingHelper.GetLocalSettingValue(LocalSettingHelper.RecogLanguageKey).ToString());

            langRecog.Content = Util.AvailableCountries.Where(country => country.Value == language).First().Key;

            listpickerflyout2.ItemsSource = Util.SupportedLanguages.Keys;
            string lang = LocalSettingHelper.GetLocalSettingValue(LocalSettingHelper.LanguageTranslateTo).ToString();

            langtoTranslate.Content = Util.SupportedLanguages[lang];


            geoLocalSwitchToggle.IsOn = Convert.ToBoolean(
                LocalSettingHelper.GetLocalSettingValue(LocalSettingHelper.AllowGPSKey)
                );

            SdCardSwitchToggle.IsOn = Convert.ToBoolean(
                LocalSettingHelper.GetLocalSettingValue(LocalSettingHelper.SaveOnSdCard)
                );
        }
        protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
        {
            DataTemplate retTemplate = DefaultItemTemplate;

            OcrLanguage langItem = item as OcrLanguage;

            if (langItem != null)
            {
                CustomListView   listView   = (container as CustomListView);
                OcrLanguagesPage parentPage = listView.GetParentPage() as OcrLanguagesPage;

                if (langItem.IsDownloadable)
                {
                    retTemplate = langItem.IsDownloading ? DownloadingTemplate : DefaultDownloadTemplate;
                }
                else if (parentPage.IsInEditMode)
                {
                    // If active languages list view and it contains only one language then don't show the edit template
                    retTemplate = (!string.IsNullOrWhiteSpace(listView.StyleId) && listView.StyleId.Equals("ActiveLanguages") && listView.ItemsSource != null && (listView.ItemsSource as ObservableCollection <OcrLanguage>).Count == 1) ? DefaultItemTemplate : EditLanguagesItemTemplate;
                }
            }

            return(retTemplate);
        }
Пример #19
0
        private async Task initRecognizeLanguage()
        {
            // Kiểm tra key có tồn tại hay không.
            // Nếu có => return khôgn làm gì
            // Nếu không => Hỏi có cho dùng GPS không
            // ____________ Nếu khôgn cho thì lưu key với value là english
            // ____________ Nếu cho thì gọi CharacterRecognizeModel.InitLanguage(); => lưu key

            if (LocalSettingHelper.IsExistsLocalSettingKey(LocalSettingHelper.RecogLanguageKey) == false)
            {
                bool isAllowGPS = await AskForUseGPS();

                OcrLanguage language = OcrLanguage.English;
                if (isAllowGPS == true)
                {
                    language = await CharacterRecognizeModel.InitLanguage();
                }
                else
                {
                    language = OcrLanguage.English;
                }
                LocalSettingHelper.SetLocalSettingKeyValue(LocalSettingHelper.RecogLanguageKey, (int)language);
            }
        }
Пример #20
0
        /// <summary>
        /// Submitting picture, containing textual content, to plagiarism scan
        /// </summary>
        /// <param name="localfile">The local picture containing the content to scan</param>
        /// <param name="language">Specify the language of the text</param>
        /// <param name="options">Process Options: include http callback and add custom fields to the process</param>
        /// <exception cref="UnauthorizedAccessException">The login-token is undefined or expired</exception>
        /// <returns>The newly created process</returns>
        public CopyleaksProcess CreateByOcr(FileInfo localfile, OcrLanguage language, ProcessOptions options = null)
        {
            if (this.Token == null)
            {
                throw new UnauthorizedAccessException("Empty token!");
            }
            else
            {
                this.Token.Validate();
            }

            if (!localfile.Exists)
            {
                throw new FileNotFoundException("File not found!", localfile.FullName);
            }

            if (language == null)
            {
                throw new ArgumentNullException(nameof(language), "Cannot be null!");
            }

            using (HttpClient client = new HttpClient())
            {
                client.SetCopyleaksClient(HttpContentTypes.Json, this.Token);

                if (options != null)
                {
                    options.AddHeaders(client);
                }

                HttpResponseMessage msg;
                // Uploading the local file to the server

                using (var content = new MultipartFormDataContent("Upload----" + DateTime.UtcNow.ToString(CultureInfo.InvariantCulture)))
                    using (FileStream stream = localfile.OpenRead())
                    {
                        content.Add(new StreamContent(stream, (int)stream.Length), "document", Path.GetFileName(localfile.Name));
                        msg = client.PostAsync(
                            string.Format("{0}/{1}/create-by-file-ocr?language={2}", Resources.ServiceVersion, Resources.ServicePage, Uri.EscapeDataString(language.Type.ToString())),
                            content).Result;
                    }

                if (!msg.IsSuccessStatusCode)
                {
                    throw new CommandFailedException(msg);
                }

                string json = msg.Content.ReadAsStringAsync().Result;

                var dateTimeConverter = new IsoDateTimeConverter {
                    DateTimeFormat = "dd/MM/yyyy HH:mm:ss"
                };
                CreateResourceResponse response = JsonConvert.DeserializeObject <CreateResourceResponse>(json, dateTimeConverter);
                if (options == null)
                {
                    return(new CopyleaksProcess(this.Token, response, null));
                }
                else
                {
                    return(new CopyleaksProcess(this.Token, response, options.CustomFields));
                }
            }
        }
Пример #21
0
 public ImageRecognizeViewModel(OcrLanguage language)
 {
     _ocrEngine  = new OcrEngine(language);
     _imageModel = new ImageModel();
 }