Ejemplo n.º 1
0
        private void CrackCode()
        {
            CodeLoadViewModel loadModel = SoftContext.Locator.Main.CodeLoad;

            if (loadModel.TargetImage == null)
            {
                return;
            }
            CodeCrackViewModel crackModel = SoftContext.Locator.Main.CodeCrack;
            string             lang       = crackModel.Language;

            if (lang.IsNullOrEmpty())
            {
                lang = "eng";
            }
            string charlist = crackModel.CharList;

            if (charlist.IsNullOrEmpty())
            {
                charlist = "0-9a-zA-Z";
            }
            if (crackModel.CharDict.ContainsKey(charlist))
            {
                charlist = crackModel.CharDict[charlist];
            }
            string tesspath = crackModel.TessPath;

            if (!Directory.Exists(tesspath))
            {
                MessageBox.Show($"字典路径“{tesspath}”不存在");
                return;
            }

            if (!File.Exists(Path.Combine(tesspath, $"{lang}.traineddata")))
            {
                MessageBox.Show($"字典路径“{tesspath}”无法找到字库“{lang}.traineddata”,请重新定位,或者到 https://github.com/tesseract-ocr/tessdata/blob/master/eng.traineddata 下载",
                                "错误",
                                MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }
            SimpleCodeCracker cracker = new SimpleCodeCracker(lang, charlist, tesspath);
            string            code    = cracker.CrackCode(loadModel.TargetImage, crackModel.PageSegMode);

            crackModel.CrackResult = code;
        }
Ejemplo n.º 2
0
        private void UpdateImage()
        {
            _code = null;
            MainViewModel     main = SoftContext.Locator.Main;
            CodeLoadViewModel load = main.CodeLoad;

            if (load.SourceImage == null)
            {
                return;
            }
            byte[,] bytes = load.SourceImage.ToGrayArray2D();
            _code        += "return bmp.ToGrayArray2D()";
            foreach (CodeFilterItemViewModel filter in main.CodeFilter.FilterItems.Where(m => m.Enabled))
            {
                bytes = CodeFilter(bytes, filter);
            }
            _code += ".ToBitmap();";
            main.CodeFilter.FilterCode = _code;
            main.CodeLoad.TargetImage  = main.CodeLoad.ProcessImage = bytes.ToBitmap();
        }