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; }
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(); }