Beispiel #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TesseractEngine"/> class.
 /// </summary>
 /// <param name="language1">Language 1</param>
 /// <param name="language2">Language 2</param>
 /// <param name="engineMode">Engine mode.</param>
 /// <param name="defaultSegmentationMode">Default segmentation mode.</param>
 public TesseractEngine(RecognitionLanguage language1, RecognitionLanguage language2, TesseractEngineMode engineMode, TesseractPageSegmentationMode defaultSegmentationMode)
 {
     RecognitionLanguage1    = language1;
     RecognitionLanguage2    = language2;
     EngineMode              = engineMode;
     DefaultSegmentationMode = defaultSegmentationMode;
 }
 public string TranslateLanguage(RecognitionLanguage rl)
 {
     return rl switch
     {
         RecognitionLanguage.English or RecognitionLanguage.Default => "eng",
         RecognitionLanguage.French => "fra",
         RecognitionLanguage.Polish => "pol",
         _ => "eng",
     };
 }
Beispiel #3
0
        /// <summary>
        /// Gets the tesseract name of the language.
        /// </summary>
        /// <param name="language">Language</param>
        /// <returns></returns>
        private string GetLanguageName(RecognitionLanguage language)
        {
            switch (language)
            {
            case RecognitionLanguage.English:
                return("eng");

            case RecognitionLanguage.Russian:
                return("rus");

            default:
                throw new ArgumentOutOfRangeException(nameof(language), language, null);
            }
        }
Beispiel #4
0
 public SearchOptions(string path, string keyword, RecognitionPrecision selectedPrecisionOCR, RecognitionLanguage selectedLanguageOCR,
                      bool caseSensitive, bool useOCR, bool useSubfolders, bool usePDF, bool useDOCX, bool useODT)
 {
     Path    = path;
     Keyword = keyword;
     SelectedPrecisionOCR = selectedPrecisionOCR;
     SelectedLanguageOCR  = selectedLanguageOCR;
     CaseSensitive        = caseSensitive;
     UseOCR        = useOCR;
     UseSubfolders = useSubfolders;
     UsePDF        = usePDF;
     UseDOCX       = useDOCX;
     UseODT        = useODT;
 }
Beispiel #5
0
            public void Initialize(Enums.Language language)
            {
                switch (language)
                {
                case Enums.Language.English:
                    this._language = RecognitionLanguage.English;
                    break;

                case Enums.Language.Russian:
                    this._language = RecognitionLanguage.Russian;
                    break;

                default:
                    throw new Exceptions.InvalidLanguageException(language.ToString());
                }
            }
Beispiel #6
0
        /// <summary>
        /// Gets the language names string.
        /// </summary>
        /// <param name="language1">Language1.</param>
        /// <param name="language2">Language2.</param>
        /// <returns></returns>
        private string GetLanguageNamesString(RecognitionLanguage language1, RecognitionLanguage language2)
        {
            if (language1 == RecognitionLanguage.None && language2 == RecognitionLanguage.None)
            {
                return("eng");
            }

            if (language1 == RecognitionLanguage.None)
            {
                return(GetLanguageName(language2));
            }

            if (language2 == RecognitionLanguage.None)
            {
                return(GetLanguageName(language1));
            }

            return($"{GetLanguageName(language1)}+{GetLanguageName(language2)}");
        }
        string ImageToText(byte[] imageBytes, RecognitionLanguage rl, RecognitionPrecision rp)
        {
            try
            {
                using var engine = new TesseractEngine(@"./Files", _optionService.TranslateLanguage(rl), EngineMode.Default);
                using var img    = _optionService.TranslatePrecision(rp).Item4 == System.Drawing.Imaging.ImageFormat.Tiff ?
                                   Pix.LoadTiffFromMemory(imageBytes) : Pix.LoadFromMemory(imageBytes);
                using var pager = engine.Process(img);
                return(pager.GetText().ToString());
                //System.Diagnostics.Debug.WriteLine("Mean confidence: {0}", pager.GetMeanConfidence());
                //System.Diagnostics.Debug.WriteLine("Text {0}", text);
            }
            catch (Exception ee)
            {
                System.Diagnostics.Debug.WriteLine("Unexpected Error: " + ee.Message);
                System.Diagnostics.Debug.WriteLine("Details: ");
                System.Diagnostics.Debug.WriteLine(ee.ToString());
            }

            return("");
        }
Beispiel #8
0
        public async System.Threading.Tasks.Task <TextMessage> ProcessAsync(VoiceMessage message)
        {
            switch (message.Language)
            {
            case Core.Enums.Language.English:
                this._language = RecognitionLanguage.English;
                break;

            case Core.Enums.Language.Russian:
                this._language = RecognitionLanguage.Russian;
                break;

            default:
                throw new Exceptions.InvalidMessageException(message.Id, "Invalid Language: " + message.Language.ToString());
            }
            var apiSetttings = new SpeechKitClientOptions($"{YandexCompmnentConfig.YandexSpeechApiKey}", "MashaWebApi", Guid.Empty, "server");

            using (var client = new SpeechKitClient(apiSetttings))
            {
                MemoryStream mediaStream = new MemoryStream(message.Vioce);
                var          speechRecognitionOptions = new SpeechRecognitionOptions(SpeechModel.Queries, RecognitionAudioFormat.Wav, RecognitionLanguage.Russian);
                try
                {
                    var result = await client.SpeechToTextAsync(speechRecognitionOptions, mediaStream, cancellationToken).ConfigureAwait(false);

                    if (result.TransportStatus != TransportStatus.Ok || result.StatusCode != HttpStatusCode.OK)
                    {
                        //Handle network and request parameters error
                    }

                    if (!result.Result.Success)
                    {
                        //Unable to recognize speech
                    }

                    var utterances = result.Result.Variants;
                    if (utterances.Count > 0)
                    {
                        var max = utterances[0];
                        foreach (var item in utterances)
                        {
                            if (item.Confidence > max.Confidence)
                            {
                                max = item;
                            }
                        }
                        TextMessage res = new TextMessage()
                        {
                            Id       = message.Id,
                            Language = message.Language,
                            Text     = max.Text
                        };
                        return(res);
                    }
                    throw new Exception("invdlid answer");
                }
                catch (OperationCanceledException)
                {
                    throw new Exception("invdlid answer");
                }
            }
        }
Beispiel #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TesseractEngine"/> class.
 /// </summary>
 /// <param name="language1">Language 1</param>
 /// <param name="language2">Language 2</param>
 /// <param name="engineMode">Engine mode.</param>
 public TesseractEngine(RecognitionLanguage language1, RecognitionLanguage language2, TesseractEngineMode engineMode)
     : this(language1, language2, engineMode, TesseractPageSegmentationMode.Auto)
 {
 }
Beispiel #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TesseractEngine" /> class.
 /// </summary>
 /// <param name="language1">Language 1</param>
 /// <param name="language2">Language 2</param>
 public TesseractEngine(RecognitionLanguage language1, RecognitionLanguage language2)
     : this(language1, language2, TesseractEngineMode.Default)
 {
 }
Beispiel #11
0
 /// <summary>
 /// Create new speech recognition options.
 /// </summary>
 /// <param name="speechModel">The language model to use for recognition.</param>
 /// <param name="audioFormat">The audio format.</param>
 /// <param name="language">The language for speech recognition.</param>
 public SpeechRecognitionOptions(SpeechModel speechModel, RecognitionAudioFormat audioFormat, RecognitionLanguage language)
 {
     SpeechModel = speechModel;
     AudioFormat = audioFormat;
     Language    = language;
 }
        public Task ProcessImage(byte[] data, RecognitionLanguage language)
        {
            var settings = new ProcessingSettings
            {
                Language = language,
                OutputFormat = OutputFormat.txt,
                TextTypes = TextType.Normal
            };

            // set request
            Task task = _restServiceClient.ProcessImage(data, settings);
            return task;
        }