首页 > 编程语言 >惊了!大模型连这样的验证码都能读懂_java_识别验证码

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

时间:2024-10-30 13:19:54浏览次数:3  
标签:java AI Spring 模型 验证码 Alibaba 读懂 API spring

最近在看视觉大模型的能力,然后用了某网站的一个验证码试了试,竟然连这样的验证码都能认识,这个有点夸张,尤其是这个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,AI,Spring,模型,验证码,Alibaba,读懂,API,spring
From: https://blog.csdn.net/whisperzzza/article/details/143360707

相关文章

  • Java & Lock & AQS & 总结
    前言 相关系列《Java&Lock&目录》(持续更新)《Java&Lock&AQS&源码》(学习过程/多有漏误/仅作参考/不再更新)《Java&Lock&AQS&总结》(学习总结/最新最准/持续更新)《Java&Lock&AQS&问题》(学习解答/持续更新)  涉及内容《Java&Lock&ReentrantLock......
  • JavaScript基础知识——黑马JavaWeb学习笔记
    JavaScript基础JavaScript:跨平台、面向对象的脚本语言(脚本语言:不需要编译,浏览器解释完直接运行)作用:控制网页行为,使网页可交互ps:JavaScript与Java是两门完全不同的语言本文为学习黑马程序员JavaWeb开发教程中JS部分学习笔记文章目录JavaScript基础一、JS引入方式1.......
  • 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现九
    一、前言介绍:1.1项目摘要随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势。古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力。然而,在现代社会中,由于生活节奏的加快和信息获取方式的多样化,古诗词的传播和阅读面临着一......
  • 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现十
    一、前言介绍:1.1项目摘要随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势。古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力。然而,在现代社会中,由于生活节奏的加快和信息获取方式的多样化,古诗词的传播和阅读面临着一......
  • Java Z 垃圾收集器如何彻底改变内存管理
    大家好,我是V哥,今天的内容来聊一聊ZGC,JavaZGarbageCollector(ZGC)是一个低延迟垃圾收集器,旨在优化内存管理,主要用于大内存应用场景。它通过以下几个关键创新,彻底改变了传统Java的内存管理方式:V哥总结的以下5点,欢迎一起讨论。1.极低的暂停时间ZGC的暂停时间一般保持在10毫......
  • 前端JavaScript的异步编程:从回调到Promise再到Async/Await
    写在前面在前端开发中,异步编程是一个非常重要的概念。随着JavaScript语言和前端技术的发展,异步编程的模式也在不断演进。本文将带你了解从最初的回调函数(Callback)到Promise,再到现代的Async/Await,这些异步编程模式的演变过程。回调函数(Callback)回调函数是最早期的异步编程......
  • JAVA基础必备集合框架 @简单易懂
    Java基础框架是指在Java开发中常用的一些框架和库,它们提供了一些通用的功能,以简化开发过程。以下是一些重要的Java基础框架的详细讲解:1.SpringFramework概述Spring是一个广泛使用的企业级应用开发框架,提供了全面的基础设施支持,特别适合构建JavaEE应用。主要特性控制反......
  • java计算机毕业设计在线票务系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,在线票务系统已经成为现代生活中不可或缺的一部分。传统的售票方式面临着排队等候、购票速度慢、安全性差等问题,而在线票务......
  • java计算机毕业设计员工管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景、意义和目的随着信息技术的迅猛发展,企业管理和运营的方式也在不断变革。传统的手工管理模式已经无法满足现代企业对效率、准确性和实时性的要求。特......
  • Java毕业设计-基于Springboot框架的文学创作类社交论坛系统项目实战(附源码+论文)
    大家好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。......