aardio 图像识别

article/2025/6/7 12:50:49

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

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

(一)简单识别实验

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

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()模块获取图片数据,后面的步骤和本地识别差不多:

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();

截图二

 

(二)提高识别准确率的秘诀

我发现图片质量不好时,识别会出错。还能用"图片美容术":

  1. 1. 灰度化处理:把彩色图片变成黑白照片,文字会更清晰
import soImage
import console;
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
我把学到的知识组合起来,写出了完整代码:

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能看得更清楚。


http://www.hkcw.cn/article/mTwIOVCewI.shtml

相关文章

【北邮 操作系统】第十二章 文件系统实现

一、文件的物理结构 1.1 文件块、磁盘块 类似于内存分页,磁盘中的存储单元也会被分为一个个“块/磁盘块/物理块”。很多操作系统中,磁盘块的大小与内存块、页面的大小相同 内存与磁盘之间的数据交换(即读/写操作、磁盘I/0)都是以“块”为单位进行的。即…

VS2022下C++ Boost库安装与使用使用

一.Boost概述 1.简介 Boost 是一个广泛使用的 C 库集合,提供了许多高质量、可移植、高效的工具和组件,被视为 C 标准库的延伸。自 1998 年成立以来,Boost 已成为 C 社区的核心资源,许多 Boost 库通过实践验证后被纳入 C 标准&am…

Unity-UI组件详解

今天我们来学习Unity的UI的详解,这部分的内容相对较少,对于程序员来说主要的工作是负责将各种格式的图片呈现在显示器上并允许操作这些图片。 本篇帖子的理论依据依然是官方开源的UGUI代码,网址为:GitHub - Unity-Technologies/u…

化工厂爆炸事件看制造业AI转型

一、事件警示:化工制造安全风险不容忽视 近日,某化学有限公司发生事故。涉事工厂主体工程建设有2座硝化装置区,1座加氢装置区,均属于危险工艺生产装置。硝化反应通常属于强放热反应,原料及产物具有爆炸危险性&#xf…

Ubuntu系统安装与配置NTP时间同步服务

Ubuntu系统安装与配置NTP时间同步服务 一、NTP服务介绍NTP服务简介工作原理系统环境准备检查当前时间状态二、方案选择:systemd-timesyncd vs ntpd三、使用systemd-timesyncd时间同步1. 方案介绍2. 配置优化3. 应用配置4. 验证状态5. 检查当前时间状态6. 查看当前实践四、使用…

【小红书】API接口,获取笔记核心数据

小红书笔记核心数据API接口详解 - 深圳小于科技提供专业数据服务 深圳小于科技(官网:https://www.szlessthan.com)推出的小红书笔记核心数据API接口,为开发者提供精准的笔记互动数据分析能力,助力内容运营与商业决策。…

ElasticStack技术之logstash介绍

一、什么是Logstash Logstash 是 Elastic Stack(ELK Stack)中的一个开源数据处理管道工具,主要用于收集、解析、过滤和传输数据。它支持多种输入源,如文件、网络、数据库等,能够灵活地对数据进行处理,比如…

InternLM2/LM2.5/ViT/VL1.5/VL2.0笔记: 核心点解析

00 前言 本文主要是记录一下关于多模态大模型InternLM/InternVL系列的一些要点的理解。还是那句话,好记性,不如烂笔头。本文当成个人笔记用,行文风格和先前写的LLaVA系列一致。本文的重点是讲解多模态模型InternVL 1.5,但是Intern…

帝可得 - 设备管理

一. 需求说明 设备管理主要涉及到三个功能模块,业务流程如下: 新增设备类型: 允许管理员定义新的售货机型号,包括其规格和容量。 新增设备: 在新的设备类型定义后,系统应允许添加新的售货机实例,并将它们分配到特定的…

建设指南 | Cloud Apps + AI Apps端到端智能应用开发平台

在“云AI”作为基础设施的时代,研发、运维、信息化等部门,通常会面临的棘手问题都有哪些: 算力资源难以统一调度和管理;AI算法研发环境搭建复杂;不同模型部署方式繁杂,统一监控难;AI应用开发效…

【灵动Mini-F5265-OB】vscode+gcc工程创建、下载、调试

【前言】 【灵动Mini-F5265-OB】在官方的例程中提供了mdk、IAR的开发环境,使用起来非常方便。有位大佬也提供了一个gcc的示例,但是我使用vscode的keil插件进行工程创建,但是提示pack是对不上的。所以我决定重新创建我的vscode来创建开发环境。…

【AI论文】VF-Eval:评估多模态大型语言模型(MLLM)在生成人工智能生成内容(AIGC)视频反馈方面的能力

摘要:多模态大型语言模型(MLLMs)最近在视频问答领域得到了广泛研究。然而,现有的大多数评估都侧重于自然视频,而忽视了合成视频,例如人工智能生成的内容(AIGC)。与此同时&#xff0c…

Docker 镜像(或 Docker 容器)中查找文件命令

在 Docker 镜像(或 Docker 容器)中运行如下两个命令时: cd / find . -name generate.py它们的含义如下,我们来一行一行详细拆解,并结合例子讲解: ✅ 第一行:cd / ✅ 含义 cd 是“change dire…

DiskGenius专业版v6.0.1.1645:分区管理、数据恢复、备份还原,一应俱全!

各位小伙伴,大家好!今天阿灿给大家带来一款超好用的分区工具,DiskGenius专业版。这款工具堪称电脑管理界的“瑞士军刀”,功能强大,现在出了新版本v6.0.1.1645,简繁中文单文件便携版,使用超方便。…

‌CDGP|数据治理的低效性:企业AI落地的另一大挑战

在数字化转型的浪潮中,人工智能(AI)已成为推动企业创新发展的重要力量。然而,尽管AI技术具有巨大的潜力和优势,但许多企业在尝试落地AI项目时却面临着重重挑战。其中,数据治理的低效性尤为突出,…

linux学习第19、20天(父子进程)

ps ajx -->查看pid,ppid,gid,sid 父子进程 父子进程相同: 刚fork后,data段、text段、堆,栈、环境变量、全局变量、进程工作目录位置、信号处理方式 父子进程不同: 进程id、返回值、各自的…

AI写作革命:重塑创作未来

人工智能写作技术:革新创作方式的智能利器 人工智能写作技术(AI写作技术)是指利用自然语言处理(NLP)、机器学习(ML)等人工智能技术,辅助或自动化完成文本的创作、编辑与优化。这一技…

法律大语言模型(Legal LLM)技术架构

目录 摘要 1 法律AI大模型技术架构 1.1 核心架构分层 1.2 法律知识增强机制 2 关键技术突破与对比 2.1 法律专用组件创新 2.2 性能对比(合同审查场景) 3 开发部署实战指南 3.1 环境搭建流程 3.2 合同审查代码示例 4 行业应用与挑战 4.1 典型场景效能提升 4.2 关…

深入理解 C# Razor Pages:构建现代 Web 应用的利器

在现代 Web 开发中,选择合适的框架至关重要。ASP.NET Core 提供了多种开发模式,其中 Razor Pages 因其简单性、高效性和易用性,成为构建页面导向 Web 应用的首选方案。相比于传统的 MVC(Model-View-Controller)模式&am…

AgenticSeek 本地部署教程(Windows 系统)

#工作记录 Fosowl/agenticSeek:完全本地的 Manus AI。 部署排错参考资料在文末 或查找往期笔记。 AgenticSeek 本地部署教程(Windows 系统) 一、环境准备 1. 安装必备工具 Docker Desktop 下载地址:Docker Desktop 官网 安装后启…