首页 » 软件开发 » 人工智能AI之OCR 图文识别技术分享(识别人工智能技术自己的图文)

人工智能AI之OCR 图文识别技术分享(识别人工智能技术自己的图文)

落叶飘零 2024-07-23 17:57:42 0

扫一扫用手机浏览

文章目录 [+]

人工智能听起来高大山,但很多人还不知道如何应用。
这里就来介绍一个AI 技术的应用点。
如果你掌握这项技术,那么可以单独拿出去售卖,一项技术需要的企业一年收费一万对方肯定接受。

不信你看下面那些大厂开发的AI应用的收费情况。
对比一下,你就知道你要价一万是多么便宜了。

今天接到一个医疗行业对图文进行识别转换的功能需求。
要求很简单,就是一些设备铭牌能够读取到上面的信息实现扫码录入。
此外一些设备资料信息也要实现同步扫描成WORD文档。

人工智能AI之OCR 图文识别技术分享(识别人工智能技术自己的图文) 软件开发
(图片来自网络侵删)

最好也能实现平常手写的一些工单也能够图文识别录入,比如电子病历。

对于手写的文字信息,还没开始做的时候就了解到,手工文字识别起来其实挺难的,因为字迹潦草或者模糊的字体都比较难以识别到,特殊的符号识别也是问题,还涉及到中英文,不同国家文字的识别。
虽然有这方面的担心,但如果因此字迹潦草而识别失败也不是我们的责任,所以此项问题可以忽略不计。
对很多人来说实现一项技术功能点,其实还是挺有挑战的。
毕竟大多数程序员平时做的最多是一些CRUD 的功能。

闲话不多说,目前开发方向决定使用第三方人工智能AI技术。

听起来有点高大上喔。

以下是我根据百度智能云 查找到的相关实现 图文识别的方法:

首先注册账号,登陆到后台:https://login.bce.baidu.com/

创建应用: 申请获取client_id 和 client_secret

实现起来很简单,代码直接调用实现。
以下是代码:

/// <summary>

/// 百度智能云 获取通用文字 识别

/// </summary>

/// <returns></returns>

[HttpPost]

public string OCR_Baidu()

{

//string API_KEY = "FyVpAiu3bnQnk7JtJLYWw1wSp";

//string SECRET_KEY = "o3BXVmsJNRhdHbKevotGIFKw3z56191kFl";

string imageFilePath = @"C:\Users\Administrator\Desktop\工单.jpg";//设备铭牌.png

string token = GetAccessToken();

string host = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" + token;

host =$"https://aip.baidubce.com/rest/2.0/ocr/v1/accurate?access_token=" + token; ;//通用文字识别(高精度含位置版)

// host =$"https://aip.baidubce.com/rest/2.0/ocr/v1/general?access_token=" + token; //通用文字识别(标准含位置版)

Encoding encoding = Encoding.Default;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);

request.Method = "post";

request.KeepAlive = true;

request.ContentType = "application/x-www-form-urlencoded";

request.Accept = "application/json";

// 图片的base64编码

string base64 = getFileBase64(imageFilePath);

string str = "image=" + HttpUtility.UrlEncode(base64) + "&detect_direction=false¶graph=false&probability=false";

byte[] buffer = Encoding.UTF8.GetBytes(str);

request.ContentLength = buffer.Length;

request.GetRequestStream().Write(buffer, 0, buffer.Length);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

StreamReader reader = new StreamReader(response.GetResponseStream());

string result = reader.ReadToEnd();

return result;

}

private String getFileBase64(String fileName)

{

FileStream filestream = new FileStream(fileName, FileMode.Open);

byte[] arr = new byte[filestream.Length];

filestream.Read(arr, 0, (int)filestream.Length);

string baser64 = Convert.ToBase64String(arr);

filestream.Close();

return baser64;

}

//签名

private string GetAccessToken()

{

string requestData = "grant_type=client_credentials&client_id=XFyVpAi11u3bnQnk7JtJLYWwwSp&client_secret=oX3BXVmsJNRhdHbKevotGI22z569kFl";

byte[] byteData = Encoding.UTF8.GetBytes(requestData);

HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"https://aip.baidubce.com/oauth/2.0/token");

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

request.ContentLength = byteData.Length;

using (Stream requestStream = request.GetRequestStream())

{

requestStream.Write(byteData, 0, byteData.Length);

}

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))

{

string responseData = streamReader.ReadToEnd();

//Console.WriteLine(responseData);

var result = JsonConvert.DeserializeObject<dynamic>(responseData);

return result.access_token.ToString();

}

}

能够实现文字的识别,但文字格式需要自己去单独处理。

不要试图直接用我的client_id ,因为client_id值做了改动,想要实现这个功能可以自己去申请自己的账号和client_id值

其实代码挺简单的,但研究和调试出结果还是花去大半天时间。
如果企业想要使用这些AI图文识别技术,找任何技术公司都是要按次数收费的,如果有单独的建模需求,还得另外收复。

而下面一种方法,就是你自己建立自己的大语言数字库模型。

就是自己用技术去写自己需要的大数据模型来实现图文识别简单来说就是用Tesseract 方法 训练字体。
这个需要大家会python编程 ,能够建立自己的熟练库。

[HttpPost]

public string OCR_Tesseract()

{

string imageFilePath = @"C:\Users\Administrator\Desktop\设备铭牌.png";

using (var engine = new TesseractEngine(@"E:\tessdata2", "chi_sim", EngineMode.Default))

{

using (var img = Pix.LoadFromFile(imageFilePath))

{

var page = engine.Process(img);

img.Dispose();

object tt = page.GetMeanConfidence(); //打印识别率 0.5 不到

var text = page.GetText().Replace("\n", "").Replace(" ", ""); //打印识别文本 //替换'/n'为'(空)'//替换'(空格)'为'(空)'

return EntityExFunction.DefaultFailureRequestEntityJson;

}

}

}

这个就不多说什么了,有兴趣的朋友 ,可以一起讨论学习下,写好自己的大语言模型,拿出去售卖,也可以正点副业收入,你们说呢。

标签:

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读3 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0