Tesseract OCR - 如何训练这样的图像

Posted

技术标签:

【中文标题】Tesseract OCR - 如何训练这样的图像【英文标题】:Tesseract OCR - How to Train For an Image Like This 【发布时间】:2020-06-17 12:31:50 【问题描述】:

我有一个包含.Net wrapper for tesseract-ocr nuget 的 MVC C# 应用程序。我使用的当前版本是 v4.1.0-beta1。我尝试扫描的图像如下所示

我的目标是提取玩家姓名和左上方的数字。

我尝试让 OCR 扫描场地/音高区域,但结果与基准相差甚远。因此,我决定将所有球员姓名和所有数字分开,如下图所示。评分区域标记为蓝色,玩家姓名标记为红色。如您所见,名称和等级之间的距离始终相同。

我当前的代码设置如下所示。

public void Get(HttpPostedFileBase file)

    using (var engine = new TesseractEngine(Path.Combine(HttpRuntime.AppDomainAppPath, "tessdata"), "eng+deu", EngineMode.Default))
    
        var bitmap = (Bitmap)Image.FromStream(file.InputStream, true, true);

        using (var img = PixConverter.ToPix(bitmap))
        
            SetPlayerRatings(engine, img);
        
    


private void SetPlayerRatings(TesseractEngine engine, Pix img)

    var width = 285;
    var height = 76;

    var textPositions = Service.Get<Formation>(this.FormationId).TextPositions.ToList();

    foreach (var textPosition in textPositions)
    
        var playerRating = GetPlayerData(engine, img, new Rect(textPosition.X, textPosition.Y, width, height));
    


private static PlayerRating GetPlayerData(TesseractEngine engine, Pix img, Rect region)

    using (var page = engine.Process(img, region, PageSegMode.Auto))
    
        var playerName = page.GetText();
    

    var ratingRegion = new Rect(region.X1, region.Y1 - 52, 80, 50);

    using (var page = engine.Process(img, ratingRegion, PageSegMode.Auto))
    
        var playerRating = page.GetText();
    

此代码正在为第一张图片生成正确的结果。

有什么方法可以训练 OCR,这样我就不必为每个玩家位置训练 X 和 Y 坐标了?我只想指定球场的区域,然后在评分中读取 OCR,然后是球员姓名。

【问题讨论】:

【参考方案1】:

通过指定坐标,您解决了有关image processing 的几个问题。因此,如果您不想指定坐标,则必须处理它们:例如从 OCR 区域移除图形组件,如 T 恤、线条。

下一个想法:Tesseract API 有选项 GetComponentImages(我希望 C# 包装器也应该提供它 - 我不熟悉 C#),因此您可以迭代找到的组件。

【讨论】:

以上是关于Tesseract OCR - 如何训练这样的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何用三种不同的笔迹训练相同数字的tesseract-ocr?

如何通过 tesseract OCR 读取黑色背景图像上的黑色文本?

Tesseract-OCR-03-图片文字识别

Tesseract OCR 培训的替代方案?

如何使用 Tesseract 对图像进行 OCR

按行将 PDF 拆分为图像(OCR 模型训练)