Я продолжаю получать исключения при чтении Тессеракта в своей программе, но когда я создаю новую программу, она работает безупречно

#c# #ocr #tesseract

Вопрос:

Исключение создается для приложения, в котором я хочу реализовать распознавание текста, но когда я пытаюсь создать новое приложение с тем же кодом, оно работает безупречно. Я боюсь переделать всю работу, которую я сделал только для Тессеракта.

 
  private void button1_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog dlg = new OpenFileDialog())
            {
                dlg.Title = "Open Image";
                if (dlg.ShowDialog() == DialogResult.OK)
                {

                    pictureBox1.Image = new Bitmap(dlg.FileName);

                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Bitmap img = new Bitmap(pictureBox1.Image);
            TesseractEngine engine = new TesseractEngine("./tessdata", "eng", EngineMode.Default);
            Page page = engine.Process(img, PageSegMode.Auto);
            string result = page.GetText();
            textBox1.Text = resu<
        }

 
 This exception was originally thrown at this call stack:
    System.IO.Path.NormalizePath(string, bool, int, bool) in path.cs
    System.IO.Path.InternalGetDirectoryName(string) in path.cs
    InteropDotNet.LibraryLoader.CheckExecutingAssemblyDomain(string, string)
    InteropDotNet.LibraryLoader.LoadLibrary(string, string)
    InteropRuntimeImplementer.LeptonicaApiSignaturesInstance.LeptonicaApiSignaturesImplementation.LeptonicaApiSignaturesImplementation(InteropDotNet.LibraryLoader) 
 

Продолжает вызывать это исключение, я попробовал его на свежих Winforms, и он работает, но он не работает над проектом, который у меня есть.

Комментарии:

1.Возникла аналогичная проблема. Мое происходит, когда я публикую исполняемый файл, запуск в выпуске или отладке работает нормально. Мой стек вызовов-это: at System.IO.Path.Combine(String , String ) at InteropDotNet.LibraryLoader.InternalLoadLibrary(String baseDirectory, String platformName, String fileName) at InteropDotNet.LibraryLoader.CheckExecutingAssemblyDomain(String fileName, String platformName) at InteropDotNet.LibraryLoader.LoadLibrary(String fileName, String platformName) at InteropRuntimeImplementer.LeptonicaApiSignaturesInstance.LeptonicaApiSignaturesImplementation..ctor(LibraryLoader loader)

Ответ №1:

На самом деле я только что создал новый, все переделал, и он работает безупречно. Но если кто-нибудь все еще может сказать мне, что не так с описанной выше проблемой, это было бы большой помощью.