基于C#编写一个接受图片流的OCR识别接口

 更新时间:2024年03月08日 11:41:59   作者:搬砖的诗人Z  
这篇文章主要为大家详细介绍了如何使用C#写一个接受图片流的OCR识别接口,以及测试用例调用接口,感兴趣的小伙伴可以跟随小编一起学习一下

示例代码

using Microsoft.AspNetCore.Mvc;
using System;
using System.IO;
using System.Threading.Tasks;

namespace MyAPI.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class OCRController : ControllerBase
    {
        [HttpPost("OCR")]
        public async Task<IActionResult> OCRTextAsync()
        {
            try
            {
                // 检查是否有文件被上传
                if (Request.Form.Files.Count > 0)
                {
                    // 获取上传的文件
                    var file = Request.Form.Files[0];

                    // 将文件转换为字节数组
                    using (var memoryStream = new MemoryStream())
                    {
                        await file.CopyToAsync(memoryStream);
                        byte[] imageData = memoryStream.ToArray();

                        return Ok("OCR result");
                    }
                }
                else
                {
                    return BadRequest("No file uploaded");
                }
            }
            catch (Exception ex)
            {
                return StatusCode(500, $"Internal server error: {ex}");
            }
        }
    }
}

调用示例代码:

    private async void button1_Click(object sender, EventArgs e)
    {
        try
        {
            OpenFileDialog fileDialog = new OpenFileDialog();
            fileDialog.Multiselect = true;
            fileDialog.Title = "请选择图片";
            // fileDialog.Filter = "所有文件(*pdf*)|*.jpg*"; //设置要选择的文件的类型
            if (fileDialog.ShowDialog() == DialogResult.OK)
            {
                string file = fileDialog.FileName;//返回文件的完整路径     
                                                  // textBox1.Text = file;
                pictureBox1.Image = Image.FromFile(file);

                MemoryStream stream = new MemoryStream();
                pictureBox1.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] imagedata = stream.GetBuffer();
                await TestApiAsync(imagedata);
            }

        }
        catch (Exception ex)
        {

            MessageBox.Show("请选择正确的图片");
        }
    }

    private async Task TestApiAsync(byte[] imageData)
    {
        string url = "http://localhost:5000/api/OCR/OCR";

        // 创建 HttpClient 实例
        using (var httpClient = new HttpClient())
        using (var formData = new MultipartFormDataContent())
        {
            try
            {
                formData.Add(new ByteArrayContent(imageData), "file", "image.jpg");

                // 发送 POST 请求到接口
                HttpResponseMessage response = await httpClient.PostAsync(url, formData);

                // 检查响应是否成功
                if (response.IsSuccessStatusCode)
                {
                    // 读取响应内容
                    string result = await response.Content.ReadAsStringAsync();
                    Console.WriteLine("OCR 结果:" + result);
                }
                else
                {
                    Console.WriteLine("请求失败,状态码:" + response.StatusCode);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("发生异常:" + ex.Message);
            }
        }
    }

知识拓展

下面小编为大家整理了使用C#实现OCR本地图片识别文字的示例代码,希望对大家有所帮助

文字识别

 var apiKey = "F--------------------X"; //自己申请的key
  var secretKey = "H----------------------"; //自己申请的key
  
  Ocr client = new Ocr(apiKey, secretKey)
    {
            Timeout = 30000//延时时间
   };
//本地图片识别文字
var image = File.ReadAllBytes("图片文件路径");
	// 调用通用文字识别, 图片参数为本地图片,可能会抛出网络等异常,请使用try/catch捕获
	var result = client.GeneralBasic(image);
	Console.WriteLine(result);
	// 如果有可选参数
	var options = new Dictionary<string, object>{
	    {"language_type", "CHN_ENG"},
	    {"detect_direction", "true"},
	    {"detect_language", "true"},
	    {"probability", "true"}
	};
	// 带参数调用通用文字识别, 图片参数为本地图片
	result = client.GeneralBasic(image, options);

网络图片识别

//网络图片识别
 var url = "https//www.x.com/sample.jpg";
	// 调用通用文字识别, 图片参数为远程url图片,可能会抛出网络等异常,请使用try/catch捕获
	var result = client.GeneralBasicUrl(url);
	Console.WriteLine(result);
	// 如果有可选参数
	var options = new Dictionary<string, object>{
	    {"language_type", "CHN_ENG"},
	    {"detect_direction", "true"},
	    {"detect_language", "true"},
	    {"probability", "true"}
	};
	// 带参数调用通用文字识别, 图片参数为远程url图片
	result = client.GeneralBasicUrl(url, options);

到此这篇关于基于C#编写一个接受图片流的OCR识别接口的文章就介绍到这了,更多相关C# OCR识别接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#获取注册表指定键值操作

    C#获取注册表指定键值操作

    这篇文章主要介绍了C#获取注册表指定键值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C#使用Datatable导出Excel

    C#使用Datatable导出Excel

    这篇文章主要为大家详细介绍了C#使用Datatable导出Excel的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • 利用C#如何给PDF文档添加文本与图片页眉

    利用C#如何给PDF文档添加文本与图片页眉

    页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码、日期、公司徽标、文档标题、文件名或作者名等等。那么我们如何以编程的方式添加页眉呢?这篇文章主要介绍了利用C#如何给PDF文档添加文本与图片页眉的相关资料,需要的朋友可以参考下
    2017-01-01
  • C#实现绘制面形图表的方法详解

    C#实现绘制面形图表的方法详解

    这篇文章主要介绍了C#实现绘制面形图表的方法,对于C#初学者很好的掌握C#图形绘制有一定的借鉴价值,需要的朋友可以参考下
    2014-07-07
  • 浅谈C#中简单的异常引发与处理操作

    浅谈C#中简单的异常引发与处理操作

    这篇文章主要介绍了C#中简单的异常引发与处理操作,讲到了Exception类和try...catch及throw语句的基本使用,需要的朋友可以参考下
    2016-02-02
  • C#使用SharpZipLib压缩解压文件

    C#使用SharpZipLib压缩解压文件

    这篇文章介绍了C#使用SharpZipLib压缩解压文件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C# 使用Microsoft Edge WebView2的相关总结

    C# 使用Microsoft Edge WebView2的相关总结

    这篇文章主要介绍了C# 使用Microsoft Edge WebView2的相关总结,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • 基于C#技术实现身份证识别功能

    基于C#技术实现身份证识别功能

    这篇文章主要介绍了基于C#技术实现身份证识别功能的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • 在.net应用程序中运行其它EXE文件的方法

    在.net应用程序中运行其它EXE文件的方法

    这篇文章主要介绍了在.net应用程序中运行其它EXE文件的方法,涉及C#进程操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • C# 屏蔽关键字的实现方法

    C# 屏蔽关键字的实现方法

    前段时间在公司做了一个论坛屏蔽关键字的功能,我做的比较简单、实用~ 现在拿出来给博友们分享下..也希望大家能顶顶我~
    2013-05-05

最新评论