Github Copilot 实战: 从零开始用AI写一个OCR工具

();

    FullOcrModel model = await OnlineFullModels.ChineseV3.DownloadAsync();

using (PaddleOcrAll all = new(model)

    {
        AllowRotateDetection = true,
        Enable180Classification = true,
    })
    {
        Stopwatch sw = Stopwatch.StartNew();
        result = all.Run(src);
        Console.WriteLine($"elapsed={sw.ElapsedMilliseconds} ms");
        Console.WriteLine("Detected all texts: \n" + result.Text);
        foreach (PaddleOcrResultRegion region in result.Regions)
        {
            Console.WriteLine($"Text: {region.Text}, Score: {region.Score}, RectCenter: {region.Rect.Center}, RectSize:    {region.Rect.Size}, Angle: {region.Rect.Angle}");
            resultText.Add(region.Text);
        }
    }
    src.Dispose();
    return (resultText, result);
}

} “`

A. 提示词 ”实现拖放,粘贴图片或者点击打开选择文件获取一张图片, 并且调用ocr服务,将结果绘图到原图上, 右边显示相应的文本“

下面是一个完整的 WPF 方案,支持拖放图片、粘贴图片、点击选择图片,并调用 OCR 服务,将识别结果绘制到原图上,右侧显示文本。代码已适配你的 PaddleOCRService,并假设其 StartOCR(byte[] image) 返回识别结果(如文本框列表)。

  1. MainWindow.xaml(UI布局)

”`csharp

        <columndefinition width="2*">
        <columndefinition width="*">
    </columndefinition></columndefinition></grid.columndefinitions>
    <border grid.column="0" margin="10" borderbrush="Gray" borderthickness="1" background="#FFF" mouseleftbuttonup="ImageBorder_MouseLeftButtonUp" allowdrop="True" drop="ImageBorder_Drop">
        <img x:name="MainImage" stretch="Uniform" src=""/>
    </border>
    <scrollviewer grid.column="1" margin="10">
        <textbox x:name="OcrTextBox" acceptsreturn="True" verticalscrollbarvisibility="Auto" textwrapping="Wrap" fontsize="16">
    </textbox></scrollviewer>