Оболочка C # .net для tessnet - PullRequest
0 голосов
/ 08 февраля 2011

Я пытаюсь написать оболочку для библиотеки Tessnet OCR.Я получаю сообщение об ошибке: «Невозможно выполнить маршалирование« возвращаемого значения »: универсальные типы нельзя маршалировать».для этого раздела кода

List<Word> k = OCRWrapper.DoOCR(new Bitmap(@"C:\Data\pdf2image\auto.png"), new Rectangle(0, 0, 55, 27));

Мой класс-обёртка

class OCRWrapper
{
    [DllImport("TrueMarble.dll")]
    public static extern List<Word> DoOCR(Bitmap b, Rectangle rec);
}

, пожалуйста, помогите мне, кто-нибудь может подсказать мне написать этот код

Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 февраля 2011

Вы ошибаетесь, Tessnet уже является упаковщиком управляемых классов в Tesseract.Вы не используете [DllImport], просто добавляете ссылку на сборку и используете классы напрямую.Образец кода и сборка для загрузки доступны здесь .

Bitmap image = new Bitmap("eurotext.tif");
tessnet2.Tesseract ocr = new tessnet2.Tesseract();
ocr.SetVariable("tessedit_char_whitelist", "0123456789"); // If digit only
ocr.Init(@"c:\temp", "fra", false); // To use correct tessdata

List<tessnet2.Word> result = ocr.DoOCR(image, Rectangle.Empty);
foreach (tessnet2.Word word in result)
    Console.WriteLine("{0} : {1}", word.Confidence, word.Text);
0 голосов
/ 08 февраля 2011

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

...