Ejemplo n.º 1
0
        private void buttonTrain_Click(object sender, EventArgs e)
        {
            var startFontSize = Convert.ToInt32(comboBoxSubtitleFontSize.Items[comboBoxSubtitleFontSize.SelectedIndex].ToString());
            var endFontSize   = Convert.ToInt32(comboBoxFontSizeEnd.Items[comboBoxFontSizeEnd.SelectedIndex].ToString());

            if (!File.Exists(textBoxInputFile.Text))
            {
                MessageBox.Show($"Input file '{textBoxInputFile.Text}' does not exist!");
                return;
            }

            if (!Directory.Exists(textBoxNOcrDb.Text))
            {
                MessageBox.Show($"Output folder '{textBoxNOcrDb.Text}' does not exist!");
                return;
            }

            if (listViewFonts.CheckedItems.Count == 1)
            {
                MessageBox.Show("Please select at least one font!");
                return;
            }

            foreach (ListViewItem fontItem in listViewFonts.CheckedItems)
            {
                _subtitleFontName = fontItem.Text;
                for (_subtitleFontSize = startFontSize; _subtitleFontSize <= endFontSize; _subtitleFontSize++)
                {
                    int numberOfCharactersLeaned  = 0;
                    int numberOfCharactersSkipped = 0;
                    var bicDb  = new BinaryOcrDb(Path.Combine(textBoxNOcrDb.Text, $"{_subtitleFontName}_{_subtitleFontSize}.db"));
                    var lines  = File.ReadAllLines(textBoxInputFile.Text).ToList();
                    var format = new SubRip();
                    var sub    = new Subtitle();
                    format.LoadSubtitle(sub, lines, textBoxInputFile.Text);
                    var charactersLearned = new List <string>();
                    foreach (var p in sub.Paragraphs)
                    {
                        foreach (char ch in p.Text)
                        {
                            if (!char.IsWhiteSpace(ch))
                            {
                                var s = ch.ToString();
                                if (!charactersLearned.Contains(s))
                                {
                                    TrainLetter(ref numberOfCharactersLeaned, ref numberOfCharactersSkipped, bicDb, charactersLearned, s, false, false);
                                    TrainLetter(ref numberOfCharactersLeaned, ref numberOfCharactersSkipped, bicDb, charactersLearned, s, false, true);
                                    if (checkBoxBold.Checked)
                                    {
                                        TrainLetter(ref numberOfCharactersLeaned, ref numberOfCharactersSkipped, bicDb, charactersLearned, s, true, false);
                                    }
                                }
                            }
                        }
                    }

                    bicDb.Save();
                }
            }
        }
Ejemplo n.º 2
0
        public void SrtDifficultLines1()
        {
            var          target   = new SubRip();
            var          subtitle = new Subtitle();
            const string text     = @"303
00:16:22,417 --> 00:16:24,417
sky bots?

304
00:16:24,417 --> 00:16:27,042
how do you think i did


all the stuff
for the show?

305
00:16:27,042 --> 00:16:29,417
you think i went myself?";

            target.LoadSubtitle(subtitle, GetSrtLines(text), null);
            Assert.AreEqual(3, subtitle.Paragraphs.Count);
            const string expected = @"how do you think i did


all the stuff
for the show?";

            Assert.AreEqual(expected, subtitle.Paragraphs[1].Text);
        }
Ejemplo n.º 3
0
        private void buttonTrain_Click(object sender, EventArgs e)
        {
            if (!System.IO.File.Exists(textBoxInputFile.Text))
            {
                return;
            }

            int numberOfCharactersLeaned  = 0;
            int numberOfCharactersSkipped = 0;
            var nOcrD = new NOcrDb(textBoxNOcrDb.Text);
            var lines = new List <string>();

            foreach (string line in System.IO.File.ReadAllLines(textBoxInputFile.Text))
            {
                lines.Add(line);
            }
            var format = new SubRip();
            var sub    = new Subtitle();

            format.LoadSubtitle(sub, lines, textBoxInputFile.Text);

            var charactersLearned = new List <string>();

            foreach (ListViewItem item in listViewFonts.Items)
            {
                if (item.Checked)
                {
                    _subtitleFontName = item.Text;
                    _subtitleFontSize = Convert.ToInt32(comboBoxSubtitleFontSize.Items[comboBoxSubtitleFontSize.SelectedIndex].ToString());
                    charactersLearned = new List <string>();

                    foreach (Paragraph p in sub.Paragraphs)
                    {
                        foreach (char ch in p.Text)
                        {
                            string s = ch.ToString();
                            if (s.Trim().Length > 0)
                            {
                                if (!charactersLearned.Contains(s))
                                {
                                    TrainLetter(ref numberOfCharactersLeaned, ref numberOfCharactersSkipped, nOcrD, charactersLearned, s, false);
                                    if (checkBoxBold.Checked)
                                    {
                                        TrainLetter(ref numberOfCharactersLeaned, ref numberOfCharactersSkipped, nOcrD, charactersLearned, s, true);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            nOcrD.Save();
        }
Ejemplo n.º 4
0
        public void SrtNoLineNumbers()
        {
            var          target   = new SubRip();
            var          subtitle = new Subtitle();
            const string text     = @"00:00:03,000 --> 00:00:08,000
Line1.

00:00:08,000 --> 00:00:09,920
Line 2.";

            target.LoadSubtitle(subtitle, GetSrtLines(text), null);
            Assert.AreEqual(2, subtitle.Paragraphs.Count);
        }
Ejemplo n.º 5
0
        public void SrtDotsInsteadOfCommas()
        {
            var          target   = new SubRip();
            var          subtitle = new Subtitle();
            const string text     = @"2
00:00:04.501 --> 00:00:08.500
Dots instead of commas";

            target.LoadSubtitle(subtitle, GetSrtLines(text), null);
            string       actual   = subtitle.Paragraphs[0].Text;
            const string expected = "Dots instead of commas";

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 6
0
        public void SrtCoordinates()
        {
            var          target   = new SubRip();
            var          subtitle = new Subtitle();
            const string text     = @"1
00:00:02,001 --> 00:00:16,001  X1:000 X2:000 Y1:050 Y2:100
Let us have some! Let us have some!";

            target.LoadSubtitle(subtitle, GetSrtLines(text), null);
            string       actual   = subtitle.Paragraphs[0].Text;
            const string expected = "Let us have some! Let us have some!";

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 7
0
        public void SrtKeepBlankLines()
        {
            var    target   = new SubRip();
            var    subtitle = new Subtitle();
            string subText  = "Now go on!" + Environment.NewLine + Environment.NewLine + "Now go on!";

            subtitle.Paragraphs.Add(new Paragraph(subText, 0, 999));
            var text = target.ToText(subtitle, "title");

            var outSubtitle = new Subtitle();

            target.LoadSubtitle(outSubtitle, text.SplitToLines(), null);
            Assert.IsTrue(outSubtitle.Paragraphs[0].Text == subText);
        }
Ejemplo n.º 8
0
        public void SrtTwoLiner()
        {
            var          target   = new SubRip();
            var          subtitle = new Subtitle();
            const string text     = @"2
00:00:04.501 --> 00:00:08.500
Line 1
Line 2";

            target.LoadSubtitle(subtitle, GetSrtLines(text), null);
            string actual   = subtitle.Paragraphs[0].Text;
            string expected = "Line 1" + Environment.NewLine + "Line 2";

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 9
0
        public void SrtNoLineNumbers()
        {
            var          target   = new SubRip();
            var          subtitle = new Subtitle();
            const string text     = @"00:00:03,000 --> 00:00:08,000
Line1.

00:00:08,000 --> 00:00:09,920
Line 2.";

            target.LoadSubtitle(subtitle, GetSrtLines(text), null);
            string       actual   = subtitle.Paragraphs.Count.ToString(CultureInfo.InvariantCulture);
            const string expected = "2";

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 10
0
        public void SrtDifficultLines2()
        {
            var          target   = new SubRip();
            var          subtitle = new Subtitle();
            const string text     = @"1
01:38:18,534 --> 01:38:20,067
 
6530

2
01:39:17,534 --> 01:39:19,400
ppp
";

            target.LoadSubtitle(subtitle, GetSrtLines(text), null);
            Assert.AreEqual(2, subtitle.Paragraphs.Count);
            const string expected = @" 
6530";

            Assert.AreEqual(expected.Trim(), subtitle.Paragraphs[0].Text.Trim());
        }
Ejemplo n.º 11
0
        private void buttonTrain_Click(object sender, EventArgs e)
        {
            if (buttonTrain.Text == "Abort")
            {
                _abort = true;
                return;
            }

            if (!File.Exists(textBoxInputFile.Text))
            {
                return;
            }

            _abort           = false;
            buttonTrain.Text = "Abort";
            buttonOK.Enabled = false;

            int numberOfCharactersLeaned  = 0;
            int numberOfCharactersSkipped = 0;
            var nOcrD = new NOcrDb(null);
            var lines = new List <string>();

            foreach (string line in File.ReadAllLines(textBoxInputFile.Text))
            {
                lines.Add(line);
            }

            var format = new SubRip();
            var sub    = new Subtitle();

            format.LoadSubtitle(sub, lines, textBoxInputFile.Text);

            foreach (ListViewItem item in listViewFonts.Items)
            {
                if (item.Checked)
                {
                    _subtitleFontName = item.Text;
                    _subtitleFontSize = Convert.ToInt32(comboBoxSubtitleFontSize.Items[comboBoxSubtitleFontSize.SelectedIndex].ToString());
                    var charactersLearned = new List <string>();

                    foreach (Paragraph p in sub.Paragraphs)
                    {
                        foreach (char ch in p.Text)
                        {
                            if (!char.IsWhiteSpace(ch))
                            {
                                var s = ch.ToString();
                                if (!charactersLearned.Contains(s))
                                {
                                    TrainLetter(ref numberOfCharactersLeaned, ref numberOfCharactersSkipped, nOcrD, charactersLearned, s, false);
                                    if (checkBoxBold.Checked)
                                    {
                                        TrainLetter(ref numberOfCharactersLeaned, ref numberOfCharactersSkipped, nOcrD, charactersLearned, s, true);
                                    }
                                }
                            }
                        }

                        if (_abort)
                        {
                            break;
                        }
                    }

                    if (_abort)
                    {
                        break;
                    }
                }
            }

            labelInfo.Text = "Saving...";
            labelInfo.Refresh();
            saveFileDialog1.Filter           = "nOCR DB|*.nocr";
            saveFileDialog1.InitialDirectory = Configuration.OcrDirectory;
            if (saveFileDialog1.ShowDialog(this) == DialogResult.OK)
            {
                labelInfo.Text = $"Saving to {saveFileDialog1.FileName}...";
                nOcrD.FileName = saveFileDialog1.FileName;
                nOcrD.Save();
                labelInfo.Text = "Training done";
            }
            else
            {
                labelInfo.Text = "Saving aborted";
            }

            buttonOK.Enabled = true;
            buttonTrain.Text = "Start training";
            _abort           = false;
        }
Ejemplo n.º 12
0
        private void buttonTrain_Click(object sender, EventArgs e)
        {
            if (buttonTrain.Text == LanguageSettings.Current.SpellCheck.Abort)
            {
                _abort = true;
                return;
            }

            _abort           = false;
            buttonTrain.Text = LanguageSettings.Current.SpellCheck.Abort;
            buttonOK.Enabled = false;

            saveFileDialog1.DefaultExt = ".db";
            saveFileDialog1.Filter     = "*Binary Image Compare DB files|*.db";
            if (saveFileDialog1.ShowDialog(this) != DialogResult.OK)
            {
                return;
            }

            buttonTrain.Text = LanguageSettings.Current.SpellCheck.Abort;
            var startFontSize = Convert.ToInt32(comboBoxSubtitleFontSize.Items[comboBoxSubtitleFontSize.SelectedIndex].ToString());
            var endFontSize   = Convert.ToInt32(comboBoxFontSizeEnd.Items[comboBoxFontSizeEnd.SelectedIndex].ToString());

            if (!File.Exists(textBoxInputFile.Text))
            {
                MessageBox.Show($"Input file '{textBoxInputFile.Text}' does not exist!");
                return;
            }

            if (listViewFonts.CheckedItems.Count == 0)
            {
                MessageBox.Show("Please select at least one font!");
                return;
            }

            var bicDb = new BinaryOcrDb(saveFileDialog1.FileName);
            int numberOfCharactersLearned = 0;
            int numberOfCharactersSkipped = 0;

            foreach (ListViewItem fontItem in listViewFonts.CheckedItems)
            {
                _subtitleFontName = fontItem.Text;
                for (_subtitleFontSize = startFontSize; _subtitleFontSize <= endFontSize; _subtitleFontSize++)
                {
                    var lines  = File.ReadAllLines(textBoxInputFile.Text).ToList();
                    var format = new SubRip();
                    var sub    = new Subtitle();
                    format.LoadSubtitle(sub, lines, textBoxInputFile.Text);
                    var charactersLearned = new List <string>();
                    foreach (var p in sub.Paragraphs)
                    {
                        labelInfo.Refresh();
                        Application.DoEvents();
                        foreach (char ch in p.Text)
                        {
                            if (!char.IsWhiteSpace(ch))
                            {
                                var s = ch.ToString();
                                if (!charactersLearned.Contains(s))
                                {
                                    charactersLearned.Add(s);
                                    TrainLetter(ref numberOfCharactersLearned, ref numberOfCharactersSkipped, bicDb, s, false, false);
                                    if (checkBoxBold.Checked)
                                    {
                                        TrainLetter(ref numberOfCharactersLearned, ref numberOfCharactersSkipped, bicDb, s, true, false);
                                    }
                                    if (checkBoxItalic.Checked)
                                    {
                                        TrainLetter(ref numberOfCharactersLearned, ref numberOfCharactersSkipped, bicDb, s, false, true);
                                    }
                                }
                                labelInfo.Text = string.Format(LanguageSettings.Current.VobSubOcr.NowTraining, numberOfCharactersLearned, _subtitleFontName, numberOfCharactersSkipped);
                            }
                        }

                        foreach (var text in textBoxMerged.Text.Split(' '))
                        {
                            if (!string.IsNullOrWhiteSpace(text))
                            {
                                if (!charactersLearned.Contains(text) && text.Length > 1 && text.Length <= 3)
                                {
                                    charactersLearned.Add(text);
                                    TrainLetter(ref numberOfCharactersLearned, ref numberOfCharactersSkipped, bicDb, text, false, false);
                                    if (checkBoxBold.Checked)
                                    {
                                        TrainLetter(ref numberOfCharactersLearned, ref numberOfCharactersSkipped, bicDb, text, true, false);
                                    }
                                    if (checkBoxItalic.Checked)
                                    {
                                        TrainLetter(ref numberOfCharactersLearned, ref numberOfCharactersSkipped, bicDb, text, false, true);
                                    }
                                }
                            }
                        }

                        if (_abort)
                        {
                            break;
                        }
                    }
                    if (_abort)
                    {
                        break;
                    }
                }

                if (_abort)
                {
                    break;
                }
            }
            bicDb.Save();
            if (_abort)
            {
                labelInfo.Text = "Partially (aborted) training completed and saved in " + saveFileDialog1.FileName;
            }
            else
            {
                labelInfo.Text = "Training completed and saved in " + saveFileDialog1.FileName;
            }
            buttonOK.Enabled = true;
            buttonTrain.Text = "Start training";
            _abort           = false;
        }
Ejemplo n.º 13
0
        private void buttonTrain_Click(object sender, EventArgs e)
        {
            saveFileDialog1.DefaultExt = ".db";
            saveFileDialog1.Filter     = "*Binary Image Compare DB files|*.db";
            if (saveFileDialog1.ShowDialog(this) != DialogResult.OK)
            {
                return;
            }

            var startFontSize = Convert.ToInt32(comboBoxSubtitleFontSize.Items[comboBoxSubtitleFontSize.SelectedIndex].ToString());
            var endFontSize   = Convert.ToInt32(comboBoxFontSizeEnd.Items[comboBoxFontSizeEnd.SelectedIndex].ToString());

            if (!File.Exists(textBoxInputFile.Text))
            {
                MessageBox.Show($"Input file '{textBoxInputFile.Text}' does not exist!");
                return;
            }

            if (listViewFonts.CheckedItems.Count == 1)
            {
                MessageBox.Show("Please select at least one font!");
                return;
            }

            var bicDb = new BinaryOcrDb(saveFileDialog1.FileName);
            int numberOfCharactersLeaned  = 0;
            int numberOfCharactersSkipped = 0;

            foreach (ListViewItem fontItem in listViewFonts.CheckedItems)
            {
                _subtitleFontName = fontItem.Text;
                for (_subtitleFontSize = startFontSize; _subtitleFontSize <= endFontSize; _subtitleFontSize++)
                {
                    var lines  = File.ReadAllLines(textBoxInputFile.Text).ToList();
                    var format = new SubRip();
                    var sub    = new Subtitle();
                    format.LoadSubtitle(sub, lines, textBoxInputFile.Text);
                    var charactersLearned = new List <string>();
                    foreach (var p in sub.Paragraphs)
                    {
                        foreach (char ch in p.Text)
                        {
                            if (!char.IsWhiteSpace(ch))
                            {
                                var s = ch.ToString();
                                if (!charactersLearned.Contains(s))
                                {
                                    TrainLetter(ref numberOfCharactersLeaned, ref numberOfCharactersSkipped, bicDb, charactersLearned, s, false, false);
                                    TrainLetter(ref numberOfCharactersLeaned, ref numberOfCharactersSkipped, bicDb, charactersLearned, s, false, true);
                                    if (checkBoxBold.Checked)
                                    {
                                        TrainLetter(ref numberOfCharactersLeaned, ref numberOfCharactersSkipped, bicDb, charactersLearned, s, true, false);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            bicDb.Save();
            labelInfo.Text = "Training completed and saved in " + saveFileDialog1.FileName;
        }