Эмгу CV, Tessdata - не могу загрузить язык pol - PullRequest
1 голос
/ 28 марта 2020

Я скачал EmguCV v4.2.0 и папку tessdata с языками и вставил эту папку в папку bin. В папке tessdata у меня много языков, включая eng и pol.

В C# у меня есть такой код:

 using (ImageParser ip = new ImageParser(@"C:\Emgu\emgucv-windesktop 4.2.0.3662\bin\tessdata", "eng"))
 {
     if (ip.OcrImage("C:\\Users\\v-user1\\Pictures\\Saved Pictures\\bied.PNG") != string.Empty)
     {
         w.AddRange(ip?.Words.ToList<string>());
     }
 }

Когда я устанавливаю "eng", ImageParser создается правильно, но при переходе на язык «pol» я получаю сообщение об ошибке:

System.AccessViolationException: 'Attempted to read or write protected memory. This is often an indication that other memory is corrupt.'

В чем причина этой ошибки?

1 Ответ

0 голосов
/ 29 марта 2020

Из того, что я понял, вы пытаетесь загрузить файл tessdata, чтобы Tesseract мог ссылаться на него при попытке обнаружить текст. Приведенный ниже метод - это то, что я использовал в прошлом, и он отлично сработал для меня. В более ранних версиях Emgucv функция setVariable и whitelist не работала, но я не уверен, была ли она исправлена ​​в более поздних версиях.

  public static void LoadOCREngine(String dataPath)
  {
     //create OCR engine
     _ocr = new Tesseract(dataPath, "eng", OcrEngineMode.TesseractCubeCombined);
     _ocr.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ-1234567890");
  }
...