2015-01-20 3 views
1

Я использую распознавание распознавания tesseract для небольшого исследовательского проекта. Запуск и тестирование локально отлично работает. К сожалению, у меня проблемы с развертыванием (WPF ClickOnce-Deployment), когда я использую Tesseract OCR .NET Wrapper. Я получаю следующее сообщение об ошибке, когда я запускаю мой progrm (после установки):Tesseract ClickOnce Deployment failed

Exception has been thrown by the target of an invocation. 
    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 
    at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 
    at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark) 
    at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    at System.Activator.CreateInstance(Type type, Object[] args) 
    at InteropDotNet.InteropRuntimeImplementer.CreateInstance[T]() 
    at Tesseract.Interop.LeptonicaApi.Initialize() 
    at Tesseract.Interop.TessApi.Initialize() 
    at Tesseract.Interop.TessApi.get_Native() 
    at Tesseract.TesseractEngine..ctor(String datapath, String language, EngineMode engineMode) 
    at WindowsContextTracker.Helpers.OcrEngine..ctor() 
    at WindowsContextTracker.Helpers.OcrEngine.GetInstance() 
    at WindowsContextTracker.Daemon.RunContextRecognition(Object sender, EventArgs e) 
    at System.Windows.Threading.DispatcherTimer.FireTick(Object unused) 
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 
    at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) 

Моего код:

var path = @"C:\ProgramData\myProgram\tessdata"; 
_tEngine = new TesseractEngine(path, "eng", EngineMode.Default); 

Я попытался various combinations of the path (динамически, статический). В местоположении пути есть каталог tessdata, который включает 9 файлов (eng.cube.bigrams, eng.traineddata и т. Д.).

Я был бы очень благодарен за любой намек, ведущий к решению моей проблемы. Спасибо!

ответ

0

К сожалению, я не нашел подходящего решения для своей проблемы. WPF ClickOnceDeployments всегда хранятся во временной папке пользователя AppData. Это папка, в которой вам также необходимо (вручную) скопировать папку tessdata, чтобы сделать работу tesseract api. Затем вам также не нужно будет добавлять путь к папке tessdata. Мне кажется, что этот путь не работает ...

Это не решение, но единственный способ заставить его работать ... Итак, если вы знаете лучший способ, пожалуйста, позвольте мне знать!

Редактировать: Благодаря Sicos1977 (Github) я нашел решение этой второй проблемы. Он указал мне на Stackoverflow page, где я узнал, как копировать целую папку во время установки в место установки.

Смежные вопросы