mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-26 23:12:38 +02:00
Add export images for external OCR in OCR window - thx cyzs233 :)
Fix #5761
This commit is contained in:
parent
4deab7bca2
commit
c9c05ab2d6
@ -59,6 +59,7 @@
|
||||
* Some improvements for OCR fix engine - thx Janusz
|
||||
* Add blank lines to Modify selection - thx OmrSi
|
||||
* Allow for having a bd .sup file in spell check - thx cyzs233
|
||||
* Export images (for external OCR) in OCR window - thx cyzs233
|
||||
* FIXED:
|
||||
* Fix bug in BD SUP reading w missing lines - thx peter-qgd
|
||||
* Fix crash in "Set start and offset the rest" w original - thx hamilaci
|
||||
|
@ -2955,6 +2955,7 @@ Keep changes?</KeepChangesMessage>
|
||||
<AlsoTrainBold>Also train bold</AlsoTrainBold>
|
||||
<StartTraining>Start training</StartTraining>
|
||||
<NowTraining>Now training font '{1}'. Total chars trained: {0:#,###,##0}, {2:#,###,##0} known</NowTraining>
|
||||
<ImagesWithTimeCodesInFileName>Images with time codes in file name...</ImagesWithTimeCodesInFileName>
|
||||
</VobSubOcr>
|
||||
<VobSubOcrCharacter>
|
||||
<Title>OCR - Manual image to text</Title>
|
||||
|
40
src/ui/Forms/Ocr/VobSubOcr.Designer.cs
generated
40
src/ui/Forms/Ocr/VobSubOcr.Designer.cs
generated
@ -34,6 +34,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
this.vobSubToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.dOSTToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.finalCutProImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.imageWithTimeCodeInFileNameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparatorImageCompare = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripMenuItemInspectNOcrMatches = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.inspectImageCompareMatchesForCurrentImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@ -229,7 +230,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
this.toolStripSeparator3,
|
||||
this.deleteToolStripMenuItem});
|
||||
this.contextMenuStripListview.Name = "contextMenuStripListview";
|
||||
this.contextMenuStripListview.Size = new System.Drawing.Size(306, 386);
|
||||
this.contextMenuStripListview.Size = new System.Drawing.Size(306, 408);
|
||||
this.contextMenuStripListview.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripListviewOpening);
|
||||
//
|
||||
// normalToolStripMenuItem
|
||||
@ -298,7 +299,8 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
this.bluraySupToolStripMenuItem,
|
||||
this.vobSubToolStripMenuItem,
|
||||
this.dOSTToolStripMenuItem,
|
||||
this.finalCutProImageToolStripMenuItem});
|
||||
this.finalCutProImageToolStripMenuItem,
|
||||
this.imageWithTimeCodeInFileNameToolStripMenuItem});
|
||||
this.toolStripMenuItemExport.Name = "toolStripMenuItemExport";
|
||||
this.toolStripMenuItemExport.Size = new System.Drawing.Size(305, 22);
|
||||
this.toolStripMenuItemExport.Text = "Export all images as...";
|
||||
@ -306,38 +308,45 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
// bDNXMLToolStripMenuItem
|
||||
//
|
||||
this.bDNXMLToolStripMenuItem.Name = "bDNXMLToolStripMenuItem";
|
||||
this.bDNXMLToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.bDNXMLToolStripMenuItem.Size = new System.Drawing.Size(268, 22);
|
||||
this.bDNXMLToolStripMenuItem.Text = "BDN XML...";
|
||||
this.bDNXMLToolStripMenuItem.Click += new System.EventHandler(this.BDNXMLToolStripMenuItem_Click);
|
||||
//
|
||||
// bluraySupToolStripMenuItem
|
||||
//
|
||||
this.bluraySupToolStripMenuItem.Name = "bluraySupToolStripMenuItem";
|
||||
this.bluraySupToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.bluraySupToolStripMenuItem.Size = new System.Drawing.Size(268, 22);
|
||||
this.bluraySupToolStripMenuItem.Text = "Blu-ray sup...";
|
||||
this.bluraySupToolStripMenuItem.Click += new System.EventHandler(this.BluraySupToolStripMenuItem_Click);
|
||||
//
|
||||
// vobSubToolStripMenuItem
|
||||
//
|
||||
this.vobSubToolStripMenuItem.Name = "vobSubToolStripMenuItem";
|
||||
this.vobSubToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.vobSubToolStripMenuItem.Size = new System.Drawing.Size(268, 22);
|
||||
this.vobSubToolStripMenuItem.Text = "VobSub...";
|
||||
this.vobSubToolStripMenuItem.Click += new System.EventHandler(this.VobSubToolStripMenuItem_Click);
|
||||
//
|
||||
// dOSTToolStripMenuItem
|
||||
//
|
||||
this.dOSTToolStripMenuItem.Name = "dOSTToolStripMenuItem";
|
||||
this.dOSTToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.dOSTToolStripMenuItem.Size = new System.Drawing.Size(268, 22);
|
||||
this.dOSTToolStripMenuItem.Text = "DOST...";
|
||||
this.dOSTToolStripMenuItem.Click += new System.EventHandler(this.DOSTToolStripMenuItem_Click);
|
||||
//
|
||||
// finalCutProImageToolStripMenuItem
|
||||
//
|
||||
this.finalCutProImageToolStripMenuItem.Name = "finalCutProImageToolStripMenuItem";
|
||||
this.finalCutProImageToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.finalCutProImageToolStripMenuItem.Size = new System.Drawing.Size(268, 22);
|
||||
this.finalCutProImageToolStripMenuItem.Text = "Final Cut Pro + image...";
|
||||
this.finalCutProImageToolStripMenuItem.Click += new System.EventHandler(this.finalCutProImageToolStripMenuItem_Click);
|
||||
//
|
||||
// imageWithTimeCodeInFileNameToolStripMenuItem
|
||||
//
|
||||
this.imageWithTimeCodeInFileNameToolStripMenuItem.Name = "imageWithTimeCodeInFileNameToolStripMenuItem";
|
||||
this.imageWithTimeCodeInFileNameToolStripMenuItem.Size = new System.Drawing.Size(268, 22);
|
||||
this.imageWithTimeCodeInFileNameToolStripMenuItem.Text = "Images with time code in file name...";
|
||||
this.imageWithTimeCodeInFileNameToolStripMenuItem.Click += new System.EventHandler(this.imageWithTimeCodeInFileNameToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparatorImageCompare
|
||||
//
|
||||
this.toolStripSeparatorImageCompare.Name = "toolStripSeparatorImageCompare";
|
||||
@ -1307,7 +1316,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
this.listBoxUnknownWords.HorizontalScrollbar = true;
|
||||
this.listBoxUnknownWords.Location = new System.Drawing.Point(3, 3);
|
||||
this.listBoxUnknownWords.Name = "listBoxUnknownWords";
|
||||
this.listBoxUnknownWords.Size = new System.Drawing.Size(143, 149);
|
||||
this.listBoxUnknownWords.Size = new System.Drawing.Size(143, 147);
|
||||
this.listBoxUnknownWords.TabIndex = 40;
|
||||
this.listBoxUnknownWords.SelectedIndexChanged += new System.EventHandler(this.ListBoxLogSelectedIndexChanged);
|
||||
this.listBoxUnknownWords.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listBoxCopyToClipboard_KeyDown);
|
||||
@ -1733,9 +1742,9 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
//
|
||||
this.checkBoxUseTimeCodesFromIdx.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.checkBoxUseTimeCodesFromIdx.AutoSize = true;
|
||||
this.checkBoxUseTimeCodesFromIdx.Location = new System.Drawing.Point(369, 295);
|
||||
this.checkBoxUseTimeCodesFromIdx.Location = new System.Drawing.Point(335, 295);
|
||||
this.checkBoxUseTimeCodesFromIdx.Name = "checkBoxUseTimeCodesFromIdx";
|
||||
this.checkBoxUseTimeCodesFromIdx.Size = new System.Drawing.Size(152, 17);
|
||||
this.checkBoxUseTimeCodesFromIdx.Size = new System.Drawing.Size(186, 17);
|
||||
this.checkBoxUseTimeCodesFromIdx.TabIndex = 3;
|
||||
this.checkBoxUseTimeCodesFromIdx.Text = "Use lines/time codes from .idx file";
|
||||
this.checkBoxUseTimeCodesFromIdx.UseVisualStyleBackColor = true;
|
||||
@ -1778,18 +1787,26 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBoxCurrentText.BackColor = System.Drawing.SystemColors.WindowFrame;
|
||||
this.textBoxCurrentText.ContextMenuStrip = this.contextMenuStripTextBox;
|
||||
this.textBoxCurrentText.CurrentLanguage = null;
|
||||
this.textBoxCurrentText.CurrentLineIndex = 0;
|
||||
this.textBoxCurrentText.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.textBoxCurrentText.HideSelection = true;
|
||||
this.textBoxCurrentText.IsDictionaryDownloaded = true;
|
||||
this.textBoxCurrentText.IsSpellCheckerInitialized = false;
|
||||
this.textBoxCurrentText.IsSpellCheckRequested = false;
|
||||
this.textBoxCurrentText.IsWrongWord = false;
|
||||
this.textBoxCurrentText.LanguageChanged = false;
|
||||
this.textBoxCurrentText.Location = new System.Drawing.Point(8, 214);
|
||||
this.textBoxCurrentText.Multiline = true;
|
||||
this.textBoxCurrentText.Name = "textBoxCurrentText";
|
||||
this.textBoxCurrentText.Padding = new System.Windows.Forms.Padding(1);
|
||||
this.textBoxCurrentText.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.None;
|
||||
this.textBoxCurrentText.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Both;
|
||||
this.textBoxCurrentText.SelectedText = "";
|
||||
this.textBoxCurrentText.SelectionLength = 0;
|
||||
this.textBoxCurrentText.SelectionStart = 0;
|
||||
this.textBoxCurrentText.Size = new System.Drawing.Size(354, 77);
|
||||
this.textBoxCurrentText.TabIndex = 1;
|
||||
this.textBoxCurrentText.TextBoxFont = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold);
|
||||
this.textBoxCurrentText.TextChanged += new System.EventHandler(this.TextBoxCurrentTextTextChanged);
|
||||
this.textBoxCurrentText.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBoxCurrentText_KeyDown);
|
||||
//
|
||||
@ -2146,5 +2163,6 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
private System.Windows.Forms.ToolStripMenuItem boldToolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripMenuItem italicToolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripMenuItem underlineToolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripMenuItem imageWithTimeCodeInFileNameToolStripMenuItem;
|
||||
}
|
||||
}
|
@ -366,7 +366,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
|
||||
private readonly int _ocrMethodBinaryImageCompare = -1;
|
||||
private readonly int _ocrMethodTesseract302 = -1;
|
||||
private readonly int _ocrMethodTesseract4 = -1;
|
||||
private readonly int _ocrMethodTesseract5 = -1;
|
||||
private readonly int _ocrMethodModi = -1;
|
||||
private readonly int _ocrMethodNocr = -1;
|
||||
|
||||
@ -501,7 +501,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
{
|
||||
_ocrMethodTesseract302 = comboBoxOcrMethod.Items.Add(string.Format(language.OcrViaTesseractVersionX, "3.02"));
|
||||
}
|
||||
_ocrMethodTesseract4 = comboBoxOcrMethod.Items.Add(string.Format(language.OcrViaTesseractVersionX, Tesseract5Version));
|
||||
_ocrMethodTesseract5 = comboBoxOcrMethod.Items.Add(string.Format(language.OcrViaTesseractVersionX, Tesseract5Version));
|
||||
if (_modiEnabled)
|
||||
{
|
||||
_ocrMethodModi = comboBoxOcrMethod.Items.Add(language.OcrViaModi);
|
||||
@ -565,6 +565,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
vobSubToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.File.ExportVobSub;
|
||||
bDNXMLToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.File.ExportBdnXml;
|
||||
bluraySupToolStripMenuItem.Text = LanguageSettings.Current.Main.Menu.File.ExportBluRaySup;
|
||||
imageWithTimeCodeInFileNameToolStripMenuItem.Text = language.ImagesWithTimeCodesInFileName;
|
||||
|
||||
toolStripMenuItemClearFixes.Text = LanguageSettings.Current.DvdSubRip.Clear;
|
||||
toolStripMenuItemClearGuesses.Text = LanguageSettings.Current.DvdSubRip.Clear;
|
||||
@ -654,7 +655,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
return;
|
||||
}
|
||||
|
||||
_ocrMethodIndex = Configuration.Settings.VobSubOcr.LastOcrMethod == "Tesseract4" ? _ocrMethodTesseract4 : _ocrMethodTesseract302;
|
||||
_ocrMethodIndex = Configuration.Settings.VobSubOcr.LastOcrMethod == "Tesseract4" ? _ocrMethodTesseract5 : _ocrMethodTesseract302;
|
||||
if (language == null)
|
||||
{
|
||||
language = Configuration.Settings.VobSubOcr.TesseractLastLanguage;
|
||||
@ -860,7 +861,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
internal void InitializeBatch(List<TransportStreamSubtitle> subtitles, VobSubOcrSettings vobSubOcrSettings, string fileName, bool forcedOnly, string language = null, string ocrEngine = null)
|
||||
{
|
||||
Initialize(subtitles, vobSubOcrSettings, fileName, language);
|
||||
_ocrMethodIndex = Configuration.Settings.VobSubOcr.LastOcrMethod == "Tesseract4" ? _ocrMethodTesseract4 : _ocrMethodTesseract302;
|
||||
_ocrMethodIndex = Configuration.Settings.VobSubOcr.LastOcrMethod == "Tesseract4" ? _ocrMethodTesseract5 : _ocrMethodTesseract302;
|
||||
var oldNOcrDrawText = checkBoxNOcrDrawUnknownLetters.Checked;
|
||||
|
||||
if (ocrEngine?.ToLowerInvariant() == "nocr")
|
||||
@ -891,7 +892,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
internal void InitializeBatch(List<BluRaySupParser.PcsData> subtitles, VobSubOcrSettings vobSubOcrSettings, string fileName, bool forcedOnly, string language = null, string ocrEngine = null)
|
||||
{
|
||||
Initialize(subtitles, vobSubOcrSettings, fileName);
|
||||
_ocrMethodIndex = Configuration.Settings.VobSubOcr.LastOcrMethod == "Tesseract4" ? _ocrMethodTesseract4 : _ocrMethodTesseract302;
|
||||
_ocrMethodIndex = Configuration.Settings.VobSubOcr.LastOcrMethod == "Tesseract4" ? _ocrMethodTesseract5 : _ocrMethodTesseract302;
|
||||
var oldNOcrDrawText = checkBoxNOcrDrawUnknownLetters.Checked;
|
||||
|
||||
InitializeOcrEngineBatch(language, ocrEngine);
|
||||
@ -946,12 +947,12 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
checkBoxPromptForUnknownWords.Checked = false;
|
||||
|
||||
int max = GetSubtitleCount();
|
||||
if (_ocrMethodIndex != _ocrMethodTesseract4 && _ocrMethodIndex != _ocrMethodTesseract302 && _ocrMethodIndex != _ocrMethodNocr)
|
||||
if (_ocrMethodIndex != _ocrMethodTesseract5 && _ocrMethodIndex != _ocrMethodTesseract302 && _ocrMethodIndex != _ocrMethodNocr)
|
||||
{
|
||||
_ocrMethodIndex = _ocrMethodTesseract302;
|
||||
}
|
||||
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract4 && _tesseractAsyncStrings == null)
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract5 && _tesseractAsyncStrings == null)
|
||||
{
|
||||
_tesseractAsyncStrings = new string[max];
|
||||
_tesseractAsyncIndex = (int)numericUpDownStartNumber.Value + 5;
|
||||
@ -1900,7 +1901,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
return null;
|
||||
}
|
||||
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract4 && !_fromMenuItem)
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract5 && !_fromMenuItem)
|
||||
{
|
||||
var nb = new NikseBitmap(returnBmp);
|
||||
|
||||
@ -5095,7 +5096,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
|
||||
InitializeTopAlign();
|
||||
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract302 || _ocrMethodIndex == _ocrMethodTesseract4)
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract302 || _ocrMethodIndex == _ocrMethodTesseract5)
|
||||
{
|
||||
labelStatus.Text = LanguageSettings.Current.General.PleaseWait;
|
||||
_tesseractThreadRunner?.Cancel();
|
||||
@ -5103,7 +5104,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
_tesseractRunner = new TesseractRunner();
|
||||
}
|
||||
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract4 && comboBoxTesseractLanguages.Items.Count == 0)
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract5 && comboBoxTesseractLanguages.Items.Count == 0)
|
||||
{
|
||||
buttonGetTesseractDictionaries_Click(sender, e);
|
||||
return;
|
||||
@ -5124,7 +5125,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
|
||||
int max = GetSubtitleCount();
|
||||
|
||||
if ((_ocrMethodIndex == _ocrMethodTesseract4 || _ocrMethodIndex == _ocrMethodTesseract302) &&
|
||||
if ((_ocrMethodIndex == _ocrMethodTesseract5 || _ocrMethodIndex == _ocrMethodTesseract302) &&
|
||||
_tesseractAsyncStrings == null)
|
||||
{
|
||||
_nOcrDb = null;
|
||||
@ -5639,7 +5640,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
private void mainOcrTimer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
_mainOcrTimer.Stop();
|
||||
bool done = _ocrMethodIndex == _ocrMethodTesseract4 || _ocrMethodIndex == _ocrMethodTesseract302 ? MainLoopTesseract(_mainOcrTimerMax, _mainOcrIndex) : MainLoop(_mainOcrTimerMax, _mainOcrIndex);
|
||||
bool done = _ocrMethodIndex == _ocrMethodTesseract5 || _ocrMethodIndex == _ocrMethodTesseract302 ? MainLoopTesseract(_mainOcrTimerMax, _mainOcrIndex) : MainLoop(_mainOcrTimerMax, _mainOcrIndex);
|
||||
if (done || _abort)
|
||||
{
|
||||
SetButtonsEnabledAfterOcrDone();
|
||||
@ -5705,7 +5706,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
|
||||
string pngFileName = Path.GetTempPath() + Guid.NewGuid() + ".png";
|
||||
bmp.Save(pngFileName, System.Drawing.Imaging.ImageFormat.Png);
|
||||
var result = _tesseractRunner.Run(language, psmMode, tesseractEngineMode.ToString(CultureInfo.InvariantCulture), pngFileName, _ocrMethodIndex != _ocrMethodTesseract4);
|
||||
var result = _tesseractRunner.Run(language, psmMode, tesseractEngineMode.ToString(CultureInfo.InvariantCulture), pngFileName, _ocrMethodIndex != _ocrMethodTesseract5);
|
||||
if (_tesseractRunner.TesseractErrors.Count <= 2 && !string.IsNullOrEmpty(_tesseractRunner.LastError))
|
||||
{
|
||||
MessageBox.Show(_tesseractRunner.LastError);
|
||||
@ -5892,7 +5893,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
checkBoxTesseractFallback.Visible && checkBoxTesseractFallback.Checked)
|
||||
{
|
||||
var oldOcrMethodIndex = _ocrMethodIndex;
|
||||
_ocrMethodIndex = _ocrMethodIndex == _ocrMethodTesseract4 ? _ocrMethodTesseract302 : _ocrMethodTesseract4;
|
||||
_ocrMethodIndex = _ocrMethodIndex == _ocrMethodTesseract5 ? _ocrMethodTesseract302 : _ocrMethodTesseract5;
|
||||
newUnfixedText = Tesseract3DoOcrViaExe(bitmap, _languageId, "6", _tesseractEngineMode); // 6 = Assume a single uniform block of text.
|
||||
newText = _ocrFixEngine.FixOcrErrors(newUnfixedText, index, _lastLine, lastLastLine, true, GetAutoGuessLevel());
|
||||
newWordsNotFound = _ocrFixEngine.CountUnknownWordsViaDictionary(newText, out correctWords);
|
||||
@ -6003,7 +6004,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
correctWords = modiCorrectWords;
|
||||
if (checkBoxAutoFixCommonErrors.Checked)
|
||||
{
|
||||
line = _ocrFixEngine.FixOcrErrors(line, index, _lastLine, lastLastLine,true, GetAutoGuessLevel());
|
||||
line = _ocrFixEngine.FixOcrErrors(line, index, _lastLine, lastLastLine, true, GetAutoGuessLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -7267,7 +7268,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
Configuration.Settings.VobSubOcr.TesseractLastLanguage = l;
|
||||
LoadOcrFixEngine(string.Empty, string.Empty);
|
||||
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract4)
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract5)
|
||||
{
|
||||
var ok = Configuration.IsRunningOnWindows &&
|
||||
File.Exists(Path.Combine(Configuration.Tesseract302Directory, "tesseract.exe")) &&
|
||||
@ -7297,7 +7298,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
|
||||
private void LoadOcrFixEngine(string threeLetterIsoLanguageName, string hunspellName)
|
||||
{
|
||||
if (_ocrMethodIndex != _ocrMethodTesseract4 && _ocrMethodIndex != _ocrMethodTesseract302)
|
||||
if (_ocrMethodIndex != _ocrMethodTesseract5 && _ocrMethodIndex != _ocrMethodTesseract302)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -7326,7 +7327,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
string loadedDictionaryName = _ocrFixEngine.SpellCheckDictionaryName;
|
||||
var found = false;
|
||||
comboBoxDictionaries.SelectedIndexChanged -= comboBoxDictionaries_SelectedIndexChanged;
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract4 &&
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract5 &&
|
||||
!string.IsNullOrEmpty(Configuration.Settings.VobSubOcr.LastTesseractSpellCheck) &&
|
||||
Configuration.Settings.VobSubOcr.LastTesseractSpellCheck.Length > 1 &&
|
||||
loadedDictionaryName.Length > 1 &&
|
||||
@ -7374,7 +7375,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
_binaryOcrDb = null;
|
||||
_nOcrDb = null;
|
||||
_ocrMethodIndex = comboBoxOcrMethod.SelectedIndex;
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract4)
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract5)
|
||||
{
|
||||
ResetTesseractThread();
|
||||
InitializeTesseract();
|
||||
@ -7852,7 +7853,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
private void comboBoxDictionaries_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
Configuration.Settings.General.SpellCheckLanguage = LanguageString;
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract4 || _ocrMethodIndex == _ocrMethodTesseract302)
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract5 || _ocrMethodIndex == _ocrMethodTesseract302)
|
||||
{
|
||||
Configuration.Settings.VobSubOcr.LastTesseractSpellCheck = LanguageString;
|
||||
}
|
||||
@ -7963,7 +7964,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
}
|
||||
else if (Configuration.Settings.VobSubOcr.LastOcrMethod == "Tesseract4" && comboBoxOcrMethod.Items.Count > _ocrMethodTesseract302)
|
||||
{
|
||||
comboBoxOcrMethod.SelectedIndex = _ocrMethodTesseract4;
|
||||
comboBoxOcrMethod.SelectedIndex = _ocrMethodTesseract5;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -8436,7 +8437,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
}
|
||||
}
|
||||
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract4 || _ocrMethodTesseract4 == _ocrMethodTesseract302)
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract5 || _ocrMethodTesseract5 == _ocrMethodTesseract302)
|
||||
{
|
||||
Configuration.Settings.VobSubOcr.LastTesseractSpellCheck = LanguageString;
|
||||
}
|
||||
@ -8829,7 +8830,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
_preprocessingSettings = temp;
|
||||
_fromMenuItem = false;
|
||||
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract4)
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract5)
|
||||
{
|
||||
var ps = new PreprocessingSettings
|
||||
{
|
||||
@ -9158,7 +9159,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
{
|
||||
_transportStreamUseColor = checkBoxTransportStreamGetColorAndSplit.Checked;
|
||||
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract4)
|
||||
if (_ocrMethodIndex == _ocrMethodTesseract5)
|
||||
{
|
||||
_abort = true;
|
||||
ResetTesseractThread();
|
||||
@ -9837,5 +9838,88 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
||||
SetTesseractLanguageFromLanguageString(languageString);
|
||||
_importLanguageString = languageString;
|
||||
}
|
||||
|
||||
private void imageWithTimeCodeInFileNameToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
saveFileDialog1.Title = "Save images in folder";
|
||||
saveFileDialog1.AddExtension = true;
|
||||
saveFileDialog1.FileName = "Dummy";
|
||||
saveFileDialog1.Filter = "PNG image|*.png|BMP image|*.bmp|GIF image|*.gif|TIFF image|*.tiff";
|
||||
saveFileDialog1.FilterIndex = 0;
|
||||
|
||||
DialogResult result = saveFileDialog1.ShowDialog(this);
|
||||
if (result != DialogResult.OK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var path = Path.GetDirectoryName(saveFileDialog1.FileName);
|
||||
var oldOcrIndex = _ocrMethodIndex;
|
||||
try
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
Application.DoEvents();
|
||||
var ext = ".png";
|
||||
var imageFormat = System.Drawing.Imaging.ImageFormat.Png;
|
||||
if (saveFileDialog1.FilterIndex == 2)
|
||||
{
|
||||
ext = ".bmp";
|
||||
imageFormat = System.Drawing.Imaging.ImageFormat.Bmp;
|
||||
}
|
||||
else if (saveFileDialog1.FilterIndex == 3)
|
||||
{
|
||||
ext = ".gif";
|
||||
imageFormat = System.Drawing.Imaging.ImageFormat.Gif;
|
||||
}
|
||||
else if (saveFileDialog1.FilterIndex == 4)
|
||||
{
|
||||
ext = ".tiff";
|
||||
imageFormat = System.Drawing.Imaging.ImageFormat.Tiff;
|
||||
}
|
||||
|
||||
// force pre processing to be used
|
||||
_fromMenuItem = false;
|
||||
_ocrMethodIndex = _ocrMethodTesseract5;
|
||||
if (_preprocessingSettings == null)
|
||||
{
|
||||
_preprocessingSettings = new PreprocessingSettings
|
||||
{
|
||||
BinaryImageCompareThreshold = Configuration.Settings.Tools.OcrTesseract4RgbThreshold,
|
||||
InvertColors = _preprocessingSettings != null ? _preprocessingSettings.InvertColors : false,
|
||||
CropTransparentColors = _preprocessingSettings != null ? _preprocessingSettings.CropTransparentColors : false,
|
||||
};
|
||||
}
|
||||
|
||||
SetButtonsStartOcr();
|
||||
for (var i = 0; i < _subtitle.Paragraphs.Count; i++)
|
||||
{
|
||||
var bmp = GetSubtitleBitmap(i);
|
||||
if (bmp == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// 0_00_01_042__0_00_03_919_01.jpeg
|
||||
var p = _subtitle.Paragraphs[i];
|
||||
var fileName = $"{p.StartTime.Hours}_{p.StartTime.Minutes:00}_{p.StartTime.Seconds:00}_{p.StartTime.Milliseconds:000}__" +
|
||||
$"{p.EndTime.Hours}_{p.EndTime.Minutes:00}_{p.EndTime.Seconds:00}_{p.EndTime.Milliseconds:000}_{(i + 1):00}{ext}";
|
||||
bmp.Save(Path.Combine(path, fileName), imageFormat);
|
||||
bmp.Dispose();
|
||||
Application.DoEvents();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
Cursor = Cursors.Default;
|
||||
_ocrMethodIndex = oldOcrIndex;
|
||||
SetButtonsEnabledAfterOcrDone();
|
||||
}
|
||||
|
||||
var text = string.Format(LanguageSettings.Current.ExportPngXml.XImagesSavedInY, _subtitle.Paragraphs.Count, path);
|
||||
using (var f = new ExportPngXmlDialogOpenFolder(text, path))
|
||||
{
|
||||
f.ShowDialog(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1686,7 +1686,7 @@ namespace Nikse.SubtitleEdit.Logic
|
||||
ExportCheetahCap = "Cheetah CAP...",
|
||||
ExportUltech130 = "Ultech caption...",
|
||||
ExportCustomTextFormat = "Export custom text format...",
|
||||
Exit = "E&xit"
|
||||
Exit = "E&xit",
|
||||
},
|
||||
|
||||
Edit = new LanguageStructure.Main.MainMenu.EditMenu
|
||||
@ -3330,6 +3330,7 @@ Keep changes?",
|
||||
AlsoTrainBold = "Also train bold",
|
||||
StartTraining = "Start training",
|
||||
NowTraining = "Now training font '{1}'. Total chars trained: {0:#,###,##0}, {2:#,###,##0} known",
|
||||
ImagesWithTimeCodesInFileName = "Images with time codes in file name...",
|
||||
};
|
||||
|
||||
VobSubOcrCharacter = new LanguageStructure.VobSubOcrCharacter
|
||||
|
@ -8086,6 +8086,9 @@ namespace Nikse.SubtitleEdit.Logic
|
||||
case "VobSubOcr/NowTraining":
|
||||
language.VobSubOcr.NowTraining = reader.Value;
|
||||
break;
|
||||
case "VobSubOcr/ImagesWithTimeCodesInFileName":
|
||||
language.VobSubOcr.ImagesWithTimeCodesInFileName = reader.Value;
|
||||
break;
|
||||
case "VobSubOcrCharacter/Title":
|
||||
language.VobSubOcrCharacter.Title = reader.Value;
|
||||
break;
|
||||
|
@ -3177,6 +3177,7 @@
|
||||
public string AlsoTrainBold { get; set; }
|
||||
public string StartTraining { get; set; }
|
||||
public string NowTraining { get; set; }
|
||||
public string ImagesWithTimeCodesInFileName { get; set; }
|
||||
}
|
||||
|
||||
public class VobSubOcrCharacter
|
||||
|
Loading…
Reference in New Issue
Block a user