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,点击运行按钮 成功后会看看到...
如何高效优化多语言模型:专业部署的完整策略
如何高效优化多语言模型:专业部署的完整策略 【免费下载链接】paraphrase-multilingual-MiniLM-L12-v2 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/paraphrase-multilingual-MiniLM-L12-v2 你是否在部署多语言文本嵌入模型时遭遇过"显存…...
VSCode远程开发必备:SSH端口转发一键配置指南(含常见问题排查)
VSCode远程开发实战:SSH端口转发高效配置与深度排错 当你在咖啡厅修改代码时,远程服务器上的数据库服务突然需要紧急调试;当团队协作时,同事的内网API接口需要临时开放给你测试——这些场景下,SSH端口转发就像一把瑞士…...
告别Joplin!用MarkDownload+Obsidian打造你的网页剪藏工作流(附完整配置JSON)
从Joplin到Obsidian:用MarkDownload构建高效网页剪藏系统 每次在网上冲浪时遇到值得保存的内容,你是否也经历过这样的困境?收藏夹里堆满了再也找不到的链接,或是剪藏工具中杂乱无章的片段。作为一个长期依赖Joplin进行知识管理的用…...
Hypervisor环境下高效进程间通信技术解析
1. Hypervisor环境下的进程通信挑战 在虚拟化技术大行其道的今天,Hypervisor环境下的进程间通信(IPC)已经成为系统性能的关键瓶颈。想象一下,你住在小区同一栋楼的两个单元里,明明直线距离只有10米,却要绕到…...
深入 Spring 源码,剖析设计模式的落地实践
写在文章开头 阅读源码是理解框架最有效的方式之一,Spring 源码中蕴含了大量设计模式的经典应用。本文将从源码层面深入剖析这些设计模式,带你理解框架设计精髓,掌握在实际项目中灵活运用的能力。 你好,我是 SharkChili ,Java Guide 核心维护者之一,对 Redis、Nighting…...
保姆级教程:用Docker Compose一键部署ZLMediaKit流媒体服务器(含OBS推流配置)
从零搭建私有流媒体平台:Docker Compose ZLMediaKit OBS全流程指南 流媒体技术正在重塑内容传播的方式。无论是企业内部培训、游戏直播还是产品演示,一个稳定高效的私有流媒体平台都能显著提升沟通效率。本文将手把手教你如何用Docker Compose快速部署…...
蓝牙天线匹配避坑指南:从VNA测试到π型电路焊接的5个关键步骤
蓝牙天线匹配避坑指南:从VNA测试到π型电路焊接的5个关键步骤 在消费电子领域,2.4GHz蓝牙天线的性能直接决定了产品的无线连接质量。许多硬件团队在开发过程中常遇到信号不稳定、传输距离短等问题,其核心往往在于天线阻抗匹配的细节处理不当。…...
别再只盯着采样率了!用STM32H723的ADC做高精度FFT分析,这些坑我帮你踩过了
STM32H723高精度FFT实战:从ADC采样到频谱分析的工程化实现 频谱分析在工业振动监测、音频处理、电力系统谐波检测等领域有着广泛应用。STM32H723系列凭借其高性能ADC和浮点运算单元,为嵌入式实时频谱分析提供了硬件基础。但实际工程中,从ADC…...
别再踩坑了!Docker部署MinIO时,API和Console端口配置的保姆级避坑指南
Docker部署MinIO的端口配置避坑指南:从原理到实战 第一次用Docker部署MinIO时,我花了整整三个小时才搞明白为什么外网始终无法访问。控制台显示服务已启动,本地curl也能返回数据,但就是无法通过浏览器打开管理界面。直到查看日志才…...
OpenClaw备份方案:GLM-4.7-Flash自动化任务配置保存与恢复
OpenClaw备份方案:GLM-4.7-Flash自动化任务配置保存与恢复 1. 为什么需要备份OpenClaw配置 上周我的开发机突然遭遇硬盘故障,导致所有OpenClaw配置丢失。当时正在运行的三个自动化流程全部中断,包括每天凌晨自动执行的日报生成和每周五的代…...
