Java - 文字识别 ;示例代码基于SpringAI和国产大模型

文字识别在Java开发中的应用

在Java开发中,将图像中的文字进行识别能力被广泛应用于多种场景,比如自动审核图片内容、商品搜索分析等。

过去,这类需求主要通过OCR(光学字符识别)技术来实现,但其对于复杂图像的处理效果往往不尽人意。

如今,随着大模型技术的发展,利用这些先进的AI模型进行文字识别成为可能,不仅大大提升了识别精度和速度,还能更好地理解图像中的复杂信息,为用户提供更加准确可靠的服务。

本文采用spring ai alibaba 调用通义qwen vl来实现。 qwen vl有100万免费Token额度,可以快速实现,同时,因为qwen vl也是个开源的模型,我们可以自己搭建模型来实现免费使用

Spring AI:简化AI服务对接的统一框架

过去,Java在AI应用开发方面缺乏一个高效且统一的框架,导致开发者需要针对不同的AI服务提供商分别进行接口对接,增加了开发和维护的成本。为了解决这个问题,Spring团队推出了Spring AI,这是一个专为AI工程设计的应用框架,旨在将Spring生态系统的可移植性、模块化等设计原则引入到AI领域。Spring AI最核心的优势在于它提供了一套统一的接口,允许开发者只需编写一次代码,通过简单的配置更改即可切换至不同AI服务提供商的实现上,极大地简化了跨平台迁移的工作量。此外,Spring AI与现有的Java面向对象编程范式无缝集成,并支持包括文字识别在内的多种AI功能,使得基于Spring生态的项目能够更加平滑地过渡到包含AI能力的新阶段。

本例使用Spring AI alibaba和通义qwen vl模型来实现文字识别,大家也可以在调通以后换成其他实现,通义目前有免费额度,可以薅起来

通义千问 Qwen VL 2.5 介绍

Qwen-VL是一款专为图像和视频识别设计的多模态大模型,在国内技术领域处于领先地位。它在思南评测平台(https://arena.opencompass.org.cn/)上表现优异,仅次于国际知名的GPT和Claude模型;

同时,在国外视觉大模型竞技场(https://huggingface.co/spaces/lmarena-ai/chatbot-arena-leaderboard)中也稳居中国首位。Qwen-VL不仅展示了强大的视觉理解能力,还促进了国内外AI技术交流。

大家也可以参与和支持这些竞技活动,亲自体验并投票支持你心目中的最佳模型。

Spring AI Alibaba功能及优势介绍

Spring AI Alibaba 是一个针对 Spring AI 的实现,它基于阿里云百炼系列云产品的大模型接入,包括通义大模型等国产大模型。其核心优势在于提供了多种常见生成式AI功能的适配,例如对话、文生图、文生语音等,并支持OutputParser、Prompt Template及Prompt Stuff等功能,极大简化了开发者对接不同AI服务的过程。通过Spring AI Alibaba,用户可以利用统一且简洁的API来开发和集成各类AI应用,特别是在利用阿里云通义提供的聊天、图像或语音生成方面,使得AI能力的集成更加高效便捷。

插播:总计30万奖金,Spring AI Alibaba 应用框架挑战赛开赛​​​​​​点此了解

基于Spring AI Alibaba实现文字识别功能的详尽示例

要基于Spring AI Alibaba来构建一个能够接收用户输入并以流式返回结果的文字识别服务,首先需要进行一系列准备工作和配置。以下是详细的步骤说明:

前置准备
  • 确保你的JDK版本不低于17。
  • Spring Boot版本至少为3.3.x。
开通资源及获取API Key
  1. 访问阿里云百炼页面,登录您的阿里云账号。
  1. 选择开通“百炼大模型推理”服务,并等待短信确认服务已成功开通。
  1. 从右上角的小人图标进入个人中心 -> API-KEY -> 创建新的API-KEY。请妥善保存生成的API Key。
配置环境变量

将得到的API Key设置为环境变量:

export AI_DASHSCOPE_API_KEY=YOUR_GENERATED_API_KEY
开通通义万象图像生成模型
  1. 登录到百炼控制台 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台。
  1. 在左侧列表中选择“模型广场”,找到“图像生成”类别下的“通义万象”模型。
  1. 选择该模型对应的“API调用”按钮,在打开页面顶部找到并记录下模型名称(如qwen-vl-max-latest)用于后续配置。
Maven仓库与依赖添加

在项目的pom.xml文件中添加Spring官方仓库以及必要的依赖项:


    
        sonatype-snapshots

        https://oss.sonatype.org/content/repositories/snapshots

        true

    

    
        spring-milestones

        Spring Milestones

        https://repo.spring.io/milestone

        false

    

    
        spring-snapshots

        Spring Snapshots

        https://repo.spring.io/snapshot

        false

    




    
        com.alibaba.cloud.ai

        spring-ai-alibaba-starter

        1.0.0-M3.1

    

    

同时确保指定了Spring Boot作为父项目:


    org.springframework.boot

    spring-boot-starter-parent

    3.3.4

    

应用程序属性配置

编辑application.properties文件以包含API Key:

spring.ai.dashscope.api-key=${AI_DASHSCOPE_API_KEY}
编写控制器代码

创建一个新的Controller类来处理图片上传请求并返回识别结果。这里我们使用ChatClient实例与AI模型交互。

@RestController
@RequestMapping("/ai")
public class ChatModelController {

    @Value("classpath:catexample.png") // 或者任何其他默认图片路径
    private Resource imageResource;

    private final ChatModel chatModel;

    public ChatModelController(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 imageRecognition(
            @RequestParam(value = "prompt", required = false, defaultValue = DEFAULT_PROMPT) String prompt,
            HttpServletResponse response) throws Exception {
        
        response.setCharacterEncoding("UTF-8");

        List mediaList = Collections.singletonList(new Media(MimeTypeUtils.IMAGE_PNG, imageResource));
        UserMessage message = new UserMessage(prompt, mediaList);
        message.getMetadata().put(DashScopeChatModel.MESSAGE_FORMAT, MessageFormat.IMAGE);

        return chatModel.stream(
                new Prompt(message, DashScopeChatOptions.builder()
                        .withModel(DEFAULT_MODEL)
                        .withMultiModel(true)
                        .build()))
                .map(resp -> resp.getResult().getOutput().getContent());
    }
}

以上就是基于Spring AI Alibaba实现文字识别功能的全部过程,包括了所有必要的配置和代码示例。确保按照上述指南正确设置了每个步骤后,您就可以通过访问/ai/imageRecognition端点开始测试您的文字识别服务了。

你可能感兴趣的:(microsoft,机器学习,人工智能,后端)