当前位置: 首页 > news >正文

惊了!大模型连这样的验证码都能读懂_java_识别验证码

最近在看视觉大模型的能力,然后用了某网站的一个验证码试了试,竟然连这样的验证码都能认识,这个有点夸张,尤其是这个9和6颠倒的都能理解,现在的能力已经这么牛了么

具体就是用了通义最新的qwen vl模型+spring ai alibaba 。

这个识别能力和理解能力,绝对能处理非常多的不同类型的任务了。

下面是我具体做的代码 ,你也可以试试。 

24年12月截止了,赶紧来拿奖金!总计30万,Spring AI Alibaba 应用框架挑战赛开赛点此了解

Spring AI Alibaba的简单介绍:

Spring AI Alibaba是基于Spring AI框架构建的实现,特别针对阿里云的百炼系列云产品大模型进行接入。它支持包括对话、文生图、文生语音等多种生成式AI功能,并提供了如OutputParser、Prompt Template等实用工具。Spring AI Alibaba的核心优势在于其标准化API设计,使得开发者能够轻松切换不同AI服务提供商(如通义、Llama等国产大模型),仅需通过简单的配置更改即可完成。这不仅简化了开发流程,还极大提高了应用的灵活性与可移植性。

基于Spring AI Alibaba做验证码识别

1. 环境准备
  • JDK版本要求:JDK 17或以上。
  • Spring Boot版本要求:3.3.x或更高。
2. 获取API Key

首先,你需要在阿里云申请通义千问的API key。按照以下步骤操作:

  • 访问阿里云百炼页面并登录你的账号。
  • 开通“百炼大模型推理”服务。
  • 服务开通成功后,在控制台创建一个新的API key,并妥善保管好这个key,因为后续配置会用到它。

设置环境变量以存储API key:

export AI_DASHSCOPE_API_KEY=${REPLACE-WITH-VALID-API-KEY}

请确保将REPLACE-WITH-VALID-API-KEY替换为你实际获得的API key。

3. 开通图像生成模型

接下来需要开通用于图像识别的通义万象模型:

  • 登录百炼控制台。
  • 在左侧列表栏选择模型广场 -> 图像生成 -> 找到通义万象。
  • 点击该模型对应的“API调用”按钮。
  • 记录下模型的英文名称(qwen-vl-max-latest),这将在后面的配置中使用。
4. 配置Maven依赖

为了能够使用Spring AI Alibaba的功能,我们需要添加一些额外的仓库以及相关的Maven依赖项至pom.xml文件中。

添加Spring仓库支持(包括快照仓库):

<repositories><repository><id>sonatype-snapshots</id><url>https://oss.sonatype.org/content/repositories/snapshots</url><snapshots><enabled>true</enabled></snapshots></repository><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository></repositories>

然后,在<dependencies>标签内加入对spring-ai-alibaba-starter的支持:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.4</version><relativePath/> <!-- lookup parent from repository -->
</parent><dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>1.0.0-M3.1</version></dependency><!-- 其他依赖 -->
</dependencies>
5. 编写控制器逻辑

最后一步是编写处理图像识别请求的控制器代码。这里我们定义了一个简单的RESTful API端点/ai/imageRecognition,用来接收待分析的图像文件路径,并将其作为输入发送给AI模型进行处理。

@RestController
@RequestMapping("/ai")
public class CaptchaRecognitionController {private final ChatModel chatModel;@Value("classpath:your_captcha.png") // 将这里的your_captcha.png替换成你实际使用的图片名private Resource captchaImage;public CaptchaRecognitionController(ChatModel chatModel) {this.chatModel = chatModel;}private static final String DEFAULT_PROMPT = "我应该按照要求,顺序的点击图片的哪里,才能继续操作?给我方向和坐标";private static final String DEFAULT_MODEL = "qwen-vl-max-latest";@GetMapping("/imageRecognition")public Flux<String> recognizeCaptcha(@RequestParam(value = "prompt", required = false, defaultValue = DEFAULT_PROMPT) String prompt,HttpServletResponse response) throws Exception {response.setCharacterEncoding("UTF-8");List<Media> mediaList = List.of(new Media(MimeTypeUtils.IMAGE_PNG, captchaImage));UserMessage message = new UserMessage(prompt, mediaList);message.getMetadata().put(DashScopeChatModel.MESSAGE_FORMAT, MessageFormat.IMAGE);Flux<ChatResponse> fluxResponse = chatModel.stream(new Prompt(message, DashScopeChatOptions.builder().withModel(DEFAULT_MODEL).withMultiModel(true).build()));return fluxResponse.map(resp -> resp.getResult().getOutput().getContent());}
}

注意:上述代码示例假设你的验证码图片被放置在了项目的src/main/resources目录下,并命名为your_captcha.png。如果实际情况有所不同,请相应调整@Value注解里的值。

通过上述步骤,你应该已经成功集成了Spring AI Alibaba框架,并能够实现对本地验证码图像的文字识别功能。当客户端访问指定URL时,系统将以流的形式返回识别结果。

http://www.lryc.cn/news/472397.html

相关文章:

  • 【小白学机器学习26】 极大似然估计,K2检验,logit逻辑回归(对数回归)(未完成----)
  • 【日常记录-Java】SLF4J扫描实现框架的过程
  • uni-app 获取 android 手机 IMEI码
  • 后台管理系统的通用权限解决方案(八)认证机制介绍、JWT介绍与jjwt框架的使用
  • 接口测试 —— Postman 变量了解一下!
  • 鸿蒙系统:核心特性、发展历程与面临的机遇与挑战
  • 从0到1,用Rust轻松制作电子书
  • 半天入门!锂电池剩余寿命预测(Python)
  • 学生党头戴式耳机哪款音质更胜一筹?TOP4好音质头戴式耳机推荐
  • 数据结构 ——— 二叉树的概念及结构
  • 【React】React 的核心设计思想
  • C++ 二叉树进阶:相关习题解析
  • Matlab实现蚁群算法求解旅行商优化问题(TSP)(理论+例子+程序)
  • 2024年10月HarmonyOS应用开发者基础认证全新题库
  • kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?
  • 数据分析案例-苹果品质数据可视化分析+建模预测
  • 沈阳乐晟睿浩科技有限公司抖音小店运营创新
  • 【前端】CSS知识梳理
  • 【undefined reference to xxx】zookeeper库编译和安装 / sylar项目ubuntu20系统编译
  • IDEA解决 properties 文件乱码问题
  • 超越Jira?2024年探索项目管理新工具!
  • 大模型,多模态大模型面试问题【计算图,LLama,交叉熵,SiLU,RLHF】
  • 凌雄科技打造DaaS模式,IT设备产业链由内而外嬗变升级
  • Oracle视频基础1.2.1练习
  • 15、基于AT89C52的数码电子时钟proteus仿真设计
  • UML总结
  • 网站被浏览器提示不安全怎么办?——附解决方案
  • “前端兼容——CSS篇”(进阶版)
  • 使用Docker Compose简化微服务部署
  • 2025考研各省市网上确认时间汇总!