首页 > 解决方案 > 如何使用 tesseract 确定文本或页面的方向

问题描述

所以我一整天都在试图弄清楚这一点。我真的希望有人能够帮助我。我正在尝试编写一个可以处理 PDF 文档的软件。处理是指删除空白页和翻转扫描过的页面。

显然我在这里需要某种 OCR 库,所以我选择了 Tesseract。检测空页面很容易。但是 Orientation 属性似乎根本不起作用(编辑:不工作我的意思是它总是说“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());
   }
}

我希望有一个输出告诉我页面是否颠倒。这样我就知道它是否必须旋转。性能无所谓!我也对不同的方法和库持开放态度(只要它们是免费的)。

标签: c#visual-studio-2015ocrtesseract

解决方案


推荐阅读