2016-09-15 3 views
1

Я пытаюсь реализовать Tesseract OCR в моем проекте. У меня есть два проекта в моем решении:Tesseract OCR в ASP.NET MVC

  • Portal - что ASP.NET MVC App
  • OCR - который является библиотека классов, где у меня есть Тессеракт

В классе OCR библиотека, у меня есть метод:

using (var ocrEngine = new TesseractEngine(/*WHAT DOES COME HERE?*/, "eng", EngineMode.Default)) 
      { 

       using (var pix = PixConverter.ToPix(new Bitmap(imageFilePath))) 
       { 
        using (var page = ocrEngine.Process(pix)) 
        { 
         output = page.GetText(); 
        } 
       } 
      } 

в моем проекте у меня есть папка, tessdata, но я не знаю, как ссылаться на него, чтобы заставить все работать. Я пробовал:

@"./tessdata" 

или

System.Web.Hosting.HostingEnvironment.MapPath("~/tessdata") 

, но ни один из них не работал.

ответ

1

Я использую Server.MapPath, а демо работает нормально.

using (var engine = new TesseractEngine(Server.MapPath(@"~/tessdata"), "eng", EngineMode.Default)) 
    { 
     // have to load Pix via a bitmap since Pix doesn't support loading a stream. 
     using (var image = new System.Drawing.Bitmap(file.InputStream)) 
     { 
      using (var pix = PixConverter.ToPix(image)) 
      { 

       using (var page = engine.Process(pix)) 
       { 

       } 
      } 
     } 
    } 

Вы можете просмотреть полный исходный код here

+0

Это прекрасно работает для проектов asp.net mvc, но, как я уже писал, у меня есть два проекта в решении, и тот, в котором я пытаюсь сделать работу с tesseract, - это Class Library, а не ASP.NET MVC project , Я не могу использовать Server.MapPath() – Siemko

+1

@Siemko Я вижу, это может помочь http://stackoverflow.com/questions/3032592/resources-at-class-library-project# – Quannt

1

Вы можете использовать ниже подход:

Path.Combine(HttpRuntime.AppDomainAppPath,"tessdata") 

, как показано ниже:

using (var engine = new TesseractEngine(Path.Combine(HttpRuntime.AppDomainAppPath,"tessdata"), "eng", EngineMode.Default)) 
    { 
     // have to load Pix via a bitmap since Pix doesn't support loading a stream. 
     using (var image = new System.Drawing.Bitmap(file.InputStream)) 
     { 
      using (var pix = PixConverter.ToPix(image)) 
      { 

       using (var page = engine.Process(pix)) 
       { 

       } 
      } 
     } 
    } 

Надеется, что это помогает вам

+0

HttpRuntime.AppDomainAppPath вернуть каталог od Portal (проект запуска), чего я хочу достичь, - это получить каталог проекта OCR. например. не «C: \ Projects \ mypro \ Portal \», но «C: \ Projects \ mypro \ OCR \ – Siemko

+0

Почему вы не используете статический путь –

0

Что я сделал, просто переместил папку tessdata в главный проект ASP.NET MVC, а затем использовал простой Path.Combine(HttpRuntime.AppDomainAppPath,"tessdata"), как предложил @Sunil Kumar.

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