找回密码
 立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

查看: 26|回复: 0

[心得] aardio 图像识别

[复制链接]
  • TA的每日心情
    奋斗
    昨天 09:12
  • 签到天数: 54 天

    连续签到: 3 天

    [LV.5]常住居民I

    29

    主题

    59

    回帖

    751

    积分

    高级会员

    积分
    751
    来自: 中国贵州贵阳
    发表于 3 天前 | 显示全部楼层 |阅读模式 来自: 中国贵州贵阳
    非业余 - aardio 编程语言 - 非官方问答社区
    风行者三期培训:Aardio+Python+Flutter,1000集课程让你成为全栈开发高手!https://mp.weixin.qq.com/s/_WOoHFtITUyLk2k7BXYGkg
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    aardio风行者第三期培训班https://mp.weixin.qq.com/s/cdZcvFiAWhlYTaSrQGCPvA
    本帖最后由 XWCXF 于 2025-6-3 13:27 编辑

    今天终于学会了编程中的 OCR 技术!原来计算机真的能识别图片里的文字,这种让程序 "看懂" 图像的能力太神奇了,赶紧把学习过程记录下来。

    一、初识OCR:让程序读懂图片文字

    (一)简单识别实验

    OCR就像给程序装上"火眼金睛",我先试了试识别本地图片:

    [AAuto] 纯文本查看 复制代码
    import console;
    import string.ocrLite
    import string.ocrLite.defaultModels;
    
    var imgpath = "图片路径";
    var ocr = string.ocrLite ();
    
    var bit = gdip.bitmap(imgpath);
    var text = ocr.detectBitmap(bit);
    
    for(i, value in table.eachIndex(text.blocks)){
    console.log(value.text)
    }
    console.pause();


    运行时就像看着程序用"放大镜"逐字扫描图片,当控制台输出文字的那一刻,一种满满的自豪感由然而出!

    接着试了网络图片识别,原来只要用inet.http()模块获取图片数据,后面的步骤和本地识别差不多:

    [AAuto] 纯文本查看 复制代码
    import inet.http;
    import console;
    import string.ocrLite
    import string.ocrLite.defaultModels;
    var http = inet.http(); 
    var imgurl = "图片的url"; 
    var ingData = http.get(imgurl)
    var ocr = string.ocrLite();
    var bit = gdip.bitmap(ingData);
    var text = ocr.detectBitmap(bit);
    for(i, value in table.eachIndex(text.blocks)){
        console.log(value.text)
    }
    console.pause();


    (二)提高识别准确率的秘诀
    我发现图片质量不好时,识别会出错。还能用"图片美容术":

    灰度化处理:把彩色图片变成黑白照片,文字会更清晰
    [AAuto] 纯文本查看 复制代码
    import soImage[/align][align=left]import console;[/align][align=left]import string.ocrLite
    import string.ocrLite.defaultModels;
    
    img = soImage()
    img.load("需要转换为灰度图的图片路径")
    // 转换图片为灰度图
    img.grayScale()
    img.save("保存路径")
    
    imgpath = "保存路径"
    var ocr = string.ocrLite();
    var bit = gdip.bitmap(imgpath);
    var text = ocr.detectBitmap(bit);
    for(i, value in table.eachIndex(text.blocks)){
        console.log(value.text)
    }
    console.pause();

    试了下,原本有点模糊的图片处理后,文字边缘果然更清楚了!


    二、挑战
    今天的挑战是处理这张网络图片:https://aardio.online/upload/files/20250423/1745395458.png

    我把学到的知识组合起来,写出了完整代码:

    [AAuto] 纯文本查看 复制代码
    import soImage;
    import console;
    import inet.http;
    import string.ocrLite;
    import string.ocrLite.defaultModels;
    
    var img = soImage();
    var http = inet.http();
    
    var imageUrl = "https://aardio.online/upload/files/20250423/1745395458.png";
    string.save("D:/aaaaaaac.jpg", http.get(imageUrl));
    
    img.load("D:/aaaaaaac.jpg");
    //图片灰度化处理
    img.grayScale();
    img.save("D:/aaabbb.jpg");
    
    var ocr = string.ocrLite();
    var bit = gdip.bitmap("D:/aaabbb.jpg");
    var imgtext = ocr.detectBitmap(bit);
    
    for(i, value in table.eachIndex(imgtext.blocks)) {
        console.log(value.text)
    }
    console.pause();



    运行时看着程序一步步下载、处理、识别,最后正确输出文字时,成就感爆棚!原来复杂任务都是由一个个小步骤组成的。

    三、总结
    今天最大的收获是明白OCR不是魔法,而是通过"图片预处理+识别算法"实现的。当图片质量差时,预处理就像给眼睛戴上眼镜,让OCR能看得更清楚。




    非业余 - aardio 编程语言 - 非官方问答社区
    风行者三期培训:Aardio+Python+Flutter,1000集课程让你成为全栈开发高手!https://mp.weixin.qq.com/s/_WOoHFtITUyLk2k7BXYGkg
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    aardio风行者第三期培训班https://mp.weixin.qq.com/s/cdZcvFiAWhlYTaSrQGCPvA
    回复

    使用道具 举报

    *滑块验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|非业余 - aardio 编程语言 - 非官方问答社区 知道创宇云防御

    GMT+8, 2025-6-6 07:11 , Processed in 0.096667 second(s), 31 queries .

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

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