C# 如何检测图表中的单个字符

C# 如何检测图表中的单个字符,c#,tesseract,C#,Tesseract,我有一个包含线条和标签的图表。我想使用Tesseract OCR来检测标签A、B、C、D、E的位置 (我是S.O.的新手,因此无法发布图像) 这是我的密码: var testImagePath = @"test.png"; using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.TesseractAndCube)) { engine.SetVariable("tessedit_char_white

我有一个包含线条和标签的图表。我想使用Tesseract OCR来检测标签A、B、C、D、E的位置

(我是S.O.的新手,因此无法发布图像)

这是我的密码:

var testImagePath = @"test.png";

using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.TesseractAndCube))
{
    engine.SetVariable("tessedit_char_whitelist", "ABCDE");
    engine.DefaultPageSegMode = PageSegMode.SingleBlock;

    using (var img = Pix.LoadFromFile(testImagePath))
    {
        using (var page = engine.Process(img))
        {
            var text = page.GetHOCRText(0);
        }
    }
}

这行不通,Tesseract被这条线弄糊涂了。有没有办法忽略该行,只提取字母?

字母的位置是否固定?也就是说,如果我将图像裁剪到示例图像中每个字母的位置,相同的位置是否适用于您打算处理的所有图像?不,该项目的目的是检测所有标签并找到它们的位置。后来,ABCDE。。。将替换为维度整数。我不确定是否有简单的修复方法。对Tesseract来说,评估它所看到的一切都是有意义的,包括线条。如果无法确定行或字母的位置,您如何期望Tesseract忽略行并关注字母?如果有办法将线条与字母区分开来(例如,不同的颜色),则可以对图像进行预处理(将线条颜色的像素变为白色);但我认为这不是一个可行的解决方案?谢谢你的帮助。我将尝试类似的方法,过滤掉线条,以便Tesseract只关注标签。