人工智能听起来高大山,但很多人还不知道如何应用。这里就来介绍一个AI 技术的应用点。如果你掌握这项技术,那么可以单独拿出去售卖,一项技术需要的企业一年收费一万对方肯定接受。
不信你看下面那些大厂开发的AI应用的收费情况。对比一下,你就知道你要价一万是多么便宜了。
今天接到一个医疗行业对图文进行识别转换的功能需求。要求很简单,就是一些设备铭牌能够读取到上面的信息实现扫码录入。此外一些设备资料信息也要实现同步扫描成WORD文档。

最好也能实现平常手写的一些工单也能够图文识别录入,比如电子病历。
对于手写的文字信息,还没开始做的时候就了解到,手工文字识别起来其实挺难的,因为字迹潦草或者模糊的字体都比较难以识别到,特殊的符号识别也是问题,还涉及到中英文,不同国家文字的识别。虽然有这方面的担心,但如果因此字迹潦草而识别失败也不是我们的责任,所以此项问题可以忽略不计。对很多人来说实现一项技术功能点,其实还是挺有挑战的。毕竟大多数程序员平时做的最多是一些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;
}
}
}
这个就不多说什么了,有兴趣的朋友 ,可以一起讨论学习下,写好自己的大语言模型,拿出去售卖,也可以正点副业收入,你们说呢。