Java - 免费图文识别_Java_免费_图片转文字_文字识别_spring ai_spring ai alibaba

本文主要是介绍借助阿里云免费的大模型额度来做高质量的图转文识别,图片转文字,或者文字识别都可以使用,比传统的OCR模式要直接和高效很多 。

本文使用的技术是spring ai + qwen vl 。 Qwen vl有 100万Token 免费额度,可以用来免费做图片识别,实现简单,按本文方案一步一步做就可以实现。

同时 Qwen vl模型也是一个开源模型,可以自己部署实现类似的 免费调用效果 7B的模型就可以实现很好的效果了。

利用大模型提升Java图文识别的效率与准确性

在java开发场景中,我们经常遇到需要处理图文识别的问题。传统的解决方法通常是采用OCR技术,但其准确性和稳定性往往不尽人意。随着技术的进步,现在利用大模型进行java图文识别成为可能,并且能够提供更加出色的效果。通过引入专门训练的大模型,可以大大提高java图文识别的准确性与效率。这样的转变意味着开发者不再受限于传统OCR解决方案所带来的局限性,在实现更高质量java图文识别的同时,也极大地简化了开发流程。无论是对于个人项目还是企业级应用来说,采用大模型来支持java图文识别都是一个非常值得尝试的选择。它不仅能够有效提升用户体验,还能帮助开发者节省大量时间与精力投入到其他重要领域。因此,当你的项目中有涉及到java图文识别的需求时,考虑一下使用最新的大模型技术吧!这将为你的应用程序带来前所未有的改变。本例子使用java spring ai和国产大模型qwen vl来做样例,您也可以换成其他实现。

Spring AI框架概述

在过去,Java 缺乏一个统一且高效的 AI 应用框架,这限制了开发者在 Java 生态系统中快速集成和使用 AI 功能的能力。为了解决这一问题,Spring 团队推出了 Java Spring AI,这是一个专为 AI 工程设计的应用框架。它将 Spring 生态系统的设计原则,如可移植性和模块化设计,应用到了 AI 领域,并支持 POJOs 作为应用程序的构建块。

Java Spring AI 的核心优势在于它提供了一套统一的接口,可以标准化不同 AI 提供者的接口实现,使得开发者只需编写一次代码,通过修改配置即可轻松切换不同的 AI 服务提供商。此外,它与现有的 Spring 生态系统和 Java 的面向对象编程完美兼容,极大地简化了 AI 组件的集成过程。例如,在图文识别等应用场景中,Java Spring AI 可以帮助开发者快速搭建高效且易于维护的 AI 应用程序。

Qwen VL多模态大模型介绍

Qwen VL是一款专为图像和视频识别设计的多模态大模型,在国内技术水平领先。它在思南大模型评测中表现优异,仅排在国际知名模型GPT与Claude之后,并且在中国同类模型中位居首位。同时,在Hugging Face视觉大模型竞技场里,Qwen VL同样保持了中国第一的位置。欢迎各界人士参与到这些平台中来,通过实际测试体验并投票支持您喜爱的模型。此外,Qwen-VL-Plus及Qwen-VL-Max版本现提供限时免费试用机会,用户可直接访问通义千问官网或下载通义千问APP以享受Max版本的强大功能。

Spring AI Alibaba概述:简化阿里云大模型应用开发

Spring AI Alibaba是Spring AI框架针对阿里云百炼大模型系列的一个实现,旨在简化基于阿里云通义大模型的AI应用开发。它支持多种生成式任务,如对话、文生图、文生语音等,并提供了包括OutputParser、Prompt Template在内的实用工具。通过使用Spring AI Alibaba,开发者能够快速接入国产大模型,例如通义万象和通义千问,从而为业务增加更多智能化能力。其核心优势在于标准化了不同AI供应商的接口,使得仅需修改配置即可切换底层AI服务提供商,极大提高了开发效率和灵活性。此外,Spring AI Alibaba还支持对接OpenAI及其他本地部署的模型,进一步拓宽了应用场景。

使用Spring AI Alibaba实现图文识别的详细指南

基于Spring AI Alibaba进行图文识别,主要涉及到环境配置、依赖引入、API密钥设置以及具体的读图代码构建。下面将详细地按照这些步骤来进行说明。

前置准备

确保您的开发环境满足以下条件:

  • JDK版本为17或以上。
  • Spring Boot版本为3.3.x及以上。
申请通义千问的API Key
  1. 访问阿里云百炼页面,并登录您的阿里云账号。
  1. 开通“百炼大模型推理”服务,并等待开通成功的短信通知。
  1. 开通成功后,再次访问百炼页面,点击右上角的小人图标 -> API-KEY -> 创建新的API-KEY,生成API Key并记录下来。
配置通义千问API Key

在您的操作系统环境中执行如下命令来设置API Key:

export AI_DASHSCOPE_API_KEY=您的有效API-Key

开通通义万象图像生成模型

  1. 登录到百炼控制台。
  1. 在左侧菜单中选择“模型广场”,找到图像生成部分下的“通义万象”模型。
  1. 点击“API调用”按钮进入详情页,在顶部获取到模型的英文名qwen-vl-max-latest作为后续配置使用。

Maven配置

为了能够顺利使用Spring AI Alibaba相关功能,您需要在项目的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><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>1.0.0-M3.1</version></dependency><!-- 其他项目所需依赖 -->
</dependencies>

同时别忘了设置Spring Boot的父级项目信息:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.4</version><relativePath/>
</parent>

构建图文识别Controller

接下来定义一个REST控制器,用于处理图文图片上传及文本识别请求。这里我们将默认提示设为"识别图中的文字",并通过Flux异步流式返回结果。

@RestController
@RequestMapping("/ai")
public class HandwritingRecognitionController {private final ChatModel chatModel;public HandwritingRecognitionController(ChatModel chatModel) {this.chatModel = chatModel;}@Value("classpath:handwriting.png") // 图文图片路径private Resource handwritingResource;private static final String DEFAULT_PROMPT = "识别图中的文字";private static final String HANDWRITING_MODEL = "qwen-vl-max-latest"; // 使用的图文识别模型@GetMapping("/recognizeHandwriting")public Flux<String> recognizeHandwriting(@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, handwritingResource));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(HANDWRITING_MODEL).withMultiModel(true).build()));return fluxResponse.map(resp -> resp.getResult().getOutput().getContent());}
}

请确保在src/main/resources/目录下放置一张名为handwriting.png的图文图片作为测试样本。

完成上述所有步骤之后,启动您的Spring Boot应用程序,并通过浏览器或其他客户端工具向http://localhost:8080/ai/recognizeHandwriting发送GET请求即可开始体验图文文字识别功能了。

以上就是利用Spring AI Alibaba实现图文识别功能的具体步骤与代码示例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/58852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于边缘计算的智能门禁系统架构设计分析

案例 阅读以下关于 Web 系统架构设计的叙述&#xff0c;回答问题1至问题3。 【说明】 某公司拟开发一套基于边缘计算的智能门禁系统&#xff0c;用于如园区、新零售、工业现场等存在来访被访业务的场景。来访者在来访前&#xff0c;可以通过线上提前预约的方式将自己的个人信息…

基于SpringBoot+Vue的购物商城系统【前后端分离】

基于SpringBootVue的购物商城系统设计与实现 摘要 随着互联网技术的不断发展&#xff0c;线上购物已经成为人们日常生活中不可或缺的一部分。本博客将详细介绍一个基于Spring Boot和Vue的购物商城系统的设计与实现。该系统包含了商品展示、购物车管理、订单处理、用户管理等模块…

标签之文字排版,图片,链接,音视频(HTML) 基础版

目录 标签之文字排版,图片,链接,音视频知识点: 练习题一: 效果: 练习题二: 效果: 标签之文字排版,图片,链接,音视频知识点: 超文本:链接 标记:标签<> 双标签 单标签 <br>//换行 <hr>//水平线 向后tab 向前shifttab html注释<!----> css /**/ …

Spark_跑批__.checkpoint()为什么比.persist()快

昨天同事和我讨论了一个情况&#xff0c;情况是这样的&#xff1a; 他在跑一个spark程序&#xff0c;跑的时候差不多五六分钟&#xff08;加了persist的情况&#xff09;&#xff0c;如果不加persist&#xff0c;改为..checkpoint()缓存&#xff0c;速度基本维持在三四分钟左右…

后端:Spring、Spring Boot-实例化Bean依赖注入(DI)

文章目录 1. 实例化Bean2. 使用FactoryBean3. 依赖注入(DI)3.1 AutoWired 属性注入(查找顺序&#xff1a;先类型&#xff0c;后名字)3.2 AutoWired 在构造函数&参数上的使用3.3 Inject和Resource 进行依赖注入3.4 Value 进行注入 1. 实例化Bean 默认使用无参构造函数&…

浅谈串口服务器的作用

串口服务器是一种网络设备&#xff0c;它允许通过TCP/IP网络远程访问串行设备。它的作用主要包括&#xff1a; 1、远程访问&#xff1a;通过将串行通信转换为以太网通信&#xff0c;串口服务器使得远程访问串行设备成为可能&#xff0c;这对于远程监控和控制非常有用。 2、数据…

深度|谁在为OpenAI和Anthropic的AI编程竞赛提供“军火”?已赚得盆满钵满

图片来源&#xff1a;Unsplash AI 开发者之所以一致认为编程的重要性&#xff0c;是有原因的&#xff1a;大型语言模型编程能力越强&#xff0c;它回答与软件无关的其他类型问题的能力也越强。 去年秋天&#xff0c;几位 Google 人工智能领导者与初创公司 CEO Jonathan Siddh…

H3C OSPF配置

OSPF配置实验 实验拓扑图 实验需求 1.配置IP地址 2.分区域配置OSPF&#xff0c;实现全网互通 3.为了路由结构稳定&#xff0c;要求路由器使用环回口作为Router-id&#xff0c;ABR的环回口宣告进骨干区域 实验配置 1.配置IP地址 R1&#xff1a; <H3C>system-view …

再探“构造函数”

文章目录 一. 初始化列表1.1 实现1.2 何时必须使用初始化列表2.3 尽量使用初始化列表 二. 类型转换2.1 内置类型 转换 类类型2.2 explicit&#xff1a;不转换2.3 构造函数多参数2.4 使用隐式转换 2.5 自定义---转换为--->自定义类型 三. 静态成员变量概念在main函数调用私有…

每日OJ题_牛客_体操队形_dfs+枚举_C++_Java

目录 牛客_体操队形_dfs枚举 题目解析 C代码 Java代码 牛客_体操队形_dfs枚举 体操队形 (nowcoder.com) 描述&#xff1a; dd作为体操队队长&#xff0c;在给队员们排队形&#xff0c;体操队形为一个单独的纵列&#xff0c;体操队有n个同学&#xff0c;标号为1∼…

【Linux内核大揭秘】程序地址空间

文章目录 什么是程序地址空间地址空间的组成虚拟内存技术 如何理解程序地址空间页表页表的细节关于堆区 在Linux中如何查看各个分段的信息总结 什么是程序地址空间 程序地址空间是一个程序在执行期间可以访问的内存范围。它由操作系统为每个进程分配&#xff0c;以确保进程之间…

C++ 数据结构 静态顺序表、动态顺序表。

静态顺序表&#xff08;Static Array List&#xff09;是一种线性数据结构&#xff0c;通常用数组实现。它具有固定的大小&#xff0c;并在编译时分配内存。以下是静态顺序表的一些基本概念和实现示例。 静态顺序表基本概念 固定大小&#xff1a;静态顺序表的大小在创建时定义…

pgsql表分区和表分片设计

在设计 PostgreSQL 表分区和表分片时&#xff0c;主要目标是提高查询性能、可扩展性和数据管理的效率。以下是一些关键的设计步骤和策略&#xff1a; 1. 分区策略 水平分片&#xff1a;选择按日期进行水平分片&#xff0c;每天一个分片。这种策略适用于具有时间序列数据的场景…

AnaTraf | 网络性能监测系统与分布式性能监测探秘

AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具 对于 IT 运维人员来说&#xff0c;维护网络的稳定和业务的连续性是至关重要的使命&#xff0c;而优化网络性能以及在网络出现故障时快速排除故障则是实现这一使命的关键能力。 一、网络性能监测系统&#x…

C#语言入门:从基础到进阶

C#&#xff08;发音为"C sharp"&#xff09;是微软公司推出的一种面向对象的编程语言&#xff0c;它由Anders Hejlsberg和他的团队在.NET框架下开发。C#语言结合了C和Java的特性&#xff0c;并添加了新的功能&#xff0c;使其成为当今最流行的编程语言之一。 C#的特…

npm入门教程18:npm发布npm包

一、准备工作 注册npm账号&#xff1a; 前往npm官网注册一个账号。注册过程中需要填写个人信息&#xff0c;并完成邮箱验证。 安装Node.js和npm&#xff1a; 确保你的计算机上已安装Node.js和npm。Node.js的安装包中通常包含了npm。你可以通过运行node -v和npm -v命令来检查它…

【论文阅读】Associative Alignment for Few-shot Image Classification

用于小样本图像分类的关联对齐 引用&#xff1a;Afrasiyabi A, Lalonde J F, Gagn C. Associative alignment for few-shot image classification[C]//Computer Vision–ECCV 2020: 16th European Conference, Glasgow, UK, August 23–28, 2020, Proceedings, Part V 16. Spri…

SpringBoot-Velocity模板引擎-快速入门

Velocity-快速入门 一 介绍 Apache Velocity 是一个基于 Java 的模板引擎&#xff0c;它允许任何人使用简单而强大的模板语言来引用对象数据&#xff0c;并生成基于文本的输出。Velocity 最初是作为 WebMacro 项目的一部分开发的&#xff0c;后来成为一个独立的开源项目&…

Docker 安装使用操作指南

Docker 是一种开源的容器化平台&#xff0c;它允许开发者将应用及其所有依赖项打包到一个轻量级的容器中&#xff0c;这样就可以在任何地方一致地运行它们。无论是开发环境、测试环境还是生产环境&#xff0c;Docker 都能够提供一致的环境&#xff0c;从而消除“在我的机器上能…

UE5之5.4 第一人称示例代码阅读2 子弹发射逻辑

TP_WeaponComponent.h 看看头文件 暴露了attach weapon和fire给蓝图 这两个函数意义一看名字吧&#xff0c;就是捡起来枪的时候执行&#xff0c;一个就是发射子弹的时候执行 #pragma once#include "CoreMinimal.h" #include "Components/SkeletalMeshComponen…