当前位置: 首页 > 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时,系统将以流的形式返回识别结果。

相关文章:

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

最近在看视觉大模型的能力&#xff0c;然后用了某网站的一个验证码试了试&#xff0c;竟然连这样的验证码都能认识&#xff0c;这个有点夸张&#xff0c;尤其是这个9和6颠倒的都能理解&#xff0c;现在的能力已经这么牛了么 具体就是用了通义最新的qwen vl模型spring ai alibab…...

【小白学机器学习26】 极大似然估计,K2检验,logit逻辑回归(对数回归)(未完成----)

目录 1 先从一个例题出来&#xff0c;预期值和现实值的差异怎么评价&#xff1f; 1.1 这样一个问题 1.2 我们的一般分析 1.3 用到的关键点1 1.4 但是差距多远&#xff0c;算是远呢&#xff1f; 2 极大似然估计 2.1 极大似然估计的目的 2.1.1 极大似然估计要解决什么问题…...

【日常记录-Java】SLF4J扫描实现框架的过程

1. 简介 SLF4J(Simple Logging Facade for Java)作为一种简单的门面或抽象&#xff0c;服务于其他各种日志框架&#xff0c;例如JUL、log4j、logback等&#xff0c;核心作用有两项&#xff1a; 提供日志接口&#xff1b;提供获取具体日志对象的方法&#xff1b; 2. 扫描过程 …...

uni-app 获取 android 手机 IMEI码

1、需求来源 最近项目上需要获取手机的IMEI码&#xff0c;并且在更换手机号登录后&#xff0c;需要提示重新更新IMEI码。 2、需求拆分 2.1 获取 IMEI 码 查阅 uni-app 官网发现在android 10 已经无法获取imei码&#xff0c;所以对于这个需求拆分成两种情况。 第一种情况&am…...

后台管理系统的通用权限解决方案(八)认证机制介绍、JWT介绍与jjwt框架的使用

文章目录 1 认证机制介绍1.1 HTTP Basic Auth1.2 Cookie-Session Auth1.3 OAuth1.4 Token Auth 2 JWT2.1 JWT介绍2.2 JWT的数据结构2.2.1 JWT头2.2.2 JWT有效载荷2.2.3 JWT签名 3 jjwt3.1 jjwt介绍3.2 jjwt案例 1 认证机制介绍 1.1 HTTP Basic Auth HTTP Basic Auth 是一种简…...

接口测试 —— Postman 变量了解一下!

Postman变量是在Postman工具中使用的一种特殊功能&#xff0c;用于存储和管理动态数据。它们可以用于在请求的不同部分、环境或集合之间共享和重复使用值。 Postman变量有以下几种类型&#xff1a; 1、环境变量&#xff08;Environment Variables&#xff09;: 环境变量是在…...

鸿蒙系统:核心特性、发展历程与面临的机遇与挑战

好动与不满足是进步的第一必需品 文章目录 前言重要特点和组成部分核心特性主要组件发展历程 机遇挑战总结 前言 鸿蒙系统&#xff08;HarmonyOS&#xff09;是由华为技术有限公司开发的一款面向全场景的分布式操作系统。它旨在为用户提供更加流畅、安全且高效的数字生活体验&…...

从0到1,用Rust轻松制作电子书

我之前简单提到过用 Rust 做电子书&#xff0c;今天分享下如何用Rust做电子书。制作电子书其实用途广泛&#xff0c;不仅可以用于技术文档&#xff08;对技术人来说非常方便&#xff09;&#xff0c;也可以制作用户手册、笔记、教程等&#xff0c;还可以应用于文学创作。 如果…...

半天入门!锂电池剩余寿命预测(Python)

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享&#xff01; EMD变体分解效果最好算法——CEEMDAN&#xff08;五&#xff09;-CSDN博客 拒绝信息泄露&#xff01;VMD滚动分…...

学生党头戴式耳机哪款音质更胜一筹?TOP4好音质头戴式耳机推荐

在挑选头戴式耳机时&#xff0c;市场上琳琅满目的品牌和型号常常让人目不暇接。究竟哪个学生党头戴式耳机哪款音质更胜一筹&#xff1f;这已成为许多人面临的难题。由于每个人对耳机的偏好各有侧重——一些人追求音质的纯净&#xff0c;一些人重视佩戴的舒适性&#xff0c;而另…...

数据结构 ——— 二叉树的概念及结构

目录 二叉树的概念 特殊的二叉树 一、满二叉树 二、完全二叉树 二叉树的概念 二叉树树示意图&#xff1a; 从以上二叉树示意图可以看出&#xff1a; 二叉树每个节点的度不大于 2 &#xff0c;那么整个二叉树的度也不大于 2 &#xff0c;但是也不是每个节点都必须有 2 个…...

【React】React 的核心设计思想

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 React 的核心设计思想引言声明式编程声明式 vs 命令式示例 组件化组件的优势组件…...

C++ 二叉树进阶:相关习题解析

目录 1. 二叉树创建字符串。 2. 二叉树的分层遍历1 3. 二叉树的分层遍历2 4. 二叉树的最近公共祖先 5. 将二叉搜索树转换为排序的双向链表 6. 从前序与中序遍历序列构造二叉树 7. 从中序与后序遍历序列构造二叉树 8. 二叉树的前序遍历&#xff0c;非递归迭代实现 9.…...

Matlab实现蚁群算法求解旅行商优化问题(TSP)(理论+例子+程序)

一、蚁群算法 蚁群算法由意大利学者Dorigo M等根据自然界蚂蚁觅食行为提岀。蚂蚁觅食行为表示大量蚂蚁组成的群体构成一个信息正反馈机制&#xff0c;在同一时间内路径越短蚂蚁分泌的信息就越多&#xff0c;蚂蚁选择该路径的概率就更大。 蚁群算法的思想来源于自然界蚂蚁觅食&a…...

2024年10月HarmonyOS应用开发者基础认证全新题库

注意事项&#xff1a;切记在考试之外的设备上打开题库进行搜索&#xff0c;防止切屏三次考试自动结束&#xff0c;题目是乱序&#xff0c;每次考试&#xff0c;选项的顺序都不同 这是基础认证题库&#xff0c;不是高级认证题库注意看清楚标题 高级认证题库地址&#xff1a;20…...

kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?

大家好&#xff0c;我是锋哥。今天分享关于【kafka 分布式&#xff08;不是单机&#xff09;的情况下&#xff0c;如何保证消息的顺序消费?】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka 分布式&#xff08;不是单机&#xff09;的情况下&#xff0c;如何保证消息的…...

数据分析案例-苹果品质数据可视化分析+建模预测

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

沈阳乐晟睿浩科技有限公司抖音小店运营创新

在当今这个数字化迅猛发展的时代&#xff0c;电子商务已经成为推动经济增长的重要引擎。而在电商的广阔舞台上&#xff0c;短视频与直播带货的崛起无疑是最为耀眼的明星之一。作为这一领域的佼佼者&#xff0c;抖音小店凭借其庞大的用户基础和独特的算法优势&#xff0c;吸引了…...

【前端】CSS知识梳理

基础&#xff1a;标签选择器、类选择器、id选择器和通配符选择器 font:font-style(normal) font-weight(400) font-size(16px) /line-height(0) font-family(宋体&#xff09; 复合&#xff1a; 后代选择器&#xff08; &#xff09;、子选择器&#xff08;>)、并集选择器(…...

【undefined reference to xxx】zookeeper库编译和安装 / sylar项目ubuntu20系统编译

最近学习sylar项目&#xff0c;编译项目时遇到链接库不匹配的问题&#xff0c;记录下自己解决问题过程&#xff0c;虽然过程很艰难&#xff0c;但还是解决了&#xff0c;以下内容供大家参考&#xff01; undefined reference to 问题分析 项目编译报错 /usr/bin/ld: ../lib/lib…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...