首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >长沙市暑假开放中小学开放信息获取-基于大模型的图文识别解析(第二篇)

长沙市暑假开放中小学开放信息获取-基于大模型的图文识别解析(第二篇)

原创
作者头像
夜郎King
修改2026-07-17 00:10:12
修改2026-07-17 00:10:12
570
举报
文章被收录于专栏:gisgisJava

大家好,我是专注于 AI 实战与开发技巧分享的 夜郎King,致力于把AI 技术落地到实际场景中。上一篇文章我们完成了长沙市暑假中小学开放信息相关图片的收集与下载,今天这篇文章将承接前文,重点讲解如何借助 CodeBuddy 工具,结合大模型实现图片中信息的解析与提取,完成从“获取图片”到“提炼有效数据”的关键一步。

一、前言

1、前文回顾

在上一篇文章中,我们聚焦于“数据获取”环节,通过网络爬虫、公开渠道检索等方式,收集到了长沙市教育部门发布的暑假中小学开放相关通知图片,涵盖了学校名称、开放时间、开放区域、开放对象等核心信息。但这些信息都以图片形式存在,无法直接用于数据统计、整理和查询,只能人工查看,效率极低,这也成为了我们后续工作的核心痛点。

2、真实目的,解析图片

本次系列分享的核心目的,并非单纯获取图片,而是要将图片中的非结构化信息转化为结构化数据,方便后续进行数据汇总、分类整理、可视化展示,甚至搭建简易的查询工具。具体来说,我们需要从图片中精准提取出每所学校的名称、开放时段、开放场地(如操场、图书馆、体育馆)所属区县等关键信息,解决人工手动录入耗时耗力、易出错的问题,同时也为大家提供一种“大模型+图文识别”处理非结构化数据的实战思路。

二、数据解析技术途径

针对图片中的文本信息解析,目前主流的技术途径主要有传统 OCR 识别和大模型图文理解两种,结合本次需求,我们对两种方式进行对比分析,并明确最终技术选型。

1、OCR 识别

OCR(光学字符识别)是一种传统的图文解析技术,核心原理是通过图像处理算法,识别图片中的字符、文字,将其转化为可编辑的文本。目前市面上常见的 OCR 工具(如百度 OCR、腾讯云 OCR)都能实现基础的文字提取,对于排版规范、字迹清晰的图片,识别准确率较高。但 OCR 技术存在明显短板:一是仅能提取文字,无法理解文字之间的逻辑关系,比如无法区分“开放时间”和“预约时间”对应的具体内容;二是对排版杂乱、存在手写批注、图片模糊的场景,识别准确率大幅下降;三是无法自动对提取的文字进行分类、结构化处理,后续仍需人工整理,无法实现“端到端”的解析需求。

2、大模型图文理解

大模型图文理解是基于多模态大模型的技术方案,区别于传统 OCR 仅做文字提取,多模态大模型能够同时理解图片的视觉信息和文本信息,不仅能识别图片中的文字,还能分析文字的语义、上下文逻辑,完成信息的分类、提取、结构化整合。例如,面对一张中小学开放通知图片,大模型能够精准识别出“学校名称”对应的值、“开放时间”对应的具体时段,甚至能识别出图片中的表格、列表等排版格式,按照指定格式输出结构化数据,真正实现“识别+理解+处理”一体化。

3、为什么选择图文理解

结合本次长沙市暑假中小学开放信息解析的需求,我们最终选择大模型图文理解技术,主要有以下三点原因:一是需求的复杂性,通知图片中不仅有纯文本,还有表格、项目符号列表,传统 OCR 无法区分不同类型的信息,而大模型能精准解析排版格式,提取对应信息;二是效率的提升,大模型可直接输出结构化数据(如 JSON、Excel 格式),无需人工二次整理,大幅节省时间成本;三是实用性的延伸,本次实战的技术思路可复用到其他场景,如解析公告图片、合同图片、报表图片等,具有较强的通用性。此外,CodeBuddy 工具集成了主流多模态大模型,无需我们单独搭建模型环境,降低了技术落地的门槛。

三、CodeBuddy实现

CodeBuddy 作为腾讯云推出的 AI 代码助手,不仅能实现代码生成、调试,还支持多模态大模型调用,能够快速完成图文识别与解析。下面我们详细讲解如何通过 CodeBuddy 实现本次需求,重点说明模型选择和切换的关键步骤。

1、模型选择

CodeBuddy 内置了多款大模型,包括文本生成模型、多模态图文理解模型,其中适配图文解析场景的主要是腾讯混元多模态模型(图文版)、ZLM 多模态模型等。结合本次需求,我们优先选择**腾讯混元多模态图文模型**,原因有二:一是该模型对中文文本的理解能力更强,适配国内政务通知、公告类图片的排版风格和语言习惯,识别准确率更高;二是该模型支持自定义输出格式,能够直接生成 JSON、Markdown 等结构化数据,无需额外编写处理代码,适配我们的实战需求。

大家在选择模型的时候一定要注意,选择模型类型的时候要注意,将鼠标悬浮到模型上时,如果当前模型的可用功能包含图片输入即是可以进行图片识别,否则就只有推理的能力。这里是常见的坑点,下节会进行讲解。

2、假如没有切换

在使用 CodeBuddy 时,默认情况下可能会调用纯文本生成模型(如混元3文本版),如果不进行模型切换,直接上传图片并发送解析指令,会出现明显的问题:一是纯文本模型无法处理图片输入,会提示“不支持图片格式输入”,无法完成识别操作;二是即使通过第三方工具提取图片文字后再输入纯文本模型,模型也无法理解文字的上下文逻辑和排版关系,只能输出杂乱的文本,无法实现结构化提取,最终无法达到我们的解析目的。这也提醒我们,在使用 AI 工具处理多模态数据时,模型选型的准确性直接决定了实战效果。

在CodeBuddy中可以告诉大模型我们的诉求,要求如下:

代码语言:txt
复制
不要安装ocr,直接使用大模型对imgs目录下的图片按照之前要求的格式进行解析

在没有使用有图片理解能力的大模型进行识别前,CodeBuddy只能使用一些联网搜索的方式进行数据的获取。那么下面我们讲解一下如何使用大模型的图文理解能力来进行识别。

3、从混元3切换到图文模型

在 CodeBuddy 中切换到图文模型的操作非常简单,具体步骤如下:首先,打开 CodeBuddy 客户端(支持 CLI 命令行、IDE 插件等多种形式),进入对话界面;其次,在对话界面的顶部或侧边栏找到“模型选择”按钮,点击后会出现内置模型列表;然后,在模型列表中找到“腾讯混元多模态图文模型”(部分版本标注为“混元图文理解版”)或者Kimi、或者DeepSeek等,选中该模型并确认切换;最后,切换完成后,对话界面会提示“当前模型已切换为多模态图文模型,支持图片输入”,此时即可上传图片并发送解析指令。需要注意的是,切换模型后,无需重启 CodeBuddy,即可直接进行后续操作,操作流程简洁高效,即使是零基础的开发者也能快速上手。

一定要注意要标识带有图片输入的能力即可。

四、CodeBuddy信息解读

完成模型切换后,我们进入核心的信息解读环节,通过接入 ZLM 模型、编写精准提示词、调用模型解析,最终实现图片信息的结构化提取和 JSON 生成,下面详细讲解每一步操作和成果展示。

0、ZLM模型接入

除了腾讯混元多模态模型,CodeBuddy 还支持接入第三方多模态模型,其中 ZLM(智谱清言多模态模型)也是适配图文解析的优质选择,其在表格识别、长文本解析方面具有一定优势。在 CodeBuddy 中接入 ZLM 模型的步骤如下:首先,登录 CodeBuddy 后台,进入“模型管理”页面;其次,在“第三方模型接入”模块中,找到 ZLM 多模态模型,点击“接入”按钮;然后,按照提示输入 ZLM 模型的 API 密钥(可从智谱清言开放平台获取),完成密钥配置;最后,配置完成后,在模型选择列表中即可看到 ZLM 多模态模型,选中后即可调用。本次实战中,我们同时测试了混元图文模型和 ZLM 模型,两款模型各有优势,可根据图片排版情况灵活切换使用。

1、提示词分享

提示词是大模型输出效果的关键,精准的提示词能够引导模型按照指定格式提取信息,避免输出杂乱内容。结合本次需求,我们经过多次测试,整理出了适配的提示词,分享给大家:

代码语言:txt
复制
“请你作为一名专业的信息提取员,仔细分析我上传的这张长沙市暑假中小学开放通知图片,
提取图片中的关键信息,包括但不限于:学校名称、所属区域、开放时间(区分上午、下午、晚上时段)、
开放场地(如操场、图书馆、体育馆、篮球场等)、开放日期。请将提取的信息按照 JSON 格式输出,
JSON 字段清晰明确,每个字段对应具体内容,不要输出多余的文字说明,若图片中无相关信息,
对应字段值填写‘无’。”

该提示词明确了提取范围、输出格式和注意事项,能够有效引导模型精准提取信息,避免出现信息遗漏、格式混乱的问题。如果图片中包含表格,可在提示词中增加“图片中包含表格,请按照表格行列结构提取信息,整合到 JSON 中”的内容,进一步提升解析准确性。

在CodeBuddy中输入以上提示词后,ai工具给出以下响应:

2、自动生成解析

完成提示词编写和模型切换后,即可在 CodeBuddy 对话界面上传图片(支持拖拽上传、粘贴上传、输入图片路径三种方式),然后将编写好的提示词发送给模型,模型会自动进行图文识别和解析。在解析过程中,CodeBuddy 会显示处理进度,对于清晰的通知图片,解析过程仅需3-5秒;对于排版复杂、模糊的图片,解析时间会稍长,但整体效率远高于人工手动录入。解析完成后,模型会直接输出解析结果,包含提取的所有关键信息,无需额外操作。CodeBuddy在获取数据后,会调用python进行json数据解析生成,如下图所示:

3、Json生成

按照我们编写的提示词,模型会自动生成 JSON 格式的结构化数据,以下是某所学校开放信息的 JSON 示例(已做脱敏处理),生成Json的python代码CodeBuddy已经帮我们创建:

代码语言:txt
复制
import json
import re

def convert_date(date_str):
    """将中文日期格式转换为 2026-年月日 可计算格式"""
    if not date_str:
        return ""
    
    # 先提取所有备注(括号内容、逢X闭馆等),并在最后附回
    remarks = []
    remark_patterns = [
        r'([^)]+)',
        r'逢[^闭]+闭馆',
        r'\(.*?\)',
    ]
    
    temp_str = date_str
    for pattern in remark_patterns:
        for match in re.findall(pattern, temp_str):
            remarks.append(match)
        temp_str = re.sub(pattern, '', temp_str)
    
    # 处理逗号分隔的多段日期
    parts = temp_str.split(',')
    converted_parts = []
    
    for part in parts:
        part = part.strip()
        if not part:
            continue
        # 用正则提取日期范围: X月X日—X月X日 或 X月X日-X月X日
        match = re.search(r'(\d+)月(\d+)日\s*[—-]\s*(\d+)月(\d+)日', part)
        if match:
            sm, sd, em, ed = match.groups()
            start_fmt = f"2026-{int(sm):02d}-{int(sd):02d}"
            end_fmt = f"2026-{int(em):02d}-{int(ed):02d}"
            converted_parts.append(f"{start_fmt} 至 {end_fmt}")
        else:
            # 尝试单段: X月X日
            match2 = re.search(r'(\d+)月(\d+)日', part)
            if match2:
                m, d = match2.groups()
                converted_parts.append(f"2026-{int(m):02d}-{int(d):02d}")
            else:
                converted_parts.append(part)
    
    result = ','.join(converted_parts)
    if remarks:
        result += ''.join(remarks)
    return result

def parse_venues(venue_str):
    """将场地字符串分割为数组"""
    if not venue_str:
        return []
    venues = []
    for v in venue_str.replace('、', ',').replace(',', ',').split(','):
        v = v.strip()
        if v:
            venues.append(v)
    return venues

def make_record(no, district, school, venues_str, hours_str):
    return {
        "No.": no,
        "district": district,
        "schoolName": school,
        "venues": parse_venues(venues_str),
        "openingHours": convert_date(hours_str)
    }

records = []

解析之后得到的示例数据如下:

代码语言:txt
复制
{
    "No.": 1,
    "district": "市直",
    "schoolName": "长沙市第十一中学(城南南校区)",
    "venues": [
      "体训楼羽毛球场地",
      "室外篮球场",
      "室外足球场"
    ],
    "startDate": "2026-07-13",
    "endDate": "2026-08-15"
  },
  {
    "No.": 2,
    "district": "市直",
    "schoolName": "长沙市一中城南中学",
    "venues": [
      "田径场",
      "室外篮球场"
    ],
    "startDate": "2026-07-18",
    "endDate": "2026-08-08"
  }

从示例中可以看到,JSON 数据结构清晰,每个字段对应明确的信息,方便后续进行数据整理、导入数据库或搭建查询工具。如果有多张图片需要解析,可批量上传图片并发送相同提示词,模型会逐一解析并生成对应的 JSON 数据,大幅提升处理效率。

4、成果展示

本次实战中,我们共解析了长沙市6个区县、32所中小学的暑假开放通知图片,通过 CodeBuddy 实现了全部图片信息的结构化提取,生成了JSON 格式的结构化数据。后续我们将这些 JSON 数据导入 Excel,进行分类整理,统计出各区县开放学校数量、开放场地类型、预约方式占比等信息,并制作了简易的可视化图表。同时,我们还基于这些结构化数据,编写了简单的 Python 脚本,搭建了一个本地查询工具,输入学校名称即可快速查询对应的开放信息,真正实现了“获取图片-解析信息-应用数据”的全流程闭环。

从实战效果来看,大模型图文理解技术的准确率达到了95%以上,仅对少数模糊图片和手写批注图片出现个别信息遗漏,通过人工微调即可修正,整体效率较人工手动录入提升了80%以上,充分体现了 AI 技术在非结构化数据处理中的优势。

五、总结

本文作为系列分享的第二篇,承接前文的图片获取工作,详细讲解了基于 CodeBuddy 结合大模型实现图文识别解析的全流程,包括技术途径对比、模型选择与切换、提示词编写、信息解析与 JSON 生成等核心内容。通过本次实战,我们不仅完成了长沙市暑假中小学开放信息的解析工作,更掌握了一种“多模态大模型+AI 工具”处理非结构化数据的实战方法,该方法可复用到公告解析、合同提取、报表整理等多个场景,具有较强的实用性和通用性。

回顾整个流程,我们也发现了一些可优化的点:一是对于模糊图片、手写图片的解析准确率仍有提升空间,可通过图片预处理(如清晰度增强、降噪)进一步提高识别效果;二是批量解析效率可进一步优化,可通过 CodeBuddy 的 CLI 命令行工具编写批量处理脚本,实现图片的自动上传、解析和数据导出;三是可将解析后的结构化数据同步到云端数据库,搭建线上查询平台,方便更多人查询使用。

后续,我将继续更新系列文章,讲解如何对解析后的结构化数据进行可视化展示,以及如何搭建简易的线上查询工具,欢迎大家持续关注。同时,也欢迎大家在评论区留言,分享自己在大模型图文识别、非结构化数据处理方面的实战经验,一起交流学习,共同进步。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
    • 1、前文回顾
    • 2、真实目的,解析图片
  • 二、数据解析技术途径
    • 1、OCR 识别
    • 2、大模型图文理解
    • 3、为什么选择图文理解
  • 三、CodeBuddy实现
    • 1、模型选择
    • 2、假如没有切换
    • 3、从混元3切换到图文模型
  • 四、CodeBuddy信息解读
    • 0、ZLM模型接入
    • 1、提示词分享
    • 2、自动生成解析
    • 3、Json生成
    • 4、成果展示
  • 五、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档