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
- 访问阿里云百炼页面,并登录您的阿里云账号。
- 开通“百炼大模型推理”服务,并等待开通成功的短信通知。
- 开通成功后,再次访问百炼页面,点击右上角的小人图标 -> API-KEY -> 创建新的API-KEY,生成API Key并记录下来。
配置通义千问API Key
在您的操作系统环境中执行如下命令来设置API Key:
export AI_DASHSCOPE_API_KEY=您的有效API-Key
开通通义万象图像生成模型
- 登录到百炼控制台。
- 在左侧菜单中选择“模型广场”,找到图像生成部分下的“通义万象”模型。
- 点击“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实现图文识别功能的具体步骤与代码示例。
相关文章:

Java - 免费图文识别_Java_免费_图片转文字_文字识别_spring ai_spring ai alibaba
本文主要是介绍借助阿里云免费的大模型额度来做高质量的图转文识别,图片转文字,或者文字识别都可以使用,比传统的OCR模式要直接和高效很多 。 本文使用的技术是spring ai qwen vl 。 Qwen vl有 100万Token 免费额度,可以用来免费…...
《JVM第6课》本地方法栈
文章目录 1 什么是本地方法1.1 本地方法的好处1.2 声明本地方法1.3 实现本地方法1. 生成头文件2. 编写C语言实现3. 编译C代码4. 运行Java程序 1.4 使用JNA1.5 总结 2 本地方法栈2.1 特点2.2 本地方法栈与Java虚拟机栈的区别2.3 本地方法栈的工作流程2.4 总结 无痛快速学习入门J…...

3.1 快速启动Flink集群
文章目录 1. 环境配置2. 本地启动3. 集群启动4. 向集群提交作业4.1 提交作业概述4.2 添加打包插件4.3 将项目打包4.4 在Web UI上提交作业4.5 命令行提交作业 在本实战中,我们将快速启动Apache Flink 1.13.0集群,并在Hadoop集群环境中提交作业。首先&…...
如何设计一个毫秒级的接口?
设计一个毫秒级的接口需要考虑多个方面,包括网络延迟、服务器性能、代码效率、数据库查询优化等。以下是一些建议,帮助你设计一个毫秒级的接口: 网络优化: 使用HTTP/2或更高版本,以减少连接建立和传输的开销。尽可能减…...
从语义实施工程师到大数据开发工程师的职业转型
在信息技术行业,随着数据驱动决策的流行和企业对大数据需求的急剧增加,越来越多的专业人士开始考虑将他们的技能转移到大数据领域。本文将探讨如何从一个语义实施工程师转变为一个大数据开发工程师。两者虽然都与数据密切相关,但在技术重点和…...
关联容器笔记
关联容器总结 有序关联容器 键值的顺序自动排序,键值必须支持 < 操作符 底层数据结构 使用平衡树,比如(红黑树)增删查的平均时间复杂度接近 O(logn) 种类 std::set:集合,包含唯一的键元素。 std…...

在阿里云快速启动Umami玩转网页分析
阿里云计算巢提供了Umami快速部署能力,使用者不需要自己下载代码,不需要自己安装复杂的依赖,不需要了解底层技术,只需要在控制台图形界面点击几下鼠标就可以快速部署并启动Umami,非技术同学也能轻松搞定。 什么是Umam…...

Linux练习作业
1.搭建dns服务器能够对自定义的正向或者反向域完成数据解析查询。 2.配置从DNS服务器,对主dns服务器进行数据备份 环境准备 主从服务器都需要进行的操作#关闭防火墙、SELinnux systemctl stop firewalld setenforce 0#软件安装 yum install bind -y实验一&#…...
FFMPEG录屏(21)--- Linux 下基于X11枚举所有可见窗口,并获取标题、图标、缩略图、进程路径等信息
在 Linux X11 下枚举窗口并获取窗口信息 在 Linux 系统中,X11 是一个非常流行的窗口系统,它提供了丰富的 API 用于管理和操作窗口。在这篇博客中,我们将详细介绍如何使用 X11 枚举当前系统中的窗口,并获取它们的标题、截图、进程…...
mybatis resultMap标签注意事项(pageHelper结合使用的坑)
背景 使用pageHelper时,发现分页数据异常,经过排查发现是resultMap 的问题。 resultMap介绍 在使用mybatis时,我们经常会使用在xml文件中编写一些复杂的sql语句,例如多表的join,在映射实体类时,又会使用…...
100种算法【Python版】第33篇——Tonelli-Shanks算法
本文目录 1 模素数下的二次剩余问题2 算法原理2.1 背景知识2.2 算法步骤3 算法示例4 python代码5 算法应用1 模素数下的二次剩余问题 在数论中,给定一个素数 p p p 和一个整数 n n n...

深度学习基础知识-全连接层
全连接(Fully Connected,简称 FC)层是深度学习神经网络中一种基本的层结构。它主要用于神经网络的最后几层,将高层特征映射到输出空间中。全连接层对数据的每个输入节点与每个输出节点进行连接,用于实现输入特征和输出…...
ffmpeg 提取mp4文件中的音频文件并保存
要从一个 MP4 文件中提取音频并保存为单独的音频文件,可以使用 ffmpeg 工具。以下是一个简单的命令示例: 命令格式 ffmpeg -i input.mp4 -vn -acodec copy output.mp3 参数解释 -i input.mp4: 指定输入文件为 input.mp4。 -vn: 禁用视频流࿰…...

【MySQL 保姆级教学】 复合查询--超级详细(10)
复合查询 1. 复合查询的作用2. 创建将进行操作的表2.1 员工表 emp2.2 部门表 dept2.3 薪资等级表 3. 基本查询回顾4. 多表查询4.1 多表查询的定义4.2 笛卡尔积4.3 内连接 inner join4.4 交叉连接 cross join4.5 左外连接 left join4.6 右外连接 right join4.7 自连接 5. 子查询…...

ONLYOFFICE:数字化办公的创新解决方案与高效协作平台
目录 前言—— 关于 ONLYOFFICE 桌面编辑器 1.首页介绍 2.电子表格 功能介绍 适用场景 3.ONLYOFFICE 在线Word功能 4.ONLYOFFICE 在线PPT功能 5.共同办公室 6.探索其他 总结 前言—— 在数字化办公的时代,传统的办公软件常常让人感到束缚与低效。而 ONLY…...
编译Kernel时遇到“error: ‘linux/compiler_types.h‘ file not found“的解决方法
问题描述: 在下载了一份安卓13项目的代码后进行make bootimage编译时遇到了下面编译报错: In file included from /home/bspuser/scode/kernel/msm-4.19/include/uapi/linux/stat.h:5: In file included from /home/bspuser/scode/kernel/msm-4.19/inc…...

开发之翼:划时代的原生鸿蒙应用市场开发者服务
前言 随着"纯血鸿蒙" HarmonyOS NEXT在原生鸿蒙之夜的正式发布,鸿蒙生态正以前所未有的速度蓬勃发展。据知已有超过15000个鸿蒙原生应用和元服务上架,覆盖18个行业,通用办公应用覆盖全国3800万多家企业。原生鸿蒙操作系统降低了接…...

代码随想录一刷——1.两数之和
当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。 C: unordered_map class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int…...
vue自定义组件实现v-model双向数据绑定
一、Vue2 实现自定义组件双向数据绑定 ① v-model 实现双向数据绑定 在vue2中,子组件上使用v-model的值默认绑定到子组件的props.value属性上,由于子组件不能改变父组件传来的属性,所以需要通过$emit触发事件使得父组件中数据的变化…...

excel指定单元格输入相同的值,比如给D1~D10000输入现在的值
注意,一点不用用WPS,不然运行宏是会报:Droiact-Module1,第1行等Λ列语法错误: Unexpected identifier 步骤 1,altF11打开宏 2,输入脚本 3,点击运行按钮 成功后会看看到...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...