diff --git a/src/Forms/Main.Designer.cs b/src/Forms/Main.Designer.cs index 3b09a3cda..e9a3f09ca 100644 --- a/src/Forms/Main.Designer.cs +++ b/src/Forms/Main.Designer.cs @@ -1574,7 +1574,7 @@ this.fixCommonErrorsInSelectedLinesToolStripMenuItem, this.changeCasingForSelectedLinesToolStripMenuItem}); this.contextMenuStripListview.Name = "contextMenuStripListview"; - this.contextMenuStripListview.Size = new System.Drawing.Size(276, 562); + this.contextMenuStripListview.Size = new System.Drawing.Size(276, 540); this.contextMenuStripListview.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListviewOpening); // // toolStripMenuItemDelete diff --git a/src/Forms/Main.cs b/src/Forms/Main.cs index 9832b9c1e..bc2d161cb 100644 --- a/src/Forms/Main.cs +++ b/src/Forms/Main.cs @@ -85,7 +85,7 @@ namespace Nikse.SubtitleEdit.Forms if (versionInfo.Length >= 3 && versionInfo[2] != "0") _title += "." + versionInfo[2]; } - _title = "Subtitle Edit 3.0 RC3"; + _title = "Subtitle Edit 3.0 RC4"; return _title; } } @@ -5988,7 +5988,7 @@ namespace Nikse.SubtitleEdit.Forms private string GetPeakWaveFileName(string videoFileName) { - string dir = Configuration.BaseDirectory + "WaveForms"; + string dir = Configuration.WaveFormsFolder.TrimEnd(Path.DirectorySeparatorChar); if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); diff --git a/src/Forms/Main.resx b/src/Forms/Main.resx index 9a18a96cb..7aaac89d8 100644 --- a/src/Forms/Main.resx +++ b/src/Forms/Main.resx @@ -127,28 +127,28 @@ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAATQSURBVFhH7ZfbT1xVFMax+qQv6l9h0sQHffNFHwxNpTNi - MRQpNLFFWiOUWhWrrYnRGojG2sZ6aYhcBhmhIDCA1EyHASTtEApJSbGJGu73y3Cd4Tbg5/52usY9p3Ow - TXzwwUm+7H3WOWt9v7X3DueQkPD/77+0At3d3U/09PQsBwIBtLS0aPn9frS2tkbHtrY2UO3t7TGSuPks - c6UOa7I2PWx75gN9fX1bm5ubWF1d1VpbW8P6+jo2NjbAOMdIJIKtrS1sb29rcc6Y+QxzmCt1mMva9LAF - 6Ojo0CahUAjhcDgugNXcCiGQJgBrsSbv0cMWoLm5GSsrK/phGXcCIYxoJ2OzJj1sAZqamrC8vKzFJDtz - cxv+aflZg7WkLj1sARobG7G0tKQVD4L7KeeBI7umzJicG46mudSlhy1AQ0MDFhYWsLi4GANhboccLNlj - OaRiLPvNHOmc5qzJ2vSwBfB4PDHmTDTNeTakM/OEcy7bJQdYzpGspkDQwxagvr5eU87Pz8eshBSRotIl - r0Wy3Lzm9smSS+dSkx62AHV1dTHmhDE7kCUVEFlmWSU5N2aObKk0Rg9bgJqaGgSDQczNzemR1NKBLKHZ - nXRpHlw5P2LMGmZNetgCVFdXx5gzUcitILy2iiCmMefSiEDQY0eA2dlZzMzMREG4GtKFwPDaTqaprCRH - 1mTtHQEqKysxPT0dFZMkkcnShQklHTImhnxWGmG+WZMetitQVVWFqakpnSCJ5opIYSsMIcx7ZsdmLdam - hy2A2+3G5OQkJiYm9MhkJlFmJ2Z35ipJp4xJntRgzdBcBG73D/YAFRUVUXMmsMhOIObSSqfB2UXc+uNn - 1N04iu9+eUbrx65s9P5+BZEQ4G302gOUl5djfHwcY2NjGoRzWRETiDGrCDswchuXAzlwBTJwbfACfp2p - xm0lzl2dGbjcmYOm+m57AJfLpc1HR0fvArHCEOhvTWJmKogy/xuo6DyG9pHz8PyWHzXinDG3unfxyqsA - Eh6Iew5KS0sxMjKiATgKjAnEmFWE677lx+d1++DuPY7im8dQevP16BcT54y5e/NwzpOCs+7niuMClJSU - YHh4WJtzFBArDOOmCFTUmI9Pr76CL69l4cJ1pcBr0dc154zx3jn/IZwpez7+Zxnf1UNDQxgcHNQAnFMC - xJjIhOM8/1ISPrmaqZfd/JCRtyZjvFfoy8RbRXvuOgfck118Vw8MDMRIgAhlBRNAQp38yoEPvOm6MP9E - y4tJXmCM8d6H3kzkfZPEecw5eFAFHiUAi1kh5NoKI1CMF7reQW5lCt5tzkB+czryfzoYfVdwzhjvvek5 - gLeLHUHlR8/o72E1281veJ7s/v7++1bLdR8OFzqR40lDTu0BpTT9p5ninLET6l7WFy/ivZrM75UfPWMA - nurq6kJBQcGfhGB39woSng+rL6INnPo6FwcvOnCkIRVHqlKj+8x5toodKkrG8fNZUNZPxwPYnZiY+BH/ - s/H5fOCHQ21t7T3rhrcXAW8Pcj/LRurHTqSVJSO9/GUtzlPPOnHi26NIOey8xNW2AugzoPSk0h6l/Xf0 - khqT71P7He87fI6Tz4ZfOLUX1L68pDXnaWebqrP3jge9Ys4A92KX0kNKjyg9pvT4vyzWZG160Ev//gLs - dsxzExmB6QAAAABJRU5ErkJggg== + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAATPSURBVFhH7ZfbT1xVFMax+qQv6l9h0sQHffNFHwxNpTNi + MRQpNLFFWiOUWnWstiaiNSEaaxvrpSFyGWSEgsAAUjMdBpC0QygkJcUmarjfB4b7cMfP/e10jXtO52Cb + +OCDk3zZ+6xz1vp+a+8dziEh4f/ff2kFurq6nuju7l4MBoNobm7WCgQCaGlpiY6tra2g2traYiRx81nm + Sh3WZG162PbMB3p7e7c2NjawsrKitbq6irW1Nayvr4Nxjpubm9ja2sL29rYW54yZzzCHuVKHuaxND1uA + 9vZ2bbK8vIxIJBIXwGpuhRBIE4C1WJP36GEL0NTUhKWlJf2wjDuBEEa0k7FZkx62AI2NjVhcXNRikp25 + uQ3/tPyswVpSlx62AA0NDVhYWNCKB8H9lPPAkV1TZkzODUfTXOrSwxagvr4ec3NzmJ+fj4Ewt0MOluyx + HFIxlv1mjnROc9ZkbXrYAni93hhzJprmPBvSmXnCOZftkgMs50hWUyDoYQtQV1enKWdnZ2NWQopIUemS + 1yJZbl5z+2TJpXOpSQ9bgNra2hhzwpgdyJIKiCyzrJKcGzNHtlQao4ctQHV1NcLhMGZmZvRIaulAltDs + Tro0D66cHzFmDbMmPWwBqqqqYsyZKORWEF5bRRDTmHNpRCDosSPA9PQ0QqFQFISrIV0IDK/tZJrKSnJk + TdbeEaCiogJTU1NRMUkSmSxdmFDSIWNiyGelEeabNelhuwKVlZWYnJzUCZJorogUtsIQwrxndmzWYm16 + 2AJ4PB5MTExgfHxcj0xmEmV2YnZnrpJ0ypjkSQ3WXJ7ZhMfzgz1AeXl51JwJLLITiLm00ml4eh63/vgZ + tTeO4rtfntH6sTMbPb9fweYy4Gvw2QOUlZVhbGwMo6OjGoRzWRETiDGrCNs/fBuXgzlwBzNwbeACfg1V + 4bYS5+6ODFzuyEFjXZc9gNvt1uYjIyN3gVhhCPS3JhCaDKM08AbKO46hbfg8vL+5okacM+ZR9y5eeRVA + wgNxz0FJSQmGh4c1AEeBMYEYs4pwXbcC+Lx2Hzw9x1F08xhKbr4e/WLinDFPTx7OeVNw1vNcUVyA4uJi + DA0NaXOOAmKFYdwUgQobXPj06iv48loWLlxXCr4WfV1zzhjvnQscwpnS5+N/lvFdPTg4iIGBAQ3AOSVA + jIlMOM5dl5LwydVMvezmh4y8NRnjvQJ/Jt4q3HPXOeCe7OK7ur+/P0YCRCgrmAAS6uRXDnzgS9eF+Sda + XkzyAmOM9z70ZSLvmyTOY87BgyrwKAFYzAoh11YYgWK8wP0OcitS8G5TBlxN6XD9dDD6ruCcMd5703sA + bxc5wsqPntHfw2q2m9/wPNl9fX33rebrfhwucCLHm4acmgNKafpPM8U5YyfUvawvXsR71ZnfKz96xgA8 + 1dnZifz8/D8Jwe7uFSQyG1FfROs49XUuDl504Eh9Ko5Upkb3mfNsFTtUmIzj57OgrJ+OB7A7MTHxI/5n + 4/f7wQ+Hmpqae9YNXw+Cvm7kfpaN1I+dSCtNRnrZy1qcp5514sS3R5Fy2HmJq20F0GdA6UmlPUr77+gl + NSbfp/Y73nf4HSefjbxwai+ofXlJq87TzlZVZ+8dD3rFnAHuxS6lh5QeUXpM6fF/WazJ2vSgl/79Bcly + zGGo76FSAAAAAElFTkSuQmCC @@ -291,47 +291,47 @@ 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 RK5CYII= diff --git a/src/Forms/Settings.cs b/src/Forms/Settings.cs index 34261fcbf..e2b85d399 100644 --- a/src/Forms/Settings.cs +++ b/src/Forms/Settings.cs @@ -360,7 +360,7 @@ namespace Nikse.SubtitleEdit.Forms private void InitializeWaveFormsFolderEmpty(LanguageStructure.Settings language) { - string waveFormsFolder = Path.Combine(Configuration.BaseDirectory, "WaveForms"); + string waveFormsFolder = Configuration.WaveFormsFolder.TrimEnd(Path.DirectorySeparatorChar); if (Directory.Exists(waveFormsFolder)) { long bytes = 0; @@ -1244,7 +1244,7 @@ namespace Nikse.SubtitleEdit.Forms private void buttonWaveFormsFolderEmpty_Click(object sender, EventArgs e) { - string waveFormsFolder = Path.Combine(Configuration.BaseDirectory, "WaveForms"); + string waveFormsFolder = Configuration.WaveFormsFolder.TrimEnd(Path.DirectorySeparatorChar); if (Directory.Exists(waveFormsFolder)) { DirectoryInfo di = new DirectoryInfo(waveFormsFolder); diff --git a/src/Forms/VobSubEditCharacters.cs b/src/Forms/VobSubEditCharacters.cs index f675bfd70..0fc9c2dfa 100644 --- a/src/Forms/VobSubEditCharacters.cs +++ b/src/Forms/VobSubEditCharacters.cs @@ -27,7 +27,7 @@ namespace Nikse.SubtitleEdit.Forms InitializeComponent(); pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; - _directoryPath = Path.GetDirectoryName(Application.ExecutablePath).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar + @"VobSub" + Path.DirectorySeparatorChar + databaseFolderName + Path.DirectorySeparatorChar; + _directoryPath = Configuration.VobSubCompareFolder + databaseFolderName + Path.DirectorySeparatorChar; if (!File.Exists(_directoryPath + "CompareDescription.xml")) _compareDoc.LoadXml(""); else diff --git a/src/Forms/VobSubOcr.Designer.cs b/src/Forms/VobSubOcr.Designer.cs index e83a9b6dd..aab151134 100644 --- a/src/Forms/VobSubOcr.Designer.cs +++ b/src/Forms/VobSubOcr.Designer.cs @@ -259,7 +259,7 @@ namespace Nikse.SubtitleEdit.Forms this.checkBoxUseModiInTesseractForUnknownWords.CheckState = System.Windows.Forms.CheckState.Checked; this.checkBoxUseModiInTesseractForUnknownWords.Location = new System.Drawing.Point(22, 74); this.checkBoxUseModiInTesseractForUnknownWords.Name = "checkBoxUseModiInTesseractForUnknownWords"; - this.checkBoxUseModiInTesseractForUnknownWords.Size = new System.Drawing.Size(167, 17); + this.checkBoxUseModiInTesseractForUnknownWords.Size = new System.Drawing.Size(165, 17); this.checkBoxUseModiInTesseractForUnknownWords.TabIndex = 39; this.checkBoxUseModiInTesseractForUnknownWords.Text = "Try MODI for unknown words"; this.checkBoxUseModiInTesseractForUnknownWords.UseVisualStyleBackColor = true; @@ -334,7 +334,7 @@ namespace Nikse.SubtitleEdit.Forms this.checkBoxRightToLeft.AutoSize = true; this.checkBoxRightToLeft.Location = new System.Drawing.Point(128, 112); this.checkBoxRightToLeft.Name = "checkBoxRightToLeft"; - this.checkBoxRightToLeft.Size = new System.Drawing.Size(83, 17); + this.checkBoxRightToLeft.Size = new System.Drawing.Size(80, 17); this.checkBoxRightToLeft.TabIndex = 40; this.checkBoxRightToLeft.Text = "Right to left"; this.checkBoxRightToLeft.UseVisualStyleBackColor = true; @@ -514,7 +514,7 @@ namespace Nikse.SubtitleEdit.Forms this.checkBoxGuessUnknownWords.CheckState = System.Windows.Forms.CheckState.Checked; this.checkBoxGuessUnknownWords.Location = new System.Drawing.Point(11, 83); this.checkBoxGuessUnknownWords.Name = "checkBoxGuessUnknownWords"; - this.checkBoxGuessUnknownWords.Size = new System.Drawing.Size(164, 17); + this.checkBoxGuessUnknownWords.Size = new System.Drawing.Size(162, 17); this.checkBoxGuessUnknownWords.TabIndex = 39; this.checkBoxGuessUnknownWords.Text = "Try to guess unknown words"; this.checkBoxGuessUnknownWords.UseVisualStyleBackColor = true; @@ -620,7 +620,7 @@ namespace Nikse.SubtitleEdit.Forms this.checkBoxPromptForUnknownWords.CheckState = System.Windows.Forms.CheckState.Checked; this.checkBoxPromptForUnknownWords.Location = new System.Drawing.Point(11, 61); this.checkBoxPromptForUnknownWords.Name = "checkBoxPromptForUnknownWords"; - this.checkBoxPromptForUnknownWords.Size = new System.Drawing.Size(255, 17); + this.checkBoxPromptForUnknownWords.Size = new System.Drawing.Size(246, 17); this.checkBoxPromptForUnknownWords.TabIndex = 38; this.checkBoxPromptForUnknownWords.Text = "Prompt for unknown words (requires dictionary)"; this.checkBoxPromptForUnknownWords.UseVisualStyleBackColor = true; @@ -632,7 +632,7 @@ namespace Nikse.SubtitleEdit.Forms this.checkBoxAutoBreakLines.CheckState = System.Windows.Forms.CheckState.Checked; this.checkBoxAutoBreakLines.Location = new System.Drawing.Point(11, 105); this.checkBoxAutoBreakLines.Name = "checkBoxAutoBreakLines"; - this.checkBoxAutoBreakLines.Size = new System.Drawing.Size(208, 17); + this.checkBoxAutoBreakLines.Size = new System.Drawing.Size(200, 17); this.checkBoxAutoBreakLines.TabIndex = 37; this.checkBoxAutoBreakLines.Text = "Auto break subtitle, if line number > 2"; this.checkBoxAutoBreakLines.UseVisualStyleBackColor = true; @@ -653,7 +653,7 @@ namespace Nikse.SubtitleEdit.Forms this.checkBoxAutoFixCommonErrors.CheckState = System.Windows.Forms.CheckState.Checked; this.checkBoxAutoFixCommonErrors.Location = new System.Drawing.Point(11, 39); this.checkBoxAutoFixCommonErrors.Name = "checkBoxAutoFixCommonErrors"; - this.checkBoxAutoFixCommonErrors.Size = new System.Drawing.Size(139, 17); + this.checkBoxAutoFixCommonErrors.Size = new System.Drawing.Size(137, 17); this.checkBoxAutoFixCommonErrors.TabIndex = 34; this.checkBoxAutoFixCommonErrors.Text = "Fix common OCR errors"; this.checkBoxAutoFixCommonErrors.UseVisualStyleBackColor = true; @@ -679,7 +679,7 @@ namespace Nikse.SubtitleEdit.Forms this.checkBoxEmphasis2Transparent.AutoSize = true; this.checkBoxEmphasis2Transparent.Location = new System.Drawing.Point(437, 19); this.checkBoxEmphasis2Transparent.Name = "checkBoxEmphasis2Transparent"; - this.checkBoxEmphasis2Transparent.Size = new System.Drawing.Size(85, 17); + this.checkBoxEmphasis2Transparent.Size = new System.Drawing.Size(83, 17); this.checkBoxEmphasis2Transparent.TabIndex = 6; this.checkBoxEmphasis2Transparent.Text = "Transparent"; this.checkBoxEmphasis2Transparent.UseVisualStyleBackColor = true; @@ -690,7 +690,7 @@ namespace Nikse.SubtitleEdit.Forms this.checkBoxEmphasis1Transparent.AutoSize = true; this.checkBoxEmphasis1Transparent.Location = new System.Drawing.Point(304, 19); this.checkBoxEmphasis1Transparent.Name = "checkBoxEmphasis1Transparent"; - this.checkBoxEmphasis1Transparent.Size = new System.Drawing.Size(85, 17); + this.checkBoxEmphasis1Transparent.Size = new System.Drawing.Size(83, 17); this.checkBoxEmphasis1Transparent.TabIndex = 5; this.checkBoxEmphasis1Transparent.Text = "Transparent"; this.checkBoxEmphasis1Transparent.UseVisualStyleBackColor = true; @@ -701,7 +701,7 @@ namespace Nikse.SubtitleEdit.Forms this.checkBoxPatternTransparent.AutoSize = true; this.checkBoxPatternTransparent.Location = new System.Drawing.Point(167, 19); this.checkBoxPatternTransparent.Name = "checkBoxPatternTransparent"; - this.checkBoxPatternTransparent.Size = new System.Drawing.Size(85, 17); + this.checkBoxPatternTransparent.Size = new System.Drawing.Size(83, 17); this.checkBoxPatternTransparent.TabIndex = 4; this.checkBoxPatternTransparent.Text = "Transparent"; this.checkBoxPatternTransparent.UseVisualStyleBackColor = true; diff --git a/src/Forms/VobSubOcr.cs b/src/Forms/VobSubOcr.cs index 174920d16..d3f91a406 100644 --- a/src/Forms/VobSubOcr.cs +++ b/src/Forms/VobSubOcr.cs @@ -10,6 +10,7 @@ using System.Xml; using Nikse.SubtitleEdit.Logic; using Nikse.SubtitleEdit.Logic.OCR; using Nikse.SubtitleEdit.Logic.VobSub; +using System.Diagnostics; namespace Nikse.SubtitleEdit.Forms { @@ -83,8 +84,9 @@ namespace Nikse.SubtitleEdit.Forms // Tesseract OCR //tessnet2.Tesseract _tesseractOcrEngine; - object _tesseractOcrEngine; +// object _tesseractOcrEngine; string _lastLine; + string _languageId; // Dictionaries/spellchecking/fixing OcrFixEngine _ocrFixEngine; @@ -111,6 +113,11 @@ namespace Nikse.SubtitleEdit.Forms buttonOK.Text = Configuration.Settings.Language.General.OK; buttonCancel.Text = Configuration.Settings.Language.General.Cancel; subtitleListView1.InitializeLanguage(Configuration.Settings.Language.General, Configuration.Settings); + subtitleListView1.Columns[0].Width = 45; + subtitleListView1.Columns[1].Width = 90; + subtitleListView1.Columns[2].Width = 90; + subtitleListView1.Columns[3].Width = 70; + subtitleListView1.Columns[4].Width = 150; groupBoxImagePalette.Text = language.ImagePalette; checkBoxCustomFourColors.Text = language.UseCustomColors; @@ -218,7 +225,7 @@ namespace Nikse.SubtitleEdit.Forms { try { - string characterDatabasePath = Path.GetDirectoryName(Application.ExecutablePath).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar + @"VobSub"; + string characterDatabasePath = Configuration.VobSubCompareFolder.TrimEnd(Path.DirectorySeparatorChar); if (!Directory.Exists(characterDatabasePath)) Directory.CreateDirectory(characterDatabasePath); @@ -251,7 +258,7 @@ namespace Nikse.SubtitleEdit.Forms private void LoadImageCompareBitmaps() { _compareBitmaps = new List(); - string path = Path.GetDirectoryName(Application.ExecutablePath).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar + @"VobSub" + Path.DirectorySeparatorChar + comboBoxCharacterDatabase.SelectedItem + Path.DirectorySeparatorChar; + string path = Configuration.VobSubCompareFolder + comboBoxCharacterDatabase.SelectedItem + Path.DirectorySeparatorChar; if (!File.Exists(path + "CompareDescription.xml")) _compareDoc.LoadXml(""); else @@ -491,7 +498,7 @@ namespace Nikse.SubtitleEdit.Forms private void SaveCompareItem(Bitmap newTarget, string text, bool isItalic, int expandCount) { - string path = Path.GetDirectoryName(Application.ExecutablePath).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar + @"VobSub" + Path.DirectorySeparatorChar + comboBoxCharacterDatabase.SelectedItem + Path.DirectorySeparatorChar; + string path = Configuration.VobSubCompareFolder + comboBoxCharacterDatabase.SelectedItem + Path.DirectorySeparatorChar; string name = Guid.NewGuid().ToString(); string fileName = path + name + ".bmp"; newTarget.Save(fileName); @@ -941,17 +948,38 @@ namespace Nikse.SubtitleEdit.Forms // } //} + private string Tesseract3DoOcrViaExe(Bitmap bmp, string language) + { + string tempTiffFileName = Path.GetTempPath() + Guid.NewGuid().ToString() + ".tiff"; + bmp.Save(tempTiffFileName, System.Drawing.Imaging.ImageFormat.Tiff); + + string tempTextFileName = Path.GetTempPath() + Guid.NewGuid().ToString(); + + Process process = new Process(); + process.StartInfo = new ProcessStartInfo(Configuration.BaseDirectory + "Tesseract" + Path.DirectorySeparatorChar + "tesseract.exe"); + process.StartInfo.Arguments = "\"" + tempTiffFileName + "\" \"" + tempTextFileName + "\" -l " + language; + process.StartInfo.WorkingDirectory = (Configuration.BaseDirectory + "Tesseract"); + process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + process.Start(); + process.WaitForExit(2000); + string s = File.ReadAllText(tempTextFileName + ".txt"); + try + { + File.Delete(tempTiffFileName); + File.Delete(tempTextFileName + ".txt"); + } + catch + { + } + return s; + } private string OcrViaTessnet(Bitmap bitmap, int index) { - if (_tesseractOcrEngine == null || _ocrFixEngine == null) + if (_ocrFixEngine == null) { - Cursor = Cursors.WaitCursor; - _tesseractOcrEngine = new tessnet2.Tesseract(); - string languageId = (comboBoxTesseractLanguages.SelectedItem as TesseractLanguage).Id; - (_tesseractOcrEngine as tessnet2.Tesseract).Init(Configuration.BaseDirectory + "tessdata", languageId, false); // _tesseractOcrEngine.Init("tessdata", "eng", false); - - _ocrFixEngine = new OcrFixEngine(languageId, this); + _languageId = (comboBoxTesseractLanguages.SelectedItem as TesseractLanguage).Id; + _ocrFixEngine = new OcrFixEngine(_languageId, this); if (_ocrFixEngine.IsDictionaryLoaded) labelDictionaryLoaded.Text = string.Format(Configuration.Settings.Language.VobSubOcr.DictionaryX, _ocrFixEngine.DictionaryCulture.NativeName); else @@ -964,45 +992,27 @@ namespace Nikse.SubtitleEdit.Forms foreach (var modiLanguage in comboBoxModiLanguage.Items) { if ((modiLanguage as ModiLanguage).Text == tesseractLanguageText) - { comboBoxModiLanguage.SelectedIndex = i; - } i++; } } - Cursor = Cursors.Default; } - // OCR bitmaps (splitted into lines) var sb = new StringBuilder(); - var result = new List(); int badWords = 0; var textWithOutFixes = new StringBuilder(); + textWithOutFixes.Append(Tesseract3DoOcrViaExe(bitmap, _languageId)); + sb.Append(textWithOutFixes.ToString()); + int numberOfWords = sb.ToString().Split((" " + Environment.NewLine).ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Length; - foreach (ImageSplitterItem splitImage in ImageSplitter.SplitVertical(bitmap)) - { - result = (_tesseractOcrEngine as tessnet2.Tesseract).DoOCR(splitImage.Bitmap, Rectangle.Empty); - foreach (var s in result) - { - sb.Append(s.Text + " "); - textWithOutFixes.Append(s.Text + " "); - if (s.Confidence > 160) - badWords++; - if (s.Confidence > 200) - badWords++; - } - sb.AppendLine(); - textWithOutFixes.AppendLine(); - splitImage.Bitmap.Dispose(); - } string line = sb.ToString().Trim(); if (_ocrFixEngine.IsDictionaryLoaded) { if (checkBoxAutoFixCommonErrors.Checked) line = _ocrFixEngine.FixOcrErrors(line, index, _lastLine, true, checkBoxGuessUnknownWords.Checked); - int wordsNotFound = _ocrFixEngine.CountUnknownWordsViaDictionary(line); + int wordsNotFound = _ocrFixEngine.CountUnknownWordsViaDictionary(line); - if (wordsNotFound > 0) + if (wordsNotFound > 0 || sb.ToString().Replace("~", string.Empty).Trim().Length == 0) { _ocrFixEngine.AutoGuessesUsed.Clear(); _ocrFixEngine.UnknownWordsFound.Clear(); @@ -1073,9 +1083,9 @@ namespace Nikse.SubtitleEdit.Forms if (checkBoxAutoFixCommonErrors.Checked) line = _ocrFixEngine.FixOcrErrors(line, index, _lastLine, true, checkBoxGuessUnknownWords.Checked); - if (badWords >= result.Count) + if (badWords >= numberOfWords) //result.Count) subtitleListView1.SetBackgroundColor(index, Color.Red); - else if (badWords >= result.Count / 2) + else if (badWords >= numberOfWords / 2) // result.Count / 2) subtitleListView1.SetBackgroundColor(index, Color.Orange); else if (badWords > 0) subtitleListView1.SetBackgroundColor(index, Color.Yellow); @@ -1211,15 +1221,15 @@ namespace Nikse.SubtitleEdit.Forms private void InitializeTesseract() { - string dir = Configuration.BaseDirectory + "tessdata"; + string dir = Configuration.BaseDirectory + "Tesseract\\tessdata"; if (Directory.Exists(dir)) { var list = new List(); comboBoxTesseractLanguages.Items.Clear(); foreach (var culture in System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.NeutralCultures)) { - if (!list.Contains(culture.ThreeLetterISOLanguageName) && - Directory.GetFiles(dir, culture.ThreeLetterISOLanguageName + ".inttemp").Length > 0) + string trainDataFileName = dir + "\\" + culture.ThreeLetterISOLanguageName + ".traineddata"; + if (!list.Contains(culture.ThreeLetterISOLanguageName) && File.Exists(trainDataFileName)) { list.Add(culture.ThreeLetterISOLanguageName); comboBoxTesseractLanguages.Items.Add(new TesseractLanguage { Id = culture.ThreeLetterISOLanguageName, Text = culture.EnglishName }); @@ -1228,7 +1238,7 @@ namespace Nikse.SubtitleEdit.Forms } if (comboBoxTesseractLanguages.Items.Count > 0) { - for (int i=0; i(); + // comboBoxTesseractLanguages.Items.Clear(); + // foreach (var culture in System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.NeutralCultures)) + // { + // if (!list.Contains(culture.ThreeLetterISOLanguageName) && + // Directory.GetFiles(dir, culture.ThreeLetterISOLanguageName + ".inttemp").Length > 0) + // { + // list.Add(culture.ThreeLetterISOLanguageName); + // comboBoxTesseractLanguages.Items.Add(new TesseractLanguage { Id = culture.ThreeLetterISOLanguageName, Text = culture.EnglishName }); + // } + // } + // } + // if (comboBoxTesseractLanguages.Items.Count > 0) + // { + // for (int i = 0; i < comboBoxTesseractLanguages.Items.Count; i++) + // { + // if ((comboBoxTesseractLanguages.Items[i] as TesseractLanguage).Id == Configuration.Settings.VobSubOcr.TesseractLastLanguage) + // comboBoxTesseractLanguages.SelectedIndex = i; + // } + + // if (comboBoxTesseractLanguages.SelectedIndex == -1) + // comboBoxTesseractLanguages.SelectedIndex = 0; + // } + //} + private void InitializeModiLanguages() { foreach (ModiLanguage ml in ModiLanguage.AllLanguages) @@ -1319,7 +1359,7 @@ namespace Nikse.SubtitleEdit.Forms if (formVobSubEditCharacters.ShowDialog() == DialogResult.OK) { _compareDoc = formVobSubEditCharacters.ImageCompareDocument; - string path = Path.GetDirectoryName(Application.ExecutablePath).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar + @"VobSub" + Path.DirectorySeparatorChar + comboBoxCharacterDatabase.SelectedItem + Path.DirectorySeparatorChar; + string path = Configuration.VobSubCompareFolder + comboBoxCharacterDatabase.SelectedItem + Path.DirectorySeparatorChar; _compareDoc.Save(path + "CompareDescription.xml"); } LoadImageCompareBitmaps(); diff --git a/src/Forms/VobSubOcrNewFolder.cs b/src/Forms/VobSubOcrNewFolder.cs index a3e9e0179..d63690f65 100644 --- a/src/Forms/VobSubOcrNewFolder.cs +++ b/src/Forms/VobSubOcrNewFolder.cs @@ -33,7 +33,7 @@ namespace Nikse.SubtitleEdit.Forms { try { - string fullName = Path.GetDirectoryName(Application.ExecutablePath).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar + @"VobSub" + Path.DirectorySeparatorChar + folderName; + string fullName = Configuration.VobSubCompareFolder + folderName; Directory.CreateDirectory(fullName); FolderName = folderName; DialogResult = DialogResult.OK; diff --git a/src/Logic/Configuration.cs b/src/Logic/Configuration.cs index 19c572683..8106f8a02 100644 --- a/src/Logic/Configuration.cs +++ b/src/Logic/Configuration.cs @@ -1,4 +1,5 @@ using System.IO; +using System; namespace Nikse.SubtitleEdit.Logic { @@ -6,8 +7,75 @@ namespace Nikse.SubtitleEdit.Logic { static readonly Configuration Instance = new Configuration(); string _baseDir; + string _dataDir; Settings _settings; + public static string SettingsFileName + { + get + { + return DataDirectory + "Settings.xml"; + } + } + + public static string DictionariesFolder + { + get + { + return DataDirectory + "Dictionaries" + Path.DirectorySeparatorChar; + } + } + + public static string VobSubCompareFolder + { + get + { + return DataDirectory + "VobSub" + Path.DirectorySeparatorChar; + } + } + + public static string WaveFormsFolder + { + get + { + return DataDirectory + "WaveForms" + Path.DirectorySeparatorChar; + } + } + + public static string DataDirectory + { + get + { + if (Instance._dataDir == null) + { + if (BaseDirectory.StartsWith(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), StringComparison.OrdinalIgnoreCase)) + { + try + { + string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + Path.DirectorySeparatorChar + "Nikse"; + if (!Directory.Exists(path)) + Directory.CreateDirectory(path); + + path += Path.DirectorySeparatorChar + "SubtitleEdit"; + if (!Directory.Exists(path)) + Directory.CreateDirectory(path); + + Instance._dataDir = path + Path.DirectorySeparatorChar; + } + catch + { + Instance._dataDir = BaseDirectory; + } + } + else + { + Instance._dataDir = BaseDirectory; + } + } + return Instance._dataDir; + } + } + public static string BaseDirectory { get diff --git a/src/Logic/Settings.cs b/src/Logic/Settings.cs index 4379fcf06..9a4192c55 100644 --- a/src/Logic/Settings.cs +++ b/src/Logic/Settings.cs @@ -333,7 +333,7 @@ namespace Nikse.SubtitleEdit.Logic //Serialize(Configuration.BaseDirectory + "Settings.xml", this); //Fast - TODO: Fix in release - CustomSerialize(Configuration.BaseDirectory + "Settings.xml", this); + CustomSerialize(Configuration.SettingsFileName, this); } private static void Serialize(string fileName, Settings settings) @@ -346,17 +346,17 @@ namespace Nikse.SubtitleEdit.Logic public static Settings GetSettings() { - Settings settings = new Settings(); - if (File.Exists(Configuration.BaseDirectory + "Settings.xml")) + Settings settings = new Settings(); + string settingsFileName = Configuration.SettingsFileName; + if (File.Exists(settingsFileName)) { try { //TODO: Fix in release - settings = CustomDeserialize(Configuration.BaseDirectory + "Settings.xml"); // 15 msecs + settings = CustomDeserialize(settingsFileName); // 15 msecs //too slow... :( //settings = Deserialize(Configuration.BaseDirectory + "Settings.xml"); // 688 msecs - } catch { diff --git a/src/Logic/Utilities.cs b/src/Logic/Utilities.cs index f9652702d..9405973e7 100644 --- a/src/Logic/Utilities.cs +++ b/src/Logic/Utilities.cs @@ -575,7 +575,7 @@ namespace Nikse.SubtitleEdit.Logic { get { - return Path.GetDirectoryName(Application.ExecutablePath).TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar + "Dictionaries" + Path.DirectorySeparatorChar; + return Configuration.DictionariesFolder; } }