c# - 如何使用 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());
}
}
我希望有一个输出告诉我页面是否颠倒。这样我就知道它是否必须旋转。性能无所谓!我也对不同的方法和库持开放态度(只要它们是免费的)。