Приложение .NET, использующее Tessnet2, не работает - PullRequest
1 голос
/ 02 ноября 2009

У меня есть приложение, которое использует Tessnet2 . Приложение не работает, когда я пытаюсь вызвать его метод Init.
Ошибка просто ужасна - никаких исключений (ЛЮБЫХ), никаких следов ошибок, даже окна «Отправить отчет». Процесс приложения просто сброшен .

Проблемный код:

Recogniser = new Tesseract();
Recogniser.SetVariable("tessedit_char_whitelist", Whitelist);
Recogniser.SetVariable("unlv_tilde_crunching", false);
Recogniser.Init(null, "eng", false); // FAILURE IS HERE

Несколько замечаний, которые могут быть полезны:

  • Tessnet2 требует Visual C ++ 2008 Runtime . Не уверен, что это должен быть msvcm90.dll, msvcm80.dll.
  • Приложение настольное WPF.
  • Среда разработки: VS 2008 SP, .NET 3.5 SP1
  • Раньше это работало (мне кажется, я добавил веб-ссылку для использования веб-службы SOAP, но попытался удалить ее безрезультатно).
  • Модульные тесты работают без ошибок .

Из этих наблюдений это звучит как проблема с самим приложением WPF.

Только одна часть информации, которую я имею - это вывод во время отладки:

'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'D:\...\bin\Debug\OcrForm.WinApp.vshost.exe', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Core\3.5.0.0__b77a5c561934e089\System.Core.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Runtime.Serialization\3.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Web.Services\2.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Xml.Linq\3.5.0.0__b77a5c561934e089\System.Xml.Linq.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Data.DataSetExtensions\3.5.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\UIAutomationProvider\3.0.0.0__31bf3856ad364e35\UIAutomationProvider.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\WindowsBase\3.0.0.0__31bf3856ad364e35\WindowsBase.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_32\PresentationCore\3.0.0.0__31bf3856ad364e35\PresentationCore.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\PresentationFramework\3.0.0.0__31bf3856ad364e35\PresentationFramework.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.  
The thread 0x1784 has exited with code 0 (0x0).
The thread 0x1144 has exited with code 0 (0x0).
The thread 0x16a4 has exited with code 0 (0x0).
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'D:\...\bin\Debug\OcrForm.WinApp.exe', Symbols loaded.
Step into: Stepping over non-user code 'OcrForm.WinApp.App.App'
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Step into: Stepping over non-user code 'OcrForm.WinApp.App.InitializeComponent'
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\PresentationFramework.Classic\3.0.0.0__31bf3856ad364e35\PresentationFramework.Classic.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
The thread 0x374 has exited with code 0 (0x0).
The thread 0x13cc has exited with code 0 (0x0).
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'D:\...\bin\Debug\OcrForm.dll', Symbols loaded.
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'D:\...\bin\Debug\Commons.dll', Symbols loaded.
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'D:\...\bin\Debug\tessnet2_32.dll', Symbols loaded.
'OcrForm.WinApp.vshost.exe' (Managed): Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_6f74963e\msvcm90.dll'  

И последний кусок, когда приложение выходит из строя:

The program '[5384] OcrForm.WinApp.vshost.exe: Managed' has exited with code 1 (0x1).

ОБНОВЛЕНИЕ: Я проверил журнал событий. Нет никаких записей с источником 'SideBySide'. Ниже приведена только запись, связанная с этой проблемой, но, к сожалению, она мне мало что говорит:

Event Type: Error
Event Source:   .NET Runtime 2.0 Error Reporting
Event Category: None
Event ID:   5000
Date:       28/10/2009
Time:       4:07:57 PM
User:       N/A
Computer:   ARGO11
Description:
EventType clr20r3, P1 ocrform.winapp.exe, P2 1.0.0.0, P3 4ae7d16c, P4 ocrform, P5 1.0.0.0, P6 4ae1333f, P7 10f, P8 1, P9 system.typeinitialization, P10 NIL.

Заранее спасибо за любые советы.

Ответы [ 2 ]

1 голос
/ 02 ноября 2009

Посмотрите в журнале системных событий Windows (Пуск-> Настройки-> Панель управления-> Управление-> Просмотр событий). Возможно, вы найдете там записи из диспетчера Windows SideBySide.

Последняя строка вашего вывода показывает, что DLL из SideBySide был загружен.

У меня были подобные проблемы в последнее время. Нет подсказки о причине сбоя, пока мы не заглянем в журнал событий.

0 голосов
/ 04 ноября 2009

Я разобрался в проблеме.

Краткий ответ: Рабочий каталог приложения был изменен после использования SaveFileDialog . Это привело к тому, что Tesseract не смог найти связанные файлы.

Пара вещей, которые я сделал для этого:

  1. Создано новое приложение WPF, использующее Tessnet2.
  2. Запустил -> точно так же не получилось.
  3. Я обнаружил, что пропустил добавление файлов, необходимых для работы с tesseract.
  4. Добавил их -> приложение начало работать.

Чем перейти к моему приложению:
Я проверил файлы, необходимые для tesseract. Все на месте и действительны.

Поэтому должно быть что-то еще, связанное с невозможностью доступа к файлам:

  1. Нет разрешений.
  2. Неверное местоположение.

проверил 1-й - все нормально.
Проверено 2-е - все файлы находятся в правильном расположении относительно текущего каталога приложения .

Видишь смысл ??
НО оказывается, что файлы должны быть в том же РАБОЧЕМ ДИРЕКТОРЕ , как и приложение.

Рабочий каталог был изменен после использования SaveFileDialog !

Если я не использую диалоговое окно, приложение работает.
Как я мог понять это из всей "информации об ошибках" ...
Надеюсь, это кому-нибудь поможет.

...