使用百度API OCR 从图片中识别文字 DEMO

使用百度API OCR 从图片中识别文字 DEMO,视频中的有些字体百度无法识别,出现不少汉字乱码,改讯飞的API可以较好的识别出汉字。

//************ 收起 复制 API Key

//************ 收起 复制 Secret Key

//

var json = OCRHelper.GetToken("API Key", "Secret Key");

var result = JsonConvert.DeserializeObject(json);

string token = result.access_token;

string fn = @"C:\Users\Administrator\source\repos\Video2GifTxt\bin\Debug\Images\0004.jpg";

OCRHelper.generalBasic(token, fn);

public class OCRHelper

{

public static string GetToken(string clientId, string clientSecret)

{

//https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=&client_secret=&

string requestUrl = $"https://aip.baidubce.com/oauth/2.0/token?client_id={clientId}&client_secret={clientSecret}&grant_type=client_credentials";

try

{

// 创建 HttpWebRequest 实例

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

// 设置请求方法和超时(-1 表示不超时,对应原代码的 Timeout = -1)

request.Method = "POST";

request.Timeout = Timeout.Infinite;

// 设置请求头(与原代码一致的 Content-Type 和 Accept)

request.ContentType = "application/json";

request.Accept = "application/json";

// 原代码中请求体为空字符串,此处保持一致

string requestBody = "";

byte[] bodyBytes = Encoding.UTF8.GetBytes(requestBody);

// 设置请求体长度(必须,否则可能导致请求失败)

request.ContentLength = bodyBytes.Length;

// 写入请求体(即使为空也需写入空字节,确保请求格式正确)

using (Stream requestStream = request.GetRequestStream())

{

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

}

// 发送请求并获取响应

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

{

// 读取响应内容

using (Stream responseStream = response.GetResponseStream())

using (StreamReader reader = new StreamReader(responseStream, Encoding.UTF8))

{

string responseContent = reader.ReadToEnd();

return responseContent;

}

}

}

catch (WebException ex)

{

// 若服务器返回错误响应,读取错误内容

if (ex.Response != null)

{

using (HttpWebResponse errorResponse = (HttpWebResponse)ex.Response)

using (Stream errorStream = errorResponse.GetResponseStream())

using (StreamReader errorReader = new StreamReader(errorStream, Encoding.UTF8))

{

string errorContent = errorReader.ReadToEnd();

return $"错误响应内容:{errorContent}";

}

}

return $"未知异常:{ex.Message}";

}

catch (Exception ex)

{

// 处理其他未知异常

return $"未知异常:{ex.Message}";

}

}

//https://console.bce.baidu.com/iam/#/iam/accesslist

//https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu

//已创建2个,最多可创建20个

// 通用文字识别

public static string generalBasic(string token, string fn)

{

//https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic

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_basic?access_token=" + token;

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

Encoding encoding = Encoding.Default;

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

request.Method = "post";

request.KeepAlive = true;

// 图片的base64编码

string base64 = getFileBase64(fn);

String str = "image=" + HttpUtility.UrlEncode(base64)+ "&language_type=CHN_ENG";

byte[] buffer = encoding.GetBytes(str);

request.ContentLength = buffer.Length;

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

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

StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);

string result = reader.ReadToEnd();

//{"words_result":[{"words":"璞嗚鐐栭"},{"words":"STE W E D"},{"words":"R1BS A N D.G"},{"words":"RE E.N"},{"words":"BEAN S"},{"words":"璞嗚銆佹帓楠ㄩ兘鏄垜寰堝枩娆㈠悆鐨勯鏉?},{"words":"Both ribs and green beans are my favorites"},{"words":"銆侶ESHI"},{"words":"XIACHU,銆?}],"words_result_num":9,"log_id":1963870944209842937}

Console.WriteLine("通用文字识别:");

Console.WriteLine(result);

return result;

}

public static 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;

}

}

文件名精灵2025年最新版 机器翻译 AI智能
...
批量修改文件名称、文件夹名称

免费使用 功能无限制

全面接入机器自动翻译功能,主流AI大模型智能改名

方便快捷,支持正则表达式、无需安装功能齐全、支持定制无广告、无插件,放心使用。

免费下载
本站中所有的计算器的计算结果仅供参考,本站对此结果的准确性不承担任何责任,实际数额以银行/保险公司/国家相关机构确认的结果为准。
在线客服QQ:543690914,备案号: 苏ICP备15037649号-27。东海县白塔埠镇佳诚电脑经营部版权所有。