Minor ocr improvements

git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@1025 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
niksedk 2012-03-08 18:30:08 +00:00
parent 479014e609
commit be027f0ef3
4 changed files with 94 additions and 3 deletions

View File

@ -43,6 +43,7 @@
this.buttonSkipOnce = new System.Windows.Forms.Button();
this.buttonAddToNames = new System.Windows.Forms.Button();
this.groupBoxEditWholeText = new System.Windows.Forms.GroupBox();
this.buttonChangeAllWholeText = new System.Windows.Forms.Button();
this.buttonSkipText = new System.Windows.Forms.Button();
this.buttonChangeWholeText = new System.Windows.Forms.Button();
this.textBoxWholeText = new System.Windows.Forms.TextBox();
@ -215,6 +216,7 @@
// groupBoxEditWholeText
//
this.groupBoxEditWholeText.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.groupBoxEditWholeText.Controls.Add(this.buttonChangeAllWholeText);
this.groupBoxEditWholeText.Controls.Add(this.buttonSkipText);
this.groupBoxEditWholeText.Controls.Add(this.buttonChangeWholeText);
this.groupBoxEditWholeText.Controls.Add(this.textBoxWholeText);
@ -225,6 +227,16 @@
this.groupBoxEditWholeText.TabStop = false;
this.groupBoxEditWholeText.Text = "Edit whole text";
//
// buttonChangeAllWholeText
//
this.buttonChangeAllWholeText.Location = new System.Drawing.Point(6, 115);
this.buttonChangeAllWholeText.Name = "buttonChangeAllWholeText";
this.buttonChangeAllWholeText.Size = new System.Drawing.Size(141, 21);
this.buttonChangeAllWholeText.TabIndex = 36;
this.buttonChangeAllWholeText.Text = "Change all";
this.buttonChangeAllWholeText.UseVisualStyleBackColor = true;
this.buttonChangeAllWholeText.Click += new System.EventHandler(this.buttonChangeAllWholeText_Click);
//
// buttonSkipText
//
this.buttonSkipText.Location = new System.Drawing.Point(156, 88);
@ -253,6 +265,7 @@
this.textBoxWholeText.Name = "textBoxWholeText";
this.textBoxWholeText.Size = new System.Drawing.Size(290, 63);
this.textBoxWholeText.TabIndex = 31;
this.textBoxWholeText.TextChanged += new System.EventHandler(this.textBoxWholeText_TextChanged);
//
// groupBoxTextAsImage
//
@ -333,8 +346,8 @@
this.Controls.Add(this.buttonAbort);
this.Controls.Add(this.labelWordNotFound);
this.Controls.Add(this.groupBoxSuggestions);
this.Controls.Add(this.GroupBoxEditWord);
this.Controls.Add(this.groupBoxEditWholeText);
this.Controls.Add(this.GroupBoxEditWord);
this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Name = "OcrSpellCheck";
this.ShowIcon = false;
@ -379,5 +392,6 @@
private System.Windows.Forms.RichTextBox richTextBoxParagraph;
private System.Windows.Forms.Button buttonAddToDictionary;
private System.Windows.Forms.Button buttonSkipText;
private System.Windows.Forms.Button buttonChangeAllWholeText;
}
}

View File

@ -17,15 +17,17 @@ namespace Nikse.SubtitleEdit.Forms
ChangeAndSave,
ChangeOnce,
ChangeWholeText,
ChangeAllWholeText,
SkipAll,
SkipWholeText,
SkipOnce,
UseSuggestion,
UseSuggestion,
}
public Action ActionResult { get; private set; }
public string Word { get; private set; }
public string Paragraph { get; private set; }
public string OriginalWholeText { get; private set; }
private string _originalWord;
@ -75,6 +77,7 @@ namespace Nikse.SubtitleEdit.Forms
internal void Initialize(string word, List<string> suggestions, string line, string[] words, int i, Bitmap bitmap)
{
_originalWord = word;
OriginalWholeText = line;
pictureBoxText.Image = bitmap;
textBoxWord.Text = word;
richTextBoxParagraph.Text = line;
@ -210,6 +213,13 @@ namespace Nikse.SubtitleEdit.Forms
DialogResult = DialogResult.OK;
}
private void buttonChangeAllWholeText_Click(object sender, EventArgs e)
{
Paragraph = textBoxWholeText.Text.Trim();
ActionResult = Action.ChangeAllWholeText;
DialogResult = DialogResult.OK;
}
private void ButtonAddToNamesClick(object sender, EventArgs e)
{
Word = textBoxWord.Text.Trim();
@ -256,5 +266,11 @@ namespace Nikse.SubtitleEdit.Forms
buttonChangeAll.Enabled = buttonChange.Enabled;
}
private void textBoxWholeText_TextChanged(object sender, EventArgs e)
{
buttonChangeWholeText.Enabled = textBoxWholeText.Text != OriginalWholeText;
buttonChangeAllWholeText.Enabled = buttonChangeWholeText.Enabled;
}
}
}

View File

@ -946,6 +946,9 @@ namespace Nikse.SubtitleEdit.Logic.OCR
if (input.StartsWith("<i>... "))
input = input.Remove(6, 1);
if (input.StartsWith("...<i>") && (input.IndexOf("</i>") > input.IndexOf(" ")))
input = "<i>..." + input.Remove(0, 6);
if (input.EndsWith(". .."))
input = input.Remove(input.Length - 4, 4) + "...";
if (input.EndsWith(".. ."))
@ -964,6 +967,12 @@ namespace Nikse.SubtitleEdit.Logic.OCR
if (input.EndsWith(". ...</i>"))
input = input.Remove(input.Length - 9, 9) + "...</i>";
if (input.EndsWith(".</i> . ."))
input = input.Remove(input.Length - 9, 9) + "...</i>";
if (input.EndsWith(".</i>.."))
input = input.Remove(input.Length - 7, 7) + "...</i>";
input = input.Replace(".</i> . ." + Environment.NewLine, "...</i>" + Environment.NewLine);
input = input.Replace(".. ?", "..?");
input = input.Replace("..?", "...?");
input = input.Replace("....?", "...?");
@ -1218,7 +1227,7 @@ namespace Nikse.SubtitleEdit.Logic.OCR
}
}
string[] words = tempLine.Split((Environment.NewLine + " ¡¿,.!?:;()[]{}+-£\"”“#&%…—♪/").ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string[] words = tempLine.Replace("</i>", string.Empty).Split((Environment.NewLine + " ¡¿,.!?:;()[]{}+-£\"”“#&%…—♪/").ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < words.Length; i++)
{
string word = words[i].TrimStart('\'');
@ -1470,6 +1479,11 @@ namespace Nikse.SubtitleEdit.Logic.OCR
result.Line = _spellCheck.Paragraph;
result.FixedWholeLine = true;
break;
case OcrSpellCheck.Action.ChangeAllWholeText:
SaveWordToWholeLineList(_spellCheck.OriginalWholeText);
result.Line = _spellCheck.Paragraph;
result.FixedWholeLine = true;
break;
case OcrSpellCheck.Action.SkipAll:
_wordSkipList.Add(_spellCheck.Word);
_wordSkipList.Add(_spellCheck.Word.ToUpper());
@ -1578,6 +1592,51 @@ namespace Nikse.SubtitleEdit.Logic.OCR
}
}
private void SaveWordToWholeLineList(string line)
{
try
{
if (_replaceListXmlFileName != null)
{
var doc = new XmlDocument();
if (File.Exists(_replaceListXmlFileName))
{
try
{
doc.Load(_replaceListXmlFileName);
}
catch
{
doc.LoadXml("<ReplaceList><WholeWords/><PartialLines/><BeginLines/><EndLines/><WholeLines/></ReplaceList>");
}
}
else
{
doc.LoadXml("<ReplaceList><WholeWords/><PartialLines/><BeginLines/><EndLines/><WholeLines/></ReplaceList>");
}
if (!_wholeLineReplaceList.ContainsKey(line))
_wholeLineReplaceList.Add(line, _spellCheck.Paragraph);
XmlNode wholeWordsNode = doc.DocumentElement.SelectSingleNode("WholeLines");
if (wholeWordsNode != null)
{
XmlNode newNode = doc.CreateNode(XmlNodeType.Element, "Line", null);
XmlAttribute aFrom = doc.CreateAttribute("from");
XmlAttribute aTo = doc.CreateAttribute("to");
aFrom.InnerText = line;
aTo.InnerText = _spellCheck.Paragraph;
newNode.Attributes.Append(aFrom);
newNode.Attributes.Append(aTo);
wholeWordsNode.AppendChild(newNode);
doc.Save(_replaceListXmlFileName);
}
}
}
catch (Exception exception)
{
MessageBox.Show(exception + Environment.NewLine + exception.StackTrace);
}
}
public bool DoSpell(string word)
{
return _hunspell.Spell(word);

View File

@ -181,6 +181,8 @@ namespace Nikse.SubtitleEdit.Logic.VobSub
VobSubMergedPack pack = list[i];
if (pack.SubPicture == null || pack.SubPicture.ImageDisplayArea.Width <= 3 || pack.SubPicture.ImageDisplayArea.Height <= 2)
list.RemoveAt(i);
if (pack.EndTime.TotalSeconds - pack.StartTime.TotalSeconds < 0.1 && pack.SubPicture.ImageDisplayArea.Width <= 10 && pack.SubPicture.ImageDisplayArea.Height <= 10)
list.RemoveAt(i);
}
// Fix subs with no duration (completely normal) or negative duration or duration > 10 seconds