You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中从内存中的图像提取文本

直接使用Bitmap变量实现IronTesseract文本提取

你的问题出在错误创建了myBitmap对象,new Bitmap(bm.Width, bm.Height, gr)这个构造函数并不会复制截图内容,而是生成一个关联指定Graphics的空Bitmap,传递空对象自然无法识别文本。

直接使用截图得到的bm对象即可实现无文件依赖的OCR,无需额外创建新Bitmap,也不需要保存图像到本地。以下是修正后的完整代码:

using (var bm = new Bitmap(680, 280))
{
    using (var gr = Graphics.FromImage(bm))
    {
        // 捕获屏幕区域到bm对象
        gr.CopyFromScreen(-1355, 430, 0, 0, bm.Size);

        // 初始化OCR引擎
        var Ocr = new IronTesseract
        {
            Language = OcrLanguage.French
        };

        // 直接使用bm对象作为输入
        using (var Input = new OcrInput())
        {
            Input.AddImage(bm); // 这里直接传入截图得到的Bitmap
            OcrResult Result = Ocr.Read(Input);
            MessageBox.Show(Result.Text);
        }
    }
}

关键说明

  • 移除了bm.Save()和错误的myBitmap创建步骤,直接复用截图生成的bm对象
  • OcrInput.AddImage()本身支持接收Bitmap类型参数,无需先转存为文件
  • 确保所有实现IDisposable的对象(Bitmap、Graphics、IronTesseract、OcrInput)都用using语句包裹,避免资源泄漏

内容的提问来源于stack exchange,提问作者Agfasion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:33:30