测试Ocr工具IronOCR(续3:集成ShareX截屏功能)

文章介绍了如何将ShareX项目的截屏功能集成到一个使用IronOCR进行图片文字识别的.NET程序中。通过使用ShareX的TaskSettings、Screenshot和RegionCaptureForm类,实现了自动截屏、区域选择以及识别截图中文字的功能。由于.NET6不支持WinRT,作者遇到了兼容性问题,最终通过将项目回退到.NETFramework4.8解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  前文《测试Ocr工具IronOCR(续2:编写圈选图片识别文本的程序)》实现了加载本地图片并圈选图片中的文字区域后调用IronOCR识别文本,同时《开源项目ShareX的源码学习(截屏及矩形区域选择功能)》中梳理了开源项目ShareX中截屏功能的实现思路及实现类。本文记录将ShareX项目中的截屏(主要是截屏和区域截图功能)集成到之前的圈选图片识别文本的程序,实现自动截屏并能圈选并识别截图中的文字。
  ShareX开源项目中,ShareX项目中命名空间ShareX中的TaskSettings类用于定义截图前后及过程中的设置,本文直接使用默认设置即可,ScreenCaptureLib项目命名空间ShareX.ScreenCaptureLib中的Screenshot类支持全屏截图,而同命名空间内的RegionCaptureForm窗口类,支持以指定图片为画板,截取并返回画板中选中区域中的图片内容(类似于windows自带的截图功能)。只要使用上述3个类,即可在圈选图片识别文本的程序(后续简称ReadImageTextByIronOcr项目)中实现截图功能。
  将ShareX项目的输出类型设置为类库,在ReadImageTextByIronOcr项目中添加对ShareX项目和ScreenCaptureLib项目的引用,然后添加如下代码:

	Bitmap canvas;
    TaskSettings taskSettings = new TaskSettings();
    Screenshot screenshot = TaskHelpers.GetScreenshot(taskSettings);
    screenshot.CaptureCursor = false;
    
    //全屏截图,并将其作为后续区域选择的画板
    canvas = screenshot.CaptureFullscreen();

	//弹出区域选择窗口
    using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Default, taskSettings.CaptureSettingsReference.SurfaceOptions, canvas))
    {
        form.ShowDialog();

        Bitmap result = form.GetResultImage();

        if (result != null)
        {
            if (m_image != null)
            {
                m_image.Dispose();
            }

            m_image = result;

            this.pnlImage.Refresh();
            UpdateScrollSize();
        }
    }

  编译ReadImageTextByIronOcr项目,报如下的错误信息。百度错误信息,原因大致是ShareX是.net framework4.8编写的,采用了 WinRT技术,但是ReadImageTextByIronOcr项目是.net6编写的,但 .NET 5 或更高版本未内置对 WinRT 的支持。尝试了参考文献1中给出的解决方式,但是没有解决问题。
在这里插入图片描述

  采用了最笨的解决方法,重新用.net framework4.8编写的ReadImageTextByIronOcr项目(编写过程中才发现.net 6的winform项目中窗口设计器中的控件无法直接复制、粘贴到.net framework4.8的winform窗口设计器中),再编译即可正常编辑运行。
  最后是程序运行截图,分别是程序主界面、截图界面、截图后的文字识别界面。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文献:
[1]https://learn.microsoft.com/zh-cn/dotnet/core/tools/sdk-errors/netsdk1149

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值