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

();

var modelInfo = OnlineFullModels.ChineseV3;

using var cts = new CancellationTokenSource();

var timeoutTask = Task.Delay(timeoutMs, cts.Token)
    .ContinueWith(t =>
    {
        if (!t.IsCanceled)
        {
            onStatusChanged?.Invoke("正在初始化OCR模型,请稍候...");
        }
    });

FullOcrModel model = await modelInfo.DownloadAsync();

cts.Cancel();

using (PaddleOcrAll all = new(model)

{
    AllowRotateDetection = true,
    Enable180Classification = true,
})
{
    Stopwatch sw = Stopwatch.StartNew();
    result = all.Run(src);
    foreach (PaddleOcrResultRegion region in result.Regions)
    {
        resultText.Add(region.Text);
    }
}
src.Dispose();
return (resultText, result);

} “` 这样,用户在模型首次下载或初始化时会看到“正在初始化OCR模型,请稍候…”,其余时间显示“正在识别…”,体验更友好。

回顾

项目目标

本项目旨在利用 Github Copilot 辅助开发,从零实现一个基于 AI 的 OCR(光学字符识别)工具。项目采用 .NET 9 和 WPF 技术栈,集成了 PaddleOCR 作为核心识别引擎,实现了图片文字识别、区域选择、结果高亮与复制等实用功能。

主要技术与依赖

• 开发语言与平台:C#,.NET 9,WPF • OCR引擎:Sdcb.OpenVINO.PaddleOCR • 图像处理:OpenCvSharp • 界面交互:WPF,支持拖拽、粘贴、截图等多种图片输入方式 • AI辅助开发:Github Copilot 提供代码建议与自动补全

核心功能

  1. 图片输入 • 支持文件选择、拖拽、粘贴、屏幕截图等多种方式加载图片。

  2. OCR识别 • 调用 PaddleOCR 进行文字识别,支持中文、英文等多语种。 • 识别结果实时显示,支持区域高亮和文字复制。

  3. 用户体验优化 • 首次模型下载时,异步回调 UI,友好提示“正在初始化OCR模型,请稍候…”,避免用户等待时无响应。 • 识别过程有进度提示,提升交互体验。

  4. 结果交互 • 支持鼠标框选图片区域,提取并复制选中区域的文字。 • 右键点击可复制单个识别文本。

    关键实现思路

    • AI驱动开发:通过 Copilot 自动生成代码骨架、方法实现和注释,大幅提升开发效率。 • 异步与回调:模型下载和识别过程均为异步,UI 通过回调及时反馈进度和状态。 • 图像与坐标映射:实现了图片与控件坐标的精准映射,保证高亮和选区准确。

    总结

    本项目充分发挥了 Github Copilot 在 AI 辅助开发中的优势,实现了一个功能完善、交互友好的 OCR 工具。开发过程中 Copilot 提供了大量代码建议,极大提升了开发效率和代码质量。项目结构清晰,易于扩展,适合 AI+开发实战学习与参考。