吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3951|回复: 17
收起左侧

[其他转载] C#Winfrom基于百度Ai开放平台进行个人文字识别

  [复制链接]
liu8359 发表于 2020-9-9 14:34
本帖最后由 liu8359 于 2020-9-9 14:44 编辑

image.png
一.下载dll

1.官方网站下载C# SDK压缩工具包。下载地址:https://ai.baidu.com/file/7D961BC013AB4AA7905001FAF89EE327
2.解压后,将 AipSdk.dll 和 Newtonsoft.Json.dll 中添加为引用。

二.获取API Key/Secret Key
1.打开百度智能云官网进行注册后登陆。网址:https://cloud.baidu.com/?from=console
image.png
2.进入文字识别工作台,这有很多接口可以都试试。
image.png
3.创建应用
image.png
image.png image.png
4.管理应用
image.png
image.png
三.代码部分
上传照片访问Api,输出字符串
[C#] 纯文本查看 复制代码
       string savePath = null;            //保存路径文件夹
        string newPath = null;            //保存路径
        string photoName = null;            //图片名称
        string saveName = null;         //保存名称
        
        /// <summary>
        /// 上传照片访问Api,输出字符串
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            //上传照片
            OpenFileDialog op = new OpenFileDialog();
            if (op.ShowDialog() == DialogResult.OK)
            {
                UploadPhoto(op);
            }

            //访问API
            var result = GetBaiDuApi();

            //获取字符串"["位置
            int IndexofA = result.ToString().IndexOf("[");
            int IndexofB = result.ToString().IndexOf("]");
            //截取位数字符串
            string baiDuApiJson = result.ToString().Substring(IndexofA, IndexofB - IndexofA + 1);
            //JSON转List
            JavaScriptSerializer baiDuApiSerializer = new JavaScriptSerializer();
            List<model> wordsModelList = baiDuApiSerializer.Deserialize<List<model>>(baiDuApiJson);
            
            //list转string
            List<string> StrList = new List<string>();
            wordsModelList.ForEach(t =>
            {
                string str = null;
                if (!string.IsNullOrEmpty(t.words))
                    str = t.words;
                StrList.Add(str);
            });
            string resultStr = string.Join("", StrList.ToArray());
            //文本框输出字符串
            this.textBox1.Text = resultStr;
        }

上传图片
[C#] 纯文本查看 复制代码
 /// <summary>
        /// 上传照片
        /// </summary>
        /// <returns></returns>
        private void UploadPhoto(OpenFileDialog op)
        {

            FileInfo fi = new FileInfo(op.FileName);
            if (fi.Exists)
            {
                //获取所在项目目录+"\temp"
                savePath = System.Windows.Forms.Application.StartupPath + @"\temp";
                photoName = fi.Name;
                //确保文件名称唯一性
                saveName = photoName.Substring(0, photoName.LastIndexOf(".")) + "_"
                + DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." + photoName.Substring(photoName.LastIndexOf(".") + 1);

                //savePath=@"D:\temp";
                //saveName="result.txt"; 
                //newPath = "D:\temp\result.txt";
                newPath = Path.Combine(savePath, saveName);

                //是否存在这个文件夹==存在?跳过:创建;
                if (!Directory.Exists(savePath))
                {
                    Directory.CreateDirectory(savePath);
                }
                //保存照片
                fi.CopyTo(newPath);
            }
        }


访问百度API
[C#] 纯文本查看 复制代码
 /// <summary>
        /// 访问百度API
        /// </summary>
        /// <returns></returns>
        public JObject GetBaiDuApi()
        {
            var API_KEY = "你的 Api Key";
            var SECRET_KEY = "你的 Secret Key";
            //访问接口
            var client = new Baidu.Aip.Ocr.Ocr(API_KEY, SECRET_KEY);
            client.Timeout = 60000;  // 修改超时时间


            var image = File.ReadAllBytes(newPath);
            //var url = "图片网址";

            // 调用通用文字识别, 图片参数为本地图片,可能会抛出网络等异常,请使用try/catch捕获
            //用户向服务请求识别某张图中的所有文字
            var result = client.GeneralBasic(image);        //本地图图片
            //var result = client.GeneralBasicUrl(url);     //网络图片
            //var result = client.Accurate(image);          //本地图片:相对于通用文字识别该产品精度更高,但是识别耗时会稍长。

            //var result = client.General(image);           //本地图片:通用文字识别(含位置信息版)
            //var result = client.GeneralUrl(url);          //网络图片:通用文字识别(含位置信息版)

            //var result = client.GeneralEnhanced(image);   //本地图片:调用通用文字识别(含生僻字版)
            //var result = client.GeneralEnhancedUrl(url);  //网络图片:调用通用文字识别(含生僻字版)

            //var result = client.WebImage(image);          //本地图片:用户向服务请求识别一些背景复杂,特殊字体的文字。
            //var result = client.WebImageUrl(url);         //网络图片:用户向服务请求识别一些背景复杂,特殊字体的文字。

            return result;
        }



model
[C#] 纯文本查看 复制代码
/// <summary>
    /// model
    /// </summary>
    public class model
    {
      public string words{get;set;}
    }



蓝奏云下载:https://www.lanzoui.com/iq480gh576b
土豪下载 PhotoToText.zip (1.21 MB, 下载次数: 23)

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
美的随想 + 1 + 1 谢谢@Thanks!
SJZ + 1 + 1 我很赞同!
陈腔滥调的K + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| liu8359 发表于 2020-9-9 14:54
rosemaryzed 发表于 2020-9-9 14:50
这个接口免费么 速度怎么样 可否研究下图片转文字

速度蛮快的。
通用文字识别(标准版),免费使用,50000次/天免费  QPS限制 2
美的随想 发表于 2020-9-9 16:27
liu8359 发表于 2020-9-9 15:33
原谅我没文化,第一次听说INI

也就是把key等参数放在配置文件里,C#的config文件
辉夜年华 发表于 2020-9-9 14:44
 楼主| liu8359 发表于 2020-9-9 14:46
辉夜年华 发表于 2020-9-9 14:44
差点以为是人脸识别

有人脸识别的API没研究呢
rosemaryzed 发表于 2020-9-9 14:50
这个接口免费么 速度怎么样 可否研究下图片转文字
辉夜年华 发表于 2020-9-9 15:06
liu8359 发表于 2020-9-9 14:46
有人脸识别的API没研究呢

研究研究,我估计很难,毕竟没素材
weikun444 发表于 2020-9-9 15:12
感谢交流,做成INI文件保存参数也是好的选择!
llq@xsh 发表于 2020-9-9 15:18
谢谢楼主的教程
 楼主| liu8359 发表于 2020-9-9 15:33
weikun444 发表于 2020-9-9 15:12
感谢交流,做成INI文件保存参数也是好的选择!

原谅我没文化,第一次听说INI
ChengXuHa 发表于 2020-9-9 15:35
主楼 代码有点问题想要请教,21156456方便联系一下吧。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 13:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表