Итак, я пытаюсь понять это целый день.И я очень надеюсь, что кто-нибудь сможет мне помочь.Я пытаюсь написать программное обеспечение, которое будет обрабатывать PDF-документ.Обработка означает удаление пустых страниц и вращающихся страниц, которые были отсканированы с ног на голову.
Очевидно, мне нужна какая-то библиотека OCR, поэтому я пошел с Tesseract.Обнаружение пустых страниц было достаточно простым.Но свойство Orientation, похоже, не работает вообще ( EDIT: , поскольку не работает, я имею в виду, что оно всегда говорит «PageUp»).Но из того, что я собрал до сих пор, это должно дать мне подсказку о том, перевернута ли моя страница или нет.Я что-то пропустил?Может быть, что-то, что должно быть включено в папку tessdata для этого?
Я также попробовал подход тестирования GetMeanConfidence, перевернул изображение, а затем сравнил MeanConfidences, потому что теоретически страница, которая не была перевернута, должна быть легче читаемой.Но разница настолько минимальна, что я не думаю, что это надежно.
И я переключил атрибут языка TesseractEngine.Я пробовал "eng", "deu" и "osd".Все с одинаковым результатом.
Bitmap image = new Bitmap(filepath);
var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
path = Path.Combine(path, "tessdata");
path = path.Replace("file:\\", "");
var engine = new TesseractEngine(path, "osd", EngineMode.TesseractOnly);
using (var img = PixConverter.ToPix(image))
{
using (var page = engine.Process(img, PageSegMode.AutoOsd))
{
var pageIterator = page.AnalyseLayout();
pageIterator.Begin();
var pageProperties = pageIterator.GetProperties();
Console.WriteLine(pageProperties.Orientation.ToString() +" "+
pageProperties.TextLineOrder + " " + pageProperties.DeskewAngle + " " +
pageProperties.WritingDirection);
Console.WriteLine(page.GetMeanConfidence());
}
}
Я ожидаю вывод, который сообщит мне, если страница перевернута.Так что я знаю, нужно ли это вращать или нет.Производительность не имеет значения!Я также открыт для разных подходов и библиотек (если они бесплатны).